diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-08-09 00:02:25 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-08-09 00:02:25 +0200 |
| commit | 85739dd3fcdf8a7d39089feb0035e841341dd44d (patch) | |
| tree | c5bb1a5ae5c065a96292a6b0d7e10f06166f083c | |
| parent | ddce45d6ef1ebc2036b305c68402e38c84aa7599 (diff) | |
Don't call OpenGL functions until the wxGLContext has been created.
| -rw-r--r-- | src/wx/gl_video_view.cc | 71 |
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) { |
