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)
{
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;
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;
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;
}
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;