diff --git a/honoka/src/honoka_imengine.cpp b/honoka/src/honoka_imengine.cpp index c0330e9..4ce3ac5 100644 --- a/honoka/src/honoka_imengine.cpp +++ b/honoka/src/honoka_imengine.cpp @@ -24,6 +24,7 @@ #include #include +#include // ��ݲ��Τ��ޤ��ʤ��� #ifdef HAVE_GETTEXT @@ -164,6 +165,7 @@ // // �ץ饰�����ɤ߹�����ʬ�� // + set pluginNameList; while((entry = readdir(dir)) != NULL) { // �ޤ�̾������ꤷ�ޤ��� String d = entry->d_name; @@ -193,20 +195,27 @@ pe.createInstance = getInstance; pe.deleteInstance = deleteInstance; pe.getPluginVersion = getPluginVersion; + pe.instance = p; + pe.name = p->getName(); // Ʊ̾�Υץ饰���󤬤��ä����ϥ��ɤ���ߤ��ޤ��� - if (plugins.find(p->getName()) != plugins.end()) { + //if (plugins.find(p->getName()) != plugins.end()) { + if (pluginNameList.find(p->getName()) != pluginNameList.end()) { deleteInstance(p); dlclose(plugin); } else // Convertor�ξ�硣 if (p->getPluginType() == "Convertor") { convertors.push_back(static_cast(p)); - plugins.insert(pair(p->getName(),pe)); + //plugins.insert(pair(p->getName(),pe)); + plugins.push_back(pe); + pluginNameList.insert(p->getName()); } else // PreEditor�ξ�硣 if (p->getPluginType() == "PreEditor") { preeditors.push_back(static_cast(p)); - plugins.insert(pair(p->getName(),pe)); + //plugins.insert(pair(p->getName(),pe)); + plugins.push_back(pe); + pluginNameList.insert(p->getName()); } else { // �ɤ���Ǥ�ʤ���Сġ� deleteInstance(p); @@ -234,10 +243,14 @@ HonokaInstance::~HonokaInstance() { - for(unsigned int i = 0;i < preeditors.size();i ++) { +/* for(unsigned int i = 0;i < preeditors.size();i ++) { delete(preeditors.at(i)); } if (m_convertor->isConnected()) m_convertor->disconnect(); +*/ + for(unsigned int i = 0;i < plugins.size();i ++) { + plugins[i].deleteInstance(plugins[i].instance); + } } diff --git a/honoka/src/honoka_imengine.h b/honoka/src/honoka_imengine.h index 8e5520e..9b7b62a 100644 --- a/honoka/src/honoka_imengine.h +++ b/honoka/src/honoka_imengine.h @@ -77,9 +77,11 @@ { public: String filename; + String name; createInstanceFunc *createInstance; deleteInstanceFunc *deleteInstance; getPluginVersionFunc *getPluginVersion; + HonokaPluginBase *instance; }; @@ -122,7 +124,8 @@ String defaultPreEditor; String defaultConvertor; IConvert m_iconv; - map plugins; + //map plugins; + vector plugins; vector preeditors; vector convertors; String sType;