[Mediakey] add ecore_main_loop_iterate
authorbg.chun <bg.chun@samsung.com>
Thu, 31 Mar 2016 07:49:10 +0000 (16:49 +0900)
committerbg.chun <bg.chun@samsung.com>
Thu, 31 Mar 2016 08:03:18 +0000 (17:03 +0900)
[Verification] TCT pass rate 100% (15/15/0/0/0)

Change-Id: I669973e85484e3abf9a974c9a9b3dcadcd124ccb
Signed-off-by: bg.chun <bg.chun@samsung.com>
src/mediakey/mediakey.gyp
src/mediakey/mediakey_manager.cc

index 339ea01013dfd420ec1c4c63ccff6919fb17eecd..2a8656d75c906d838a57da1c3b27eaf01e894410 100644 (file)
@@ -26,6 +26,7 @@
          'variables': {
             'packages': [
               'capi-system-media-key',
+              'ecore',
             ]
           },
         }],
index 0ba6aea72a2eb16100d03d9114264e384035bfb8..654ccce76ab30977cb3365981c1ae78e64eccb40 100755 (executable)
@@ -17,6 +17,8 @@
 #include "mediakey/mediakey_manager.h"
 #include "common/logger.h"
 #include "common/platform_exception.h"
+#include <glib.h>
+#include <Ecore.h>
 
 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,