Add new delayed initialization constructor to QApplication

v3.5.13-sru
Timothy Pearson 13 years ago
parent b6c6d9f8dd
commit 6b749249ee

@ -923,6 +923,103 @@ QApplication::QApplication(Display *dpy, int argc, char **argv,
#endif // Q_WS_X11
QApplication::QApplication( bool delayed_init ) {
if (!delayed_init) {
qWarning( "QApplication: incorrect constructor likely specified." );
}
}
#if defined(Q_WS_X11)
/*!
Create an application, given an already open display \a dpy. If \a
visual and \a colormap are non-zero, the application will use those as
the default Visual and Colormap contexts.
\warning Qt only supports TrueColor visuals at depths higher than 8
bits-per-pixel.
This is available only on X11.
*/
void QApplication::doLateInitialization( Display* dpy, HANDLE visual, HANDLE colormap )
{
static int aargc = 1;
// ### a string literal is a cont char*
// ### using it as a char* is wrong and could lead to segfaults
// ### if aargv is modified someday
static char *aargv[] = { (char*)"unknown", 0 };
app_argc = aargc;
app_argv = aargv;
qt_appType = GuiClient;
qt_is_gui_used = TRUE;
qt_appType = GuiClient;
init_precmdline();
// ... no command line.
if ( ! dpy ) {
#ifdef QT_CHECK_STATE
qWarning( "QApplication: invalid Display* argument." );
#endif // QT_CHECK_STATE
qt_init( &aargc, aargv, GuiClient );
} else {
qt_init( dpy, visual, colormap );
}
initialize( aargc, aargv );
if ( qt_is_gui_used )
qt_maxWindowRect = desktop()->rect();
if ( eventloop )
eventloop->appStartingUp();
}
/*!
Create an application, given an already open display \a dpy and using
\a argc command line arguments in \a argv. If \a
visual and \a colormap are non-zero, the application will use those as
the default Visual and Colormap contexts.
\warning Qt only supports TrueColor visuals at depths higher than 8
bits-per-pixel.
This is available only on X11.
*/
void QApplication::doLateInitialization(Display *dpy, int argc, char **argv,
HANDLE visual, HANDLE colormap)
{
qt_appType = GuiClient;
qt_is_gui_used = TRUE;
qt_appType = GuiClient;
init_precmdline();
app_argc = argc;
app_argv = argv;
if ( ! dpy ) {
#ifdef QT_CHECK_STATE
qWarning( "QApplication: invalid Display* argument." );
#endif // QT_CHECK_STATE
qt_init( &argc, argv, GuiClient );
} else {
qt_init(dpy, visual, colormap);
}
process_cmdline( &argc, argv );
initialize(argc, argv);
if ( qt_is_gui_used )
qt_maxWindowRect = desktop()->rect();
if ( eventloop )
eventloop->appStartingUp();
}
#endif // Q_WS_X11
void QApplication::init_precmdline()
{

@ -74,6 +74,7 @@ class Q_EXPORT QApplication : public QObject
{
Q_OBJECT
public:
QApplication( bool delayed_init );
QApplication( int &argc, char **argv );
QApplication( int &argc, char **argv, bool GUIenabled );
enum Type { Tty, GuiClient, GuiServer };
@ -85,6 +86,11 @@ public:
#endif
virtual ~QApplication();
#if defined(Q_WS_X11)
void doLateInitialization( Display* dpy, HANDLE visual = 0, HANDLE cmap = 0 );
void doLateInitialization( Display *dpy, int argc, char **argv, HANDLE visual = 0, HANDLE cmap= 0 );
#endif
int argc() const;
char **argv() const;

Loading…
Cancel
Save