diff options
Diffstat (limited to 'gui/application.cc')
-rw-r--r-- | gui/application.cc | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/gui/application.cc b/gui/application.cc index 7751e6f1..33a106bc 100644 --- a/gui/application.cc +++ b/gui/application.cc @@ -21,9 +21,11 @@ #include "application.h" #include <QMessageBox> +#include <QOpenGLContext> #include <QSurfaceFormat> #include <QTextStream> #include <exception> +#include "log.h" NEXTPNR_NAMESPACE_BEGIN @@ -37,12 +39,28 @@ BOOL WINAPI WinHandler(DWORD dwCtrlType) } #endif -Application::Application(int &argc, char **argv) : QApplication(argc, argv) +Application::Application(int &argc, char **argv, bool noantialiasing) : QApplication(argc, argv) { QSurfaceFormat fmt; - fmt.setSamples(10); + if (!noantialiasing) + fmt.setSamples(10); fmt.setProfile(QSurfaceFormat::CoreProfile); + // macOS is very picky about this version matching + // the version of openGL used in ImGuiRenderer + fmt.setMajorVersion(3); + fmt.setMinorVersion(2); QSurfaceFormat::setDefaultFormat(fmt); + + QOpenGLContext glContext; + fmt = glContext.format(); + if (fmt.majorVersion() < 3) { + printf("Could not get OpenGL 3.0 context. Aborting.\n"); + log_abort(); + } + if (fmt.minorVersion() < 2) { + printf("Could not get OpenGL 3.2 context - trying anyway...\n "); + } + #ifdef _WIN32 SetConsoleCtrlHandler((PHANDLER_ROUTINE)WinHandler, TRUE); #endif @@ -53,7 +71,7 @@ bool Application::notify(QObject *receiver, QEvent *event) bool retVal = true; try { retVal = QApplication::notify(receiver, event); - } catch (assertion_failure ex) { + } catch (const assertion_failure &ex) { QString msg; QTextStream out(&msg); out << ex.filename.c_str() << " at " << ex.line << "\n"; |