summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2017-01-11 12:22:01 -0500
committerChris Michael <cp.michael@samsung.com>2017-01-11 12:36:33 -0500
commit755c50a84e58d95cbb2ba85f6474bc0a7bc0774f (patch)
tree3025157a7e7a32abd6510facea73f1c32648a6cc /src
parent6c9dc2a5ba61f0409001115d0d31adc1e5c48e48 (diff)
ecore-wl2: Add event to raise when window configure is completed.
Small patch to create and raise a new event letting ecore_evas know when the window has been configured. With the addition of xdg_shell v6 support, we cannot commit a surface with an existing buffer until the surface has been configured. This patch allows us to raise an event to ecore_evas when the surface has been configured, so we can then attach a buffer to it. ref T5090 Signed-off-by: Chris Michael <cp.michael@samsung.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/ecore_wl2/Ecore_Wl2.h6
-rw-r--r--src/lib/ecore_wl2/ecore_wl2.c3
-rw-r--r--src/lib/ecore_wl2/ecore_wl2_window.c8
3 files changed, 17 insertions, 0 deletions
diff --git a/src/lib/ecore_wl2/Ecore_Wl2.h b/src/lib/ecore_wl2/Ecore_Wl2.h
index 6a0ff4f04a..58f3e33d4a 100644
--- a/src/lib/ecore_wl2/Ecore_Wl2.h
+++ b/src/lib/ecore_wl2/Ecore_Wl2.h
@@ -201,6 +201,11 @@ typedef struct _Ecore_Wl2_Event_Window_Configure
201 unsigned int states; 201 unsigned int states;
202} Ecore_Wl2_Event_Window_Configure; 202} Ecore_Wl2_Event_Window_Configure;
203 203
204typedef struct _Ecore_Wl2_Event_Window_Configure_Complete
205{
206 unsigned int win;
207} Ecore_Wl2_Event_Window_Configure_Complete;
208
204typedef struct _Ecore_Wl2_Event_Sync_Done 209typedef struct _Ecore_Wl2_Event_Sync_Done
205{ 210{
206 Ecore_Wl2_Display *display; 211 Ecore_Wl2_Display *display;
@@ -250,6 +255,7 @@ EAPI extern int ECORE_WL2_EVENT_SEAT_NAME_CHANGED; /** @since 1.19 */
250EAPI extern int ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED; /** @since 1.19 */ 255EAPI extern int ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED; /** @since 1.19 */
251EAPI extern int ECORE_WL2_EVENT_DEVICE_ADDED; /** @since 1.19 */ 256EAPI extern int ECORE_WL2_EVENT_DEVICE_ADDED; /** @since 1.19 */
252EAPI extern int ECORE_WL2_EVENT_DEVICE_REMOVED; /** @since 1.19 */ 257EAPI extern int ECORE_WL2_EVENT_DEVICE_REMOVED; /** @since 1.19 */
258EAPI extern int ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE; /** @since 1.19 */
253 259
254/** 260/**
255 * @file 261 * @file
diff --git a/src/lib/ecore_wl2/ecore_wl2.c b/src/lib/ecore_wl2/ecore_wl2.c
index bbae13fc6b..362ef38a3a 100644
--- a/src/lib/ecore_wl2/ecore_wl2.c
+++ b/src/lib/ecore_wl2/ecore_wl2.c
@@ -35,6 +35,7 @@ EAPI int ECORE_WL2_EVENT_SEAT_NAME_CHANGED = 0;
35EAPI int ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED = 0; 35EAPI int ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED = 0;
36EAPI int ECORE_WL2_EVENT_DEVICE_ADDED = 0; 36EAPI int ECORE_WL2_EVENT_DEVICE_ADDED = 0;
37EAPI int ECORE_WL2_EVENT_DEVICE_REMOVED = 0; 37EAPI int ECORE_WL2_EVENT_DEVICE_REMOVED = 0;
38EAPI int ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE = 0;
38 39
39EAPI int _ecore_wl2_event_window_www = -1; 40EAPI int _ecore_wl2_event_window_www = -1;
40EAPI int _ecore_wl2_event_window_www_drag = -1; 41EAPI int _ecore_wl2_event_window_www_drag = -1;
@@ -99,6 +100,7 @@ ecore_wl2_init(void)
99 ECORE_WL2_EVENT_DEVICE_REMOVED = ecore_event_type_new(); 100 ECORE_WL2_EVENT_DEVICE_REMOVED = ecore_event_type_new();
100 _ecore_wl2_event_window_www = ecore_event_type_new(); 101 _ecore_wl2_event_window_www = ecore_event_type_new();
101 _ecore_wl2_event_window_www_drag = ecore_event_type_new(); 102 _ecore_wl2_event_window_www_drag = ecore_event_type_new();
103 ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE = ecore_event_type_new();
102 } 104 }
103 if (!no_session_recovery) 105 if (!no_session_recovery)
104 no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY"); 106 no_session_recovery = !!getenv("EFL_NO_WAYLAND_SESSION_RECOVERY");
@@ -152,6 +154,7 @@ ecore_wl2_shutdown(void)
152 ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED = 0; 154 ECORE_WL2_EVENT_SEAT_CAPABILITIES_CHANGED = 0;
153 ECORE_WL2_EVENT_DEVICE_ADDED = 0; 155 ECORE_WL2_EVENT_DEVICE_ADDED = 0;
154 ECORE_WL2_EVENT_DEVICE_REMOVED = 0; 156 ECORE_WL2_EVENT_DEVICE_REMOVED = 0;
157 ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE = 0;
155 158
156 /* shutdown Ecore_Event */ 159 /* shutdown Ecore_Event */
157 ecore_event_shutdown(); 160 ecore_event_shutdown();
diff --git a/src/lib/ecore_wl2/ecore_wl2_window.c b/src/lib/ecore_wl2/ecore_wl2_window.c
index 6b86be9fa5..91c1e6448f 100644
--- a/src/lib/ecore_wl2/ecore_wl2_window.c
+++ b/src/lib/ecore_wl2/ecore_wl2_window.c
@@ -190,11 +190,19 @@ static void
190_zxdg_surface_cb_configure(void *data, struct zxdg_surface_v6 *zxdg_surface, uint32_t serial) 190_zxdg_surface_cb_configure(void *data, struct zxdg_surface_v6 *zxdg_surface, uint32_t serial)
191{ 191{
192 Ecore_Wl2_Window *window; 192 Ecore_Wl2_Window *window;
193 Ecore_Wl2_Event_Window_Configure_Complete *ev;
193 194
194 zxdg_surface_v6_ack_configure(zxdg_surface, serial); 195 zxdg_surface_v6_ack_configure(zxdg_surface, serial);
195 196
196 window = data; 197 window = data;
198 if (!window->pending.configure) return;
197 window->pending.configure = EINA_FALSE; 199 window->pending.configure = EINA_FALSE;
200
201 ev = calloc(1, sizeof(Ecore_Wl2_Event_Window_Configure_Complete));
202 if (!ev) return;
203
204 ev->win = window->id;
205 ecore_event_add(ECORE_WL2_EVENT_WINDOW_CONFIGURE_COMPLETE, ev, NULL, NULL);
198} 206}
199 207
200static const struct zxdg_surface_v6_listener _zxdg_surface_listener = 208static const struct zxdg_surface_v6_listener _zxdg_surface_listener =