2008-06-27 Matthew Allum <mallum@openedhand.com>

* 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.
This commit is contained in:
Matthew Allum 2008-06-27 23:02:30 +00:00
parent bff2f01712
commit 03d7fdacd6
4 changed files with 81 additions and 35 deletions

View File

@ -1,3 +1,16 @@
2008-06-27 Matthew Allum <mallum@openedhand.com>
* 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.
2008-06-27 Emmanuele Bassi <ebassi@openedhand.com> 2008-06-27 Emmanuele Bassi <ebassi@openedhand.com>
* clutter/clutter-event.h: * clutter/clutter-event.h:

View File

@ -840,6 +840,32 @@ cogl_setup_viewport (guint width,
GE( glTranslatef (0.0f, -1.0 * height, 0.0f) ); 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 static void
_cogl_features_init () _cogl_features_init ()
{ {
@ -855,6 +881,9 @@ _cogl_features_init ()
if (cogl_check_extension ("GL_ARB_texture_non_power_of_two", gl_extensions)) if (cogl_check_extension ("GL_ARB_texture_non_power_of_two", gl_extensions))
{ {
#ifdef HAVE_CLUTTER_OSX
if (really_enable_npot ())
#endif
flags |= COGL_FEATURE_TEXTURE_NPOT; flags |= COGL_FEATURE_TEXTURE_NPOT;
} }

View File

@ -177,6 +177,8 @@ clutter_stage_egl_realize (ClutterActor *actor)
WhitePixel (stage_x11->xdpy, WhitePixel (stage_x11->xdpy,
stage_x11->xscreen)); stage_x11->xscreen));
if (!backend_x11->no_xevent_retrieval)
{
if (clutter_x11_has_xinput()) if (clutter_x11_has_xinput())
{ {
XSelectInput (stage_x11->xdpy, stage_x11->xwin, XSelectInput (stage_x11->xdpy, stage_x11->xwin,
@ -193,11 +195,11 @@ clutter_stage_egl_realize (ClutterActor *actor)
StructureNotifyMask | StructureNotifyMask |
FocusChangeMask | FocusChangeMask |
ExposureMask | ExposureMask |
/* FIXME: we may want to eplicity enable MotionMask */
PointerMotionMask | PointerMotionMask |
KeyPressMask | KeyReleaseMask | KeyPressMask | KeyReleaseMask |
ButtonPressMask | ButtonReleaseMask | ButtonPressMask | ButtonReleaseMask |
PropertyChangeMask); PropertyChangeMask);
}
/* FIXME, do these in a clutterstage_x11_realise? */ /* FIXME, do these in a clutterstage_x11_realise? */
clutter_stage_x11_fix_window_size (stage_x11); clutter_stage_x11_fix_window_size (stage_x11);

View File

@ -180,6 +180,8 @@ clutter_stage_glx_realize (ClutterActor *actor)
mask, &xattr); mask, &xattr);
} }
if (!backend_x11->no_xevent_retrieval)
{
if (clutter_x11_has_xinput()) if (clutter_x11_has_xinput())
{ {
XSelectInput (stage_x11->xdpy, stage_x11->xwin, XSelectInput (stage_x11->xdpy, stage_x11->xwin,
@ -196,11 +198,11 @@ clutter_stage_glx_realize (ClutterActor *actor)
StructureNotifyMask | StructureNotifyMask |
FocusChangeMask | FocusChangeMask |
ExposureMask | ExposureMask |
/* FIXME: we may want to eplicity enable MotionMask */
PointerMotionMask | PointerMotionMask |
KeyPressMask | KeyReleaseMask | KeyPressMask | KeyReleaseMask |
ButtonPressMask | ButtonReleaseMask | ButtonPressMask | ButtonReleaseMask |
PropertyChangeMask); PropertyChangeMask);
}
/* no user resize.. */ /* no user resize.. */
clutter_stage_x11_fix_window_size (stage_x11); clutter_stage_x11_fix_window_size (stage_x11);