vcl/unx/generic/desktopdetect/desktopdetector.cxx | 120 +++++++++++----------- 1 file changed, 63 insertions(+), 57 deletions(-)
New commits: commit 6353dc86585df7796200eabe1e2be8511211adee Author: Caolán McNamara <caol...@redhat.com> Date: Fri Jul 17 11:32:00 2015 +0100 move all the X foo of desktop detection in the fallback path Change-Id: I53e2634984c8e08b707dc3a21b2a6e68b48ec701 diff --git a/vcl/unx/generic/desktopdetect/desktopdetector.cxx b/vcl/unx/generic/desktopdetect/desktopdetector.cxx index 0cc1f35..58ecf2d 100644 --- a/vcl/unx/generic/desktopdetect/desktopdetector.cxx +++ b/vcl/unx/generic/desktopdetect/desktopdetector.cxx @@ -321,54 +321,14 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment() return DESKTOP_UNKNOWN; } - // get display to connect to - const char* pDisplayStr = getenv( "DISPLAY" ); - OUString plugin; rtl::Bootstrap::get("SAL_USE_VCLPLUGIN", plugin); if (plugin == "svp") - pDisplayStr = NULL; - else - { - int nParams = rtl_getAppCommandArgCount(); - OUString aParam; - OString aBParm; - for( int i = 0; i < nParams; i++ ) - { - rtl_getAppCommandArg( i, &aParam.pData ); - if( i < nParams-1 && (aParam == "-display" || aParam == "--display" ) ) - { - rtl_getAppCommandArg( i+1, &aParam.pData ); - aBParm = OUStringToOString( aParam, osl_getThreadTextEncoding() ); - pDisplayStr = aBParm.getStr(); - break; - } - } - } - - // no server at all - if( ! pDisplayStr || !*pDisplayStr ) - return DESKTOP_NONE; - - /* #i92121# workaround deadlocks in the X11 implementation - */ - static const char* pNoXInitThreads = getenv( "SAL_NO_XINITTHREADS" ); - /* #i90094# - from now on we know that an X connection will be - established, so protect X against itself - */ - if( ! ( pNoXInitThreads && *pNoXInitThreads ) ) - XInitThreads(); - - Display* pDisplay = XOpenDisplay( pDisplayStr ); - if( pDisplay == NULL ) return DESKTOP_NONE; DesktopType ret; - XErrorHandler pOldHdl = XSetErrorHandler( autodect_error_handler ); - const char *pSession; OString aDesktopSession; if ( ( pSession = getenv( "DESKTOP_SESSION" ) ) ) @@ -390,26 +350,68 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment() 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_kde5_desktop( pDisplay ) ) - ret = DESKTOP_KDE5; - else if ( is_kde4_desktop( pDisplay ) ) - ret = DESKTOP_KDE4; - else if ( is_gnome_desktop( pDisplay ) ) - ret = DESKTOP_GNOME; - else if ( is_kde_desktop( pDisplay ) ) - ret = DESKTOP_KDE; - else if ( is_tde_desktop( pDisplay ) ) - ret = DESKTOP_TDE; else - ret = DESKTOP_UNKNOWN; + { + // these guys can be slower, with X property fetches, + // round-trips etc. and so are done later. + + // get display to connect to + const char* pDisplayStr = getenv( "DISPLAY" ); - // set the default handler again - XSetErrorHandler( pOldHdl ); + int nParams = rtl_getAppCommandArgCount(); + OUString aParam; + OString aBParm; + for( int i = 0; i < nParams; i++ ) + { + rtl_getAppCommandArg( i, &aParam.pData ); + if( i < nParams-1 && (aParam == "-display" || aParam == "--display" ) ) + { + rtl_getAppCommandArg( i+1, &aParam.pData ); + aBParm = OUStringToOString( aParam, osl_getThreadTextEncoding() ); + pDisplayStr = aBParm.getStr(); + break; + } + } - XCloseDisplay( pDisplay ); + // no server at all + if( ! pDisplayStr || !*pDisplayStr ) + return DESKTOP_NONE; + + + /* #i92121# workaround deadlocks in the X11 implementation + */ + static const char* pNoXInitThreads = getenv( "SAL_NO_XINITTHREADS" ); + /* #i90094# + from now on we know that an X connection will be + established, so protect X against itself + */ + if( ! ( pNoXInitThreads && *pNoXInitThreads ) ) + XInitThreads(); + + Display* pDisplay = XOpenDisplay( pDisplayStr ); + if( pDisplay == NULL ) + return DESKTOP_NONE; + + XErrorHandler pOldHdl = XSetErrorHandler( autodect_error_handler ); + + if ( is_kde5_desktop( pDisplay ) ) + ret = DESKTOP_KDE5; + else if ( is_kde4_desktop( pDisplay ) ) + ret = DESKTOP_KDE4; + else if ( is_gnome_desktop( pDisplay ) ) + ret = DESKTOP_GNOME; + else if ( is_kde_desktop( pDisplay ) ) + ret = DESKTOP_KDE; + else if ( is_tde_desktop( pDisplay ) ) + ret = DESKTOP_TDE; + else + ret = DESKTOP_UNKNOWN; + + // set the default handler again + XSetErrorHandler( pOldHdl ); + + XCloseDisplay( pDisplay ); + } return ret; } commit edaacb62d057a3d68b473a36fcf9b1c6059fbfcc Author: Caolán McNamara <caol...@redhat.com> Date: Fri Jul 17 11:28:37 2015 +0100 add gnome-wayland alongside gnome Change-Id: I5d57f715edbadc7fef5c508cae7e98bcde0e4e5c diff --git a/vcl/unx/generic/desktopdetect/desktopdetector.cxx b/vcl/unx/generic/desktopdetect/desktopdetector.cxx index 4a0838b..0cc1f35 100644 --- a/vcl/unx/generic/desktopdetect/desktopdetector.cxx +++ b/vcl/unx/generic/desktopdetect/desktopdetector.cxx @@ -307,6 +307,8 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment() return DESKTOP_KDE4; if ( aOver.equalsIgnoreAsciiCase( "gnome" ) ) return DESKTOP_GNOME; + if ( aOver.equalsIgnoreAsciiCase( "gnome-wayland" ) ) + return DESKTOP_GNOME; if ( aOver.equalsIgnoreAsciiCase( "unity" ) ) return DESKTOP_UNITY; if ( aOver.equalsIgnoreAsciiCase( "xfce" ) ) @@ -382,6 +384,8 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment() ret = DESKTOP_UNITY; else if ( aDesktopSession.equalsIgnoreAsciiCase( "gnome" ) ) ret = DESKTOP_GNOME; + else if ( aDesktopSession.equalsIgnoreAsciiCase( "gnome-wayland" ) ) + ret = DESKTOP_GNOME; else if ( aDesktopSession.equalsIgnoreAsciiCase( "mate" ) ) ret = DESKTOP_MATE; else if ( aDesktopSession.equalsIgnoreAsciiCase( "xfce" ) )
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits