diff --git a/src/main_x11.cpp b/src/main_x11.cpp index 3cb2952bff..52574c4430 100644 --- a/src/main_x11.cpp +++ b/src/main_x11.cpp @@ -13,6 +13,7 @@ #include #include "backends/x11/standalone/x11_standalone_backend.h" +#include "compositor_x11.h" #include "core/outputbackend.h" #include "core/session.h" #include "cursor.h" @@ -181,9 +182,9 @@ ApplicationX11::~ApplicationX11() { setTerminating(); destroyPlugins(); - destroyCompositor(); destroyColorManager(); destroyWorkspace(); + destroyCompositor(); // If there was no --replace (no new WM) if (owner != nullptr && owner->ownerWindow() != XCB_WINDOW_NONE) { Xcb::setInputFocus(XCB_INPUT_FOCUS_POINTER_ROOT); @@ -238,9 +239,9 @@ void ApplicationX11::lostSelection() { sendPostedEvents(); destroyPlugins(); - destroyCompositor(); destroyColorManager(); destroyWorkspace(); + destroyCompositor(); // Remove windowmanager privileges Xcb::selectInput(kwinApp()->x11RootWindow(), XCB_EVENT_MASK_PROPERTY_CHANGE); removeNativeX11EventFilter(); @@ -291,6 +292,7 @@ void ApplicationX11::performStartup() }); createInput(); + X11Compositor::create(this); createWorkspace(); createColorManager(); createPlugins(); diff --git a/src/workspace.cpp b/src/workspace.cpp index 2b52b6b8a0..61a6e26dbb 100644 --- a/src/workspace.cpp +++ b/src/workspace.cpp @@ -20,7 +20,6 @@ #endif #include "appmenu.h" #include "atoms.h" -#include "compositor_x11.h" #include "core/outputbackend.h" #include "core/outputconfiguration.h" #include "cursor.h" @@ -164,11 +163,6 @@ Workspace::Workspace() m_tabbox = std::make_unique(); #endif - if (!Compositor::self()) { - Q_ASSERT(kwinApp()->operationMode() == Application::OperationMode::OperationModeX11); - X11Compositor::create(this); - } - m_decorationBridge = std::make_unique(); m_decorationBridge->init(); connect(this, &Workspace::configChanged, m_decorationBridge.get(), &Decoration::DecorationBridge::reconfigure);