diff --git a/src/backends/x11/windowed/x11_windowed_backend.cpp b/src/backends/x11/windowed/x11_windowed_backend.cpp index 90c1987fe7..f27cb0bc07 100644 --- a/src/backends/x11/windowed/x11_windowed_backend.cpp +++ b/src/backends/x11/windowed/x11_windowed_backend.cpp @@ -176,42 +176,37 @@ X11WindowedBackend::~X11WindowedBackend() bool X11WindowedBackend::initialize() { - int screen = 0; - xcb_connection_t *c = nullptr; - Display *xDisplay = XOpenDisplay(m_options.display.toLatin1().constData()); - if (xDisplay) { - c = XGetXCBConnection(xDisplay); - XSetEventQueueOwner(xDisplay, XCBOwnsEventQueue); - screen = XDefaultScreen(xDisplay); + m_display = XOpenDisplay(m_options.display.toLatin1().constData()); + if (!m_display) { + return false; } - if (c && !xcb_connection_has_error(c)) { - m_connection = c; - m_screenNumber = screen; - m_display = xDisplay; - for (xcb_screen_iterator_t it = xcb_setup_roots_iterator(xcb_get_setup(m_connection)); - it.rem; - --screen, xcb_screen_next(&it)) { - if (screen == m_screenNumber) { - m_screen = it.data; - } - } - initXInput(); - XRenderUtils::init(m_connection, m_screen->root); - createOutputs(); - connect(kwinApp(), &Application::workspaceCreated, this, &X11WindowedBackend::startEventReading); - m_pointerDevice = std::make_unique(); - m_pointerDevice->setPointer(true); - m_keyboardDevice = std::make_unique(); - m_keyboardDevice->setKeyboard(true); - if (m_hasXInput) { - m_touchDevice = std::make_unique(); - m_touchDevice->setTouch(true); + + m_connection = XGetXCBConnection(m_display); + m_screenNumber = XDefaultScreen(m_display); + XSetEventQueueOwner(m_display, XCBOwnsEventQueue); + + int screen = m_screenNumber; + for (xcb_screen_iterator_t it = xcb_setup_roots_iterator(xcb_get_setup(m_connection)); + it.rem; + --screen, xcb_screen_next(&it)) { + if (screen == m_screenNumber) { + m_screen = it.data; } - Q_EMIT outputsQueried(); - return true; - } else { - return false; } + initXInput(); + XRenderUtils::init(m_connection, m_screen->root); + createOutputs(); + connect(kwinApp(), &Application::workspaceCreated, this, &X11WindowedBackend::startEventReading); + m_pointerDevice = std::make_unique(); + m_pointerDevice->setPointer(true); + m_keyboardDevice = std::make_unique(); + m_keyboardDevice->setKeyboard(true); + if (m_hasXInput) { + m_touchDevice = std::make_unique(); + m_touchDevice->setTouch(true); + } + Q_EMIT outputsQueried(); + return true; } void X11WindowedBackend::initXInput()