|
From: CVS C. to T. <the...@li...> - 2017-01-15 12:07:47
|
Revision: 737
http://sourceforge.net/p/themis/code/737
Author: mark_hellegers
Date: 2017-01-15 12:07:44 +0000 (Sun, 15 Jan 2017)
Log Message:
-----------
Make sure the all plugins know the plugin is unloaded
Modified Paths:
--------------
trunk/themis/common/plugman.cpp
trunk/themis/common/plugman.h
Modified: trunk/themis/common/plugman.cpp
===================================================================
--- trunk/themis/common/plugman.cpp 2017-01-15 12:05:15 UTC (rev 736)
+++ trunk/themis/common/plugman.cpp 2017-01-15 12:07:44 UTC (rev 737)
@@ -220,11 +220,14 @@
}
-void plugman :: UnloadPlugin(image_id aId, PlugClass * aPlugin) {
+void plugman :: UnloadPlugin(image_id aId, PlugClass * aPlugin, const char * aPath) {
BMessage quitMessage(B_QUIT_REQUESTED);
BMessage replyMessage(B_QUIT_REQUESTED);
+ int32 type = aPlugin->Type();
+ uint32 plugID = aPlugin->PlugID();
+
if (aPlugin->IsHandler()) {
RemoveHandler(aPlugin->Handler());
delete aPlugin;
@@ -249,23 +252,37 @@
delete aPlugin;
}
}
+ mPlugins.erase(aPath);
+
+ map<string, pair<image_id, PlugClass *> >::iterator i = mPlugins.begin();
+ BMessage * msg = new BMessage(PlugInUnLoaded);
+ msg->AddInt32("type", type);
+ msg->AddInt32("command", COMMAND_INFO);
+ msg->AddInt32("plugid", plugID);
+ while (i != mPlugins.end()) {
+ PlugClass * plugin = (*i).second.second;
+ if (plugin) {
+ plugin->ReceiveBroadcast(msg);
+ }
+ i++;
+ }
+ delete msg;
+
unload_add_on(aId);
-
}
void plugman :: UnloadPlugin(const char * aPath) {
string pathString(aPath);
map<string, pair<image_id, PlugClass *> >::iterator i = mPlugins.find(pathString);
- UnloadPlugin((*i).second.first, (*i).second.second);
-
+ UnloadPlugin((*i).second.first, (*i).second.second, aPath);
}
void plugman :: UnloadAllPlugins() {
map<string, pair<image_id, PlugClass *> >::iterator i = mPlugins.begin();
while (i != mPlugins.end()) {
- UnloadPlugin((*i).second.first, (*i).second.second);
+ UnloadPlugin((*i).second.first, (*i).second.second, (*i).first.c_str());
i++;
}
Modified: trunk/themis/common/plugman.h
===================================================================
--- trunk/themis/common/plugman.h 2017-01-15 12:05:15 UTC (rev 736)
+++ trunk/themis/common/plugman.h 2017-01-15 12:07:44 UTC (rev 737)
@@ -76,7 +76,7 @@
void LoadPlugin(BEntry & aEntry);
void LoadDirectory(const char * aDirectory);
- void UnloadPlugin(image_id aId, PlugClass * aPlugin);
+ void UnloadPlugin(image_id aId, PlugClass * aPlugin, const char * aPath);
void UnloadPlugin(const char * aPath);
//! Unload all plug-ins currently in memory.
/*!
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|