MCPcopy Create free account
hub / github.com/MrKepzie/Natron / initializeOpenGLFunctionsOnce

Method initializeOpenGLFunctionsOnce

Engine/AppManager.cpp:948–1023  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

946}
947
948bool
949AppManager::initializeOpenGLFunctionsOnce(bool createOpenGLContext)
950{
951 QMutexLocker k(&_imp->openGLFunctionsMutex);
952
953 if (!_imp->hasInitializedOpenGLFunctions) {
954 OSGLContextPtr glContext;
955 bool checkRenderingReq = true;
956 if (createOpenGLContext) {
957 try {
958 _imp->initGLAPISpecific();
959
960 glContext = _imp->renderingContextPool->attachGLContextToRender(false /*checkIfGLLoaded*/);
961 if (glContext) {
962 // Make the context current and check its version
963 glContext->setContextCurrentNoRender();
964 } else {
965 AppManagerPrivate::OpenGLRequirementsData& vdata = _imp->glRequirements[eOpenGLRequirementsTypeViewer];
966 AppManagerPrivate::OpenGLRequirementsData& rdata = _imp->glRequirements[eOpenGLRequirementsTypeRendering];
967 rdata.error = tr("Error creating OpenGL context.");
968 vdata.error = rdata.error;
969 rdata.hasRequirements = false;
970 vdata.hasRequirements = false;
971 AppManagerPrivate::addOpenGLRequirementsString(rdata.error, eOpenGLRequirementsTypeRendering);
972 AppManagerPrivate::addOpenGLRequirementsString(vdata.error, eOpenGLRequirementsTypeViewer);
973 }
974
975
976 } catch (const std::exception& e) {
977 std::cerr << "Error while loading OpenGL: " << e.what() << std::endl;
978 std::cerr << "OpenGL rendering is disabled. " << std::endl;
979 AppManagerPrivate::OpenGLRequirementsData& vdata = _imp->glRequirements[eOpenGLRequirementsTypeViewer];
980 AppManagerPrivate::OpenGLRequirementsData& rdata = _imp->glRequirements[eOpenGLRequirementsTypeRendering];
981 rdata.hasRequirements = false;
982 vdata.hasRequirements = false;
983 vdata.error = tr("Error while creating OpenGL context: %1").arg(QString::fromUtf8(e.what()));
984 rdata.error = tr("Error while creating OpenGL context: %1").arg(QString::fromUtf8(e.what()));
985 AppManagerPrivate::addOpenGLRequirementsString(rdata.error, eOpenGLRequirementsTypeRendering);
986 AppManagerPrivate::addOpenGLRequirementsString(vdata.error, eOpenGLRequirementsTypeViewer);
987 checkRenderingReq = false;
988 }
989 if (!glContext) {
990 return false;
991 }
992 }
993
994 // The following requires a valid OpenGL context to be created
995 _imp->initGl(checkRenderingReq);
996 if (createOpenGLContext) {
997 if (hasOpenGLForRequirements(eOpenGLRequirementsTypeRendering)) {
998 try {
999 OSGLContext::checkOpenGLVersion();
1000 } catch (const std::exception& e) {
1001 AppManagerPrivate::OpenGLRequirementsData& data = _imp->glRequirements[eOpenGLRequirementsTypeRendering];
1002 data.hasRequirements = false;
1003 if ( !data.error.isEmpty() ) {
1004 data.error = QString::fromUtf8( e.what() );
1005 }

Callers 6

initializeGLMethod · 0.80
initializeGLMethod · 0.80
initializeGLMethod · 0.80
initializeGLMethod · 0.80
initializeGLMethod · 0.80
initializeGLMethod · 0.80

Calls 8

initGLAPISpecificMethod · 0.80
initGlMethod · 0.80
isEmptyMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected