From 0ab8ffa67d95201381c43e44fa67d16e7fa1ef7f Mon Sep 17 00:00:00 2001 From: Ikalco <73481042+ikalco@users.noreply.github.com> Date: Thu, 25 Jul 2024 16:14:05 -0500 Subject: [PATCH] output: fix destroying wl and headless outputs (#32) --- src/backend/Headless.cpp | 1 + src/backend/Wayland.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/backend/Headless.cpp b/src/backend/Headless.cpp index 2c358d4..df4b312 100644 --- a/src/backend/Headless.cpp +++ b/src/backend/Headless.cpp @@ -73,6 +73,7 @@ void Aquamarine::CHeadlessOutput::scheduleFrame(const scheduleFrameReason reason } bool Aquamarine::CHeadlessOutput::destroy() { + events.destroy.emit(); std::erase(backend->outputs, self.lock()); return true; } diff --git a/src/backend/Wayland.cpp b/src/backend/Wayland.cpp index bc2f8d5..bd8fb5b 100644 --- a/src/backend/Wayland.cpp +++ b/src/backend/Wayland.cpp @@ -496,6 +496,7 @@ Aquamarine::CWaylandOutput::CWaylandOutput(const std::string& name_, Hyprutils:: Aquamarine::CWaylandOutput::~CWaylandOutput() { backend->idleCallbacks.clear(); // FIXME: mega hack to avoid a UAF in frame events + events.destroy.emit(); if (waylandState.xdgToplevel) waylandState.xdgToplevel->sendDestroy(); if (waylandState.xdgSurface)