diff --git a/src/graphics.cpp b/src/graphics.cpp index da269c07..52f1bc98 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -122,7 +122,6 @@ int CGraphics::loadTextureSkyBox(QImage* img) void CGraphics::getViewpoint (dReal* xyz, dReal* hpr) { - if (graphicDisabled) return; xyz[0] = view_xyz[0]; xyz[1] = view_xyz[1]; xyz[2] = view_xyz[2]; @@ -1223,4 +1222,3 @@ void CGraphics::drawLine (const dReal pos1[3], const dReal pos2[3]) glVertex3f (pos2[0],pos2[1],pos2[2]); glEnd(); } - diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 74ce75c3..2f633d30 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -192,6 +192,7 @@ MainWindow::MainWindow(QWidget *parent) setCentralWidget(glwidget); timer = new QTimer(this); + timer->setTimerType(Qt::PreciseTimer); timer->setInterval(getInterval()); restartDebounceTimer = new QTimer(this); restartDebounceTimer->setSingleShot(true); @@ -391,13 +392,17 @@ void MainWindow::update() && (focusWidget == configwidget || configwidget->isAncestorOf(focusWidget)); } - if (glwidget->ssl->isGLEnabled) { + const bool appIsActive = QApplication::applicationState() == Qt::ApplicationActive; + const bool shouldPauseForConfigEdit = isEditingConfig && appIsActive; + + if (!glwidget->ssl->isGLEnabled) { + glwidget->ssl->g->disableGraphics(); + glwidget->step(); + } else if (!shouldPauseForConfigEdit && appIsActive && glwidget->isVisible()) { glwidget->ssl->g->enableGraphics(); - if (!isEditingConfig) - { - glwidget->updateGL(); - } - } else { + glwidget->updateGL(); + } else if (!shouldPauseForConfigEdit) { + // Keep the simulation running while the app is in background/minimized. glwidget->ssl->g->disableGraphics(); glwidget->step(); }