Remove disconnecting wayland connection 67/225367/3
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 19 Feb 2020 08:30:25 +0000 (17:30 +0900)
committerhyunho <hhstark.kang@samsung.com>
Wed, 19 Feb 2020 09:49:40 +0000 (18:49 +0900)
Change-Id: I0fe82d2768f20ddce37f46d80657c4a3b2256916
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/media_key.c

index 88cb176..6a901da 100644 (file)
@@ -53,10 +53,9 @@ struct key_map media_keys[] = {
 static media_key_event_cb _media_key_event_cb;
 static void *_media_key_data;
 static int _media_key_initialized;
-static Ecore_Wl2_Display *_wl2_dpy;
 
-static Ecore_Event_Handler *media_key_up;
-static Ecore_Event_Handler *media_key_down;
+static Ecore_Event_Handler *_media_key_up;
+static Ecore_Event_Handler *_media_key_down;
 
 static int _media_key_init(void)
 {
@@ -64,8 +63,7 @@ static int _media_key_init(void)
                return 0;
 
        ecore_wl2_init();
-       _wl2_dpy = ecore_wl2_display_connect(NULL);
-       if (!_wl2_dpy) {
+       if (!ecore_wl2_display_connect(NULL)) {
                LOGE("Failed to connect to wl2 display");
                ecore_wl2_shutdown();
                return -1;
@@ -76,16 +74,6 @@ static int _media_key_init(void)
        return 0;
 }
 
-static void _media_key_fini(void)
-{
-       if (_wl2_dpy) {
-               ecore_wl2_display_disconnect(_wl2_dpy);
-               _wl2_dpy = NULL;
-       }
-       ecore_wl2_shutdown();
-       _media_key_initialized = 0;
-}
-
 static void _media_key_handler(const char *key_str, media_key_e event)
 {
        int i;
@@ -181,24 +169,27 @@ int media_key_reserve(media_key_event_cb callback, void *user_data)
                        return MEDIA_KEY_ERROR_OPERATION_FAILED;
        }
 
+       _media_key_event_cb = callback;
+       _media_key_data = user_data;
+       if (_media_key_down) {
+               LOGI("ecore event andler already added, just update callback");
+               return MEDIA_KEY_ERROR_NONE;
+       }
+
        ret = _grab_media_key();
        if (ret) {
                LOGE("reserve media key error [%d]", ret);
                return MEDIA_KEY_ERROR_OPERATION_FAILED;
        }
 
-       media_key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _media_key_press_cb, NULL);
-       if (!media_key_down)
+       _media_key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _media_key_press_cb, NULL);
+       if (!_media_key_down)
                LOGE("failed to register key down event handler");
 
-
-       media_key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _media_key_release_cb, NULL);
-       if (!media_key_down)
+       _media_key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _media_key_release_cb, NULL);
+       if (!_media_key_up)
                LOGE("failed to register key up event handler");
 
-       _media_key_event_cb = callback;
-       _media_key_data = user_data;
-
        return MEDIA_KEY_ERROR_NONE;
 }
 
@@ -212,22 +203,20 @@ int media_key_release(void)
                return MEDIA_KEY_ERROR_NONE;
        }
 
-       ret = _ungrab_media_key();
-       if (ret) {
-               LOGE("release media key error [%d]", ret);
-               return MEDIA_KEY_ERROR_OPERATION_FAILED;
+       if (_media_key_down) {
+               ecore_event_handler_del(_media_key_down);
+               _media_key_down = NULL;
        }
 
-       _media_key_fini();
-
-       if (media_key_down) {
-               ecore_event_handler_del(media_key_down);
-               media_key_down = NULL;
+       if (_media_key_up) {
+               ecore_event_handler_del(_media_key_up);
+               _media_key_up = NULL;
        }
 
-       if (media_key_up) {
-               ecore_event_handler_del(media_key_up);
-               media_key_up = NULL;
+       ret = _ungrab_media_key();
+       if (ret) {
+               LOGE("release media key error [%d]", ret);
+               return MEDIA_KEY_ERROR_OPERATION_FAILED;
        }
 
        _media_key_event_cb = NULL;