diff options
Diffstat (limited to 'matchbox/mb-window-manager.c')
-rw-r--r-- | matchbox/mb-window-manager.c | 78 |
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) { |