LMK when running with old GL version

This commit is contained in:
Zach Pomerantz 2016-03-25 14:10:11 -07:00
parent 1405daa4ee
commit b252139704
5 changed files with 36 additions and 9 deletions

View file

@ -23,6 +23,7 @@
#include "AddressManager.h"
#include "Application.h"
#include "InterfaceLogging.h"
#include "UserActivityLogger.h"
#include "MainWindow.h"
#ifdef HAS_BUGSPLAT
@ -102,11 +103,19 @@ int main(int argc, const char* argv[]) {
// Check OpenGL version.
// This is done separately from the main Application so that start-up and shut-down logic within the main Application is
// not made more complicated than it already is.
bool override = false;
QString glVersion;
{
OpenGLVersionChecker openGLVersionChecker(argc, const_cast<char**>(argv));
if (!openGLVersionChecker.isValidVersion()) {
qCDebug(interfaceapp, "Early exit due to OpenGL version.");
return 0;
bool valid = true;
glVersion = openGLVersionChecker.checkVersion(valid, override);
if (!valid) {
if (override) {
qCDebug(interfaceapp, "Running on insufficient OpenGL version: %s.", glVersion.toStdString().c_str());
} else {
qCDebug(interfaceapp, "Early exit due to OpenGL version.");
return 0;
}
}
}
@ -134,6 +143,12 @@ int main(int argc, const char* argv[]) {
QSettings::setDefaultFormat(QSettings::IniFormat);
Application app(argc, const_cast<char**>(argv), startupTime);
// If we failed the OpenGLVersion check, log it.
// This needed to wait until the Application ctor for credentials.
if (override) {
UserActivityLogger::getInstance().insufficientGLVersion(glVersion);
}
// Setup local server
QLocalServer server { &app };

View file

@ -22,8 +22,9 @@ OpenGLVersionChecker::OpenGLVersionChecker(int& argc, char** argv) :
{
}
bool OpenGLVersionChecker::isValidVersion() {
bool valid = true;
QString OpenGLVersionChecker::checkVersion(bool& valid, bool& override) {
valid = true;
override = false;
GLWidget* glWidget = new GLWidget();
valid = glWidget->isValid();
@ -37,7 +38,7 @@ bool OpenGLVersionChecker::isValidVersion() {
messageBox.setStandardButtons(QMessageBox::Ok);
messageBox.setDefaultButton(QMessageBox::Ok);
messageBox.exec();
return false;
return QString();
}
// Retrieve OpenGL version
@ -68,8 +69,8 @@ bool OpenGLVersionChecker::isValidVersion() {
messageBox.setInformativeText("Press OK to exit; Ignore to continue.");
messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Ignore);
messageBox.setDefaultButton(QMessageBox::Ok);
valid = messageBox.exec() == QMessageBox::Ignore;
override = messageBox.exec() == QMessageBox::Ignore;
}
return valid;
return glVersion;
}

View file

@ -19,7 +19,7 @@ class OpenGLVersionChecker : public QApplication {
public:
OpenGLVersionChecker(int& argc, char** argv);
static bool isValidVersion();
static QString checkVersion(bool& valid, bool& override);
};
#endif // hifi_OpenGLVersionChecker_h

View file

@ -91,6 +91,15 @@ void UserActivityLogger::launch(QString applicationVersion, bool previousSession
logAction(ACTION_NAME, actionDetails);
}
void UserActivityLogger::insufficientGLVersion(QString glVersion) {
const QString ACTION_NAME = "insufficient_gl";
QJsonObject actionDetails;
QString GL_VERSION = "glVersion";
actionDetails.insert(GL_VERSION, glVersion);
logAction(ACTION_NAME, actionDetails);
}
void UserActivityLogger::changedDisplayName(QString displayName) {
const QString ACTION_NAME = "changed_display_name";
QJsonObject actionDetails;

View file

@ -30,6 +30,8 @@ public slots:
void logAction(QString action, QJsonObject details = QJsonObject(), JSONCallbackParameters params = JSONCallbackParameters());
void launch(QString applicationVersion, bool previousSessionCrashed, int previousSessionRuntime);
void insufficientGLVersion(QString glVersion);
void changedDisplayName(QString displayName);
void changedModel(QString typeOfModel, QString modelURL);