summaryrefslogtreecommitdiff
path: root/src/plugins/PluginSystem.cpp
diff options
context:
space:
mode:
authorvirchau13 <virchau13@hexular.net>2024-04-28 00:38:48 +0800
committerGitHub <noreply@github.com>2024-04-27 17:38:48 +0100
commit90a53aed59be6bac45c13eac954471d56ac23375 (patch)
treec1a246f6cdf0b9f6d0f1f6ea6f282b4fa5666976 /src/plugins/PluginSystem.cpp
parent55490637aaf13c8400a0679fcf5b7fca417bc923 (diff)
CrashReporter: fix deadlocks by making it mostly async-signal-safe (#5771)
`CrashReporter::createAndSaveCrash()` is not async-signal-safe, resulting in random deadlocks/double-crashes during Hyprland crashes. This changes the function to be (mostly) async-signal-safe.
Diffstat (limited to 'src/plugins/PluginSystem.cpp')
-rw-r--r--src/plugins/PluginSystem.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/PluginSystem.cpp b/src/plugins/PluginSystem.cpp
index d813a32e..46f50469 100644
--- a/src/plugins/PluginSystem.cpp
+++ b/src/plugins/PluginSystem.cpp
@@ -194,3 +194,13 @@ std::vector<CPlugin*> CPluginSystem::getAllPlugins() {
results[i] = m_vLoadedPlugins[i].get();
return results;
}
+
+size_t CPluginSystem::pluginCount() {
+ return m_vLoadedPlugins.size();
+}
+
+void CPluginSystem::sig_getPlugins(CPlugin** data, size_t len) {
+ for (size_t i = 0; i < std::min(m_vLoadedPlugins.size(), len); i++) {
+ data[i] = m_vLoadedPlugins[i].get();
+ }
+}