void OpenGLComponent::updateContext() { if (needToDeleteContext) deleteContext(); if (context == nullptr) { const ScopedLock sl (contextLock); if (context == nullptr) { context = createContext(); if (context != nullptr) { #if JUCE_LINUX if (! isUsingDedicatedThread()) #endif updateContextPosition(); if (context->makeActive()) { newOpenGLContextCreated(); context->makeInactive(); } } } } }
void OpenGLComponent::updateContext() { //request to delete the context if (needToDeleteContext) { if (context.nativeContext!=nullptr) { context.nativeContext->shutdownOnRenderThread(); delete context.nativeContext; context.nativeContext=nullptr; } needToDeleteContext = false; } //do not create the context if not visible! if (!this->isVisible()) return; //recreate native context if (context.nativeContext==nullptr) { const ScopedLock sl(contextLock); if (context.nativeContext==nullptr) { context.nativeContext = new OpenGLContext::NativeContext (*this, preferredPixelFormat, contextToShareListsWith != nullptr ? contextToShareListsWith->nativeContext: nullptr); if (!context.nativeContext->createdOk()) { delete context.nativeContext; context.nativeContext=nullptr; } if (context.nativeContext!=nullptr) { context.nativeContext->initialiseOnRenderThread(); updateContextPosition(); glViewport (0, 0, getWidth(), getHeight()); if (context.makeActive()) { context.extensions.initialise(); newOpenGLContextCreated(); makeCurrentContextInactive(); } } } } }