summaryrefslogtreecommitdiffstats
path: root/src/client
Commit message (Collapse)AuthorAgeFilesLines
* client: Explain what PUBLIC_CODE doesDavid Redondo6 days1-1/+2
| | | | | Change-Id: If7d0954561cecddefada49d7f00359a711bb9e29 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Revert "Revert "QWaylandDisplay: Allow software-only deco and don't init GL ↵Kai Uwe Broulik6 days1-1/+6
| | | | | | | | | | | | | needlessly"" This reverts commit 171e1d0d2761ba64cb15edbd32d02fb50ef57d28. Reason for revert: Cause for test failure has likely been addressed by b9a5ffab93627cfedcead1574c8f0fd010b329b5 Fixes: QTBUG-124284 Fixes: QTBUG-124285 Change-Id: Iedeb1d2800951e549fe4a4846aaaa477cfa497ae Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Remove unused private fieldMoss Heim8 days2-3/+1
| | | | | | | | This causes a build failure under clang 17. Change-Id: I9e256109ec6e7de146334012bce90912d0d4bb62 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: David Redondo <qt@david-redondo.de>
* client: Disentangle platform services and windowmanagerintegrationDavid Redondo11 days10-91/+127
| | | | | | | | | The current state was a bit messy with the platform services being the potentially no initialised qt window manager extension wayland object. Change-Id: Id1f911b75d34fcf70594ca7257b79bf431f0643f Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Make wheel operations compatible with xcbInho Lee2024-04-301-2/+4
| | | | | | | | | | On xcb, Alt modifier makes wheel operations horizontal. Fixes: QTBUG-124807 Pick-to: 6.7 6.5 Change-Id: I98cfe14b4df91169a5ff4e777ebe954087747e17 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QWaylandWindow: requestActivate on showKai Uwe Broulik2024-04-262-0/+4
| | | | | | | | | | | | | | For simplicitly, a Wayland compositor typically activates a window when it is mapped. However, it does not necessarily have to and might not want to in order to prevent stealing focus. Inttroduce a requestActivateOnShow() on the shell which is called when showing a window and, in case of XDG Shell, will explicitly request activation (unless Qt::WA_ShowWithoutActivating is set) and make use of the existing XDG Activation infrastructure. Change-Id: I69ab5f2cee4540d5baefa5a266f22dbb165e4192 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: implement QWaylandScreen::topLevelAt()Liang Qi2024-04-222-0/+12
| | | | | | | | | | For security reason, Wayland doesn't provide global position for top level windows in most cases. Task-number: QTBUG-113404 Pick-to: 6.7 6.5 6.2 5.15 Change-Id: I2cd11b641fba6582cf96cfbea16f5e598a473db5 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Client: Wire up surfaceRoleCreated/Destroyed signalsKai Uwe Broulik2024-04-171-0/+3
| | | | | | | Emit them after creating or destroying the shell surface. Change-Id: Ied54933ca0f0aec25cc288f7cfe191c85b37f543 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
* client: Add CMake options to control visibility of generated symbolsDavid Redondo2024-04-152-3/+22
| | | | | | | | | | | | | | | | | Using public-code by default is problematic if multiple libraries contain wayland interface definitions generated with public-code which exports the symbols of the interface definitions from the library. If not all libraries are build against the same protocol version and the symbol is resolved to a version generated from an older version of the protocol, then libwayland will detect a protocol error if a request or event from the newer version is used. This introduces two new options PRIVATE_CODE and PUBLIC_CODE to qt6_generate_wayland_protocol_client_sources which correspond to the wayland-scanner options. For backwards compatibility PUBLIC_CODE is the default. Change-Id: Ia30ec4b83419962b768207d7353c495e11b0268e Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Revert "QWaylandDisplay: Allow software-only deco and don't init GL needlessly"Eskil Abrahamsen Blomfeldt2024-04-111-6/+1
| | | | | | | | | | | | | | | This reverts commit 3652666c559382f6d575fa4102e132b71a58785f. This optimization causes flakiness in the xdgdecorationv1 test, possibly because it no longer handles the case where the supportsWindowDecoration() function is called before the buffer integration is initialized. So it unfortunately has to be reverted until a better approach can be figured out. Fixes: QTBUG-124259 Change-Id: I05f13a51b22b6779bffba531f08ebfd17a9afb38 Reviewed-by: David Redondo <qt@david-redondo.de>
* QWaylandDisplay: Allow software-only deco and don't init GL needlesslyKai Uwe Broulik2024-04-021-1/+6
| | | | | | | | | | | | Don't initialize the client buffer integration just to check whether it can do a decoration. If we had a GL window, it would have initialized GL already. Also, we can do software-rendered decorations nowadays, only disable them if the integration explicitly says it can't. Change-Id: I396d32796a10ccffd6ef3bb0c5eaa3a1078b8d79 Reviewed-by: Ilya Fedin <fedin-ilja2010@ya.ru> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Client: Replace a bunch of frameMargins with clientSideMarginsIlya Fedin2024-03-292-3/+3
| | | | | | | | | | | Use it wherever window coordinates should be translated to surface coordinates This also fixes the usage of QWindow::mapFromGlobal which is in wrong coordinate space while handling CSD dragging from pending touch points Change-Id: I66b114610f0e44fea10535594adb5d1284196662 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Use static_cast rather than dynamic_castLu YaNing2024-03-211-2/+2
| | | | | | | | | | | To avoid RTTI. When I tried to implement the reconnect function in Plasma5, I found that the application would have a dynamic_cast crash problem. Referring to other usage logic and suggestions in Qt, it is recommended to avoid using dynamic_cast. Change-Id: I4fd41846c3215f60aafc7e38d1542d52ec6759b8 Reviewed-by: David Redondo <qt@david-redondo.de>
* Client: Fix the mouse being stuck in pressed state after ↵Ilya Fedin2024-03-203-5/+17
| | | | | | | | | startSystem{Move,Resize} Fixes: QTBUG-97037 Pick-to: 6.7 Change-Id: I812c25b98909f9ff05ffca122e7201665023172e Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Add GNOME-like client-side decoration pluginJan Grulich2024-03-191-0/+19
| | | | | | | | | | | | | | | | | Adds a client-side decoration plugin implementing GNOME's Adwaita style. This is trying to follow GTK4 Adwaita style, using xdg-desktop-portal to get user's configuration in order to get whether a light or dark colors should be used and to get the titlebar button layout. This plugin is now used on GNOME by default, while defaulting to the original behavior for non-GNOME DEs. It depends on QtSvg used to draw titlebar buttons so in case QtSvg is not found, this plugin will not be build. [ChangeLog][QtWaylandClient][Added GNOME-like client-side decoration plugin] Fixes: QTBUG-120070 Change-Id: I0f1777c4e0aa3467dafbbae8004b594cc82f9aa0 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* TextInputv3: use a serial for each resourceInho Lee2024-03-191-1/+0
| | | | | | | | | | | Each zwp_text_input_v3 object should have their own serial number and it will not be cleared on the same object. Pick-to: 6.7 Change-Id: I779c2ae07f1dab1ae4a7d87e4e183ce33ec804fe Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Weng Xuetian <wengxt@gmail.com>
* client: Only use viewport when fractional scaling is in useDavid Edmundson2024-03-141-1/+3
| | | | | | | | | | | | | | | | | Either viewport or wl_buffer.set_scale can be used to notify the compositor that the client has scaled it's contents, with viewport being more flexible and a requirement for fractional scaling. Unfortunately Gnome before 36 announces viewport support, but it does not work correctly. This patch workarounds that by only using the viewporter when we're using fractional scaling otherwise continue using the legacy path. Fixes: QTBUG-122412 Pick-to: 6.7 6.6 Change-Id: I9a01d9456ce91735051f8f53fb4b72add6961fcb Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: David Redondo <qt@david-redondo.de>
* client: don't cache one type in QWaylandMimeDataLiang Qi2024-03-131-1/+8
| | | | | | | | | | "application/vnd.portal.filetransfer", which is only valid for one time use. Fixes: QTBUG-107858 Pick-to: 6.7 6.6 6.5 6.2 5.15 Change-Id: I094de22ea0bb9b3577572e6c57ebe42cdc8c7b41 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: use current modifiers in repeat keysLiang Qi2024-03-102-8/+5
| | | | | | | | | This amends 35880c7e1021a379e3cdd4005edd53472b63856c . Fixes: QTBUG-123007 Pick-to: 6.7 6.6 6.5 6.2 5.15 Change-Id: I3b4e5d4a8304fd57558eec3897562895c294aadd Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Support multi-key for input context pluginJiDe Zhang2024-03-103-21/+35
| | | | | | | | | | Sync from QPlatformInputContextFactory::requested in 8596998cb025a8338c9403f5ef9db5a23f5cc682 of qtbase to QPlatformInputContextFactory. Fixes: QTBUG-120202 Change-Id: Ib15d8a59c4cb3baaa19355ed5d7c30c87a7a1c16 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QWaylandShmBackingStore: Don't clear new buffers in beginPaintKai Uwe Broulik2024-03-053-11/+21
| | | | | | | | | QFile::resize done upon creation of the buffer already ensures the buffer is filled with zeroes, so there is no need to paint it transparent if the buffer had just been created. Change-Id: I73ab297f148987acf52a0e08c7dd1ca57f7255be Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Revert "QWaylandDataDevice: Explicitly send null for rejected drag offer"Kai Uwe Broulik2024-03-041-2/+1
| | | | | | | | | This reverts commit 853bbee25514132dfe00ec9d55fbdcb39365926e. Reason for revert: QtWaylandScanner now sends null for a null QString when the argument is declared as allow-null Change-Id: I5b7e23285b300b76dabfd2999ab90e90e7328232 Reviewed-by: David Redondo <qt@david-redondo.de>
* Do not create new wl_pointer objects when creating pointer gesturesDavid Redondo2024-02-281-2/+2
| | | | | | | | | | | get_pointer is the method belonging to QtWayland::wl_seat creating new wl_pointer instead of using the already existing one. Since they were tracked nowhere they where also leaked. Pick-to: 6.7 Change-Id: I0b9d1914ea6a9e7b379fad905a319bde5fd7f136 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: Always call mShellSurface->setWindowGeometry regardless of exposureDavid Edmundson2024-02-281-1/+1
| | | | | | | | | | | | | | setWindowGeometry is called to tell shell surfaces when the window tries to request a new size. On XdgShell this should not be called before the window is exposed and we are attaching buffers, this check belongs in XdgShell itself as other shells may be using this for other purposes. Pick-to: 6.7 Change-Id: Iae09e71e1b5071fc8c1f3790ec1a260c3d6462ce Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* QWaylandDataDevice: Explicitly send null for rejected drag offerKai Uwe Broulik2024-02-221-1/+2
| | | | | | | | | qtwaylandscanner sends an empty string for a null QString but `wl_data_offer.accept` uses null for "not accepted". Pick-to: 6.7 6.6 6.5 Change-Id: I793d4315c9775a4bdc63085231318db8df829c8a Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Client: Emit wlSurfaceDestroyed after actually destroying wl_surfaceVlad Zahorodnii2024-02-201-12/+14
| | | | | | | | | | | | | | | | | | | At the moment, the QWaylandWindow::wlSurfaceDestroyed signal is emitted before destroying the wl_surface object. It's the opposite of its name. Furthermore, the client code in Plasma assumes that the wlSurfaceDestroyed signal is emitted after the wl_surface is gone, but it isn't, which is the source of bugs. Technically, it's an API breaking change. But this ordering issue is quite annoying to deal in the client code and the QWaylandWindow native interface api lives in the Private namespace. [ChangeLog][QtWaylandClient][Important Behavior Changes] The QWaylandWindow::surfaceDestroyed() signal is emitted after actually destroying the wl_surface object. Change-Id: I33e27c06795653d3e20e04a36cb39be8c46797ee Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QWaylandShmBackingStore: Split buffer preparation into dedicated methodKai Uwe Broulik2024-02-153-15/+11
| | | | | | | | | | | Drop "resize(QRect)" since it is ambiguous with the resize coming from QPlatformBackingStore. This allows to ensure a back buffer from multiple places, such as the upcoming "scroll" support. Change-Id: I43a5ece2d0e25e64b41335ba59b2b8c4ffcfff74 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* doc: Add documentation for cmake functionsEskil Abrahamsen Blomfeldt2024-02-134-0/+116
| | | | | | | | | | | | | This adds documentation for the cmake functions used to generate binding code for protocol extensions. Since the Wayland Client library did not have any documentation landing page, it also adds that. This currently only links to the cmake function, but it can be extended to include other APIs later if we add them. Pick-to: 6.7 Fixes: QTBUG-114147 Change-Id: I07d8dbe3bc32e5845482fe3e69ec6ba94897331b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Prefer text-input-v2 over text-input-v3 for nowWeng Xuetian2024-02-121-2/+6
| | | | | | | | | | | | | | Qt's current text-input-v3 is converted from text-input-v4, but it's current state is poor and does not support the same feature like v2. KWin is the only major party that implements text-input-v2 and many feature e.g. Plasma-mobile would require v2 feature to provide the complete support. Until v3 is as good as v2, prefer v2 over v3 should provide a smoother experience on KWin (for both 5/6) out of box and won't affect other compositor. Pick-to: 6.7 Change-Id: Iebfe20cfd61f4a96018c4d41a9c4c706b18c7199 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Client: Map Qt::BusyCursor and Qt::WaitCursor to correct shape namesVlad Zahorodnii2024-02-061-2/+2
| | | | | | | | | | | This amends b1cae06cb65658dcddf01a596ea95cfd7c0ebdc2. They are mapped vice versa. The wait cursor displays only an hourglass, while the busy cursor usually displays an arrow and an hourglass. Pick-to: 6.7 6.6 Change-Id: I449086f71b00993c061e8a56983c77925246dc37 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Remove redundant calls, textInput()Inho Lee2024-02-061-26/+37
| | | | | | | | | It is used repeatedly. Normally it can be optimized by a compiler but it might be helpful to see what it is by the name, inputInterface. Pick-to: 6.7 6.6 6.5 Change-Id: I7f4988674d7249c84b1321e69146dfd92189f142 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* QtTextInputMethod: hide inputPanel when focus leavingInho Lee2024-02-061-0/+3
| | | | | | | | | | When focusObject is changed, hide the input panel if input method is not accepted. Fixes: QTBUG-116600 Pick-to: 6.7 6.6 6.5 Change-Id: I50b5d051eea6f85365d8bc9aeadb46d8d866e362 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* client: Switch qt-toplevel-drag to xdg-toplevel-dragDavid Redondo2024-02-025-15/+17
| | | | | | | | | | | | While no released compositor implemented qt-toplevel-drag it was a valuable to step to prove the protocol and the Qt implementation together with development pre-release versions of KWin. Now that the protocol is standardized we can switch to that version which is functionally identical. Pick-to: 6.6 6.7 Change-Id: I3beefe542cbabeddba4468b5d1fa24fcb05a2e5a Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: Clean up old registry on reconnectDavid Redondo2024-02-011-0/+2
| | | | | Change-Id: Idcaf1aaef59529f0cb49c552418a434f7d449d7b Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: Remove unused member variable in TextInputV3David Edmundson2024-02-012-3/+1
| | | | | | Pick-to: 6.7 Change-Id: I717f16d6ff055b2c0221bfd9cae1bdc9fa7f6513 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Client: Fix Qt::KeypadModifier for key eventsNicolas Fella2024-02-011-2/+1
| | | | | | | | | | | | Use the right QXkbCommon::modifiers overload that can resolve the modifier. f614fdfa5dc522f805c7c061535df6a0dc7409b9 did this for wayland-server, do the same for the client side Pick-to: 6.7 6.6 6.5 Change-Id: Iff0c105cb31201241d4972a7772cf997cede3fc3 Reviewed-by: Liang Qi <liang.qi@qt.io>
* Remove QWaylandWindow::handleExposeTor Arne Vestbø2024-01-302-11/+0
| | | | | | | | It was part of xdg-shell-v6 which has since been removed. Pick-to: 6.6 6.7 Change-Id: Iecf5166b4c2710b209f7dfa0951958dcf82618f7 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: Fix deletion of new queued shm buffers during reconnectDavid Redondo2024-01-243-4/+4
| | | | | | | | | | | | | | | | | | | | | | | When reconnecting the cleanup of existing buffers is delayed in order to preserve contents and copy them to buffers belonging to the new connection. Due to the order of events it could happen that a new buffer was deleted along with the old ones but still being referenced by a window. During reconnect all QScreens are removed and new ones added for the wl_outputs on the new connection during the initial roundtrips. When the first new QScreen is added all QWindows move form the placeholder screen to it. This can cause for example QWidgets to repaint. At this point the windows are not reinited yet, and the buffer is queued inside the window. Only afterwards the reconnected signal was emitted which would cause deletion of all existing buffers including the newly queued ones. To fix this the signal is moved after the first roundtrip where all globals are announced and new buffers can be created but no new screens have been announced yet. The signal is renamed to be more fit for its new location. Pick-to: 6.7 Pick-to: 6.6 Change-Id: I06be14d235ac342a4b420176aadad3ccf18178fe Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Client: Update size hints when updating the decorationDavid Edmundson2024-01-231-0/+3
| | | | | | | | | | | | | Size hints are in wayland's "window geometry". This includes the space for any client side decoration that QtWayland has to add. We need to update the size hints whenever decoration is created or destroyed and these margins change. Fixes: QTBUG-121399 Pick-to: 6.7 Change-Id: Ie8c1898859774e1c8dff93695af15327379ad3b6 Reviewed-by: Liang Qi <liang.qi@qt.io>
* client: Destroy window manager integration before displayDavid Redondo2024-01-231-0/+1
| | | | | | | | | Like the globals window manager integration needs the display to be alive. Fixes: QTBUG-121364 Change-Id: I3bf10737f9c1aa6d0b3c34d2268532ea6fc4e957 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Mark QWaylandWindow::wlSurface as constDavid Redondo2024-01-192-3/+3
| | | | | Change-Id: I416fee67bb35a88f55ac6d24d203e607f1ea1f32 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* TextInputV3: Remove unnecessary enableSurface/disableSurfaceInho Lee2024-01-192-18/+5
| | | | | | | | | | | | | zwp_text_input_v3's enter/leave events are doing enable/disable the surfaces. enableSurface/disableSurface are called by setFocusObject and it follows enter/leave. These redundant routines are removed in TextInputV3 Fixes: QTBUG-120533 Pick-to: 6.7 Change-Id: I080c67629d7cf9a9029414f5a0ea6735cfe4642a Reviewed-by: David Edmundson <davidedmundson@kde.org>
* Make sure wayland object destructors are calledDavid Redondo2024-01-1721-34/+121
| | | | | | | | | | | Always at least call the generated "interface"_destroy method which does destroy the proxy. For not already wrapped classes a small template is introduced to pass a function that is called in the destructor. Fixes: QTBUG-111576 Change-Id: I373463710764958ddea42ef0f7dc010c427b2ce8 Reviewed-by: David Edmundson <davidedmundson@kde.org> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Disable client side decorations on Vulkan windowJiDe Zhang2024-01-171-0/+3
| | | | | | Fixes: QTBUG-120950 Change-Id: I22a78691bd09093432e5d11a72e3abbeadf36cf2 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* client: Avoid creating decorations in the render threadDavid Edmundson2024-01-112-6/+3
| | | | | | | | | | | | | | | | | createDecoration is called when on the main thread from when window flags change, implicitly from initWindow, and also every handleWindowStatesChanged which will be called when we get the first configure event in an xdg shell. There is no need to create the decoration in QWaylandGLContext::makeCurrent. Any current call to makeCurrent before the platform window is shown will not create a decoration as there's a check for a shell surface. Any call afterwards will have already been handled by initWindow. Similarly the SHM backend store does not need to handle decorations itself. Fixes: QTBUG-105703 Pick-to: 6.7 Pick-to: 6.6 Change-Id: I644cece28277131cf7a65eaa234ff08c8431d544 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* client: Fix text-input set_cursor_rectangle coordinatesIlya Fedin2024-01-103-6/+12
| | | | | | | | | They should be converted to native ones and shouldn't contain server-side decorations Pick-to: 6.7 6.6 6.5 Change-Id: Ia701edc22b68bec2fa46e95d7a812621142dcde0 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* QWaylandWindow: Update decoration when application palette/font changesKai Uwe Broulik2024-01-102-0/+13
| | | | | | | | Ensures the decoration can redraw to adjust for the new colors/font. Pick-to: 6.7 6.6 6.5 Change-Id: Ib46acde1d14baafda49f379f8279c396bc976bdc Reviewed-by: David Edmundson <davidedmundson@kde.org>
* bradient: Use QWaylandWindow actual window titleKai Uwe Broulik2024-01-102-16/+25
| | | | | | | | | | | | | It may include a suffix containing the application name and is also what's set on the XDG Toplevel, i.e. what the rest of the environment (task switcher, etc) sees. This stores the title in QWaylandWindow and adds a getter to retrieve it. Pick-to: 6.7 Change-Id: I84f41c68b16b680cdbb5cf656c7078d1e41767d4 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* QWaylandScreen: Implement subpixelAntialiasingTypeHintKai Uwe Broulik2024-01-062-2/+30
| | | | | | | | | It isn't really used anywhere yet, since on Unix QFontconfigDatabase doesn't use the screen's information. Pick-to: 6.7 6.6 6.5 Change-Id: Icab81b2bf8df1a23223a74f2d4aee94601e0bea3 Reviewed-by: David Edmundson <davidedmundson@kde.org>
* QWaylandShmBackingStore: Preserve buffer contents between framesKai Uwe Broulik2024-01-062-3/+49
| | | | | | | | | | | Doing a memcpy is quite expensive, particularly when only a small region of the buffer (such as a blinking cursor) actually changed. Instead, keep track of the damaged region and paint only what actually changed into the buffer to be used. Change-Id: Ibd81bbfe20d0750ddb751f41722a316387225ba6 Reviewed-by: David Edmundson <davidedmundson@kde.org>