From bca7804bb6e1bf5ce5a99b9ae4806be25e36993c Mon Sep 17 00:00:00 2001 From: Vaxry <43317083+vaxerski@users.noreply.github.com> Date: Sat, 27 Apr 2024 12:43:12 +0100 Subject: internal: Window storage rework - part 1 (#5762) * Window storage rework - part 1 * format * remove useless include * fix pch * format * fix crash in dwindle * fix vram leak * prefer .expired() for bool checks --- src/plugins/PluginAPI.cpp | 4 ++-- src/plugins/PluginAPI.hpp | 6 +++++- src/plugins/PluginSystem.cpp | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/PluginAPI.cpp b/src/plugins/PluginAPI.cpp index 4f40694c..3266579b 100644 --- a/src/plugins/PluginAPI.cpp +++ b/src/plugins/PluginAPI.cpp @@ -99,13 +99,13 @@ APICALL bool HyprlandAPI::removeFunctionHook(HANDLE handle, CFunctionHook* hook) return g_pFunctionHookSystem->removeHook(hook); } -APICALL bool HyprlandAPI::addWindowDecoration(HANDLE handle, CWindow* pWindow, std::unique_ptr pDecoration) { +APICALL bool HyprlandAPI::addWindowDecoration(HANDLE handle, PHLWINDOW pWindow, std::unique_ptr pDecoration) { auto* const PLUGIN = g_pPluginSystem->getPluginByHandle(handle); if (!PLUGIN) return false; - if (!g_pCompositor->windowValidMapped(pWindow)) + if (!validMapped(pWindow)) return false; PLUGIN->registeredDecorations.push_back(pDecoration.get()); diff --git a/src/plugins/PluginAPI.hpp b/src/plugins/PluginAPI.hpp index 78f88c21..df04efbe 100644 --- a/src/plugins/PluginAPI.hpp +++ b/src/plugins/PluginAPI.hpp @@ -61,6 +61,10 @@ class IHyprLayout; class CWindow; class IHyprWindowDecoration; struct SConfigValue; +class CWindow; + +typedef std::shared_ptr PHLWINDOW; +typedef std::weak_ptr PHLWINDOWREF; /* These methods are for the plugin to implement @@ -219,7 +223,7 @@ namespace HyprlandAPI { returns: true on success. False otherwise. */ - APICALL bool addWindowDecoration(HANDLE handle, CWindow* pWindow, std::unique_ptr pDecoration); + APICALL bool addWindowDecoration(HANDLE handle, PHLWINDOW pWindow, std::unique_ptr pDecoration); /* Removes a window decoration diff --git a/src/plugins/PluginSystem.cpp b/src/plugins/PluginSystem.cpp index 1703222b..d813a32e 100644 --- a/src/plugins/PluginSystem.cpp +++ b/src/plugins/PluginSystem.cpp @@ -97,8 +97,8 @@ void CPluginSystem::unloadPlugin(const CPlugin* plugin, bool eject) { } for (auto& [k, v] : plugin->registeredCallbacks) { - if (const auto SP = v.lock()) - g_pHookSystem->unhook(SP); + if (const auto SHP = v.lock()) + g_pHookSystem->unhook(SHP); } const auto ls = plugin->registeredLayouts; -- cgit v1.2.3