From 646d8d27552e548f37b329f3a67fd4bf46ee64f0 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Mon, 19 Mar 2018 10:21:47 +0100 Subject: xdg-shell v5,v6 shell integrations: Fix crash when showing popups If a popup was shown without any input events happening first, it would cause nullptr dereferences in both xdg-shell v5 and v6. Fixes crashes in: - tst_QAccessibility::comboBoxTest - tst_QAccessibility::menuTest - tst_QWindow::touchInterruptedByPopup - tst_QFocusEvent::checkReason_Popup Task-number: QTBUG-67150 Change-Id: Ib3e06326f71e4ab5f74727cb4f79626a21c34d55 Reviewed-by: Paul Olav Tvete (cherry picked from commit 26a6372bb0c6528358e34f8175a14ff0be47fb12) Reviewed-by: David Edmundson --- src/client/qwaylandxdgshell.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/client/qwaylandxdgshell.cpp') diff --git a/src/client/qwaylandxdgshell.cpp b/src/client/qwaylandxdgshell.cpp index 6a9930608..c038c94a8 100644 --- a/src/client/qwaylandxdgshell.cpp +++ b/src/client/qwaylandxdgshell.cpp @@ -75,12 +75,11 @@ QWaylandXdgSurface *QWaylandXdgShell::createXdgSurface(QWaylandWindow *window) return new QWaylandXdgSurface(this, window); } -QWaylandXdgPopup *QWaylandXdgShell::createXdgPopup(QWaylandWindow *window) +QWaylandXdgPopup *QWaylandXdgShell::createXdgPopup(QWaylandWindow *window, QWaylandInputDevice *inputDevice) { QWaylandWindow *parentWindow = m_popups.empty() ? window->transientParent() : m_popups.last(); ::wl_surface *parentSurface = parentWindow->object(); - QWaylandInputDevice *inputDevice = window->display()->lastInputDevice(); if (m_popupSerial == 0) m_popupSerial = inputDevice->serial(); ::wl_seat *seat = inputDevice->wl_seat(); -- cgit v1.2.3