From 2666778c26c221bf68752e2c6a1bcb22975a4c7f Mon Sep 17 00:00:00 2001 From: Matthew Allum Date: Fri, 27 Jun 2008 23:02:30 +0000 Subject: [PATCH] 2008-06-27 Matthew Allum * clutter/cogl/gl/cogl.c: Temp workaround for 10.4 ATI card OSX folks, see #929 (Tommi Komulainen) Bug 998 - clutter always captures X input events * clutter/eglx/clutter-stage-egl.c: * clutter/glx/clutter-stage-glx.c: When we disable X event retrival, dont still select for window events. --- gl/cogl.c | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/gl/cogl.c b/gl/cogl.c index e41a3d4c9..f594c8546 100644 --- a/gl/cogl.c +++ b/gl/cogl.c @@ -840,6 +840,32 @@ cogl_setup_viewport (guint width, GE( glTranslatef (0.0f, -1.0 * height, 0.0f) ); } +#ifdef HAVE_CLUTTER_OSX +static gboolean +really_enable_npot (void) +{ + /* OSX backend + ATI Radeon X1600 + NPOT texture + GL_REPEAT seems to crash + * http://bugzilla.openedhand.com/show_bug.cgi?id=929 + * + * Temporary workaround until post 0.8 we rejig the features set up a + * little to allow the backend to overide. + */ + const char *gl_renderer; + const char *env_string; + + /* Regardless of hardware, allow user to decide. */ + env_string = g_getenv ("COGL_ENABLE_NPOT"); + if (env_string != NULL) + return env_string[0] == '1'; + + gl_renderer = (char*)glGetString (GL_RENDERER); + if (strstr (gl_renderer, "ATI Radeon X1600") != NULL) + return FALSE; + + return TRUE; +} +#endif + static void _cogl_features_init () { @@ -855,7 +881,10 @@ _cogl_features_init () if (cogl_check_extension ("GL_ARB_texture_non_power_of_two", gl_extensions)) { - flags |= COGL_FEATURE_TEXTURE_NPOT; +#ifdef HAVE_CLUTTER_OSX + if (really_enable_npot ()) +#endif + flags |= COGL_FEATURE_TEXTURE_NPOT; } #ifdef GL_YCBCR_MESA