[Tizen2.4] Fix to load module for plugin. 79/58579/5
authorYoungbok Shin <youngb.shin@samsung.com>
Mon, 19 Jan 2015 08:47:39 +0000 (17:47 +0900)
committerSungtaek Hong <sth253.hong@samsung.com>
Fri, 19 Feb 2016 11:12:26 +0000 (03:12 -0800)
Change-Id: I86fac687d2293f1be52d3585e94ac4d6b0374fb9

src/lib/edje/edje_data.c
src/lib/edje/edje_program.c

index fb50b45..e00d011 100644 (file)
@@ -621,6 +621,9 @@ _edje_edd_init(void)
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "in.range", in.range, EET_T_DOUBLE);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "action", action, EET_T_INT);
 
+   // TIZEN_ONLY(20150119): Fix to load module for plugin.
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "plugin_name", plugin_name, EET_T_STRING);
+   //
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "sample_name", sample_name, EET_T_STRING);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tone_name", tone_name, EET_T_STRING);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "duration", duration, EET_T_DOUBLE);
index 944d5ad..bc36558 100644 (file)
@@ -1024,7 +1024,37 @@ low_mem_current:
       // TIZEN_ONLY(20150110): Add plugin keyword.
 #ifdef PLUGIN
      case EDJE_ACTION_TYPE_RUN_PLUGIN:
-        // DO NOTHING!
+        // TIZEN_ONLY(20150119): Fix to load module for plugin.
+        if (_edje_block_break(ed))
+          {
+             goto break_prog;
+          }
+         Eina_List *l;
+         Edje_Plugin *p;
+         EINA_LIST_FOREACH(ed->file->plugins, l, p)
+           {
+              if (pr->plugin_name && p->name && !strcmp(pr->plugin_name, p->name)
+                  && p->source)
+                {
+                   Eina_Module *mod;
+                   mod = _edje_module_handle_load(p->source);
+                   if (!mod)
+                     {
+                        WRN("moudle could not be loaded: %s", p->source);
+                        break;
+                     }
+                   Edje_Module_Plugin_Run run_cb;
+                   run_cb = eina_module_symbol_get(mod, "edje_plugin_run");
+                   if (!run_cb)
+                     {
+                        WRN("plugin module does not have edje_plugin_run function");
+                        break;
+                     }
+                   else
+                     if (!run_cb(ed->obj, p->name, p->param)) WRN("edje plugin run failed");
+                }
+           }
+        //
         break;
 #endif
       //