[maemo-commits] [maemo-commits] r18597 - in projects/haf/trunk/libmatchbox2: . debian matchbox/comp-mgr matchbox/core

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Wed Jun 3 18:29:46 EEST 2009
Author: kihamala
Date: 2009-06-03 18:29:35 +0300 (Wed, 03 Jun 2009)
New Revision: 18597

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/debian/changelog
   projects/haf/trunk/libmatchbox2/debian/control
   projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c
   projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.h
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
Log:
fixes to non-compositing mode support


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-06-03 15:21:45 UTC (rev 18596)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-06-03 15:29:35 UTC (rev 18597)
@@ -1,3 +1,14 @@
+2009-06-03  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
+
+	* matchbox/comp-mgr/mb-wm-comp-mgr-clutter.[ch]
+	(mb_wm_comp_mgr_clutter_set_client_redirection): New function to
+	toggle redirection for the compositor's client object.
+	(mb_wm_comp_mgr_clutter_client_track_damage): Set the texture window
+	to zero when toggling damage tracking off.
+	* matchbox/core/mb-window-manager.c (mb_wm_unredirect_client): Update
+	Clutter's idea about redirection before changing it in the X side.
+	(mb_wm_setup_redirection): Update Clutter's idea about redirection.
+
 2009-06-01  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
 
 	* matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c

Modified: projects/haf/trunk/libmatchbox2/debian/changelog
===================================================================
--- projects/haf/trunk/libmatchbox2/debian/changelog	2009-06-03 15:21:45 UTC (rev 18596)
+++ projects/haf/trunk/libmatchbox2/debian/changelog	2009-06-03 15:29:35 UTC (rev 18597)
@@ -1,6 +1,8 @@
 matchbox-window-manager-2 (0.2.42-1~unreleased) unstable; urgency=low
 
-  * foo
+  Kimmo:
+  * Fixes to non-compositing mode support.
+  * Update libclutter-dev build dependency because of new API there.
 
  -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>  Mon,  1 Jun 2009 08:29:17 +0300
 

Modified: projects/haf/trunk/libmatchbox2/debian/control
===================================================================
--- projects/haf/trunk/libmatchbox2/debian/control	2009-06-03 15:21:45 UTC (rev 18596)
+++ projects/haf/trunk/libmatchbox2/debian/control	2009-06-03 15:29:35 UTC (rev 18597)
@@ -2,7 +2,7 @@
 Section: libs
 Priority: optional
 Maintainer: Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>
-Build-Depends: cdbs (>= 0.4.21), debhelper (>= 4.1.0), pkg-config (>= 0.18), libx11-dev, x11proto-core-dev, libxext-dev, libxt-dev, libglib2.0-dev, libpng12-dev, libpango1.0-dev, libxcomposite-dev, libxdamage-dev, libclutter-0.8-dev (> 0.8.2-0maemo13)
+Build-Depends: cdbs (>= 0.4.21), debhelper (>= 4.1.0), pkg-config (>= 0.18), libx11-dev, x11proto-core-dev, libxext-dev, libxt-dev, libglib2.0-dev, libpng12-dev, libpango1.0-dev, libxcomposite-dev, libxdamage-dev, libclutter-0.8-dev (>> 0.8.2-0maemo34)
 Standards-Version: 3.8.0
 
 Package: libmatchbox2-dev

Modified: projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c	2009-06-03 15:21:45 UTC (rev 18596)
+++ projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.c	2009-06-03 15:29:35 UTC (rev 18597)
@@ -160,6 +160,20 @@
     }
 }
 
+/* Clutter sets XComposite redirection for windows corresponding to textures;
+ * this function is used to toggle redirection within Clutter. */
+void  __attribute__ ((visibility("hidden")))
+mb_wm_comp_mgr_clutter_set_client_redirection (MBWMCompMgrClient *client,
+                                               gboolean setting)
+{
+  MBWMCompMgrClutterClient *cclient = MB_WM_COMP_MGR_CLUTTER_CLIENT(client);
+
+  if (cclient->priv->texture)
+    clutter_x11_texture_pixmap_set_redirection (
+          CLUTTER_X11_TEXTURE_PIXMAP (cclient->priv->texture),
+          setting);
+}
+
 /**
  * Fetch the entire texture for our client
  */
@@ -1029,6 +1043,12 @@
         g_debug ("XDamageDestroy(0x%lx) for %p: %d",
                  cclient->priv->window_damage, c, err);
       cclient->priv->window_damage = 0;
+
+      if (cclient->priv->texture)
+        /* release the window in Clutter */ 
+        clutter_x11_texture_pixmap_set_window (
+                CLUTTER_X11_TEXTURE_PIXMAP (cclient->priv->texture),
+                0, FALSE);
     }
 }
 

Modified: projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.h
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.h	2009-06-03 15:21:45 UTC (rev 18596)
+++ projects/haf/trunk/libmatchbox2/matchbox/comp-mgr/mb-wm-comp-mgr-clutter.h	2009-06-03 15:29:35 UTC (rev 18597)
@@ -123,4 +123,8 @@
 ClutterActor *
 mb_wm_comp_mgr_clutter_get_arena (MBWMCompMgrClutter *cmgr);
 
+void  __attribute__ ((visibility("hidden")))
+mb_wm_comp_mgr_clutter_set_client_redirection (MBWMCompMgrClient *client,
+                                               gboolean setting);
+
 #endif

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-06-03 15:21:45 UTC (rev 18596)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-06-03 15:29:35 UTC (rev 18597)
@@ -739,37 +739,40 @@
 mb_wm_unredirect_client (MBWindowManager *wm,
                          MBWindowManagerClient *client)
 {     
-   if (client->xwin_frame)
-   {
-     XCompositeUnredirectWindow (wm->xdpy, client->xwin_frame,
-                                 CompositeRedirectManual);
-     XCompositeUnredirectSubwindows (wm->xdpy, client->xwin_frame,
-                                     CompositeRedirectManual);
-     XCompositeRedirectWindow (wm->xdpy, client->xwin_frame,
-                               CompositeRedirectAutomatic);
-   }
-   else
-   {
-     XCompositeUnredirectWindow (wm->xdpy, client->window->xwindow,
-                                 CompositeRedirectManual);
-     XCompositeUnredirectSubwindows (wm->xdpy, client->window->xwindow,
-                                     CompositeRedirectManual);
-   }
+  if (client->cm_client)
+    mb_wm_comp_mgr_clutter_set_client_redirection (client->cm_client, FALSE);
+
+  if (client->xwin_frame)
+    {
+      XCompositeUnredirectWindow (wm->xdpy, client->xwin_frame,
+                                  CompositeRedirectManual);
+      XCompositeUnredirectSubwindows (wm->xdpy, client->xwin_frame,
+                                      CompositeRedirectManual);
+    }
 }
 
 void
 mb_wm_setup_redirection (MBWindowManager *wm, int redirection)
 {
+  MBWindowManagerClient *c;
   Window root_win = wm->root_win->xwindow;
 
   if (redirection)
   {
+    for (c = wm->stack_bottom; c; c = c->stacked_above)
+      if (c->cm_client)
+        mb_wm_comp_mgr_clutter_set_client_redirection (c->cm_client, TRUE);
+
     XCompositeRedirectSubwindows (wm->xdpy, root_win,
                                   CompositeRedirectManual);
     wm->non_redirection = False;
   }
   else
   {
+    for (c = wm->stack_bottom; c; c = c->stacked_above)
+      if (c->cm_client)
+        mb_wm_comp_mgr_clutter_set_client_redirection (c->cm_client, FALSE);
+
     XCompositeUnredirectSubwindows (wm->xdpy, root_win,
                                     CompositeRedirectManual);
     wm->non_redirection = True;


More information about the maemo-commits mailing list