Centralize checking for OpenGL

Change-Id: Ic2212c8519f4c771ba3e3c61dd32073b93db7ed9
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
Robert Loehning
2015-09-29 16:43:42 +02:00
parent 0e8a0cac47
commit a835b51407
5 changed files with 18 additions and 12 deletions

View File

@@ -30,6 +30,9 @@
#include "hostosinfo.h" #include "hostosinfo.h"
#include <QApplication>
#include <QOpenGLContext>
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#undef _WIN32_WINNT #undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501 /* WinXP, needed for GetNativeSystemInfo() */ #define _WIN32_WINNT 0x0501 /* WinXP, needed for GetNativeSystemInfo() */
@@ -81,3 +84,12 @@ void HostOsInfo::unsetOverrideFileNameCaseSensitivity()
{ {
m_useOverrideFileNameCaseSensitivity = false; m_useOverrideFileNameCaseSensitivity = false;
} }
bool HostOsInfo::canCreateOpenGLContext(QString *errorMessage)
{
static const bool canCreate = QOpenGLContext().create();
if (!canCreate)
*errorMessage = QApplication::translate("Utils::HostOsInfo",
"Cannot create OpenGL context.");
return canCreate;
}

View File

@@ -84,6 +84,8 @@ public:
return hostOsAspects().controlModifier(); return hostOsAspects().controlModifier();
} }
static bool canCreateOpenGLContext(QString *errorMessage);
private: private:
static OsSpecificAspects hostOsAspects() { return OsSpecificAspects(hostOs()); } static OsSpecificAspects hostOsAspects() { return OsSpecificAspects(hostOs()); }

View File

@@ -61,7 +61,6 @@
#include <qplugin.h> #include <qplugin.h>
#include <QDebug> #include <QDebug>
#include <QProcessEnvironment> #include <QProcessEnvironment>
#include <QOpenGLContext>
namespace QmlDesigner { namespace QmlDesigner {
@@ -127,10 +126,8 @@ QmlDesignerPlugin::~QmlDesignerPlugin()
//////////////////////////////////////////////////// ////////////////////////////////////////////////////
bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage/* = 0*/) // =0; bool QmlDesignerPlugin::initialize(const QStringList & /*arguments*/, QString *errorMessage/* = 0*/) // =0;
{ {
if (!QOpenGLContext().create()) { if (!Utils::HostOsInfo::canCreateOpenGLContext(errorMessage))
*errorMessage = tr("Cannot create OpenGL context.");
return false; return false;
}
data = new QmlDesignerPluginData; data = new QmlDesignerPluginData;

View File

@@ -36,8 +36,8 @@
#include <analyzerbase/analyzermanager.h> #include <analyzerbase/analyzermanager.h>
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/hostosinfo.h>
#include <QOpenGLContext>
#include <QtPlugin> #include <QtPlugin>
using namespace Analyzer; using namespace Analyzer;
@@ -54,10 +54,8 @@ bool QmlProfilerPlugin::initialize(const QStringList &arguments, QString *errorS
{ {
Q_UNUSED(arguments) Q_UNUSED(arguments)
if (!QOpenGLContext().create()) { if (!Utils::HostOsInfo::canCreateOpenGLContext(errorString))
*errorString = tr("Cannot create OpenGL context.");
return false; return false;
}
auto tool = new QmlProfilerTool(this); auto tool = new QmlProfilerTool(this);
auto widgetCreator = [tool] { return tool->createWidgets(); }; auto widgetCreator = [tool] { return tool->createWidgets(); };

View File

@@ -51,7 +51,6 @@
#include <QMessageBox> #include <QMessageBox>
#include <QDir> #include <QDir>
#include <QOpenGLContext>
#include <QQmlPropertyMap> #include <QQmlPropertyMap>
#ifdef USE_QUICK_WIDGET #ifdef USE_QUICK_WIDGET
@@ -289,10 +288,8 @@ WelcomePlugin::WelcomePlugin()
bool WelcomePlugin::initialize(const QStringList & /* arguments */, QString *errorMessage) bool WelcomePlugin::initialize(const QStringList & /* arguments */, QString *errorMessage)
{ {
if (!QOpenGLContext().create()) { if (!Utils::HostOsInfo::canCreateOpenGLContext(errorMessage))
*errorMessage = tr("Cannot create OpenGL context.");
return false; return false;
}
m_welcomeMode = new WelcomeMode; m_welcomeMode = new WelcomeMode;
addAutoReleasedObject(m_welcomeMode); addAutoReleasedObject(m_welcomeMode);