summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Fix QWaylandQuickShellSurfaceItem not tracking its shellSurfaceKonstantin Ritt11 days2-28/+41
| | | | | | | | | | | When the shell surface is destroyed, i.e. by hiding the QtWaylandClient's window, QWaylandQuickShellSurfaceItem does not emit shellSurfaceChanged() and may cause a dangling pointer dereference. Pick-to: 6.10 6.8 6.5 Task-number: QTBUG-138907 Change-Id: I99665ebce41334ace72103fdeb2956986cfc7ef4 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandView: Remember to release front buffer when surface unsetKonstantin Ritt13 days1-0/+4
| | | | | | | | | | | When we're locking the front buffer i.e. on surface destruction, and then the view's surface is reset to null, unlocking the locked buffer must release it. The same is true for changing the view's surface but I'd expect the new surface's commit + advance do the job. Change-Id: I0518590bd7d1482046b5ede1cf3f9b12825621f6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandView: Discard back buffer on buffer swapKonstantin Ritt13 days1-2/+2
| | | | | | | | When the back buffers becomes the front buffer in QWaylandView::advance(), there is no any particular reason to keep it referenced as back buffer. Change-Id: If1f29a6c9600bbb99ac19335241f1f9b5c169713 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandQuickItem: Properly handle bufferLocked changes from QWaylandViewKonstantin Ritt13 days3-4/+16
| | | | | | | | | | As long as QWaylandQuickItem simply wraps the QWaylandView's properties, when bufferLocked property value changes on the QWaylandView, QWaylandQuickItem must handle it just like if it were QWaylandQuickItem::setBufferLocked() call Change-Id: Ic928d963d4b4beaeab716687d2181f79179c9d32 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandQuickItem: Fix allowDiscardFrontBufferChanged() signal emissionKonstantin Ritt13 days1-1/+1
| | | | | | | | Obviously, QWaylandQuickItem::allowDiscardFrontBuffer() is a getter and it didn't emit anything at all. Change-Id: I169d37ff70cb4016465fa6df0d3654c76688856e Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandQuickItem: drop redundant codeKonstantin Ritt13 days2-12/+1
| | | | | | | | | The QWaylandSurface::redraw() connected to QQuickItem::update() a few lines below guarantees the Item shall be updated on any commit, not just for the surface map/unmap ones. Change-Id: Idf71f57b383d3314dfd189dccd90e305f0286332 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix defaultOutputChanged() not being emitted in some casesKonstantin Ritt13 days1-2/+8
| | | | | | | | I.e. when adding the output to the compositor with no outputs, and when removing the default output. Change-Id: I6e523ce2a967bba7873453a4bffb26ba99f76e62 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Prohibit setting null as a default outputKonstantin Ritt14 days1-0/+4
| | | | | Change-Id: I9e40fafd440c3d79f25ace7981bc0ee5f5b4fcd7 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Properly handle frame callbacksKonstantin Ritt14 days3-13/+13
| | | | | | | | | | | | | | | | | | | Current implementation sends a frame callback to notify client about the buffer attached in the very same commit has been rendered. Which is totally wrong. The frame callback's only purpose is to notify client about the good time to start preparing the **next** frame (if any). Accordingly to the official specification, https://wayland.app/protocols/wayland#wl_surface:request:frame > The frame request will take effect on the next wl_surface.commit. > The notification will only be posted for one frame unless requested again. Thus saying, wl_surface.frame+wl_surface.commmit is a perfectly formed command sequence to get the frame callback. No buffer attach is required! Change-Id: I22bed4055858a1261e7cc26592109c056a42ffc6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Bump wl_compositor support to v5Konstantin Ritt14 days3-3/+19
| | | | | | | | | | | For wl_surface version is 5 or higher, passing any non-zero x or y to wl_surface.attach is a protocol violation, and will result in an 'invalid_offset' error being raised. The x and y arguments are ignored and do not change the pending state. To achieve equivalent semantics, use wl_surface.offset. Change-Id: I70f72c747d8f8666e1437050d4b0e9227c439f6d Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Add some wl_surface protocol compliance checksKonstantin Ritt14 days1-2/+8
| | | | | Change-Id: I417b25de59fe8b03d52d1c29e4d423d668ddb33e Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Ignore unsupported wl_surface buffers transformsKonstantin Ritt14 days1-1/+11
| | | | | | | | | As we do not support flipped transforms (yet?), ignore them for QWaylandSurface just like we do in other places (see QWaylandScreen and QXdgPopup for example). Change-Id: I2fd33bd4bdbf245d0d9423142dfaa7d1e49b020d Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Minor optimization to the frame callbacks handlingKonstantin Ritt2025-11-271-5/+6
| | | | | | | | | When destroyed, do not lookup the frame callback in the surface's callback list to remove it out of there if we know the list shall be emptied just a moment later anyways. Change-Id: Id1232e1659bf4e2cebbf054cdfa29928863ca005 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Do not call frameStarted() for independentFrameCallback viewsKonstantin Ritt2025-11-271-2/+4
| | | | | | | | | Add the same check as in sendFrameCallbacks(). Vsp2Layer calls frameStarted() and sendFrameCallbacks() on its own. Change-Id: I341bb1270cfe40a76e78fb46e5c2191b65a0b13b Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Ensure no views refer to the semi-destroyed outputKonstantin Ritt2025-11-271-0/+9
| | | | | Change-Id: If1ed1cd235a701a2c8b29590ecd93530790305d6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Make buffer transform a double-buffered stateKonstantin Ritt2025-11-272-8/+14
| | | | | Change-Id: I8d96b94d020c5ed317f1f92115aa8a424d8e1d6c Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandQuickShellSurfaceItemPrivate: Drop unused lambda captureMichael Weghorn2025-11-221-2/+2
| | | | | | | | | | | | | | | | | Drop unused lambda capture in order to fix .../qt5/qtwayland/src/compositor/extensions/qwaylandquickshellsurfaceitem.cpp:339:18: error: lambda capture 'this' is not used [-Werror,-Wunused-lambda-capture] 339 | auto skip = [this, putOnTop, putOnBottom](QQuickItem *item) { | ^~~~~ .../qt5/qtwayland/src/compositor/extensions/qwaylandquickshellsurfaceitem.cpp:372:18: error: lambda capture 'this' is not used [-Werror,-Wunused-lambda-capture] 372 | auto skip = [this, putOnTop, putOnBottom](QQuickItem *item) { | ^~~~~ 2 errors generated. This amends c9126f06afdfb116b7ba202512c06c0bbbc93ed2. Change-Id: I89432c3e939292b183421b5952316861df2657c3 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fix surface_set_buffer_transform() for multi-output scenarioKonstantin Ritt2025-11-201-1/+9
| | | | | | | Do not assume the primary view is on a primary screen Change-Id: I74e871b9eb00dc349db5c16e1cf3067c3cd02047 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Destroy frame callbacks in construction orderKonstantin Ritt2025-11-201-2/+2
| | | | | | | | | Accordingly to the official specification, https://wayland.app/protocols/wayland#wl_surface:request:frame > For a wl_surface, the notifications are posted in the order the frame requests were committed. Change-Id: Ifa5f1701b0cb851cc620c025f6933e08a26c5a5b Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Emit defaultOutputChanged() in the same order addOutput() doesKonstantin Ritt2025-11-201-1/+1
| | | | | Change-Id: I4545914b5b6a35bf71e069ad081124ab4276c5dc Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Micro optimizations to QWaylandOutputKonstantin Ritt2025-11-202-15/+13
| | | | | Change-Id: I42611fd5df7e261439508b24da28536712e73b08 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix build with !QT_CONFIG(cursor)Konstantin Ritt2025-11-201-2/+2
| | | | | Change-Id: I3d7d0bc8a2c1e36c84775503ef4db51b7709dfc6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* WaylandTextureSharing: remove use of NO_GENERATE_QMLTYPESSami Shalayel2025-11-185-9/+49
| | | | | | | | | | | | | | | | | | Remove the use of NO_GENERATE_QMLTYPES in WaylandTextureSharing, where it seems that the plugin does not register any types, and in WaylandTextureSharingExtension, where one type gets type registered declaratively via QML_FOREIGN. Add an extra foreign types for the base types of QWaylandTextureSharingExtensionQuickExtension to avoid qmllint warnings about unresolved types. It seems to be a drawback from the Q_COMPOSITOR_DECLARE_QUICK_EXTENSION_NAMED_ELEMENT macro, that only registers a type but not all of the base classes of a type. Task-number: QTBUG-110794 Change-Id: Ic5e2bcf95f6029422dd94deda62d158b53387a70 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Doc: Add missing property documentationPaul Wicking2025-11-1713-5/+525
| | | | | | Fixes: QTBUG-141871 Change-Id: Ifb6f528b2c46c7ce908995c2cf0093635a681de0 Reviewed-by: Topi Reinio <topi.reinio@qt.io>
* compositor: fix build with -no-feature-imNick Shaforostov2025-11-132-0/+4
| | | | | | | Pick-to: 6.10 Change-Id: Ib164d9ddeb3841caaff4faa7edc0729648c8c7da Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
* cmake: fix build with -no-feature-wayland-compositor-quickNick Shaforostov2025-11-132-6/+11
| | | | | | Pick-to: 6.8 6.10 Change-Id: Idf6d7de1adc1cb480e1a82921c555630e89f872d Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* decorations: fix build with -qreal floatNick Shaforostov2025-11-131-4/+4
| | | | | Change-Id: I33276f7affc3329717edfdfa6c8ec0e0c0074692 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Doc: Fix "Unable to parse QML..." QDoc warningsVenugopal Shivashankar2025-11-058-16/+16
| | | | | | | | | These warnings are mostly because of QML incomplete QML snippets passed to \qml...\endqml. Replaced such instances to use \code...\endcode instead. Change-Id: I90746811c9060ce374588cdd492a65414a6ddeb3 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Doc: Fix "No output generated for..." QDoc warningsVenugopal Shivashankar2025-11-054-0/+31
| | | | | | | | | These QDoc warnings are typically for a function/property doc, where its parent class/type is not documented. Majority of these cases are for members of internal classes that were never marked as \internal. Change-Id: I5c2cd7c9243ea4726467402a0759fff99454af62 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Fix support of wl_seat of version 1Konstantin Ritt2025-11-041-1/+2
| | | | | | | | | | Many test-alike clients only require the minimal version of the protocol interfaces, thus implementing a v1 interface callbacks where possible; currently, such client ends up with a "unimplemented callback" ffi error. Pick-to: 6.5 6.8 6.10 Change-Id: I1ef74dca147a75ed4285bd31ec09fcd5f475b119 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix C++20 deprecated capture of *this in [=]Konstantin Ritt2025-11-041-2/+2
| | | | | Change-Id: I1ed42ef95c14850227cbc73079ab210b068d7f4a Reviewed-by: David Redondo <qt@david-redondo.de>
* QWaylandAdwaitaDecoration: unify window border into a single pathJan Grulich2025-10-301-7/+15
| | | | | | | | | | | | We originally painted the decoration by splitting it to two parts. First part was the titlebar with rounded corners and second part was the rest of the window, basically to paint borders around the window. This had a side-effect, where part of the border was overpainted and causes an artifact when a transparent border is used. Pick-to: 6.10 6.9 Change-Id: If7011c9c99e04e2362c8491c08cc7ba82b849378 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Adapt to reuse version 6Lucie Gérard2025-10-151-1/+1
| | | | | | | Task-number: QTBUG-140916 Pick-to: 6.8 6.10 Change-Id: I4b6e73cfb308ff2a9e5c039f26fa7b1bd62bbe27 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Doc: Document missing QT_IVI_SURFACE_ID environment variableDheerendra Purohit2025-10-091-0/+2
| | | | | | | | | | | QT_IVI_SURFACE_ID has now been added to the main environment variables section. Pick-to: 6.10 6.9 Fixes: QTBUG-119259 Change-Id: Ie08921350452b09b2c5ac9006a9db43d329ed3b1 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Kai Köhne <kai.koehne@qt.io>
* Use QPointer as a weak pointer for WaylandEglClientBufferIntegrationIlya Fedin2025-10-072-8/+4
| | | | | | | | | | This fixes a crash when creating and destroying QWaylandCompositor multiple times Fixes: QTBUG-115063 Pick-to: 6.10 Change-Id: Ia9272eb506a6c5d26eb815b6f5bbbe745441c4b4 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandAdwaitaDecoration: Update colors based on libadwaita 1.8Jan Grulich2025-09-251-11/+18
| | | | | | | | Update colors to match the latest version of GNOME and libadwaita. Pick-to: 6.10 6.9 Change-Id: I9dc92d0f174089cee8523f090fee9058e7f76e81 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* QWaylandAdwaitaDecoration: Fix titlebar fontJan Grulich2025-09-251-6/+10
| | | | | | | | | Do not rely on "titlebar-font" in case "titlebar-uses-desktop-font" is set to true as described in the schema documentation. Pick-to: 6.10 6.9 Change-Id: I3b3747ae48206ea721fb4b78cad03d9bbbe9705c Reviewed-by: David Edmundson <davidedmundson@kde.org>
* decorations/adwaita: Fix cursor managementDavid Edmundson2025-08-131-8/+8
| | | | | | | | | The decoration should not be setting the cursor in the same way as application code setting the cursor which gets stored for future usage. Pick-to: 6.10 Change-Id: I60bc078a3b9033ea37cf81c5cd5d485838ac4b68 Reviewed-by: David Redondo <qt@david-redondo.de>
* Doc: Fix incorrect usage of \generatelistTopi Reinio2025-08-061-1/+1
| | | | | | | | | | | | | | | | | | | | | The \generatelist command takes an optional argument that affect how the members are listed, for example, `classesbymodule` which creates an annotated list of the classes in a named C++ module. `groupsbymodule` is not recognized or documented. QDoc falls back to generating a list of all members of a group in this case. While the end result is correct, this relies on an undocumented feature that is likely to change and break. Replace these instances with an explicit \annotatedlist command that produces the same output. Pick-to: 6.10 Task-number: QTBUG-138901 Change-Id: I8e2ad22ed79810c3ed2df0f7508b4216712b1adc Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* qttextinput: Fix deadlock between client and compositorDominik Holland2025-07-291-1/+6
| | | | | | | | | | | | | | | | | | | | When sending the end_input_method event the compositor waits until the event is confirmed. This is done by polling wayland events in a loop. If the client sends a new frame at the same time the compositor sends a the end_input_method event, the client cannot answer wayland events as it's waiting in swapBuffers until the frame callback was called. The compositor on the other hand just polls new wayland events. By making sure to also process normal Qt wayland events, we make sure the scene graph is not blocked and we can send the frame callbacks to unblock the client. Pick-to: 6.5 6.8 6.9 6.10 Change-Id: I328710193008728e4eac2bbc4e6eba9c81567d4d Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Remove year from Qt Copyright in REUSE.tomlLucie Gérard2025-07-091-1/+1
| | | | | Change-Id: I59cb7deef5b7e8d38bfce5f12bd2dd54190e6f0a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* qt-shell: forceActiveFocus for the focused itemInho Lee2025-06-171-0/+7
| | | | | | | Fixes: QTBUG-133866 Pick-to: 6.10 6.9 6.8 Change-Id: I9f8d87a0dc00499918149ad07d10c205fee39c4f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Prevent pointer.leave for an unfocused surfaceInho Lee2025-06-171-3/+6
| | | | | | | Task-number: QTBUG-133866 Pick-to: 6.10 6.9 6.8 Change-Id: Ie8e9d971a2590020cd393dcdcf50960ddbf0c243 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix crash with static builds + LTOEskil Abrahamsen Blomfeldt2025-06-172-9/+9
| | | | | | | | | The duplicate BufferState symbol in two different compilation units (wayland-egl and wayland-eglstream-controller) was causing linker warnings and related crashes when built statically with LTO enabled. Renaming one of the symbols fixes this. Pick-to: 6.5 6.8 6.9 6.10 Fixes: QTBUG-137333 Change-Id: Id79cda0d0336625e5649b51bd6f1f18038051b7e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Normalize signal/slot signatures 2025Marc Mutz2025-06-041-1/+1
| | | | | | | | | | | This is the result of running util/normalize on the code base. The following manual edits were needed: - folded a long connect() line in texture-sharing manual test Pick-to: 6.10 6.9 6.8 6.5 Change-Id: Iaf425d057c1b59bacd09847469a4409d73739a09 Reviewed-by: Liang Qi <liang.qi@qt.io>
* CMake: Add PURL and CPE info to 3rd party attribution filesAlexandru Croitor2025-06-041-0/+4
| | | | | | | | | | | [ChangeLog][Third-Party Code] Added PURL and CPE information to the attribution files of 3rd party sources. Pick-to: 6.5 6.8 6.9 6.10 Fixes: QTBUG-137385 Task-number: QTBUG-129602 Change-Id: I0a7351b3767041d962655ac4e4703c1020a48dd4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix build with -disable-deprecated-up-toAurélien Brooke2025-06-021-0/+2
| | | | | | | | | | | | | The cursorSurfaceRequest signal is removed in this case, but we were trying to connect to it unconditionally. Add the same #if QT_DEPRECATED_SINCE as the header to fix this. Amends bf60784393552a605d166330d3fdc87e900e8a0b. Pick-to: 6.10 6.9 6.8 Change-Id: Ibf9aee069f333df3d15016e744b572ef6c4c9dab Reviewed-by: David Redondo <qt@david-redondo.de>
* Doc: Enable automatic linking to sources on code.qt.ioTopi Reinio2025-05-271-0/+3
| | | | | | | | | | | | | Since 6.10, QDoc is capable of generating links to the declaration in the source code for each documented C++ API entity in their `Detailed description`. Add the required configuration to enable this feature in Qt Wayland Compositor. Change-Id: Ic32c825c2dab0ff223ba016ab65eda1b561b3c61 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: David Redondo <qt@david-redondo.de>
* Fix nullptr access in modal evaluationBernd Weimer2025-05-221-2/+2
| | | | | | | | | A ShellSurfaceItem w/o an actual shellSurface assigned could cause a crash in function onTop/Bottom. Pick-to: 6.9 6.8 Change-Id: I17ae836c61d09e7cb646c6485f4854b3535840e9 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Clean up buffers on destroy requests immediatelyBernd Weimer2025-05-223-10/+12
| | | | | | | | | | | | | | | | | | | | | | This is about the linux_dmabuf client buffer management. On the server, buffer representations (LinuxDmabufClientBuffer/LinuxDmabufWlBuffer) are only deleted when a client disconnects. They are not deleted upon buffer destroy requests from the client. Hence, some unused memory piles up for each deleted buffer. We call wl_resource_destroy now in the destroy request handler (like other compositors do). The basic idea is that LinuxDmabufClientBuffer own's the LinuxDmabufWlBuffer now. So, instead of relying on the destroy callback function of LinuxDmabufWlBuffer, the LinuxDmabufClientBuffer's BufferManager destroy listener will delete the buffer representations. Also removed futile code. Fixes: QTBUG-132208 Change-Id: Ib48404623d1aa9984434ed238395709b08dc0574 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Thomas Senyk <thomas.senyk@qt.io>