From 90a53aed59be6bac45c13eac954471d56ac23375 Mon Sep 17 00:00:00 2001 From: virchau13 Date: Sun, 28 Apr 2024 00:38:48 +0800 Subject: 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. --- src/plugins/PluginSystem.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/plugins/PluginSystem.cpp') 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 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(); + } +} -- cgit v1.2.3