[PATCH 5/8] kernel-shark-qt: Fix bug when loading plugins from session

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The session description file may contain plugins which are not available
at the moment when the session is loaded. These can be user-defined
plugins for example. The modification of the code introduced by this
patch deals with such a case.

Signed-off-by: Yordan Karadzhov <ykaradzhov@xxxxxxxxxx>
---
 kernel-shark-qt/src/KsSession.cpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/kernel-shark-qt/src/KsSession.cpp b/kernel-shark-qt/src/KsSession.cpp
index 6cd1403..b7ef81c 100644
--- a/kernel-shark-qt/src/KsSession.cpp
+++ b/kernel-shark-qt/src/KsSession.cpp
@@ -545,7 +545,10 @@ void KsSession::loadPlugins(kshark_context *kshark_ctx, KsPluginManager *pm)
 {
 	kshark_config_doc *plugins = kshark_config_alloc(KS_CONFIG_JSON);
 	json_object *jplugins, *jlist, *jpl;
-	int length;
+	const char *pluginName;
+	QVector<int> pluginIds;
+	int length, index;
+	bool loaded;
 
 	if (!kshark_config_doc_get(_config, "Plugins", plugins) ||
 	    !kshark_type_check(plugins, "kshark.config.plugins"))
@@ -562,13 +565,13 @@ void KsSession::loadPlugins(kshark_context *kshark_ctx, KsPluginManager *pm)
 		length = json_object_array_length(jlist);
 		for (int i = 0; i < length; ++i) {
 			jpl = json_object_array_get_idx(jlist, i);
-			pm->_ksPluginList[i] =
-				json_object_get_string(json_object_array_get_idx(jpl, 0));
-
-			pm->_registeredKsPlugins[i] =
-				json_object_get_boolean(json_object_array_get_idx(jpl, 1));
+			pluginName = json_object_get_string(json_object_array_get_idx(jpl, 0));
+			index = pm->_ksPluginList.indexOf(pluginName);
+			loaded = json_object_get_boolean(json_object_array_get_idx(jpl, 1));
+			if (index >= 0 && loaded)
+				pluginIds.append(index);
 		}
 	}
 
-	pm->registerFromList(kshark_ctx);
+	pm->updatePlugins(pluginIds);
 }
-- 
2.17.1





[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux