Merge pull request #4938 from jayshozie/hyprland/window/segfault-fix

fix(hyprland/window): Fix segfault caused by use-after-free
This commit is contained in:
Alexis Rouillard
2026-03-20 08:20:41 +01:00
committed by GitHub

View File

@@ -19,20 +19,19 @@ std::shared_mutex windowIpcSmtx;
Window::Window(const std::string& id, const Bar& bar, const Json::Value& config) Window::Window(const std::string& id, const Bar& bar, const Json::Value& config)
: AAppIconLabel(config, "window", id, "{title}", 0, true), bar_(bar), m_ipc(IPC::inst()) { : AAppIconLabel(config, "window", id, "{title}", 0, true), bar_(bar), m_ipc(IPC::inst()) {
std::unique_lock<std::shared_mutex> windowIpcUniqueLock(windowIpcSmtx);
separateOutputs_ = config["separate-outputs"].asBool(); separateOutputs_ = config["separate-outputs"].asBool();
update();
// register for hyprland ipc // register for hyprland ipc
std::unique_lock<std::shared_mutex> windowIpcUniqueLock(windowIpcSmtx);
m_ipc.registerForIPC("activewindow", this); m_ipc.registerForIPC("activewindow", this);
m_ipc.registerForIPC("closewindow", this); m_ipc.registerForIPC("closewindow", this);
m_ipc.registerForIPC("movewindow", this); m_ipc.registerForIPC("movewindow", this);
m_ipc.registerForIPC("changefloatingmode", this); m_ipc.registerForIPC("changefloatingmode", this);
m_ipc.registerForIPC("fullscreen", this); m_ipc.registerForIPC("fullscreen", this);
windowIpcUniqueLock.unlock(); windowIpcUniqueLock.unlock();
update();
dp.emit(); dp.emit();
} }