From 0fc4fa71565a466ce006a08b3d2f9099f074d0cc Mon Sep 17 00:00:00 2001 From: Derek Foreman Date: Fri, 26 Jan 2018 13:15:45 -0600 Subject: [PATCH] ecore_wl2: Add surface_window_get api One of the last remaining blockers for compiling dmabuf support as a plug-in. --- src/lib/ecore_wl2/Ecore_Wl2.h | 1 + src/lib/ecore_wl2/ecore_wl2_surface.c | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h index c12e3a98fc..d03537f2a6 100644 --- a/src/lib/ecore_wl2/Ecore_Wl2.h +++ b/src/lib/ecore_wl2/Ecore_Wl2.h @@ -2030,6 +2030,7 @@ EAPI void ecore_wl2_window_surface_flush(Ecore_Wl2_Window *window); EAPI Ecore_Wl2_Buffer *ecore_wl2_surface_buffer_create(Ecore_Wl2_Surface *surface); EAPI int ecore_wl2_surface_manager_add(Ecore_Wl2_Surface_Interface *intf); EAPI void ecore_wl2_surface_manager_del(Ecore_Wl2_Surface_Interface *intf); +EAPI Ecore_Wl2_Window *ecore_wl2_surface_window_get(Ecore_Wl2_Surface *surface); # endif diff --git a/src/lib/ecore_wl2/ecore_wl2_surface.c b/src/lib/ecore_wl2/ecore_wl2_surface.c index b5331c2e6e..e110a2c86b 100644 --- a/src/lib/ecore_wl2/ecore_wl2_surface.c +++ b/src/lib/ecore_wl2/ecore_wl2_surface.c @@ -152,6 +152,7 @@ _evas_dmabuf_surface_post(Ecore_Wl2_Surface *s, void *priv_data, Eina_Rectangle { Ecore_Wl2_Dmabuf_Private *p; Ecore_Wl2_Buffer *b; + Ecore_Wl2_Window *win; p = priv_data; @@ -164,10 +165,12 @@ _evas_dmabuf_surface_post(Ecore_Wl2_Surface *s, void *priv_data, Eina_Rectangle ecore_wl2_buffer_busy_set(b); ecore_wl2_buffer_age_set(b, 0); - ecore_wl2_window_buffer_attach(s->wl2_win, b->wl_buffer, 0, 0, EINA_FALSE); - ecore_wl2_window_damage(s->wl2_win, rects, count); + win = ecore_wl2_surface_window_get(s); - ecore_wl2_window_commit(s->wl2_win, EINA_TRUE); + ecore_wl2_window_buffer_attach(win, b->wl_buffer, 0, 0, EINA_FALSE); + ecore_wl2_window_damage(win, rects, count); + + ecore_wl2_window_commit(win, EINA_TRUE); } static void @@ -325,6 +328,14 @@ ecore_wl2_surface_manager_del(Ecore_Wl2_Surface_Interface *intf) _smanagers = eina_list_remove(_smanagers, intf); } +EAPI Ecore_Wl2_Window * +ecore_wl2_surface_window_get(Ecore_Wl2_Surface *surface) +{ + EINA_SAFETY_ON_NULL_RETURN_VAL(surface, NULL); + + return surface->wl2_win; +} + /* TEMPORARY HACK FOR TESTING */ Eina_Bool ecore_wl2_surface_manager_dmabuf_add(void)