summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/tqtc/lts-5.15.9' into ↵v5.15.9-lts-lgpl5.15Tarja Sundqvist2023-03-2318-55/+88
|\ | | | | | | | | | | tqtc/lts-5.15-opensource Change-Id: Id7e59c8258165ebca9bcb552d5a4e9872d872232
| * client: update button state and etc in pointer_leave()Liang Qi2022-03-101-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | The cleanup work needs to be done even the surface is null, for example, a window was closed in mouse press handler, then will not get a mouse release. Fixes: QTBUG-100942 Change-Id: I637a6744909ddbe62bdeba6b21494e5a6ae7fa9f Reviewed-by: Tang Haixiang <tanghaixiang@uniontech.com> Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 409d1080f25b653b3ff3f57c9776c5c390912206) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * client: set_constraint_adjustment() for popups in xdgLiang Qi2022-03-081-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | See also https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/xdg-shell/xdg-shell.xml#n234 . Kudos to Greg V for his original patch in jira. Fixes: QTBUG-87303 Done-with: Greg V <greg@unrelenting.technology> Change-Id: I57df9aedea7cc6f0b6fa142a6fc6c3bdc98324c8 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 59a5fe99e1569421b920d99c5b20cdafcdcf43a9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Cursor position == 0 should still show the cursorWeng Xuetian2022-02-121-2/+2
| | | | | | | | | | | | | | | | | | | | Otherwise the cursor would be hidden even if preedit is empty. Amends 719a55be13bdadfa659a732755f280e276a894bd Change-Id: I320733b917779b7b51aa4a28eaea411fdb10a318 Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 31ae194e295651d9ece03408630d2358acd4f7b4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Update the preedit styling mappingWeng Xuetian2022-02-121-11/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - None mapping to no style. - Default/Underline mapping to underline. - Highlight/Selection mapping to background color/text color with highlight/highlight text with underline. - Active/Inactive mapping to bold text with underline. - Incorrect mapping to red wave underline. Change-Id: Iab51d671b8f83aece8596f7f7610de19343fcceb Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> (cherry picked from commit f1fb5d9e568a24e213ee41e82a1142cef56f1098) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Don't keep eglConfig in hardwareintegrationInho Lee2022-02-118-25/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There is no reason to keep eglConfig value as a member variable. Even this can result in creating wrong surface from the current surface. And it makes no sense to change alpha bits of the surface format by supporting decorations. Task-number: QTBUG-97916 Change-Id: Iaa395d36e83373ea197dc5e14424fcb62cd2cd8b (cherry picked from commit af884d4aac18e5155649f8a916ea272c11542b7e) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Seokha Ko <seokha.ko@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| * Update the window geometry when changing decorationsInho Lee2022-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | Windows' geometries should be updated when changing decorations. Fixes: QTBUG-100467 Change-Id: I5ec9968aa48422776d184a8fa2f5d86ecc3ca5c3 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 37e3789cf932ff665b8bd9325e64524c10c16489) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Fix crash if no input method module could be loadedJoni Poikelin2022-02-031-1/+1
| | | | | | | | | | | | | | Change-Id: I8f346def616606a6c5540856bd08a84ee7ed5ca2 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 49fb7248f6ab7de046e2179c7861951ea1169e9b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Fix build with -no-feature-tableteventLiang Qi2022-02-025-2/+25
| | | | | | | | | | | | | | | | Fixes: QTBUG-99965 Change-Id: Ib7fcf92973b4e559713ae27ad0c7f843f9122daf Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit ba82ba66eb8dc3580e67683783a410a254984def)
| * Fix wayland touch event to use time stamp from wayland compositorSeokha Ko2022-01-271-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Touch events may be ignored if we set time stamp in handleTouchEvent() when handling touch events queued in wayland socket in main thread. So use time stamp from wayland compositor. Task-number: QTBUG-100150 Change-Id: I14fd3791b4d29177c71662d1cf26c0eed0abb767 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Seokha Ko <seokha.ko@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 2419064c3532e2efd3bcf2f23c9c690b0a0fdd00)
| * wayland touch event to add key modifierTang Haixiang2022-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | Add touch event keyboard modifier for wayland, which is done in qpa xcb, which is very convenient on tablets with keyboards. Change-Id: I4e6ed369f3444da41d06f9a9a83addf7de0a4e91 Reviewed-by: Povilas Kanapickas <povilas@radix.lt> Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit a2dd5efbaa4b63782261664ca9a1aa9973db976e) Reviewed-by: Liang Qi <liang.qi@qt.io>
| * Fix missing update when toggling client-side decorationsEskil Abrahamsen Blomfeldt2021-12-211-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When CSD is toggled while a window is showing, it would change the size and recreate the buffers, but since the widget area remained the same size, we would not trigger a redraw. The result was that when you got any update to the window, it would redraw the widgets that had changed, and the rest would be transparent. Since this is a fairly specialized case, we fix it the simple way, by just issuing an extra update when it happens. This also required an update to the surface test, since there is an additional buffer commit in the beginning of the sequence now. Fixes: QTBUG-95032 Change-Id: Ic4bdb9c66a2ea76546926dd622f2d2dac5dce10c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit af7b60ade5c4be81cbc58eb18307c017d5594071) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Set preedit cursor when cursor equals to 0Weng Xuetian2021-12-201-1/+1
| | | | | | | | | | | | | | Change-Id: I832fbb22d973b36ac4ab51570fc53bc2e4c3ed58 Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 719a55be13bdadfa659a732755f280e276a894bd) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Client: support high-dpi mode for window iconLiang Qi2021-12-131-6/+3
| | | | | | | | | | | | | | | | | | Fixes: QTBUG-90530 Change-Id: Ib1f36e1cb89352dfac8a385a7b097cfc0226e813 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit fc91cd6b1306c6d452cbddab3c2289ccb92218d6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* | Merge remote-tracking branch 'origin/tqtc/lts-5.15.8' into ↵v5.15.8-lts-lgplTarja Sundqvist2022-11-104-7/+11
|\ \ | |/ | | | | | | | | tqtc/lts-5.15-opensource Change-Id: Id97943831fbc85d703dc50369e0d975513208c43
| * Use a correct serial for xdg_surface.ack_configureInho Lee2021-12-072-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | Previous pendingConfigureSerial can be overwritten regardless of the current configuration. With this patch, the client surface can use correct serial for xdg_surface.ack_configure. Fixes: QTBUG-95962 Change-Id: I849d2daf4acc8ef6e7f8528af9c5a57f671f43e6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 07ddfbfa43d08c2b76aabafaab38830e04a42690) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Do not create decorations when the shellSurface is not readyInho Lee2021-11-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A cases reported that client windows try to make decorations when their shell surfaces are null. Since the surfaces' requests for decorations should be applied, those case will be failed to create decorations. This patch was modified by Paul Tvete's advice. (paul.tvete@qt.io) Task-number: QTBUG-97608 Change-Id: I2563dbd73b730f81cc411857af07da99ceb2d063 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 246f0c0bc01dd059bf8165e81f7b49efa36e4d95) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Fix the logic for decoding modifiers map in Wayland text input protocolRodney Dawes2021-10-151-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Correctly check for the flags in the modifiers map when we get it from the compositor, instead of modifying the map in the for loop conditional. [ChangeLog][QWaylandInputContext] Fix modifiers map decoding logic when receiving the map from the compositor. Fixes: QTBUG-97094 Change-Id: Idad19f7b1f4560d40abbb5b31032360cfe915261 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit baa7ef511bf40280448e5f0e721ddd6da3301f3b) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* | Merge remote-tracking branch 'origin/tqtc/lts-5.15.7' into ↵v5.15.7-lts-lgplTarja Sundqvist2022-09-124-14/+35
|\ \ | |/ | | | | | | | | tqtc/lts-5.15-opensource Change-Id: I42a0e780eea6d92f0463566e5ab9b23efc9f49b7
| * Wayland client: Fix crash when windows are shown/hidden during dragPaul Olav Tvete2021-09-241-1/+1
| | | | | | | | | | | | | | | | Fixes: QTBUG-87624 Change-Id: I1b9443df091878abcd4fbe9c55927cb819aebd59 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit c64c5d3849b40617e1de0295f8690f354cab2b3a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Keep reference to buffer until it has been replacedEskil Abrahamsen Blomfeldt2021-08-312-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For the code path which uses QWaylandBufferMaterial, the buffer could potentially be deleted before the material had been updated, which could cause issues if the render thread was currently using the textures. In the default code path this was handled by keeping a reference to the buffer in the texture provider, but in the alternative YUV format code path, we did not increase the reference count of the buffer, so it would be deleted immediately when it was replaced rather than wait for the sync with the render thread. Task-number: QTBUG-95715 Change-Id: Ic6038ea8281e2a2e292d12150d1fffedb5c3b76e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 6b9a27d77e226a3d0ce9fa9b4974f70c9ef4a30e)
| * Implement wp_viewporter support for video buffer formatsEskil Abrahamsen Blomfeldt2021-08-241-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some EGL image formats (the YUV formats specifically) cannot be handled by the built-in node types in the Qt Quick scene graph and use a custom material and geometry setup. In this setup, the wp_viewporter source rectangle was ignored and the entire texture was always sampled. This caused problems e.g. for video frames supplied by GStreamer. [ChangeLog][Extensions] Support for wp_viewporter extended to cover less common buffer formats. Pick-to: 5.15 6.1 6.2 Task-number: QTBUG-95464 Change-Id: I2504c6cd7d82e17d28e930a59d9ec71b25779acb Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 060024e2fc9335d4fc999253c9d6ed560c7ffb0c)
| * Ignore viewporter buffer size when buffer is nullEskil Abrahamsen Blomfeldt2021-08-241-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The documentation for viewporter says: "if the source rectangle is partially or completely outside of the non-NULL wl_buffer, then the out_of_buffer protocol error is raised when the surface state is applied. A NULL wl_buffer does not raise the out_of_buffer error." The intention here is that the viewport can be initialized before the buffer is actually attached to the surface, and the parameters will be kept for later. We simply skip the error condition when there is no buffer. [ChangeLog][QtWaylandCompositor] Fixed an issue in the wp_viewporter extension, where it would emit a protocol error if the viewport was configured before attaching a buffer to the surface. Pick-to: 5.15 6.1 6.2 Fixes: QTBUG-95464 Change-Id: I71d09974dfe5e0f39ed79e7718e1e0d402547583 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 639bd92682f5f61f15f97f78ccd9791bec852b6c)
* | Merge remote-tracking branch 'origin/tqtc/lts-5.15.6' into ↵v5.15.6-lts-lgplTarja Sundqvist2022-08-166-75/+86
|\ \ | |/ | | | | | | | | tqtc/lts-5.15-opensource Change-Id: I9c249bfb8ad3764931b1c468f5cb927b784a2135
| * Cleanup up all subsurface QQuickItems correctlyDominik Holland2021-08-021-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When showing a surface with a subsurface in a QML based compositor, the subsurface QQuickitems are now destroyed when when main surface QQuickItem is destroyed and not just when the surface is destroyed. This prevents subsurface QQuickItems piling up when showing and hiding the client surfaces e.g. inside a StackView. Fixes: QTBUG-94602 Change-Id: I006a6a763d4daf560ba2a7b6f83e1de3e3c48906 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 5463a04097ee7824b2032fb058e289cf62bfd315) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Do not update the mask if we do not have a surfaceAleix Pol2021-07-131-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | mMask serves as a cache to remember what we've sent, the source of truth for the value is window()->mask(). No need to store values that we are going to discard, because it will confuse the state of newly created windows. Change-Id: I6aa3da82c7f09c7ef90d0f7060f292fb042730f0 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 962f87190c682562b369c5ebd93dc9ce0915ed7a) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * linux-dmabuf-unstable-v1: Fix importing dmabuf buffers with modifiersAlexandros Frantzis2021-06-291-68/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on the used modifiers, there are cases where dmabuf buffers may be transported as multiple dmabuf planes, although they are conceptually single plane buffers. An example of a modifier that works like this is I915_FORMAT_MOD_Y_TILED_CCS. In such cases we need to create a single EGLImage by merging all the dmabuf planes. Almost all of the currently supported DRM formats are conceptually single plane, so they require such merging of the dmabuf planes. The only formats that need to be mapped to multiple EGLImages are some YUV based ones, which we are already importing in a different way (see initYuvTexture). In addition, ensure that we don't pass to EGL a modifier value of DRM_FORMAT_MOD_INVALID, since this is not an acceptable value. To indicate a lack of modifiers skip the relevant EGL_DMA_BUF_*_MODIFIER_* attributes altogether. Sponsored-by: LG Electronics Inc. Change-Id: I32a717f3be20927f2f3f4aa0fc6c4f7a5250db33 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 8163327dcb3d37e9f3011bd9bec88848b2ce3b6c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Add BlankCursor for cursor names mapJiDe Zhang2021-06-111-0/+2
| | | | | | | | | | | | | | | | | | BlankCursor => "blank" Change-Id: I9337f0615f84bb82bc722d24416e97799309b3e5 Reviewed-by: Liang Qi <liang.qi@qt.io> (cherry picked from commit 94e68d506ab9b94ec11786553a220abe4b52503e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * client: Gracefully handle shutdown and window hidingEskil Abrahamsen Blomfeldt2021-06-043-4/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a window is hidden or destroyed, the render thread may already be rendering. We need to properly read-lock the surface pointer when it is in use and exit when it becomes null. Note that there is also a potential crash in the Mesa GL driver where it keeps a proxy to the wl_surface, so if we delete this while we are still rendering, it can crash inside the driver. This is not addressed by this patch, and has not been reproduced on any other drivers so far. [ChangeLog][Client] Fixed a crash that could happen when hiding or closing windows while Qt Quick was actively rendering on a different thread. Fixes: QTBUG-91264 Fixes: QTBUG-90037 Task-number: QTBUG-92249 Change-Id: I029b123b83c58740321e8b90a463ced748d8bcf4 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit b19b0fbaf775e8b8eda1e03c265a5393d618c6c0) Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Merge remote-tracking branch 'origin/tqtc/lts-5.15.5' into ↵v5.15.5-lts-lgplTarja Sundqvist2022-05-1917-0/+26
|\ \ | |/ | | | | tqtc/lts-5.15-opensource
| * Docs: Add "instantiates" keywordsKai Uwe Broulik2021-05-1916-0/+20
| | | | | | | | | | | | | | | | | | | | Document what the corresponding C++ class for any given QML item is, like it's done in Qt Declarative. Change-Id: I015565f88cb457f1e73dd7c2c54edff3505db395 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit a04decb6a85ef254ec48842e7551a2920de6a714) Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Include locale.h for setlocale/LC_CTYPEAlbert Astals Cid2021-05-121-0/+4
| | | | | | | | | | | | | | Change-Id: Iced32a31a63cec71008549c1e0961d59ffc45a37 Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> (cherry picked from commit e9522eda46028f351d87311d898ab985856970b0) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Add missing define guardsSamuli Piippo2021-04-221-0/+2
| | | | | | | | | | | | | | | | | | | | Ammend cca1b94190a094b5d1d7ce492b6533e2d330c5e8 to use m_composeState only if xcbcommon is available. Change-Id: I48332b15def3282c5bda3e1c7c393ea7e9849cbe Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org> (cherry picked from commit 05658e127dedfff65789860415537c6920ec574d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* | Merge remote-tracking branch 'origin/tqtc/lts-5.15.4' into ↵v5.15.4-lts-lgplTarja Sundqvist2022-04-0710-23/+153
|\ \ | |/ | | | | | | | | tqtc/lts-5.15-opensource Change-Id: I665a0f6579e52cd9f27f731c6363bb03188a07bf
| * Fix touch being ignored when down and up are in the same frameHyunkook Khang2021-04-141-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | The Wayland protocol gives no guarantees about which events are part of a frame, so handle the case where we receive wl_touch.down and wl_touch.up within the same frame. Fixes: QTBUG-89680 Change-Id: Ie0b9d2fb950fb0d9a6af8dd8ad2fa55a5efa71e6 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit da31aa6544f38c063de93326f958e8cbb02004af) Reviewed-by: Hyunkook Khang <hyunkook.khang@qt.io>
| * client: Allow QWaylandInputContext to accept composed key combinationsAleix Pol2021-04-135-10/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | At the moment, we are forcing user to choose to either compose or use the text-input channel. This patch brings some of the QComposeInputContext functionality in order to let applications understand dead key combinations like they are supposed to. Having it in QWaylandInputContext rather than in QWaylandInputDevice should solve the problems 3aedd01271dc4f4a13103d632df224971ab2b6df had with 57c4af2b18c0fb1d266b245a107fa6cb876b9d9e, because we are doing it in the input context rather than before. This way, if the user is overriding the input method (e.g. by setting QT_IM_MODULE), all the key strokes will still be properly forwarded to the module to use. This in turn allows us to solve https://bugs.kde.org/show_bug.cgi?id=411729 and https://bugs.kde.org/show_bug.cgi?id=405388 since we don't need to choose anymore between physical and virual keyboards anymore. Change-Id: I8601f5d7ae21edf4b3a1191fa75877286e505588 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit cca1b94190a094b5d1d7ce492b6533e2d330c5e8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Use qWarning and _exit() instead of qFatal for wayland errorWeng Xuetian2021-03-311-2/+3
| | | | | | | | | | | | | | | | | | | | | | This type of error is likely to happen upon system logout. qFatal would trigger sigabrt and leave unnecessary coredump on the system. Using qWarning here would make it consistent with xcb's io error. Change-Id: I571ba007bf2453486b81837cccdbefa5f181b63d Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 91625c591c9854c7b6934c12a83df6cbcfcbfbd4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Fix race condition when attaching client to text inputEskil Abrahamsen Blomfeldt2021-03-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extensions are registered by initialize(), which is called as a polish event later. Therefore the following race can happen: 1. Application #1 requests a text-input object. The compositor sees that the seat has no such object and creates a new one. 2. Polish event is posted. 3. Application #2 requests a text-input object. Since the polish event is not yet processed, it also creates a new one. 4. Second polish event posted. 5. Both polish events processed. We end up with two competing text-input objects, one per client. This in turn leads to enter/leave events not being sent correctly, and the client may therefore end up not updating the keyboard hints. The result was arbitrary behavior: Sometimes the keyboard would not open at all, whereas other times it would open with the current input method hints, even if these do not match the hints of the editor. [ChangeLog][Input] Fixed a problem where a virtual keyboard would not be updated correctly if two clients were started at almost the same time. Fixes: QTBUG-91096 Change-Id: I262a5c15f87ba13d750425c259583919cd947ea4 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit e08b25efe4a7bec1004696bd23d9f8959158bd60) Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
| * xdgshell: Tell the compositor the screen we're expecting to fillAleix Pol2021-03-261-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | The xdgshell protocol allows us to tell the output to fill. This makes it possible to use fullscreen confidently on systems with multiple screens knowing that our windows won't be overlapping one another by calling setScreen accordingly before QWindow::showFullScreen. Change-Id: I757854c3698639472f3a25ef298ddcca031e1ed5 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit f915e53eaa596654ee1b9726a4767a1cba11336f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Get correct decoration margins regionJan Grulich2021-03-021-4/+4
| | | | | | | | | | | | | | | | | | | | | | Size we use to calculate margins region already contains size including margins. This resulted into bigger region and not properly damaging region we need to update. Change-Id: Id1b7f4cd2a7b894b82db09c5af2b2d1f1f43fa2a Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 1631315387faff3b4ae5c5ff1afb95e42f986e4c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Client: Send exposeEvent to parent on subsurface position changesDavid Edmundson2021-03-011-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a subsurface is moved, we need the parent window to commit to apply that move. Ideally we want this in sync with any potential rendering on the parent window. Currently the code calls requestUpdate() which acts more like a frame callback; it will only do something if the main QWindow considers itself dirty. We want to force a repaint, which is semantically more similar to an ExposeEvent. Fixes: QTBUG-86177 Change-Id: I30bdfa357beee860ce2b00a256eaea6d040dd55c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit b36a345d727eab37ee4ec4c2dc4674d5971c81d8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
| * Translate opaque area with frame marginsJan Grulich2021-02-231-3/+5
| | | | | | | | | | | | | | | | | | | | The opaque area doesn't take window decorations into account, which may result into possible graphical artefacts. Change-Id: I1606e8256e7e204dad927931eb1221b576e227fd Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit 3aed1fe7132c00cc7ce9b0fe8fc9e8ccdc771d38) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* | Revert "Update commercial license headers"v5.15.3-lts-lgplTarja Sundqvist2021-03-22413-6414/+6414
|/ | | | | | | | | | | This reverts commit 6bb05fed8fdb564f3ff0136bbdaf4efd6088797d. Revert of commercial license headers is required for Qt 5.15.3 opensource release. Task-number: QTBUG-91108 Change-Id: Ia867596ca140b1c37717baafe07cbcddd2a9b1fd Reviewed-by: Akseli Salovaara <akseli.salovaara@qt.io>
* Client: Send set_window_geometry only once configuredDavid Edmundson2021-02-151-1/+1
| | | | | | | | | | | | | | | | | | The geometry only makes sense when a buffer exists, our currently send value is somewhat meaningless, but till now harmless. A specification clarification implies that it is an error if the calculated effective window geometry is null, rather than just checking the sent value. This is the case if set_window_geometry is sent before a buffer is attached. On our first configure call we enter resizeFromApplyConfigure which will hit this path and send the initial state. Change-Id: Ib57ebe8b64210eae86e79dfdd6b5cb8a986b020b Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit 2555663c9f59b93f5fcc5d3ead233bee280e36f8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Update commercial license headersTarja Sundqvist2021-01-27413-6414/+6414
| | | | | | | | | | | | | | | Updated header.COMM to the files in tqtc-qtwayland. Examples, tests and documentation files are not updated. The commercial license header may contain some additional lines so that its line count equals with the earlier license header. Reason for this is that some autotests use hard coded line numbers and a change in the line count causes failures in tests. Task-number: QTQAINFRA-4214 Change-Id: Ib716dd7c17587d0155b6903f5cf62be3f99384bf Reviewed-by: Antti Kokko <antti.kokko@qt.io>
* Fix memory leak in QWaylandGLContextEskil Abrahamsen Blomfeldt2021-01-261-0/+2
| | | | | | | | | | | | | | We were leaking an EGL context with every GL context created, which lead to rapid OOM errors in stress tests. [ChangeLog][Qt Wayland Client] Fixed a memory leak when creating QOpenGLContexts on Wayland and using the wayland-egl backend. Fixes: QTBUG-85608 Change-Id: I8426b5df36ec7ab9e66ce15f9e02edad3aca60b9 Reviewed-by: David Edmundson <davidedmundson@kde.org> (cherry picked from commit bd1713ef820a3d56fc19df46059fde3372092f9b) Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Fix leaked subsurface wayland itemsEskil Abrahamsen Blomfeldt2020-12-071-0/+1
| | | | | | | | | | | | | | | Whenever a subsurface was added we would create a QWaylandQuickItem, but this was never deleted. It is one-to-one with the surface, so it should be deleted at the same time. [ChangeLog][QtWaylandCompositor] Fixed a memory leak when creating subsurfaces. Task-number: QTBUG-88782 Change-Id: If4b3f15200ce3bd123ff73847d3593d174a39229 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> (cherry picked from commit 38fc568b30bf916165324c2cd2db127d2a9aa68c) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Ensure that grabbing is performed in correct contextAndreas Cord-Landwehr2020-12-041-1/+1
| | | | | | | | | | | | | For multi-display rendering on EGL, it is mandatory that the grabbing of the surface happens in the same EGL context as the surface belongs to. By adding the grabbing to the rendering stage of the image, this relation is forced. Task-number: QTBUG-87597 Change-Id: I50f40df1215aa771d714065e942c5a738ba6269f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> (cherry picked from commit ab3a1a07f3d1e0d5a9e9d97b6b3b587180e2f4c8) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
* Make setting QT_SCALE_FACTOR work on WaylandMorten Johan Sørvig2020-11-185-7/+8
| | | | | | | | | | | | | | | | | | | | QWindow geometry accessors return geometry in device independent pixels. Normally this coordinate system is equivalent to the Wayland native coordinate system, but this is not the case when QT_SCALE_FACTOR is set. Replace QWindow geometry calls with the helpers from QPlatformWindow which return geometry in the native coordinate system: QWindow::geometry() -> QPlatformWindow::windowGeometry() QWindow::frameGeometry() -> QPlatformWindow::windowFrameGeometry() Task-number: QTBUG-87762 Fixes: QTBUG-88064 (cherry-picked from commit 8cb1b07aea12d50b4fecc45c903705dfd368022a) Change-Id: I6e2029bc6210f12441ae7c9d8b678271e9922dde Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Do not try to eglMakeCurrent for unintended caseJaehak Lee2020-11-182-0/+7
| | | | | | | | | | | | | | | | The QSGThreadedRenderLoop::hide can be called at twice, when the QWindowPrivate::setVisible(false) is called. The eglSurface is EGL_NO_SURFACE when the second QSGThreadedRenderLoop::hide is called. And if EGL_KHR_surfaceless_context is supported, the eglMakeCurrent don't return the false. But this case is not intended. So, add the defence code for above case. Fixes: QTBUG-88277 Change-Id: Ia9e5990303e98f0eedc48531e5af62ff9961f419 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>