From 1b4d732547f01c7b6ac904b1547f304265459496 Mon Sep 17 00:00:00 2001 From: "bg.chun" Date: Thu, 31 Mar 2016 16:49:10 +0900 Subject: [PATCH] [Mediakey] add ecore_main_loop_iterate [Verification] TCT pass rate 100% (15/15/0/0/0) Change-Id: I669973e85484e3abf9a974c9a9b3dcadcd124ccb Signed-off-by: bg.chun --- src/mediakey/mediakey.gyp | 1 + src/mediakey/mediakey_manager.cc | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/mediakey/mediakey.gyp b/src/mediakey/mediakey.gyp index 339ea010..2a8656d7 100644 --- a/src/mediakey/mediakey.gyp +++ b/src/mediakey/mediakey.gyp @@ -26,6 +26,7 @@ 'variables': { 'packages': [ 'capi-system-media-key', + 'ecore', ] }, }], diff --git a/src/mediakey/mediakey_manager.cc b/src/mediakey/mediakey_manager.cc index 0ba6aea7..654ccce7 100755 --- a/src/mediakey/mediakey_manager.cc +++ b/src/mediakey/mediakey_manager.cc @@ -17,6 +17,8 @@ #include "mediakey/mediakey_manager.h" #include "common/logger.h" #include "common/platform_exception.h" +#include +#include namespace extension { namespace mediakey { @@ -38,14 +40,37 @@ MediaKeyManager::MediaKeyManager() LoggerD("Enter"); } +static int timeout_id_=0; + +static gboolean itr_ecore(gpointer user_data){ + //LoggerD("Enter"); + ecore_main_loop_iterate(); + + return true; +} + common::PlatformResult MediaKeyManager::RegisterMediaKeyEventListener( MediaKeyListener* listener) { LoggerD("Enter"); + + + + if (!m_media_key_listener_registered) { LoggerD("before calling media_key_reserve"); + + ecore_init(); + timeout_id_ = g_timeout_add(100, itr_ecore, this); + int ret = media_key_reserve(MediaKeyEventCallback, NULL); + LoggerD("after calling media_key_reserve - result = %d", ret); if (MEDIA_KEY_ERROR_NONE != ret) { + if (timeout_id_ > 0) { + // cancel terminate callback + g_source_remove(timeout_id_); + timeout_id_ = 0; + } return LogAndCreateResult( ErrorCode::UNKNOWN_ERR, "Failed to register a media keys change event callback", @@ -61,6 +86,13 @@ common::PlatformResult MediaKeyManager::UnregisterMediaKeyEventListener() { LoggerD("Enter"); if (m_media_key_listener_registered) { int ret = media_key_release(); + + if (timeout_id_ > 0) { + // cancel terminate callback + g_source_remove(timeout_id_); + timeout_id_ = 0; + } + if (MEDIA_KEY_ERROR_NONE != ret) { return LogAndCreateResult( ErrorCode::UNKNOWN_ERR, -- 2.34.1