From ee2e43f11aedf615df0f21a8fc32e8fe6bc9782c Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Wed, 19 Mar 2014 18:23:43 +0200 Subject: [PATCH] Main: separate the QApplication and UI creation When some arguments like --help and --version are passed to the executable, we don't need to create the UI at all. This patch separates the QApplication creation which is at first only needed to parse the arguments and then if exit() is not called from subsurfacestartup.c, we can call some of the "init" methods such as setup_system_prefs(), fill_profile_color() etc. At this point init_ui() can be called which no longer needs to accept the command line argument list. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- main.cpp | 19 ++++++++++--------- qt-gui.cpp | 12 ++++++------ qt-gui.h | 4 ++-- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/main.cpp b/main.cpp index e5a53a3d8..2642ccc5c 100644 --- a/main.cpp +++ b/main.cpp @@ -19,13 +19,7 @@ int main(int argc, char **argv) int i; bool no_filenames = true; - setup_system_prefs(); - prefs = default_prefs; - fill_profile_color(); - init_ui(&argc, &argv); - parse_xml_init(); - taglist_init_global(); - + init_qt(&argc, &argv); QStringList files; QStringList importedFiles; QStringList arguments = QCoreApplication::arguments(); @@ -47,13 +41,20 @@ int main(int argc, char **argv) if (!defaultFile.isEmpty()) files.push_back(QString(prefs.default_filename)); } - parse_xml_exit(); + setup_system_prefs(); + prefs = default_prefs; + fill_profile_color(); + parse_xml_init(); + taglist_init_global(); + init_ui(); + MainWindow *m = MainWindow::instance(); - m->setLoadedWithFiles( !files.isEmpty() || !importedFiles.isEmpty()); + m->setLoadedWithFiles(!files.isEmpty() || !importedFiles.isEmpty()); m->loadFiles(files); m->importFiles(importedFiles); if (!quit) run_ui(); exit_ui(); + parse_xml_exit(); return 0; } diff --git a/qt-gui.cpp b/qt-gui.cpp index 2b16c2d77..a3b8b44b6 100644 --- a/qt-gui.cpp +++ b/qt-gui.cpp @@ -78,12 +78,14 @@ static QString decodeUtf8(const QByteArray &fname) } #endif -void init_ui(int *argcp, char ***argvp) +void init_qt(int *argcp, char ***argvp) +{ + application = new QApplication(*argcp, *argvp); +} + +void init_ui(void) { QVariant v; - - application = new QApplication(*argcp, *argvp); - // tell Qt to use system proxies // note: on Linux, "system" == "environment variables" QNetworkProxyFactory::setUseSystemConfiguration(true); @@ -155,8 +157,6 @@ void init_ui(int *argcp, char ***argvp) window->setTitle(MWTF_FILENAME); else window->setTitle(MWTF_DEFAULT); - - return; } void run_ui(void) diff --git a/qt-gui.h b/qt-gui.h index 80a2daf6a..c3d48afad 100644 --- a/qt-gui.h +++ b/qt-gui.h @@ -1,8 +1,8 @@ #ifndef QT_GUI_H #define QT_GUI_H -void init_ui(int *argcp, char ***argvp); -void init_qt_ui(int *argcp, char ***argvp, char *errormessage); +void init_qt(int *argcp, char ***argvp); +void init_ui(void); void run_ui(void); void exit_ui(void);