Improve performance in getting root plugins list.
authorTaejeong Lee <taejeong.lee@samsung.com>
Thu, 23 May 2013 07:17:00 +0000 (16:17 +0900)
committerTaejeong Lee <taejeong.lee@samsung.com>
Thu, 23 May 2013 08:20:10 +0000 (17:20 +0900)
 * note: this commit needs a new api from wrt-commons.
   - getRootPluginHandleList()

[Issue#] N/A
[Problem] Performance.
[Cause] Too many access to db.
[Solution] Changed to use new "getRootPluginHandleList()"

Change-Id: Ie4c2191c1882c1ebd4afd9830f0c9f72612e764b

src/plugin-loading/plugin_container_support.cpp
src/plugin-loading/plugin_logic.cpp

index 7eabd46..13dadd0 100644 (file)
@@ -167,23 +167,11 @@ void PluginContainerSupport::registerPluginModel(DbPluginHandle handle)
     m_pluginModels.insert(model);
 }
 
- void PluginContainerSupport::readRootPluginsList()
+void PluginContainerSupport::readRootPluginsList()
 {
     LogDebug("Reading root plugins list from so files...");
 
-    PluginHandleList pluginHandleList =
-        PluginDAOReadOnly::getPluginHandleList();
-
-    FOREACH(it_pluginHandle, pluginHandleList)
-    {
-        PluginDAOReadOnly pluginDao(*it_pluginHandle);
-        PluginHandleSetPtr retDependencies;
-        retDependencies = pluginDao.getLibraryDependencies();
-        if (retDependencies->empty()) {
-            LogDebug("Root plugin Handle: " << *it_pluginHandle);
-            m_rootPluginsList.push_back(*it_pluginHandle);
-        }
-    }
+    m_rootPluginsList = PluginDAOReadOnly::getRootPluginHandleList();
 }
 
 FeatureModelPtr
index aef6950..1d96e96 100644 (file)
@@ -255,18 +255,12 @@ void PluginLogic::Impl::initSession(int widgetHandle)
     //add standard objects
     LogDebug("Preload plugins so file");
 
-    PluginContainerSupport::PluginsList pluginList =
-        m_pluginsSupport->getPluginsList();
+    PluginContainerSupport::PluginsList rootPluginList =
+        m_pluginsSupport->getRootPlugins();
 
-    FOREACH(it, pluginList)
+    FOREACH(it, rootPluginList)
     {
         PluginModelPtr& pluginModel = *it;
-
-        if (!pluginModel->LibraryDependencies.Get()->empty()) {
-            // Only Root Object
-            continue;
-        }
-
         PluginPtr pluginLib = pluginModel->LibraryInstance.Get();
 
         if (!pluginLib) {