summaryrefslogtreecommitdiff
path: root/src/plugins/PluginSystem.hpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-04-29 18:59:43 +0200
committerGitHub <noreply@github.com>2025-04-29 18:59:43 +0200
commit5bd7ff884dc613ad22ecd227d41ce6ad7ee336df (patch)
tree63696482d6ca82db0f123ed53ce798ba500b7c44 /src/plugins/PluginSystem.hpp
parent21184404885cf61f7c10d2eb749478ef6b035dd2 (diff)
permissions: add perms for plugin loading (#10184)
Adds permission management for loading plugins --------- Co-authored-by: Jan Beich <jbeich@FreeBSD.org>
Diffstat (limited to 'src/plugins/PluginSystem.hpp')
-rw-r--r--src/plugins/PluginSystem.hpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/plugins/PluginSystem.hpp b/src/plugins/PluginSystem.hpp
index 95841bef..ba1dafc0 100644
--- a/src/plugins/PluginSystem.hpp
+++ b/src/plugins/PluginSystem.hpp
@@ -1,8 +1,10 @@
#pragma once
#include "../defines.hpp"
+#include "../helpers/defer/Promise.hpp"
#include "PluginAPI.hpp"
#include <csetjmp>
+#include <expected>
class IHyprWindowDecoration;
@@ -30,23 +32,24 @@ class CPluginSystem {
public:
CPluginSystem();
- CPlugin* loadPlugin(const std::string& path);
- void unloadPlugin(const CPlugin* plugin, bool eject = false);
- void unloadAllPlugins();
- std::vector<std::string> updateConfigPlugins(const std::vector<std::string>& plugins, bool& changed);
- CPlugin* getPluginByPath(const std::string& path);
- CPlugin* getPluginByHandle(HANDLE handle);
- std::vector<CPlugin*> getAllPlugins();
- size_t pluginCount();
- void sigGetPlugins(CPlugin** data, size_t len);
+ SP<CPromise<CPlugin*>> loadPlugin(const std::string& path);
+ void unloadPlugin(const CPlugin* plugin, bool eject = false);
+ void unloadAllPlugins();
+ void updateConfigPlugins(const std::vector<std::string>& plugins, bool& changed);
+ CPlugin* getPluginByPath(const std::string& path);
+ CPlugin* getPluginByHandle(HANDLE handle);
+ std::vector<CPlugin*> getAllPlugins();
+ size_t pluginCount();
+ void sigGetPlugins(CPlugin** data, size_t len);
- bool m_bAllowConfigVars = false;
- std::string m_szLastError = "";
+ bool m_bAllowConfigVars = false;
private:
- std::vector<UP<CPlugin>> m_vLoadedPlugins;
+ std::vector<UP<CPlugin>> m_vLoadedPlugins;
- jmp_buf m_jbPluginFaultJumpBuf;
+ jmp_buf m_jbPluginFaultJumpBuf;
+
+ std::expected<CPlugin*, std::string> loadPluginInternal(const std::string& path);
};
inline UP<CPluginSystem> g_pPluginSystem;