From 64dac044e3677ff99e103ab7f6980309967c68af Mon Sep 17 00:00:00 2001 From: Roman Genkhel Date: Wed, 29 Jun 2022 18:05:21 +0300 Subject: Check m_dragFocusResource for nullptr in DataDevice::dragMove We encounter situation where 'dragMove' was called for DataDevice`s instance, but 'data_device_start_drag' did not called or 'drop' was called before, because even all m_drag* pointers including m_dragOrigin were nullptr Pick-to: 6.3 Change-Id: Ic435286a77e273167b1aa812cbf18a7fbf3489f2 Reviewed-by: Elvis Lee Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/compositor/wayland_wrapper/qwldatadevice.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/compositor/wayland_wrapper/qwldatadevice.cpp') diff --git a/src/compositor/wayland_wrapper/qwldatadevice.cpp b/src/compositor/wayland_wrapper/qwldatadevice.cpp index 000ec6c94..2604bc068 100644 --- a/src/compositor/wayland_wrapper/qwldatadevice.cpp +++ b/src/compositor/wayland_wrapper/qwldatadevice.cpp @@ -101,7 +101,7 @@ void DataDevice::dragMove(QWaylandSurface *target, const QPointF &pos) { if (target != m_dragFocus) setDragFocus(target, pos); - if (!target) + if (!target || !m_dragFocusResource) return; uint time = m_compositor->currentTimeMsecs(); //### should be serial send_motion(m_dragFocusResource->handle, time, @@ -124,7 +124,7 @@ void DataDevice::cancelDrag() { setDragFocus(nullptr, QPoint()); } - + void DataDevice::data_device_start_drag(Resource *resource, struct ::wl_resource *source, struct ::wl_resource *origin, struct ::wl_resource *icon, uint32_t serial) { m_dragClient = resource->client(); -- cgit v1.2.3