summaryrefslogtreecommitdiffstats
path: root/src/kernel/qapplication_x11.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-04-16 09:40:02 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2013-04-16 09:40:02 -0500
commit7abfc2a181531c769d50bcb1c0bff1fc08c66de2 (patch)
tree2103e780132177d9a87acb291d7db2c33f6f0af1 /src/kernel/qapplication_x11.cpp
parente154d27e308f648aabffee9caef82d58d12ce804 (diff)
downloadqt3-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
Diffstat (limited to 'src/kernel/qapplication_x11.cpp')
-rw-r--r--src/kernel/qapplication_x11.cpp30
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.