Kaydet (Commit) d2a71b95 authored tarafından Michael Meeks's avatar Michael Meeks

fdo#46990 - re-work new desktop checks, guard against NULL DESKTOP_SESSION.

Change-Id: Ia3e408b372989b757f7dde080849e38d315d53cd
üst f31fad32
......@@ -42,11 +42,8 @@ static bool is_gnome_desktop( Display* pDisplay )
// warning: these checks are coincidental, GNOME does not
// explicitly advertise itself
if ( "gnome" == getenv( "DESKTOP_SESSION" ) || NULL != getenv( "GNOME_DESKTOP_SESSION_ID" ) )
{
if ( NULL != getenv( "GNOME_DESKTOP_SESSION_ID" ) )
ret = true;
}
if( ! ret )
{
......@@ -121,24 +118,6 @@ static bool is_gnome_desktop( Display* pDisplay )
return ret;
}
static bool is_xfce_desktop( Display* pDisplay )
{
if ( "xfce" == getenv( "DESKTOP_SESSION" ) )
{
return true;
}
return false;
}
static bool is_mate_desktop( Display* pDisplay )
{
if ( "mate" == getenv( "DESKTOP_SESSION" ) )
{
return true;
}
return false;
}
static bool bWasXError = false;
static inline bool WasXError()
......@@ -369,18 +348,30 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment()
XErrorHandler pOldHdl = XSetErrorHandler( autodect_error_handler );
if ( is_tde_desktop( pDisplay ) )
ret = DESKTOP_TDE;
const char *pSession;
OString aDesktopSession;
if ( ( pSession = getenv( "DESKTOP_SESSION" ) ) )
aDesktopSession = OString( pSession, strlen( pSession ) );
// fast environment variable checks
if ( aDesktopSession.equalsIgnoreAsciiCase( "gnome" ) )
ret = DESKTOP_GNOME;
else if ( aDesktopSession.equalsIgnoreAsciiCase( "mate" ) )
ret = DESKTOP_MATE;
else if ( aDesktopSession.equalsIgnoreAsciiCase( "xfce" ) )
ret = DESKTOP_XFCE;
// these guys can be slower, with X property fetches,
// round-trips etc. and so are done later.
else if ( is_kde4_desktop( pDisplay ) )
ret = DESKTOP_KDE4;
else if ( is_gnome_desktop( pDisplay ) )
ret = DESKTOP_GNOME;
else if ( is_xfce_desktop( pDisplay ) )
ret = DESKTOP_XFCE;
else if ( is_mate_desktop( pDisplay ) )
ret = DESKTOP_MATE;
else if ( is_kde_desktop( pDisplay ) )
ret = DESKTOP_KDE;
else if ( is_tde_desktop( pDisplay ) )
ret = DESKTOP_TDE;
else
ret = DESKTOP_UNKNOWN;
......
......@@ -188,7 +188,9 @@ static SalInstance* autodetect_plugin()
// no server at all: dummy plugin
if ( desktop == DESKTOP_NONE )
pList = pHeadlessFallbackList;
else if ( desktop == DESKTOP_GNOME || desktop == DESKTOP_XFCE || desktop == DESKTOP_MATE )
else if ( desktop == DESKTOP_GNOME ||
desktop == DESKTOP_XFCE ||
desktop == DESKTOP_MATE )
pList = pStandardFallbackList;
else if( desktop == DESKTOP_TDE )
pList = pTDEFallbackList;
......@@ -287,7 +289,11 @@ void SalAbort( const OUString& rErrorText, bool bDumpCore )
_exit(1);
}
static const char * desktop_strings[] = { "none", "unknown", "GNOME", "XFCE", "MATE", "TDE", "KDE", "KDE4" };
// Order to match desktops.hxx' DesktopType
static const char * desktop_strings[] = {
"none", "unknown", "GNOME",
"XFCE", "MATE", "TDE",
"KDE", "KDE4" };
const OUString& SalGetDesktopEnvironment()
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment