From: Taejeong Lee Date: Thu, 23 May 2013 07:17:00 +0000 (+0900) Subject: Improve performance in getting root plugins list. X-Git-Tag: submit/tizen_2.2/20130927.091410^2~51 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fframework%2Fweb%2Fwrt-plugins-common.git;a=commitdiff_plain;h=5a95fbdfc1425b8b8d2b6d6b3ecc19bf45dec82a Improve performance in getting root plugins list. * 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 --- diff --git a/src/plugin-loading/plugin_container_support.cpp b/src/plugin-loading/plugin_container_support.cpp index 7eabd46..13dadd0 100644 --- a/src/plugin-loading/plugin_container_support.cpp +++ b/src/plugin-loading/plugin_container_support.cpp @@ -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 diff --git a/src/plugin-loading/plugin_logic.cpp b/src/plugin-loading/plugin_logic.cpp index aef6950..1d96e96 100644 --- a/src/plugin-loading/plugin_logic.cpp +++ b/src/plugin-loading/plugin_logic.cpp @@ -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) {