From 5bd7ff884dc613ad22ecd227d41ce6ad7ee336df Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Tue, 29 Apr 2025 18:59:43 +0200 Subject: permissions: add perms for plugin loading (#10184) Adds permission management for loading plugins --------- Co-authored-by: Jan Beich --- src/plugins/PluginSystem.hpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) (limited to 'src/plugins/PluginSystem.hpp') 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 +#include 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 updateConfigPlugins(const std::vector& plugins, bool& changed); - CPlugin* getPluginByPath(const std::string& path); - CPlugin* getPluginByHandle(HANDLE handle); - std::vector getAllPlugins(); - size_t pluginCount(); - void sigGetPlugins(CPlugin** data, size_t len); + SP> loadPlugin(const std::string& path); + void unloadPlugin(const CPlugin* plugin, bool eject = false); + void unloadAllPlugins(); + void updateConfigPlugins(const std::vector& plugins, bool& changed); + CPlugin* getPluginByPath(const std::string& path); + CPlugin* getPluginByHandle(HANDLE handle); + std::vector 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> m_vLoadedPlugins; + std::vector> m_vLoadedPlugins; - jmp_buf m_jbPluginFaultJumpBuf; + jmp_buf m_jbPluginFaultJumpBuf; + + std::expected loadPluginInternal(const std::string& path); }; inline UP g_pPluginSystem; -- cgit v1.2.3