#include "mediakey/mediakey_manager.h"
#include "common/logger.h"
#include "common/platform_exception.h"
+#include <glib.h>
+#include <Ecore.h>
namespace extension {
namespace mediakey {
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",
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,