From 01b2c8076f19843779556df57368460c152b4b59 Mon Sep 17 00:00:00 2001 From: yabause Date: Tue, 23 Dec 2008 21:20:13 +0000 Subject: [PATCH] Dirty fix for the bad context bug. Instead of fixing it, we're trapping the error and disabling 3D. --- desmume/src/gtk-glade/gdk_3Demu.cpp | 12 ++++++++---- desmume/src/gtk/gdk_3Demu.cpp | 11 ++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) 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; }