From 8a560488011f833b7ba534999f878d20d5152e6c Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Fri, 16 Jun 2023 11:59:16 +0400 Subject: [PATCH] Ensure Wayland integration instance accessor doesn't leak --- .../linux/ui_linux_wayland_integration.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/ui/platform/linux/ui_linux_wayland_integration.cpp b/ui/platform/linux/ui_linux_wayland_integration.cpp index c76a293..b01f2f7 100644 --- a/ui/platform/linux/ui_linux_wayland_integration.cpp +++ b/ui/platform/linux/ui_linux_wayland_integration.cpp @@ -68,12 +68,15 @@ WaylandIntegration::~WaylandIntegration() = default; WaylandIntegration *WaylandIntegration::Instance() { if (!::Platform::IsWayland()) return nullptr; static std::optional instance(std::in_place); - base::qt_signal_producer( - QGuiApplication::platformNativeInterface(), - &QObject::destroyed - ) | rpl::start_with_next([&] { - instance = std::nullopt; - }, instance->_private->lifetime); + [[maybe_unused]] static const auto Inited = [] { + base::qt_signal_producer( + QGuiApplication::platformNativeInterface(), + &QObject::destroyed + ) | rpl::start_with_next([] { + instance = std::nullopt; + }, instance->_private->lifetime); + return true; + }(); if (!instance) return nullptr; return &*instance; }