Fix crash with small GL canvas sizes. v2.15.1
authorCarl Hetherington <cth@carlh.net>
Fri, 10 May 2019 22:42:31 +0000 (23:42 +0100)
committerCarl Hetherington <cth@carlh.net>
Fri, 10 May 2019 22:43:55 +0000 (23:43 +0100)
src/wx/gl_video_view.cc

index fefc08849233c3ddea162d5a7c24a9246cbef77a..39d418cbfc3d2af18baa8b31c99092e6af280e98 100644 (file)
@@ -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<const Image> 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");