From: discomfitor Date: Sat, 5 Oct 2013 15:26:24 +0000 (+0100) Subject: Revert "ecore/wayland: Add subsurface handling APIs." X-Git-Tag: submit/devel/efl/20131029.075644~116 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8f493ab6c5975b5346bbd6ee502e9888e4255b8a;p=platform%2Fupstream%2Fefl.git Revert "ecore/wayland: Add subsurface handling APIs." This reverts commit 65b960f4a60442edcd66082ccc1828b80a49885c. Conflicts: src/lib/ecore_wayland/ecore_wl.c --- diff --git a/src/Makefile_Ecore_Wayland.am b/src/Makefile_Ecore_Wayland.am index 41d2a6f..aaf08f5 100644 --- a/src/Makefile_Ecore_Wayland.am +++ b/src/Makefile_Ecore_Wayland.am @@ -14,7 +14,6 @@ lib/ecore_wayland/ecore_wl_dnd.c \ lib/ecore_wayland/ecore_wl_input.c \ lib/ecore_wayland/ecore_wl_output.c \ lib/ecore_wayland/ecore_wl_window.c \ -lib/ecore_wayland/ecore_wl_subsurf.c \ lib/ecore_wayland/ecore_wl_private.h lib_ecore_wayland_libecore_wayland_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl @ECORE_WAYLAND_CFLAGS@ diff --git a/src/lib/ecore_wayland/Ecore_Wayland.h b/src/lib/ecore_wayland/Ecore_Wayland.h index 6f50ba1..3588341 100644 --- a/src/lib/ecore_wayland/Ecore_Wayland.h +++ b/src/lib/ecore_wayland/Ecore_Wayland.h @@ -12,6 +12,7 @@ # include # include # include +# include # ifdef EAPI # undef EAPI @@ -35,7 +36,6 @@ typedef struct _Ecore_Wl_Display Ecore_Wl_Display; typedef struct _Ecore_Wl_Output Ecore_Wl_Output; typedef struct _Ecore_Wl_Input Ecore_Wl_Input; typedef struct _Ecore_Wl_Global Ecore_Wl_Global; /** @since 1.7.6 */ -typedef struct _Ecore_Wl_Subsurf Ecore_Wl_Subsurf; /** @since 1.8 */ # ifndef _ECORE_WAYLAND_WINDOW_PREDEF typedef struct _Ecore_Wl_Window Ecore_Wl_Window; @@ -252,8 +252,6 @@ struct _Ecore_Wl_Window /* FIXME: Ideally we should record the cursor name for this window * so we can compare and avoid unnecessary cursor set calls to wayland */ - Ecore_Wl_Subsurf *subsurfs; - void *data; }; @@ -384,7 +382,6 @@ struct _Ecore_Wl_Event_Interfaces_Bound * @li @ref Ecore_Wl_Window_Group * @li @ref Ecore_Wl_Input_Group * @li @ref Ecore_Wl_Dnd_Group - * @li @ref Ecore_Wl_Subsurf */ EAPI extern int ECORE_WL_EVENT_MOUSE_IN; @@ -868,93 +865,6 @@ EAPI struct wl_array *ecore_wl_dnd_drag_types_get(Ecore_Wl_Input *input); EAPI void ecore_wl_server_mode_set(Eina_Bool on); -/** - * @defgroup Ecore_Wl_Subsurf Functions to manipulate subsurfaces. - * @ingroup Ecore_Wl_Group - * - * Functions to manipulate wayland subsurfaces, using Ecore_Wl_Subsurf. - * - * This API is intended to expose Wayland subsurface functionality, although it - * should not be necessary for most applications to use it, as soon as we have - * means to make Evas automatically switch Evas images to use subsurfaces. - * - * It can/should be used, for instance, when subsurfaces are needed to be not - * in sync with the main window surface. - */ - -/** - * Create and return a new subsurface. - * - * Create a new surface (and subsurface interface), with the parent surface - * being the one associated with the given @param win. - * - * The @param win must be visible, otherwise there will be no surface created - * for it yet. - * - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI Ecore_Wl_Subsurf *ecore_wl_subsurf_create(Ecore_Wl_Window *win); - -/** - * Destroy the given subsurface, as well as the surface associated with it. - * - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_del(Ecore_Wl_Subsurf *ess); - -/** - * Return the wl_surface associated with this subsurface. - * - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI struct wl_surface *ecore_wl_subsurf_surface_get(Ecore_Wl_Subsurf *ess); - -/** - * Set the position of this subsurface, relative to its parent surface. - * - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_position_set(Ecore_Wl_Subsurf *ess, int x, int y); - -/** - * Get the position of this subsurface, relative to its parent surface. - * - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_position_get(Ecore_Wl_Subsurf *ess, int *x, int *y); - -/** - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_place_above(Ecore_Wl_Subsurf *ess, struct wl_surface *surface); - -/** - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_place_below(Ecore_Wl_Subsurf *ess, struct wl_surface *surface); - -/** - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_sync_set(Ecore_Wl_Subsurf *ess, Eina_Bool val); - -/** - * Set an opaque region for the given subsurface. - * - * Use a 0x0 region size to unset the opaque region. - * - * @ingroup Ecore_Wl_Subsurf - * @since 1.8 - */ -EAPI void ecore_wl_subsurf_opaque_region_set(Ecore_Wl_Subsurf *ess, int x, int y, int w, int h); #ifdef __cplusplus } #endif diff --git a/src/lib/ecore_wayland/ecore_wl.c b/src/lib/ecore_wayland/ecore_wl.c index d2565b8..acce728 100644 --- a/src/lib/ecore_wayland/ecore_wl.c +++ b/src/lib/ecore_wayland/ecore_wl.c @@ -4,7 +4,6 @@ #include #include "ecore_wl_private.h" -#include /* local function prototypes */ static Eina_Bool _ecore_wl_shutdown(Eina_Bool close); diff --git a/src/lib/ecore_wayland/ecore_wl_private.h b/src/lib/ecore_wayland/ecore_wl_private.h index b83aae3..dc034af 100644 --- a/src/lib/ecore_wayland/ecore_wl_private.h +++ b/src/lib/ecore_wayland/ecore_wl_private.h @@ -95,6 +95,4 @@ void _ecore_wl_dnd_del(Ecore_Wl_Dnd_Source *source); void _ecore_wl_events_init(void); void _ecore_wl_events_shutdown(void); -void _ecore_wl_subsurfs_del_all(Ecore_Wl_Window *win); - #endif diff --git a/src/lib/ecore_wayland/ecore_wl_subsurf.c b/src/lib/ecore_wayland/ecore_wl_subsurf.c deleted file mode 100644 index 4e144fa..0000000 --- a/src/lib/ecore_wayland/ecore_wl_subsurf.c +++ /dev/null @@ -1,191 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "ecore_wl_private.h" -#include - -struct _Ecore_Wl_Subsurf -{ - EINA_INLIST; - Ecore_Wl_Window *parent_win; - struct wl_surface *surface; - struct wl_subsurface *subsurface; - - int x, y; - - Eina_Bool sync : 1; -}; - -EAPI Ecore_Wl_Subsurf * -ecore_wl_subsurf_create(Ecore_Wl_Window *win) -{ - struct wl_subsurface *subsurface; - struct wl_surface *surface; - Ecore_Wl_Subsurf *ess; - - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!win) return NULL; - if (!win->surface) return NULL; - if (!_ecore_wl_disp->wl.subcompositor) return NULL; - - surface = wl_compositor_create_surface(_ecore_wl_disp->wl.compositor); - if (!surface) - return NULL; - - subsurface = wl_subcompositor_get_subsurface - (_ecore_wl_disp->wl.subcompositor, surface, win->surface); - if (!subsurface) - { - wl_surface_destroy(surface); - return NULL; - } - - ess = calloc(1, sizeof(*ess)); - ess->surface = surface; - ess->subsurface = subsurface; - ess->parent_win = win; - - win->subsurfs = (Ecore_Wl_Subsurf *)eina_inlist_append - (EINA_INLIST_GET(win->subsurfs), EINA_INLIST_GET(ess)); - - return ess; -} - -static void -_ecore_wl_subsurf_destroy(Ecore_Wl_Subsurf *ess) -{ - Ecore_Wl_Window *parent; - - wl_subsurface_destroy(ess->subsurface); - wl_surface_destroy(ess->surface); - - parent = ess->parent_win; - parent->subsurfs = (Ecore_Wl_Subsurf *)eina_inlist_remove - (EINA_INLIST_GET(parent->subsurfs), EINA_INLIST_GET(ess)); - - free(ess); -} - -EAPI void -ecore_wl_subsurf_del(Ecore_Wl_Subsurf *ess) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - - _ecore_wl_subsurf_destroy(ess); -} - -void -_ecore_wl_subsurfs_del_all(Ecore_Wl_Window *win) -{ - Ecore_Wl_Subsurf *ess; - - if (!win) return; - - EINA_INLIST_FREE(win->subsurfs, ess) - { - _ecore_wl_subsurf_destroy(ess); - } -} - -EAPI struct wl_surface * -ecore_wl_subsurf_surface_get(Ecore_Wl_Subsurf *ess) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return NULL; - - return ess->surface; -} - -EAPI void -ecore_wl_subsurf_position_set(Ecore_Wl_Subsurf *ess, int x, int y) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - - if ((x == ess->x) && (y == ess->y)) - return; - - ess->x = x; - ess->y = y; - - wl_subsurface_set_position(ess->subsurface, x, y); -} - -EAPI void -ecore_wl_subsurf_position_get(Ecore_Wl_Subsurf *ess, int *x, int *y) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - - if (x) *x = ess->x; - if (y) *y = ess->y; -} - -EAPI void -ecore_wl_subsurf_place_above(Ecore_Wl_Subsurf *ess, struct wl_surface *surface) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - if (!surface) return; - - wl_subsurface_place_above(ess->subsurface, surface); -} - -EAPI void -ecore_wl_subsurf_place_below(Ecore_Wl_Subsurf *ess, struct wl_surface *surface) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - if (!surface) return; - - wl_subsurface_place_below(ess->subsurface, surface); -} - -EAPI void -ecore_wl_subsurf_sync_set(Ecore_Wl_Subsurf *ess, Eina_Bool val) -{ - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - - val = !!val; - if (val == ess->sync) return; - - ess->sync = val; - - if (ess->sync) - wl_subsurface_set_sync(ess->subsurface); - else - wl_subsurface_set_desync(ess->subsurface); -} - -EAPI void -ecore_wl_subsurf_opaque_region_set(Ecore_Wl_Subsurf *ess, int x, int y, int w, int h) -{ - Ecore_Wl_Window *parent; - struct wl_region *region = NULL; - - LOGFN(__FILE__, __LINE__, __FUNCTION__); - - if (!ess) return; - - if ((w > 0) && (h > 0)) - { - parent = ess->parent_win; - region = wl_compositor_create_region(parent->display->wl.compositor); - wl_region_add(region, x, y, w, h); - wl_surface_set_opaque_region(ess->surface, region); - wl_region_destroy(region); - } - else - wl_surface_set_opaque_region(ess->surface, NULL); -} diff --git a/src/lib/ecore_wayland/ecore_wl_window.c b/src/lib/ecore_wayland/ecore_wl_window.c index 4ec78c8..cd5aabe 100644 --- a/src/lib/ecore_wayland/ecore_wl_window.c +++ b/src/lib/ecore_wayland/ecore_wl_window.c @@ -114,8 +114,6 @@ ecore_wl_window_free(Ecore_Wl_Window *win) if (win->anim_callback) wl_callback_destroy(win->anim_callback); win->anim_callback = NULL; - if (win->subsurfs) _ecore_wl_subsurfs_del_all(win); - if (win->shell_surface) wl_shell_surface_destroy(win->shell_surface); win->shell_surface = NULL; if (win->surface) wl_surface_destroy(win->surface);