diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-04-29 18:59:43 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-29 18:59:43 +0200 |
| commit | 5bd7ff884dc613ad22ecd227d41ce6ad7ee336df (patch) | |
| tree | 63696482d6ca82db0f123ed53ce798ba500b7c44 /src/plugins/PluginSystem.hpp | |
| parent | 21184404885cf61f7c10d2eb749478ef6b035dd2 (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.hpp | 29 |
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; |
