diff options
author | Marius Kintel <marius@kintel.net> | 2013-10-22 15:30:15 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-10-22 15:30:15 (GMT) |
commit | 178309f357071a81ef82e09e89cfde539d6bf0e8 (patch) | |
tree | 4f165a6f8887b89661d71f9674173b9e422cc3ab /src/openscad.cc | |
parent | 9a28badc895158afeeff138e4f577e0c9dc43c27 (diff) |
bugfix: Don't use QApplication before it's instantiated
Diffstat (limited to 'src/openscad.cc')
-rw-r--r-- | src/openscad.cc | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/openscad.cc b/src/openscad.cc index e5eb69f..9ef7bd2 100644 --- a/src/openscad.cc +++ b/src/openscad.cc @@ -190,8 +190,14 @@ Camera get_camera( po::variables_map vm ) return camera; } -int cmdline(const std::string &application_path, const char *deps_output_file, const std::string &filename, Camera &camera, const char *output_file, const fs::path &original_path, Render::type renderer, char ** argv ) +int cmdline(const char *deps_output_file, const std::string &filename, Camera &camera, const char *output_file, const fs::path &original_path, Render::type renderer, int argc, char ** argv ) { +#ifdef OPENSCAD_QTGUI + QCoreApplication app(argc, argv); + const std::string application_path = QApplication::instance()->applicationDirPath().toLocal8Bit().constData(); +#else + const std::string application_path = boosty::stringy(boosty::absolute(boost::filesystem::path(argv[0]).parent_path())); +#endif parser_init(application_path, false); Tree tree; #ifdef ENABLE_CGAL @@ -454,7 +460,7 @@ bool QtUseGUI() return useGUI; } -int gui(const std::string &application_path, vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv) +int gui(vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv) { QApplication app(argc, argv, true); //useGUI); #ifdef Q_WS_MAC @@ -466,7 +472,9 @@ int gui(const std::string &application_path, vector<string> &inputFiles, const f QCoreApplication::setApplicationName("OpenSCAD"); QCoreApplication::setApplicationVersion(TOSTRING(OPENSCAD_VERSION)); - QDir exdir(QApplication::instance()->applicationDirPath()); + const QString &app_path = app.applicationDirPath(); + + QDir exdir(app_path); QString qexamplesdir; #ifdef Q_WS_MAC exdir.cd("../Resources"); // Examples can be bundled @@ -486,7 +494,7 @@ int gui(const std::string &application_path, vector<string> &inputFiles, const f qexamplesdir = exdir.path(); } MainWindow::setExamplesDir(qexamplesdir); - parser_init(application_path, true); + parser_init(app_path.toLocal8Bit().constData(), true); #ifdef Q_WS_MAC installAppleEventHandlers(); @@ -519,7 +527,7 @@ int gui(const std::string &application_path, vector<string> &inputFiles, const f } #else // OPENSCAD_QTGUI bool QtUseGUI() { return false; } -int gui(const std::string &application_path, const vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv) +int gui(const vector<string> &inputFiles, const fs::path &original_path, int argc, char ** argv) { fprintf(stderr,"Error: compiled without QT, but trying to run GUI\n"); return 1; @@ -645,18 +653,12 @@ int main(int argc, char **argv) cmdlinemode = true; if (!inputFiles.size()) help(argv[0]); } - const std::string application_path = -#ifdef OPENSCAD_QTGUI - QApplication::instance()->applicationDirPath().toLocal8Bit().constData(); -#else - boosty::stringy(boosty::absolute(boost::filesystem::path(argv[0]).parent_path())); -#endif if (cmdlinemode) { - rc = cmdline(application_path, deps_output_file, inputFiles[0], camera, output_file, original_path, renderer, argv); + rc = cmdline(deps_output_file, inputFiles[0], camera, output_file, original_path, renderer, argc, argv); } else if (QtUseGUI()) { - rc = gui(application_path, inputFiles, original_path, argc, argv); + rc = gui(inputFiles, original_path, argc, argv); } else { fprintf(stderr, "Requested GUI mode but can't open display!\n"); |