Remove unnecessary repetition of initializing feedback library.
[framework/web/webkit-efl.git] / Source / WebCore / platform / efl / tizen / TizenLinkEffect.cpp
index 2b8222a..87faff3 100644 (file)
 #include "config.h"
 #include "TizenLinkEffect.h"
 
+#if ENABLE(TIZEN_LINK_EFFECT)
 #include "feedback.h"
+#include <dlfcn.h>
 
-#if ENABLE(TIZEN_LINK_EFFECT)
 namespace WebCore {
 
-void TizenLinkEffect::playLinkEffect()
+static int (*feedback_play)(int);
+
+static void* getHandle()
 {
+    void* handle = dlopen("libfeedback.so.0", RTLD_NOW);
+    if (!handle)
+        return 0;
+
+    int (*feedback_initialize)() = (int(*)(void))dlsym(handle, "feedback_initialize");
+    if (!feedback_initialize) {
+        dlclose(handle);
+        return 0;
+    }
+
+    feedback_play = (int(*)(int))dlsym(handle, "feedback_play");
+    if (!feedback_play) {
+        dlclose(handle);
+        return 0;
+    }
+
     feedback_initialize();
+    return handle;
+}
+
+void TizenLinkEffect::playLinkEffect()
+{
+    static void* handle = getHandle();
+
+    if (!handle)
+        return;
+
     feedback_play(FEEDBACK_PATTERN_TAP);
-    feedback_deinitialize();
 }
 
 }