From 5e090d4b9b9e0124576508c61f0432c6261443df Mon Sep 17 00:00:00 2001 From: Tuomas Vaarala Date: Fri, 27 Sep 2024 09:44:38 +0300 Subject: [PATCH] Ignore screen create events for other than window object type Previously the screen create event was only handled for window. With QNX 8.0 there seems to be also screen create events for display and device. The property query returns ENOTSUP (Not supported) so we simply ignore other than window create event. Fixes: QTBUG-129213 Change-Id: Ia7da693f06f6590d349595ecde6b303fab145bc0 Reviewed-by: James McDonnell (cherry picked from commit 11d5792774e921a7d6e296b1238f9e9c96ddfd96) Reviewed-by: Qt Cherry-pick Bot --- .../platforms/qnx/qqnxscreeneventhandler.cpp | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp index 6d923bc3a8b..237f917d66a 100644 --- a/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp +++ b/src/plugins/platforms/qnx/qqnxscreeneventhandler.cpp @@ -606,11 +606,35 @@ void QQnxScreenEventHandler::handleCloseEvent(screen_event_t event) void QQnxScreenEventHandler::handleCreateEvent(screen_event_t event) { screen_window_t window = 0; + int object_type = -1; + Q_SCREEN_CHECKERROR( + screen_get_event_property_iv(event, SCREEN_PROPERTY_OBJECT_TYPE, &object_type), + "Failed to query object type for create event"); + + switch (object_type) { + // Other object types than window produces an unnessary warning, thus ignore + case SCREEN_OBJECT_TYPE_CONTEXT: + case SCREEN_OBJECT_TYPE_GROUP: + case SCREEN_OBJECT_TYPE_DISPLAY: + case SCREEN_OBJECT_TYPE_DEVICE: + case SCREEN_OBJECT_TYPE_PIXMAP: + case SCREEN_OBJECT_TYPE_SESSION: + case SCREEN_OBJECT_TYPE_STREAM: + break; + case SCREEN_OBJECT_TYPE_WINDOW: + { + Q_SCREEN_CHECKERROR( screen_get_event_property_pv(event, SCREEN_PROPERTY_WINDOW, (void**)&window), "Failed to query window property"); - Q_EMIT newWindowCreated(window); + Q_EMIT newWindowCreated(window); + break; + } + default: + qCDebug(lcQpaScreenEvents) << "Ignore create event for object type: " << object_type; + break; + } } void QQnxScreenEventHandler::handleDisplayEvent(screen_event_t event)