diff options
author | Timothy Pearson <[email protected]> | 2013-04-16 09:40:02 -0500 |
---|---|---|
committer | Timothy Pearson <[email protected]> | 2013-04-16 09:40:02 -0500 |
commit | 7abfc2a181531c769d50bcb1c0bff1fc08c66de2 (patch) | |
tree | 2103e780132177d9a87acb291d7db2c33f6f0af1 | |
parent | e154d27e308f648aabffee9caef82d58d12ce804 (diff) | |
download | qt3-7abfc2a181531c769d50bcb1c0bff1fc08c66de2.tar.gz qt3-7abfc2a181531c769d50bcb1c0bff1fc08c66de2.zip |
Fix fatal X11 errors when both external display and command arguments are provided to QApplication
This resolves Bug 1456
-rw-r--r-- | src/kernel/qapplication_x11.cpp | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/kernel/qapplication_x11.cpp b/src/kernel/qapplication_x11.cpp index 121d633..eba573b 100644 --- a/src/kernel/qapplication_x11.cpp +++ b/src/kernel/qapplication_x11.cpp @@ -1803,18 +1803,26 @@ void qt_init_internal( int *argcptr, char **argv, } } #endif - // Connect to X server - - if( qt_is_gui_used ) { - if ( ( appDpy = XOpenDisplay(appDpyName) ) == 0 ) { - qWarning( "%s: cannot connect to X server %s", appName, - XDisplayName(appDpyName) ); - qApp = 0; - exit( 1 ); - } + if ( display ) { + // Display connection already opened by another application - if ( appSync ) // if "-sync" argument - XSynchronize( appDpy, TRUE ); + appForeignDpy = TRUE; + appDpy = display; + } + else { + // Connect to X server + + if( qt_is_gui_used ) { + if ( ( appDpy = XOpenDisplay(appDpyName) ) == 0 ) { + qWarning( "%s: cannot connect to X server %s", appName, + XDisplayName(appDpyName) ); + qApp = 0; + exit( 1 ); + } + + if ( appSync ) // if "-sync" argument + XSynchronize( appDpy, TRUE ); + } } } // Common code, regardless of whether display is foreign. |