[maemo-commits] [maemo-commits] r18592 - in projects/haf/trunk/clutter0.8: clutter clutter/x11 debian
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Jun 3 18:02:00 EEST 2009
- Previous message: [maemo-commits] r18591 - in projects/connectivity/maemo-bluez-compat/trunk: . debian
- Next message: [maemo-commits] r18593 - in projects/haf/branches/gtk+/upgrade-gtk-2-14: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: kihamala Date: 2009-06-03 18:01:49 +0300 (Wed, 03 Jun 2009) New Revision: 18592 Modified: projects/haf/trunk/clutter0.8/clutter/clutter-private.h projects/haf/trunk/clutter0.8/clutter/clutter-stage.c projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.h projects/haf/trunk/clutter0.8/debian/changelog Log: new API + fixes for HD's non-composited mode Modified: projects/haf/trunk/clutter0.8/clutter/clutter-private.h =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-private.h 2009-06-03 14:55:52 UTC (rev 18591) +++ projects/haf/trunk/clutter0.8/clutter/clutter-private.h 2009-06-03 15:01:49 UTC (rev 18592) @@ -216,6 +216,8 @@ void _clutter_actor_apply_modelview_transform_recursive (ClutterActor *self, ClutterActor *ancestor); +int _clutter_stage_get_shaped_mode (ClutterActor *self); + // Big hack to remove threading calls #define g_object_freeze_notify(X) #define g_object_thaw_notify(X) Modified: projects/haf/trunk/clutter0.8/clutter/clutter-stage.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/clutter-stage.c 2009-06-03 14:55:52 UTC (rev 18591) +++ projects/haf/trunk/clutter0.8/clutter/clutter-stage.c 2009-06-03 15:01:49 UTC (rev 18592) @@ -252,6 +252,13 @@ priv->shaped_mode = mode; } +int +_clutter_stage_get_shaped_mode (ClutterActor *self) +{ + ClutterStagePrivate *priv = CLUTTER_STAGE (self)->priv; + return priv->shaped_mode; +} + static void clutter_stage_paint (ClutterActor *self) { Modified: projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c =================================================================== --- projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c 2009-06-03 14:55:52 UTC (rev 18591) +++ projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.c 2009-06-03 15:01:49 UTC (rev 18592) @@ -45,6 +45,7 @@ #include "clutter-x11.h" #include "clutter-backend-x11.h" #include "clutter-debug.h" +#include "clutter-private.h" #include "cogl/cogl.h" @@ -114,6 +115,7 @@ /* FIXME: lots of gbooleans. coalesce into bitfields */ gboolean have_shm; + gboolean window_redirected; gboolean window_redirect_automatic; gboolean window_mapped; gboolean destroyed; @@ -407,6 +409,7 @@ self->priv->pixmap_height = 0; self->priv->pixmap_width = 0; self->priv->shminfo.shmid = -1; + self->priv->window_redirected = FALSE; self->priv->window_redirect_automatic = TRUE; self->priv->window_mapped = FALSE; self->priv->destroyed = FALSE; @@ -1094,6 +1097,39 @@ g_object_unref (texture); } +void +clutter_x11_texture_pixmap_set_redirection (ClutterX11TexturePixmap *texture, + gboolean setting) +{ + ClutterX11TexturePixmapPrivate *priv; + Display *dpy = clutter_x11_get_default_display (); + + priv = texture->priv; + + if (setting && !priv->window_redirected && priv->window) + { + XCompositeRedirectWindow (dpy, + priv->window, + priv->window_redirect_automatic ? + CompositeRedirectAutomatic : + CompositeRedirectManual); + XSync (dpy, False); + priv->window_redirected = TRUE; + } + else if (!setting && priv->window_redirected && priv->window) + { + clutter_x11_trap_x_errors (); + XCompositeUnredirectWindow (dpy, + priv->window, + priv->window_redirect_automatic ? + CompositeRedirectAutomatic : + CompositeRedirectManual); + XSync (clutter_x11_get_default_display (), False); + clutter_x11_untrap_x_errors (); + priv->window_redirected = FALSE; + } +} + /** * clutter_x11_texture_pixmap_set_window: * @texture: the texture to bind @@ -1130,13 +1166,18 @@ if (priv->window) { clutter_x11_remove_filter (on_x_event_filter_too, (gpointer)texture); - clutter_x11_trap_x_errors (); - XCompositeUnredirectWindow(clutter_x11_get_default_display (), - priv->window, - priv->window_redirect_automatic ? - CompositeRedirectAutomatic : CompositeRedirectManual); - XSync (clutter_x11_get_default_display (), False); - clutter_x11_untrap_x_errors (); + if (priv->window_redirected) + { + clutter_x11_trap_x_errors (); + XCompositeUnredirectWindow(dpy, + priv->window, + priv->window_redirect_automatic ? + CompositeRedirectAutomatic : + CompositeRedirectManual); + XSync (clutter_x11_get_default_display (), False); + clutter_x11_untrap_x_errors (); + priv->window_redirected = FALSE; + } } priv->window = window; @@ -1158,12 +1199,16 @@ return; } - XCompositeRedirectWindow - (dpy, - window, - automatic ? - CompositeRedirectAutomatic : CompositeRedirectManual); - XSync (dpy, False); + if (!_clutter_stage_get_shaped_mode (clutter_stage_get_default ())) + { + XCompositeRedirectWindow (dpy, + window, + automatic ? + CompositeRedirectAutomatic : + CompositeRedirectManual); + XSync (dpy, False); + priv->window_redirected = TRUE; + } } clutter_x11_untrap_x_errors (); Modified: projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.h =================================================================== --- projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.h 2009-06-03 14:55:52 UTC (rev 18591) +++ projects/haf/trunk/clutter0.8/clutter/x11/clutter-x11-texture-pixmap.h 2009-06-03 15:01:49 UTC (rev 18592) @@ -91,6 +91,9 @@ void clutter_x11_texture_pixmap_clear_shapes(ClutterX11TexturePixmap *texture); void clutter_x11_texture_pixmap_add_shape(ClutterX11TexturePixmap *texture, ClutterGeometry geo); +void +clutter_x11_texture_pixmap_set_redirection (ClutterX11TexturePixmap *texture, + gboolean setting); G_END_DECLS Modified: projects/haf/trunk/clutter0.8/debian/changelog =================================================================== --- projects/haf/trunk/clutter0.8/debian/changelog 2009-06-03 14:55:52 UTC (rev 18591) +++ projects/haf/trunk/clutter0.8/debian/changelog 2009-06-03 15:01:49 UTC (rev 18592) @@ -1,6 +1,15 @@ clutter (0.8.2-0maemo35~unreleased) unstable; urgency=low - * foo + Kimmo: + * clutter/x11/clutter-x11-texture-pixmap.[ch] + (clutter_x11_texture_pixmap_set_redirection): New function to toggle + XComposite redirection on/off within Clutter. This is used from + libmatchbox2 to sync redirection states between the two libraries. + (ClutterX11TexturePixmapPrivate): Add window_redirected member. + (clutter_x11_texture_pixmap_set_window): Redirect only if the stage is + not in shaped mode. Unredirect only if the window was redirected before. + * clutter/clutter-stage.c (_clutter_stage_get_shaped_mode): New function to + read the shaped mode setting of a stage. -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com> Tue, 2 Jun 2009 16:50:14 +0300
- Previous message: [maemo-commits] r18591 - in projects/connectivity/maemo-bluez-compat/trunk: . debian
- Next message: [maemo-commits] r18593 - in projects/haf/branches/gtk+/upgrade-gtk-2-14: . debian
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]