From 180d4928166b5d8a59fdb2b54090e661238f3cdd Mon Sep 17 00:00:00 2001 From: Viktor Kojouharov Date: Tue, 24 Mar 2009 21:31:05 +0000 Subject: [PATCH] add more to the composite api SVN revision: 39700 --- legacy/ecore/src/lib/ecore_x/Ecore_X.h | 9 +++ .../src/lib/ecore_x/xlib/ecore_x_composite.c | 76 +++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/legacy/ecore/src/lib/ecore_x/Ecore_X.h b/legacy/ecore/src/lib/ecore_x/Ecore_X.h index 2bc9beee3d..467efa3d62 100644 --- a/legacy/ecore/src/lib/ecore_x/Ecore_X.h +++ b/legacy/ecore/src/lib/ecore_x/Ecore_X.h @@ -107,6 +107,11 @@ typedef enum _Ecore_X_GC_Value_Mask { ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22) } Ecore_X_GC_Value_Mask; +typedef enum _Ecore_X_Composite_Update_Type { + ECORE_X_COMPOSITE_UPDATE_AUTOMATIC, + ECORE_X_COMPOSITE_UPDATE_MANUAL +} Ecore_X_Composite_Update_Type; + typedef enum _Ecore_X_Window_State { /** The window is iconified. */ ECORE_X_WINDOW_STATE_ICONIFIED, @@ -1605,6 +1610,10 @@ EAPI void ecore_x_region_picture_clip_set(Ecore_X_Region region, Ecore /* XComposite Extension Support */ EAPI int ecore_x_composite_query(void); +EAPI void ecore_x_composite_redirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type); +EAPI void ecore_x_composite_redirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type); +EAPI void ecore_x_composite_unredirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type); +EAPI void ecore_x_composite_unredirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type); EAPI Ecore_X_Pixmap ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win); /* XDamage Extension Support */ diff --git a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_composite.c b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_composite.c index 5eb785a811..d9b7440f0c 100644 --- a/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_composite.c +++ b/legacy/ecore/src/lib/ecore_x/xlib/ecore_x_composite.c @@ -31,6 +31,82 @@ ecore_x_composite_query(void) return _composite_available; } +EAPI void +ecore_x_composite_redirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type) +{ + int update; + +#ifdef ECORE_XCOMPOSITE + switch(type) + { + case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC: + update = CompositeRedirectAutomatic; + break; + case ECORE_X_COMPOSITE_UPDATE_MANUAL: + update = CompositeRedirectManual; + break; + } + XCompositeRedirectWindow(_ecore_x_disp, win, update); +#endif +} + +EAPI void +ecore_x_composite_redirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type) +{ + int update; + +#ifdef ECORE_XCOMPOSITE + switch(type) + { + case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC: + update = CompositeRedirectAutomatic; + break; + case ECORE_X_COMPOSITE_UPDATE_MANUAL: + update = CompositeRedirectManual; + break; + } + XCompositeRedirectSubwindows(_ecore_x_disp, win, update); +#endif +} + +EAPI void +ecore_x_composite_unredirect_window(Ecore_X_Window win, Ecore_X_Composite_Update_Type type) +{ + int update; + +#ifdef ECORE_XCOMPOSITE + switch(type) + { + case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC: + update = CompositeRedirectAutomatic; + break; + case ECORE_X_COMPOSITE_UPDATE_MANUAL: + update = CompositeRedirectManual; + break; + } + XCompositeUnredirectWindow(_ecore_x_disp, win, update); +#endif +} + +EAPI void +ecore_x_composite_unredirect_subwindows(Ecore_X_Window win, Ecore_X_Composite_Update_Type type) +{ + int update; + +#ifdef ECORE_XCOMPOSITE + switch(type) + { + case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC: + update = CompositeRedirectAutomatic; + break; + case ECORE_X_COMPOSITE_UPDATE_MANUAL: + update = CompositeRedirectManual; + break; + } + XCompositeUnredirectSubwindows(_ecore_x_disp, win, update); +#endif +} + EAPI Ecore_X_Pixmap ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win) {