From: Carl Hetherington Date: Fri, 10 May 2019 22:42:31 +0000 (+0100) Subject: Fix crash with small GL canvas sizes. X-Git-Tag: v2.15.1 X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=commitdiff_plain;h=1e2ff3aad2e6feabc7d725f64e41feb0b5ba9439 Fix crash with small GL canvas sizes. --- diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc index fefc08849..39d418cbf 100644 --- a/src/wx/gl_video_view.cc +++ b/src/wx/gl_video_view.cc @@ -100,11 +100,17 @@ GLVideoView::draw () check_gl_error ("glDisable GL_DEPTH_TEST"); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + if (_canvas->GetSize().x < 64 || _canvas->GetSize().y < 0) { + return; + } + glViewport (0, 0, _canvas->GetSize().x, _canvas->GetSize().y); + check_gl_error ("glViewport"); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluOrtho2D (0, _canvas->GetSize().x, _canvas->GetSize().y, 0); + check_gl_error ("gluOrtho2d"); glMatrixMode (GL_MODELVIEW); glLoadIdentity (); @@ -125,9 +131,6 @@ GLVideoView::draw () glEnd (); } - glDisable (GL_TEXTURE_2D); - check_gl_error ("glDisable GL_TEXTURE_2D"); - dcp::Size const out_size = _viewer->out_size (); wxSize const canvas_size = _canvas->GetSize (); @@ -191,6 +194,7 @@ GLVideoView::set_image (shared_ptr image) _size = image->size (); glPixelStorei (GL_UNPACK_ALIGNMENT, 1); + check_gl_error ("glPixelStorei"); glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB8, _size->width, _size->height, 0, GL_RGB, GL_UNSIGNED_BYTE, image->data()[0]); check_gl_error ("glTexImage2D");