QApplication* MDeclarativeCachePrivate::qApplication(int &argc, char **argv) { if (qApplicationInstance == 0) { qApplicationInstance = new QApplication(argc, argv); } else { if (argc > ARGV_LIMIT) { qWarning("MDeclarativeCache: QCoreApplication::arguments() will not contain all arguments."); } // Copy arguments to QCoreApplication for (int i = 0; i < qMin(argc, ARGV_LIMIT); i++) { qApp->argv()[i] = argv[i]; } // This changes argc in QCoreApplication initialArgc = qMin(argc, ARGV_LIMIT); // Take application name from argv QString appName = QFileInfo(argv[0]).fileName(); // Set object name qApp->setObjectName(appName); bool loadTestabilityArg = false; const char* testabilityArg = "-testability"; for (int i = 0; i < argc; i++) { if (strcmp(argv[i], testabilityArg) == 0) { loadTestabilityArg = true; break; } } bool loadTestabilityEnv = !qgetenv("QT_LOAD_TESTABILITY").isNull(); if (loadTestabilityEnv || loadTestabilityArg) testabilityInit(); #ifdef Q_WS_X11 // Currently QDeclarativeView is "Alien" widget and doesn't have it's XWindow. The procedure below is not needed. // Call to winId() converts the widget to "Native" and makes it slow. // If things get changed to use the procedure need to define QDV_USE_NATIVE_WIDGETS // In this case it should be considered to add XErrorHandler around XSetCommand and XSetClassHint // because those can generate BadAlloc and BadWindow errors. #ifdef QDV_USE_NATIVE_WIDGETS // reinit WM_COMMAND X11 property if (qDeclarativeViewInstance) { Display *display = QX11Info::display(); if (display) { qDeclarativeViewInstance->winId(); XSetCommand(display, qDeclarativeViewInstance->effectiveWinId(), argv, argc); // set correct WM_CLASS properties QString appClass = appName.left(1).toUpper(); if (appName.length() > 1) appClass += appName.right(appName.length() - 1); // reserve memory for C strings QByteArray arrName(appName.toLatin1()); QByteArray arrClass(appClass.toLatin1()); XClassHint class_hint; class_hint.res_name = arrName.data(); class_hint.res_class = arrClass.data(); XSetClassHint(display, qDeclarativeViewInstance->effectiveWinId(), &class_hint); } } #endif #endif if (cachePopulated) { // In Qt 4.7, QCoreApplication::applicationDirPath() and // QCoreApplication::applicationFilePath() look up the paths in /proc, // which does not work when the booster is used. As a workaround, we // use argv[0] to provide the correct values in the cache class. appFilePath = QString(argv[0]); appDirPath = QString(argv[0]); appDirPath.chop(appDirPath.size() - appDirPath.lastIndexOf("/")); } } #ifdef HAVE_PATH_REINIT // Set the magic attribute so that paths are reinitialized qApplicationInstance->setAttribute(Qt::AA_LinuxReinitPathsFromArgv0, true); #endif return qApplicationInstance; }
void PreMain() { systemDatInit(); systemInit(); testabilityDatInit(); stdlibparseutilsDatInit(); stdlibstrutilsDatInit(); stdlibtimesDatInit(); stdlibposixDatInit(); stdlibosDatInit(); listsDatInit(); stdlibhashesDatInit(); stdlibstrtabsDatInit(); stdlibstreamsDatInit(); stdlibosprocDatInit(); stdlibmathDatInit(); stdlibsetsDatInit(); optionsDatInit(); stdlibtablesDatInit(); platformDatInit(); crcDatInit(); ropesDatInit(); stdlibunsignedDatInit(); stdlibsocketsDatInit(); msgsDatInit(); nversionDatInit(); identsDatInit(); condsymsDatInit(); extccompDatInit(); wordrecgDatInit(); babelcmdDatInit(); commandsDatInit(); llstreamDatInit(); nimlexbaseDatInit(); lexerDatInit(); nimconfDatInit(); stdlibintsetsDatInit(); idgenDatInit(); astDatInit(); rodutilsDatInit(); astalgoDatInit(); parserDatInit(); pbracesDatInit(); rendererDatInit(); filtersDatInit(); filter_tmplDatInit(); syntaxesDatInit(); treesDatInit(); typesDatInit(); stdlibmemfilesDatInit(); rodreadDatInit(); magicsysDatInit(); bitsetsDatInit(); nimsetsDatInit(); passesDatInit(); treetabDatInit(); vmdefDatInit(); semdataDatInit(); lookupsDatInit(); importerDatInit(); rodwriteDatInit(); saturateDatInit(); semfoldDatInit(); procfindDatInit(); pragmasDatInit(); semtypinstDatInit(); parampatternsDatInit(); stdliblexbaseDatInit(); stdlibunicodeDatInit(); stdlibjsonDatInit(); docutilsrstastDatInit(); docutilsrstDatInit(); docutilshighliteDatInit(); docutilsrstgenDatInit(); guardsDatInit(); sempass2DatInit(); stdlibmacrosDatInit(); stdlibxmltreeDatInit(); stdlibcookiesDatInit(); stdlibcgiDatInit(); typesrendererDatInit(); docgenDatInit(); stdlibalgorithmDatInit(); stdlibsequtilsDatInit(); prettyDatInit(); sigmatchDatInit(); cgmethDatInit(); loweringsDatInit(); lambdaliftingDatInit(); transfDatInit(); vmgenDatInit(); vmdepsDatInit(); evaltemplDatInit(); vmDatInit(); aliasesDatInit(); patternsDatInit(); semmacrosanityDatInit(); semDatInit(); ccgutilsDatInit(); cgendataDatInit(); ccgmergeDatInit(); cgenDatInit(); jsgenDatInit(); passauxDatInit(); dependsDatInit(); docgen2DatInit(); stdlibparseoptDatInit(); serviceDatInit(); modulesDatInit(); mainDatInit(); nimrodDatInit(); initStackBottom(); testabilityInit(); stdlibparseutilsInit(); stdlibstrutilsInit(); stdlibtimesInit(); stdlibposixInit(); stdlibosInit(); listsInit(); stdlibhashesInit(); stdlibstrtabsInit(); stdlibstreamsInit(); stdlibosprocInit(); stdlibmathInit(); stdlibsetsInit(); optionsInit(); stdlibtablesInit(); platformInit(); crcInit(); ropesInit(); stdlibunsignedInit(); stdlibsocketsInit(); msgsInit(); nversionInit(); identsInit(); condsymsInit(); extccompInit(); wordrecgInit(); babelcmdInit(); commandsInit(); llstreamInit(); nimlexbaseInit(); lexerInit(); nimconfInit(); stdlibintsetsInit(); idgenInit(); astInit(); rodutilsInit(); astalgoInit(); parserInit(); pbracesInit(); rendererInit(); filtersInit(); filter_tmplInit(); syntaxesInit(); treesInit(); typesInit(); stdlibmemfilesInit(); rodreadInit(); magicsysInit(); bitsetsInit(); nimsetsInit(); passesInit(); treetabInit(); vmdefInit(); semdataInit(); lookupsInit(); importerInit(); rodwriteInit(); saturateInit(); semfoldInit(); procfindInit(); pragmasInit(); semtypinstInit(); parampatternsInit(); stdliblexbaseInit(); stdlibunicodeInit(); stdlibjsonInit(); docutilsrstastInit(); docutilsrstInit(); docutilshighliteInit(); docutilsrstgenInit(); guardsInit(); sempass2Init(); stdlibmacrosInit(); stdlibxmltreeInit(); stdlibcookiesInit(); stdlibcgiInit(); typesrendererInit(); docgenInit(); stdlibalgorithmInit(); stdlibsequtilsInit(); prettyInit(); sigmatchInit(); cgmethInit(); loweringsInit(); lambdaliftingInit(); transfInit(); vmgenInit(); vmdepsInit(); evaltemplInit(); vmInit(); aliasesInit(); patternsInit(); semmacrosanityInit(); semInit(); ccgutilsInit(); cgendataInit(); ccgmergeInit(); cgenInit(); jsgenInit(); passauxInit(); dependsInit(); docgen2Init(); stdlibparseoptInit(); serviceInit(); modulesInit(); mainInit(); }