From d01fc7d5814057f3912b9af8d321610c80cc1f69 Mon Sep 17 00:00:00 2001 From: Mu-Woong Lee Date: Thu, 28 Apr 2016 17:00:44 +0900 Subject: [PATCH] Switch to gmodule from linux dl functions Change-Id: Ia754d27ff650ad393ca8a3ec6d958bb9ab793341 Signed-off-by: Mu-Woong Lee --- packaging/context-provider.spec | 1 + src/media-stats/CMakeLists.txt | 3 ++- src/media-stats/MediaContentMonitor.cpp | 18 ++++++++++-------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packaging/context-provider.spec b/packaging/context-provider.spec index 9d7b30b..cc70bb4 100644 --- a/packaging/context-provider.spec +++ b/packaging/context-provider.spec @@ -14,6 +14,7 @@ ExcludeArch: %{arm} aarch64 %ix86 x86_64 BuildRequires: cmake +BuildRequires: pkgconfig(gmodule-2.0) BuildRequires: pkgconfig(libcontext-server) BuildRequires: pkgconfig(vconf) BuildRequires: pkgconfig(capi-system-info) diff --git a/src/media-stats/CMakeLists.txt b/src/media-stats/CMakeLists.txt index 19c9ea4..e30fdf2 100644 --- a/src/media-stats/CMakeLists.txt +++ b/src/media-stats/CMakeLists.txt @@ -1,6 +1,7 @@ SET(target "${target_prefix}-media-stats") SET(DEPS ${DEPS} + gmodule-2.0 libmedia-utils ) @@ -14,7 +15,7 @@ FOREACH(flag ${PKG_MEDIA_STATS_CFLAGS}) ENDFOREACH(flag) ADD_LIBRARY(${target} SHARED ${SRCS}) -TARGET_LINK_LIBRARIES(${target} ${PKG_MEDIA_STATS_LDFLAGS} ${target_shared} -ldl) +TARGET_LINK_LIBRARIES(${target} ${PKG_MEDIA_STATS_LDFLAGS} ${target_shared}) INSTALL(TARGETS ${target} DESTINATION ${CMAKE_INSTALL_LIBDIR}/${target_dir}) diff --git a/src/media-stats/MediaContentMonitor.cpp b/src/media-stats/MediaContentMonitor.cpp index 634de43..d99da36 100644 --- a/src/media-stats/MediaContentMonitor.cpp +++ b/src/media-stats/MediaContentMonitor.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include +#include #include #include #include @@ -82,18 +82,20 @@ void ctx::MediaContentMonitor::onSignal(const char *sender, const char *path, co bool ctx::MediaContentMonitor::__getPlayCount(int updateItem, int updateType, int mediaType, char *uuid, int *count) { - void *soHandle = dlopen(SO_PATH, RTLD_LAZY | RTLD_GLOBAL); - IF_FAIL_RETURN_TAG(soHandle, false, _E, "%s", dlerror()); + GModule *soHandle = g_module_open(SO_PATH, G_MODULE_BIND_LAZY); + IF_FAIL_RETURN_TAG(soHandle, false, _E, "%s", g_module_error()); - get_play_count_t getCount = reinterpret_cast(dlsym(soHandle, "getMediaPlayCount")); - if (!getCount) { - _E("%s", dlerror()); - dlclose(soHandle); + gpointer symbol; + if (!g_module_symbol(soHandle, "getMediaPlayCount", &symbol) || symbol == NULL) { + _E("%s", g_module_error()); + g_module_close(soHandle); return false; } + get_play_count_t getCount = reinterpret_cast(symbol); + bool ret = getCount(updateItem, updateType, mediaType, uuid, count); - dlclose(soHandle); + g_module_close(soHandle); return ret; } -- 2.34.1