summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-08-09 00:02:25 +0200
committerCarl Hetherington <cth@carlh.net>2020-08-09 00:02:25 +0200
commit85739dd3fcdf8a7d39089feb0035e841341dd44d (patch)
treec5bb1a5ae5c065a96292a6b0d7e10f06166f083c
parentddce45d6ef1ebc2036b305c68402e38c84aa7599 (diff)
Don't call OpenGL functions until the wxGLContext has been created.
-rw-r--r--src/wx/gl_video_view.cc71
1 files changed, 36 insertions, 35 deletions
diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc
index 215511538..b22f0fb62 100644
--- a/src/wx/gl_video_view.cc
+++ b/src/wx/gl_video_view.cc
@@ -79,41 +79,6 @@ GLVideoView::GLVideoView (FilmViewer* viewer, wxWindow *parent)
_canvas->Bind (wxEVT_TIMER, boost::bind(&GLVideoView::check_for_butler_errors, this));
_timer.reset (new wxTimer(_canvas));
_timer->Start (2000);
-
-#if defined(DCPOMATIC_LINUX) && defined(DCPOMATIC_HAVE_GLX_SWAP_INTERVAL_EXT)
- if (_canvas->IsExtensionSupported("GLX_EXT_swap_control")) {
- /* Enable vsync */
- Display* dpy = wxGetX11Display();
- glXSwapIntervalEXT (dpy, DefaultScreen(dpy), 1);
- _vsync_enabled = true;
- }
-#endif
-
-#ifdef DCPOMATIC_WINDOWS
- if (_canvas->IsExtensionSupported("WGL_EXT_swap_control")) {
- /* Enable vsync */
- PFNWGLSWAPINTERVALEXTPROC swap = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");
- if (swap) {
- swap (1);
- _vsync_enabled = true;
- }
- }
-
-#endif
-
-#ifdef DCPOMATIC_OSX
- /* Enable vsync */
- GLint swapInterval = 1;
- CGLSetParameter (CGLGetCurrentContext(), kCGLCPSwapInterval, &swapInterval);
- _vsync_enabled = true;
-#endif
-
- glGenTextures (1, &_id);
- check_gl_error ("glGenTextures");
- glBindTexture (GL_TEXTURE_2D, _id);
- check_gl_error ("glBindTexture");
- glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
- check_gl_error ("glPixelStorei");
}
GLVideoView::~GLVideoView ()
@@ -370,6 +335,42 @@ try
_canvas->SetCurrent (*_context);
}
+
+#if defined(DCPOMATIC_LINUX) && defined(DCPOMATIC_HAVE_GLX_SWAP_INTERVAL_EXT)
+ if (_canvas->IsExtensionSupported("GLX_EXT_swap_control")) {
+ /* Enable vsync */
+ Display* dpy = wxGetX11Display();
+ glXSwapIntervalEXT (dpy, DefaultScreen(dpy), 1);
+ _vsync_enabled = true;
+ }
+#endif
+
+#ifdef DCPOMATIC_WINDOWS
+ if (_canvas->IsExtensionSupported("WGL_EXT_swap_control")) {
+ /* Enable vsync */
+ PFNWGLSWAPINTERVALEXTPROC swap = (PFNWGLSWAPINTERVALEXTPROC) wglGetProcAddress("wglSwapIntervalEXT");
+ if (swap) {
+ swap (1);
+ _vsync_enabled = true;
+ }
+ }
+
+#endif
+
+#ifdef DCPOMATIC_OSX
+ /* Enable vsync */
+ GLint swapInterval = 1;
+ CGLSetParameter (CGLGetCurrentContext(), kCGLCPSwapInterval, &swapInterval);
+ _vsync_enabled = true;
+#endif
+
+ glGenTextures (1, &_id);
+ check_gl_error ("glGenTextures");
+ glBindTexture (GL_TEXTURE_2D, _id);
+ check_gl_error ("glBindTexture");
+ glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
+ check_gl_error ("glPixelStorei");
+
while (true) {
boost::mutex::scoped_lock lm (_playing_mutex);
while (!_playing && !_one_shot) {