diff --git a/desmume/src/gtk-glade/gdk_3Demu.cpp b/desmume/src/gtk-glade/gdk_3Demu.cpp index 3f2cb2b59..cbfe46f8e 100644 --- a/desmume/src/gtk-glade/gdk_3Demu.cpp +++ b/desmume/src/gtk-glade/gdk_3Demu.cpp @@ -22,6 +22,7 @@ #ifdef GTKGLEXT_AVAILABLE #include +#include // Localization #include @@ -127,13 +128,16 @@ examine_gl_config_attrib (GdkGLConfig *glconfig) } #endif - static bool begin_opengl_region_gdk_3d( void) { + bool failed = false; - if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) { - return false; - } + gdk_error_trap_push(); + failed = !gdk_gl_drawable_gl_begin(gldrawable, glcontext); + gdk_flush(); + failed = failed | gdk_error_trap_pop(); + + if (failed) return false; return true; } diff --git a/desmume/src/gtk/gdk_3Demu.cpp b/desmume/src/gtk/gdk_3Demu.cpp index 50206077b..d5a936152 100644 --- a/desmume/src/gtk/gdk_3Demu.cpp +++ b/desmume/src/gtk/gdk_3Demu.cpp @@ -22,6 +22,7 @@ #ifdef GTKGLEXT_AVAILABLE #include +#include #include "../types.h" #include "../render3D.h" @@ -126,10 +127,14 @@ examine_gl_config_attrib (GdkGLConfig *glconfig) static bool _oglrender_beginOpenGL( void) { + int failed = 0; - if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) { - return 0; - } + gdk_error_trap_push(); + failed = !gdk_gl_drawable_gl_begin(gldrawable, glcontext); + gdk_flush(); + failed = failed | gdk_error_trap_pop(); + + if (failed) return 0; return 1; }