diff --git a/aegisub/src/video_context.cpp b/aegisub/src/video_context.cpp index a0f999dcb..409c23917 100644 --- a/aegisub/src/video_context.cpp +++ b/aegisub/src/video_context.cpp @@ -97,6 +97,7 @@ VideoContext *VideoContext::instance = NULL; VideoContext::VideoContext() { // Set GL context glContext = NULL; + ownGlContext = false; lastTex = 0; lastFrame = -1; yv12shader = 0; @@ -130,7 +131,8 @@ VideoContext::VideoContext() { // Destructor VideoContext::~VideoContext () { Reset(); - delete glContext; + if (ownGlContext) + delete glContext; glContext = NULL; } @@ -483,10 +485,16 @@ wxGLContext *VideoContext::GetGLContext(wxGLCanvas *canvas) { // Also see bug #850. #if wxCHECK_VERSION(2,9,0) #else - if (!glContext) glContext = canvas->GetContext(); + if (!glContext) { + glContext = canvas->GetContext(); + ownGlContext = false; + } #endif #ifndef __WXMAC__ - if (!glContext) glContext = new wxGLContext(canvas); + if (!glContext) { + glContext = new wxGLContext(canvas); + ownGlContext = true; + } #endif return glContext; } diff --git a/aegisub/src/video_context.h b/aegisub/src/video_context.h index ba34a1850..d2c3ec4ad 100644 --- a/aegisub/src/video_context.h +++ b/aegisub/src/video_context.h @@ -85,6 +85,7 @@ private: GLuint lastTex; GLhandleARB yv12shader; int lastFrame; + bool ownGlContext; wxGLContext *glContext; VideoFrameFormat vidFormat; AegiVideoFrame tempFrame;