Skip to content

Commit 1cd7985

Browse files
author
Chen Lihui
authored
fix unload warning (#274)
* fix unload warning Signed-off-by: Chen Lihui <[email protected]> * adjust order for header file Signed-off-by: Chen Lihui <[email protected]> --------- Signed-off-by: Chen Lihui <[email protected]>
1 parent f2a3fe2 commit 1cd7985

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

qt_gui_cpp/include/qt_gui_cpp/recursive_plugin_provider.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "composite_plugin_provider.h"
3737
#include "ros_pluginlib_plugin_provider_for_plugin_providers.h"
3838

39+
#include <QList>
3940
#include <QMap>
4041
#include <QString>
4142

@@ -54,9 +55,12 @@ class RecursivePluginProvider
5455

5556
virtual QMap<QString, QString> discover(QObject* discovery_data);
5657

58+
virtual void shutdown();
59+
5760
private:
5861

5962
RosPluginlibPluginProvider_ForPluginProviders* plugin_provider_;
63+
QList<PluginProvider*> providers_;
6064

6165
};
6266

qt_gui_cpp/src/qt_gui_cpp/recursive_plugin_provider.cpp

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ QMap<QString, QString> RecursivePluginProvider::discover(QObject* discovery_data
5959
}
6060

6161
// instantiate plugins
62-
QList<PluginProvider*> providers;
6362
for (QList<QString>::iterator it = plugin_ids.begin(); it != plugin_ids.end(); it++)
6463
{
6564
try
@@ -70,7 +69,7 @@ QMap<QString, QString> RecursivePluginProvider::discover(QObject* discovery_data
7069
{
7170
throw std::runtime_error("load returned None");
7271
}
73-
providers.append(instance);
72+
providers_.append(instance);
7473
}
7574
catch (...)
7675
{
@@ -79,8 +78,17 @@ QMap<QString, QString> RecursivePluginProvider::discover(QObject* discovery_data
7978
}
8079

8180
// delegate discovery through instantiated plugin providers to base class
82-
set_plugin_providers(providers);
81+
set_plugin_providers(providers_);
8382
return CompositePluginProvider::discover(discovery_data);
8483
}
8584

85+
void RecursivePluginProvider::shutdown()
86+
{
87+
for (QList<PluginProvider*>::iterator it = providers_.begin(); it != providers_.end(); it++)
88+
{
89+
plugin_provider_->unload(*it);
90+
}
91+
CompositePluginProvider::shutdown();
92+
}
93+
8694
} // namespace

qt_gui_cpp/src/qt_gui_cpp_sip/recursive_plugin_provider.sip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public:
1616

1717
virtual QMap<QString, QString> discover(QObject* discovery_data);
1818

19+
virtual void shutdown();
1920
};
2021

2122
};

0 commit comments

Comments
 (0)