aboutsummaryrefslogtreecommitdiffstats
path: root/matchbox/mb-window-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'matchbox/mb-window-manager.c')
-rw-r--r--matchbox/mb-window-manager.c78
1 files changed, 35 insertions, 43 deletions
diff --git a/matchbox/mb-window-manager.c b/matchbox/mb-window-manager.c
index 7d1a201..fcc2bee 100644
--- a/matchbox/mb-window-manager.c
+++ b/matchbox/mb-window-manager.c
@@ -30,18 +30,17 @@
#if ENABLE_COMPOSITE
# include "mb-wm-comp-mgr.h"
-# if ENABLE_CLUTTER_COMPOSITE_MANAGER
-# include <clutter/x11/clutter-x11.h>
-# include "mb-wm-comp-mgr-clutter.h"
-# else
-# include "mb-wm-comp-mgr-xrender.h"
-# endif
# include "mb-wm-client-override.h"
# include <X11/extensions/Xdamage.h>
# include <X11/extensions/Xrender.h>
# include <X11/extensions/Xcomposite.h>
#endif
+/* FIXME: libmatchbox shouldn't know anything about clutter */
+#ifdef MANAGER_CLUTTER
+#include <clutter/x11/clutter-x11.h>
+#endif
+
#if USE_GTK
# include <gdk/gdk.h>
#endif
@@ -156,18 +155,6 @@ mb_wm_real_theme_new (MBWindowManager * wm, const char * path)
return mb_wm_theme_new (wm, path);
}
-#if ENABLE_COMPOSITE && COMP_MGR_BACKEND
-static MBWMCompMgr *
-mb_wm_real_comp_mgr_new (MBWindowManager *wm)
-{
-#if ENABLE_CLUTTER_COMPOSITE_MANAGER
- return mb_wm_comp_mgr_clutter_new (wm);
-#else
- return mb_wm_comp_mgr_xrender_new (wm);
-#endif
-}
-#endif
-
static MBWMLayout *
mb_wm_layout_new_real (MBWindowManager *wm)
{
@@ -195,7 +182,8 @@ mb_wm_gdk_xevent_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data)
}
#endif
-#if ENABLE_CLUTTER_COMPOSITE_MANAGER
+/* FIXME: libmatchbox shouldn't know anything about clutter! */
+#ifdef MANAGER_CLUTTER
#if USE_GTK
static GdkFilterReturn
mb_wm_clutter_gdk_xevent_filter (GdkXEvent *xevent, GdkEvent *event,
@@ -230,14 +218,14 @@ mb_wm_clutter_xevent_filter (XEvent *xev, ClutterEvent *cev, gpointer data)
#endif
#endif
-#if ENABLE_CLUTTER_COMPOSITE_MANAGER || USE_GTK
+#if MANAGER_CLUTTER || USE_GTK
static void
mb_wm_main_real (MBWindowManager *wm)
{
#if USE_GTK
gdk_window_add_filter (NULL, mb_wm_gdk_xevent_filter, wm);
-#if ENABLE_CLUTTER_COMPOSITE_MANAGER
+#if MANAGER_CLUTTER
gdk_window_add_filter (NULL, mb_wm_clutter_gdk_xevent_filter, NULL);
#endif
gtk_main ();
@@ -264,14 +252,10 @@ mb_wm_class_init (MBWMObjectClass *klass)
wm_class->layout_new = mb_wm_layout_new_real;
wm_class->get_desktop_geometry = mb_wm_real_get_desktop_geometry;
-#if ENABLE_CLUTTER_COMPOSITE_MANAGER
+#if MANAGER_CLUTTER
wm_class->main = mb_wm_main_real;
#endif
-#if ENABLE_COMPOSITE && COMP_MGR_BACKEND
- wm_class->comp_mgr_new = mb_wm_real_comp_mgr_new;
-#endif
-
#if MBWM_WANT_DEBUG
klass->klass_name = "MBWindowManager";
#endif
@@ -1255,7 +1239,7 @@ mb_wm_main_loop(MBWindowManager *wm)
MBWindowManagerClass * wm_class =
MB_WINDOW_MANAGER_CLASS (MB_WM_OBJECT_GET_CLASS (wm));
-#if !ENABLE_CLUTTER_COMPOSITE_MANAGER
+#if !MANAGER_CLUTTER
if (!wm_class->main)
{
GMainLoop * loop = g_main_loop_new (NULL, FALSE);
@@ -1517,8 +1501,8 @@ mb_wm_init_comp_extensions (MBWindowManager *wm)
* This function must be called before the MBWindowManager object can be
* used.
*/
-void
-mb_wm_init (MBWindowManager * wm)
+static void
+_mb_wm_init (MBWindowManager * wm, MBWMCompMgr *compositor)
{
MBWindowManagerClass *wm_class;
@@ -1531,8 +1515,13 @@ mb_wm_init (MBWindowManager * wm)
mb_wm_set_layout (wm, wm_class->layout_new (wm));
#if ENABLE_COMPOSITE
- if (wm_class->comp_mgr_new && mb_wm_theme_use_compositing_mgr (wm->theme))
- mb_wm_compositing_on (wm);
+ if (compositor)
+ {
+ wm->comp_mgr = mb_wm_object_ref (MB_WM_OBJECT (compositor));
+
+ if (mb_wm_theme_use_compositing_mgr (wm->theme))
+ mb_wm_compositing_on (wm);
+ }
#endif
mb_wm_manage_preexistsing_wins (wm);
@@ -1547,6 +1536,19 @@ mb_wm_init (MBWindowManager * wm)
wm->sync_type |= MBWMSyncStacking;
}
+void
+mb_wm_init (MBWindowManager *window_manager)
+{
+ _mb_wm_init (window_manager, NULL);
+}
+
+void
+mb_wm_init_with_compositor (MBWindowManager *window_manager,
+ MBWMCompMgr *compositor)
+{
+ _mb_wm_init (window_manager, compositor);
+}
+
static int
mb_window_manager_init (MBWMObject *this, va_list vap)
@@ -2158,24 +2160,14 @@ mb_wm_set_cursor (MBWindowManager * wm, MBWindowManagerCursor cursor)
}
void
-mb_wm_compositing_on (MBWindowManager * wm)
+mb_wm_compositing_on (MBWindowManager *wm)
{
#if ENABLE_COMPOSITE
- MBWindowManagerClass *wm_class =
- MB_WINDOW_MANAGER_CLASS (MB_WM_OBJECT_GET_CLASS (wm));
-
- if (!wm->comp_mgr && wm_class->comp_mgr_new)
- wm->comp_mgr = wm_class->comp_mgr_new (wm);
-
if (wm->comp_mgr && !mb_wm_comp_mgr_enabled (wm->comp_mgr))
- {
- mb_wm_comp_mgr_turn_on (wm->comp_mgr);
- XSync (wm->xdpy, False);
- }
+ mb_wm_comp_mgr_turn_on (wm->comp_mgr);
#endif
}
-
void
mb_wm_compositing_off (MBWindowManager * wm)
{