From 9f13b28fcfaa6962a999f1ae2c59754f55e257e6 Mon Sep 17 00:00:00 2001 From: JengHyun Kang Date: Wed, 23 Nov 2016 17:25:17 +0900 Subject: [PATCH] ecore_wayland: Send device events and build devices list if the window is not exist Change-Id: I937df89aacc8bc6eeeeae17a508c21b00f403e4a --- src/lib/ecore_wayland/ecore_wl_input.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/lib/ecore_wayland/ecore_wl_input.c b/src/lib/ecore_wayland/ecore_wl_input.c index b17c297..a7dfa2d 100644 --- a/src/lib/ecore_wayland/ecore_wl_input.c +++ b/src/lib/ecore_wayland/ecore_wl_input.c @@ -2154,23 +2154,33 @@ _ecore_wl_input_device_info_broadcast(const char *name, const char *identifier, Ecore_Wl_Window *win = NULL; void *data; Eina_Bool ret = EINA_FALSE; + Eina_Bool has_win = EINA_FALSE; windows = _ecore_wl_window_hash_get(); - if (!windows) return; if (!name) return; - itr = eina_hash_iterator_data_new(windows); - while (eina_iterator_next(itr, &data)) + + if (flag) + ret = _ecore_wl_input_add_ecore_device(name, identifier, clas); + else + ret = _ecore_wl_input_del_ecore_device(name, identifier, clas); + + if (!ret) return; + if (windows) { - win = data; - if (flag) - ret = _ecore_wl_input_add_ecore_device(name, identifier, clas); - else - ret = _ecore_wl_input_del_ecore_device(name, identifier, clas); - if (ret) - _ecore_wl_input_device_info_send(win->id, name, identifier, clas, flag); - } + itr = eina_hash_iterator_data_new(windows); + while (eina_iterator_next(itr, &data)) + { + win = data; + has_win = EINA_TRUE; + _ecore_wl_input_device_info_send(win->id, name, identifier, clas, flag); + } - eina_iterator_free(itr); + eina_iterator_free(itr); + } + if (!has_win) + { + _ecore_wl_input_device_info_send((uintptr_t)NULL, name, identifier, clas, flag); + } } static void -- 2.7.4