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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu May 28 16:45:24 EEST 2009
Author: kihamala
Date: 2009-05-28 16:45:22 +0300 (Thu, 28 May 2009)
New Revision: 18527

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/debian/changelog
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h
Log:
support functions for HD's non-composited mode


Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-05-28 13:44:19 UTC (rev 18526)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-05-28 13:45:22 UTC (rev 18527)
@@ -1,3 +1,10 @@
+2009-05-28  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
+
+	* matchbox/core/mb-window-manager.[ch] (mb_wm_unredirect_client,
+	mb_wm_setup_redirection): New functions for offscreen redirection
+	manipulation.
+	(mb_wm_handle_map_notify): Unredirect the client if we are in the mode.
+
 2009-05-27  Thomas Thurman  <thomas.thurman at collabora.co.uk>
 
 	Fixes: NB#117084 System-modal windows lose focus

Modified: projects/haf/trunk/libmatchbox2/debian/changelog
===================================================================
--- projects/haf/trunk/libmatchbox2/debian/changelog	2009-05-28 13:44:19 UTC (rev 18526)
+++ projects/haf/trunk/libmatchbox2/debian/changelog	2009-05-28 13:45:22 UTC (rev 18527)
@@ -1,6 +1,7 @@
 matchbox-window-manager-2 (0.2.41-1~unreleased) unstable; urgency=low
 
-  * foo
+  Kimmo:
+  * Support functions for hildon-desktop's non-composited mode.
 
  -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>  Mon, 25 May 2009 10:13:36 +0300
 

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-05-28 13:44:19 UTC (rev 18526)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.c	2009-05-28 13:45:22 UTC (rev 18527)
@@ -735,6 +735,47 @@
 
 #if ENABLE_COMPOSITE
 
+static void
+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);
+   }
+}
+
+void
+mb_wm_setup_redirection (MBWindowManager *wm, int redirection)
+{
+  Window root_win = wm->root_win->xwindow;
+
+  if (redirection)
+  {
+    XCompositeRedirectSubwindows (wm->xdpy, root_win,
+                                  CompositeRedirectManual);
+    wm->non_redirection = False;
+  }
+  else
+  {
+    XCompositeUnredirectSubwindows (wm->xdpy, root_win,
+                                    CompositeRedirectManual);
+    wm->non_redirection = True;
+  }
+}
+
 /*  For the compositing engine we need to track overide redirect
  *  windows so the compositor can paint them.
  */
@@ -785,6 +826,9 @@
 	       */
 	      mb_wm_client_reset_hiding_from_desktop (client);
 	    }
+
+          if (wm->non_redirection)
+            mb_wm_unredirect_client (wm, client);
 	}
 
       return True;
@@ -831,6 +875,9 @@
   mb_wm_manage_client (wm, client, True);
   mb_wm_comp_mgr_map_notify (wm->comp_mgr, client);
 
+  if (wm->non_redirection)
+    mb_wm_unredirect_client (wm, client);
+
   return True;
 }
 #endif

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h	2009-05-28 13:44:19 UTC (rev 18526)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-window-manager.h	2009-05-28 13:45:22 UTC (rev 18527)
@@ -130,6 +130,7 @@
 
   char                       **argv;
   int                          argc;
+  Bool                         non_redirection;
 };
 
 /**
@@ -238,5 +239,7 @@
 void
 mb_adjust_dialog_title_position (MBWindowManager *wm,
                                  int new_padding);
+void
+mb_wm_setup_redirection (MBWindowManager *wm, int redirection);
 
 #endif


More information about the maemo-commits mailing list