| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
+ 7d7ac7f0a4bd6a7956448ddb0ba44c12755dca2e Client: Send subsurface expose event when toplevel is configured
+ 18ab3edaf2a4cdd1e9df6e166cf51a69a9785ecd Client: Initialize mScale on creation instead of on show
+ b1564c87e3fd1271575122c6b932c5e9324f07a7 Client: Fix scroll direction with touchpads
- bd48b6b341482720652dd02866690f937e25619d Add changes file for Qt 5.15.1
+ 96cfbda63a249385eef02e7996098079569a13b8 Fix brcm-egl wayland integration
+ 6a7c6eedbaf00b1f2102247810987b6d9246f34e Bump version
+ 9c8e59a7a6b0cfaa7caf899bdb577270c83b9a12 Build with -no-opengl
+ 1344ca6b5a8fbc1b28727feea6d856af8bf3bc93 fix libdrm related configure test failure
+ 65922085c3ba302b9049e62c1e132236b726adf9 Implement MockRegion
+ 407c240bf52f0c5d23cd87be48ced51a58562f19 Scanner: Generate code that cleans up m_resource
+ 45a3a3208a4243d9b0a6500e3dcd0fcfed2dfcea Scanner: Generate code that destroys inert resources
+ 707b23cf11586304912b3ea87099cf46a0aac912 Implement CoreProtocol::compositor_create_region
+ 2a77384a4f2485364cefeb825eea63daf13dd3b1 Fix race condition on frame callback
+ 51f0466e01df52eb07e589006744f405dfd40bdd Client: Advertise all supported mime types
+ f637fcdbbabeb060cdd223d8bc6662d5cace6b90 Address WlCompositor::compositor_create_region in tests
+ cc779e0ed47ec4759dc3c23953dd02cfacc6885c Issue set_opaque_region on opaque surfaces
+ 8824452f5b259ab1f295f1237789b2693ae8f232 Add changes file for Qt 5.12.10
Pick-to: dev 5.15
Change-Id: I9158c0bb827a54421b205abc6c637e6cdfc5cebd
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
|
|
|
|
|
|
|
|
| |
Fixes: QTBUG-87959
Change-Id: I1c5cd15e0dd6f81e87690e54cd4e526ce668a8aa
Reviewed-by: Tino Pyssysalo <tino.pyssysalo@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
(cherry picked from commit 7cadb86e5b151459bd06f46a90f28bd157078df7)
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use same header as for the rest of the module.
This was forgotten in commit bb1b46a4862e0a5
Change-Id: I7e61b43f0387a9affa9488566cb5aaca51b3bc0b
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
(cherry picked from commit 2bf41c736719654d0d6b15eec280a4667ebc28c5)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit f9d5fc2e94c2116130456f4b4f8bd2f3a0c88d20)
|
|
|
|
|
|
|
| |
Change-Id: I191975d084a55a4b7b53975e03b03925ed66d1db
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit 971ed94adbf538af5a09e4136921fc0e8cee9815)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The application will tell Qt whether the background is transparent
through either Qt::WA_TranslucentBackground or QQuickWindow::setColor.
These will set a QSurfaceFormat.
This change checks the QSurfaceFormat and issues the opacity information
so we can properly implement culling optimizations in the compositor.
Change-Id: I4f7562467449eac7931f3011d4b835934212adad
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 0db685834f8377e41b147d3367b8ec514841eff5)
|
|
|
|
|
|
|
|
|
| |
It was not properly marked as override and would not get called.
Change-Id: Ib80c916c65534ddff918ac06bbe52d88e19d9ff4
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit f814591155d80489973ae0da05fddeadc8cc27aa)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Qt has some internal mime types that can be translated to known types.
For example the mime type application/x-qt-image Qt can convert to any
supported image format.
The data_source_send method already converts (via
QWaylandMimeHelper::getByteArray)
However we previously only advertised the list of mimetypes explicitly
set by the application.
This brings us in line with the X11 QPA.
Fixes: QTBUG-87657
Change-Id: Ia09c0cbc1f0997552bd253e79d6715ebcafee0a1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit 6c534941a3015ba529dd4a5c153cffa0e94af11a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the frame listener callback is moved to a different queue while the
frame event is being processed, the event will not get delivered. (It
will not even show up in the WAYLAND_DEBUG output.) This will cause
waitForFrameSync() to hang until it times out.
To avoid this, perform the move just after the callback has been
created.
This exposed an issue with single-threaded rendering, where a new
update would be started from inside the callback, resetting
mWaitingForFrameCallback before waitForFrameSync could react to it.
This caused all rendering to freeze. To avoid that problem, do not
deliver update requests directly from the frame callback.
With the callback always on a separate queue, we then have to make
sure that queue is also dispatched during the main event loop,
otherwise the events may not be processed. To do this, we need a
mutex lock. But it turns out that we no longer need a global mutex
lock as long as the frame events are being dispatched on their own
queues, but can manage with per-window locks instead.
A final thing needed is to make sure the frame callback does not
request additional updates while we are already waiting for the main
thread to process the last one. This is to avoid flooding the main
event loop with events, when the main thread is processing them at
a slower pace than the frame rate.
Fixes: QTBUG-83263
Done-with: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Change-Id: I0db9da64fc8ced147177391c2a7999c4cc7a0d58
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
(cherry picked from commit 98aea22d839000a377d0fc646133f76e08b44f6e)
|
|
|
|
|
|
|
|
|
| |
Otherwise tests using it crash.
Change-Id: Id2ce98ed7c975144728be7566e20b6ea08fa9150
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 519ca669b08f0bce45d645d271bd1236bdb3970a)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In rare cases, the compositor may need to destroy its private data
associated with a wl_resource object. For example, one such case may
arise when an output has been disconnected and the corresponding
QWaylandXdgOutputV1 object needs to be destroyed. Another case is
where some resource has become inert.
If the QWaylandXdgOutputV1 object has been destroyed and there are
still wl_resource objects associated with it, the compositor will
crash due to a segfault when somebody calls xdg_output::destroy().
With this change, qtwaylandscanner will generate code that handles
destruction of inert resources behind the scenes.
Change-Id: I0532f783ae53cc7861e0f08433dc2407aa9c7953
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 4a4c35a856cf64f0e165cc3cfaeb1a3bbbf471f6)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The object that owns the resource will not be necessarily destroyed in
the destroy_resource() function. One such case may arise if the
compositor wants to animate the disappearing of a window, in that case
we want to keep client buffer data around even after the wl_buffer
resource has been destroyed.
If the compositor accidentally accesses the destroyed resource, it'll
most likely crash because of SIGSEGV. Speaking from my experience, such
crashes are far from being fun to debug.
With this change, qtwaylandscanner will generate code that cleans up
m_resource when the associated resource has been destroyed. It can be
useful for the purpose of preventing accessing already destroyed data.
Note that we want m_resource to be valid when the destroy_resource()
func is called because the compositor may need it in order to properly
perform cleanup, for example send a wl_pointer::leave() event, etc.
Change-Id: I82dab3b7eae8c282fdbad689af49622350b6c867
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit c594b7622f52dea291d33757b74971b3902b5d37)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
| |
If we don't mock regions, we get a crash every time that a client calls
createRegion.
So far regions are untested.
Change-Id: I83f20b879ece5cefcf2039d369034516df6a6a62
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 2cb631894332eff4604cbb031d77a4fedd461148)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes:
Project ERROR: Test config.qtwayland_client.tests.dmabuf-server-buffer tries to use undeclared library 'drm'
Project ERROR: Test config.qtwayland_compositor.tests.dmabuf-server-buffer tries to use undeclared library 'drm'
Project ERROR: Test config.qtwayland_compositor.tests.dmabuf-client-buffer tries to use undeclared library 'drm'
Task-number: QTBUG-83303
Change-Id: I3970f4e3855fcfa760493631a14adb6a16950aa9
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit ca63fe81df8ac910f43539719566ed6745700c2b)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix build when Qt is built with -no-opengl:
1. Certain includes have to be conditional on QT_CONFIG(opengl),
just like the code that uses them.
2. After 585f20dce37c398d8b2e6367008e3329dac79e24, the
ClientBufferIntegration is used even with a software-raster
compositor, so we need to include this class in the build.
3. The wayland-scanner-generated header files are unconditionally
installed through sync.profile and there is no way to exclude it
there based on Qt configuration, which causes errors when doing
make install. The easy fix for this is to generate the headers
even though they will not be used anywhere.
Fixes: QTBUG-86291
Change-Id: I671b6345cbc7138309e20fe62e09513f191cd3fe
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
(cherry picked from commit cab51443ed9246c14255dcb295764f4d15cffaa1)
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
|
|
|
| |
Change-Id: Id6c96ceb30db5c18b67f9255b5a6e2dbce4b3857
|
|
|
|
|
|
|
|
|
|
|
| |
This amends d58008c431 which changed the number of arguments QWindow
takes. The brcm-egl integration was not updated for these changes.
Fixes: QTBUG-86109
Change-Id: I14ad2e5d6a62f5f285d01a4fcd47a34bf9495cf9
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
(cherry picked from commit 7d1debe004cbf3e0a1561dd234fbedab9b2ab3f9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
+ 4cf1769a6b5820f0fb3131ce25af240ee3ff70ae Fix warning about deprecated non-namespaced "hex"
+ 1a5b7938c1384381a482448cf079bc682395b54b Blacklist animatedCursor in SLES
+ e18cfb5a129afb3e5e2f429436277ae4dc565e6e Client: Don't send fake SurfaceCreated/Destroyed events
+ b9c33b13a0cda7c23b4cb129125cef09db5e0c82 Fix warning that the QQmlListProperty constructor is deprecated
+ 7a74426e10d209f716114c14d658cc6086f9023a Suppress warning about sizeChanged() being deprecated
+ 5cba07a66225d6ecedb1d9e952d272e236f30aa8 Use WaylandCursorItem over clients, window system cursor otherwise
+ f5a84adfe9d7a57de31813167acea55adb7f309d brcm-egl: needs wayland-scanner-client-wayland-protocol-include
+ eaeb21284ab7a3714c735ee8d7c348aa3bc3a07a Add means for forcing non-blocking buffer swap support
+ ef0eeff3783ff81ed4146a58597beaa9199ea323 Add spaces around '+'
+ 9380c33a718d475007d3f2955349d336267f274e Bump version
+ b7b0602d8b17aa7cf6de543a2e872c8edd6bcf18 Fix qt_attribution.json files by replacing newlines with \n escapes
Change-Id: Ie86901c27f5d4caf010ada1c4340bcd949ad26de
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit c25f8b8fa4dc6d096382d34849b997ab7fe69c5c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Wayland axis events and QWheelEvents are opposite way rounds. This was
handled for the case of discrete events, but not continuous events.
This leads to touchpads moving the wrong way round compared to other
clients.
Change-Id: Iee4f5c620940a491949d4039cb3ac70649d83a2b
Task-number: QTBUG-85767
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
(cherry picked from commit e20e1d506d627a53d9d7bf7794b93bf9e8b9bedb)
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At the time of creating a QPlatformWindow we will have a QScreen
assigned. It may not be the right one until we get a screen_entered
event, pointing instead to the primary screen.
When we get the screen_entered event we get the correct scale and call
handleWindowScreenChanged. However if it's the same screen as before
QWindowPrivate::setTopLevelScreen will no-op because from it's POV the
screen hasn't changed at all.
This leaves the window having the scale change without any notification.
This is notable with QQuickWidget which creates an FBO very early on
before the window is shown. This would then use the devicePixelRatio of
1 as it is currently unset and then not get any change notification.
Change-Id: Ia7e4072e0bd900abc558bf8930fef4e1e7d2c553
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
(cherry picked from commit 5ecf5215737ba3343a10310c0dff08763af737bc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If a subsurface is set to be visible on the cilent side before the top
level is configured it will do not create an exposeEvent and map a
buffer as we fail the check in isExposed() where we check the parent.
This is correct behavior.
However, when the toplevel receives an applyConfigure from the shell
client we need subsurfaces to update accordingly.
This fixes a race where subsurfaces are not shown with slow compositors.
Change-Id: Icd156e7655d5b25535acc4d2fe77c31e19ebfa32
Fixes: QTBUG-86176
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit e20e1d506d627a53d9d7bf7794b93bf9e8b9bedb)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In their current state theses files contains invalid json. While they
are parsed successfully by qtattributionsscanner, they cannot be loaded
by libraries such as Python's json module.
This patch fixes this.
The output generated by qtattributionsscanner stays the same.
Change-Id: I661d9b6f8a956a33b301fe58add5910d6de293f1
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 396444d657e44cc9fae03b1dc053d521501cda00)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
| |
Change-Id: I8c19c1c44470adeef79b6440a56b8fdd80b518ee
|
|
|
|
|
|
|
|
|
|
| |
Like most other Qt coding styles, the necessary spaces should be added
to the sides of the '+'
Change-Id: I6fdbc6b24861e7a75633354a0ded636b1a38cd21
Reviewed-by: Liang Qi <liang.qi@qt.io>
(cherry picked from commit 0c72854929aacc82330365d4be00a034197abfc5)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In case of a driver that does not properly indicate its capability of
supporting non-blocking eglSwapBuffers() call, the need arises to be
able to manually force the resolution of that check.
New environment variable QT_WAYLAND_FORCE_NONBLOCKING_SWAP_SUPPORT
added. If it is defined to 0 (i.e. false), the non-blocking swap
support is forced to behave as if the driver had been detected not to
be supported. Equally setting it to 1 causes the non-blocking swap
support resolution to remain true (default) even if driver reports it
does not support it.
[ChangeLog][Client] Added support for environment variable
QT_WAYLAND_FORCE_NONBLOCKING_SWAP_SUPPORT, which can be used to force
the resolution of detecting if EGL driver supports non-blocking
eglSwapBuffers call. If you encounter application freezing while
waiting indefinitely for a buffer swap, then try setting variable to 0.
Task-number: QTBUG-84226
Change-Id: I92dc505d12daf4d78dc18e4f85f3a55ecdf109f3
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit 765ad803579c09ea5e827c60efbc89c5ac4fcd42)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes:
wayland-brcm-client-protocol.h: In function ‘wl_buffer* qt_brcm_create_buffer(qt_brcm*, int32_t, int32_t, wl_array*)’:
wayland-brcm-client-protocol.h:115:29: error: ‘wl_buffer_interface’ was not declared in this scope; did you mean ‘qt_brcm_interface’?
115 | QT_BRCM_CREATE_BUFFER, &wl_buffer_interface, NULL, width, height, data);
| ^~~~~~~~~~~~~~~~~~~
| qt_brcm_interface
Task-number: QTBUG-83305
Change-Id: I16789c5df73e8f17ad98d91cadf2478d39dcba9e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit c65e013527e144028d2d7c03fe1b503fb21aa89d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The pre-existing binding
visible: cursorItem.surface != null
implied that the surface would often be null; but in practice it was
only null at startup. After entering a client window, whatever cursor
it set would be retained when the mouse left the window. With client-
side decorations, this could go unnoticed, because often the mouse
would go across the titlebar or edge decorations on exit, and those
would set the cursor back to a standard arrow. But in compositors
that implement a lot of Qt Quick content of their own (server-side
decorations and/or built-in features such as menus, docks etc.),
that content cannot change the cursor that the WaylandCursorItem shows.
Instead, we need the underlying window system cursor to be shown
whenever the mouse is not hovering over a client window.
As a drive-by, remove the
inputEventsEnabled: false
declarations from the examples, because WaylandCursorItem already
does that internally.
The pure-qml example is not fixed; it shows the window system cursor
only when the compositor is a nested compositor. When it's not nested,
you just have to move the mouse slowly enough to avoid "jumping over"
the window edges. Or run clients that don't change the cursor.
Fixes: QTBUG-84391
Change-Id: I3e677f3e4314d01e5d27d8eea49b4cb315c29d03
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
(cherry picked from commit 0b253e8c595b596f44959d21124887545ab0b021)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
|
|
|
|
|
|
| |
Change-Id: I99ab0f318b1c43b89888fffd160b5ed8661a7a56
(adapted from commit 45ae0527aed387ddc6c6e2af400006ae0a8ea2ec)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the one that isn't deprecated.
qwltexturesharingextension_p.h:145:78: warning: 'QQmlListProperty' is deprecated: Use constructor taking QList pointer,
and gain improved performance [-Wdeprecated-declarations]
Change-Id: I99ab0f318b1c43b89888fffd160b5b4521f09ca9
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit bbf7fb0cf9f6553d17399d91560bdc559799c35b)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QPlatformSurface relates to the platform window, not the wl_surface.
The events are already emitted by QPlatformWindow on create/destroy.
To preserve compatibility for a previous KDE version it was faked to
emit the events when the wl_surface is created/hidden to keep behavior.
This is no longer necessary, and it has caused multiple errors, the latest
being a crash when switching between sub-menus with the Sway compositor.
[ChangeLog][QPA plugin] QWaylandWindow no longer sends fake SurfaceCreated/Destroyed events.
Use expose events to be notified when a Wayland surface appears.
Task-number: QTBUG-76324
Fixes: QTBUG-81952
Change-Id: I2f003bc9da85f032a0053677fd281152099fc9eb
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit cd21404f99b486ff62225699e1a4bdc0d5b3d5c1)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
|\
| |
| |
| | |
Change-Id: I7341fbfbe7c3eeae44a7fea0bf534fda1180ac51
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
To avoid rendering when windows are minimized, we try to detect
this case by checking if 100 ms passes after an update before
any frame callback arrives. Wayland expects to drive the rendering
through frame callbacks, while Qt expects to be informed when a
window is no longer visible and will run a tight, vsynced render loop
until it gets the appropriate event. This mismatch causes issues,
and the timeout is an attempt to avoid actively rendering to a hidden
surface by detecting the missing callbacks.
It causes problems on embedded, though, when a device is so
busy that the timeout happens even when the window is visible.
So we introduce a way to configure the timeout. Either increase
its duration if you can guarantee a certain minimum time between
events even with high load, or set it to 0 to disable it completely.
(at the expense of drawing to invisible windows).
Note that this is required for fixing a critical memory leak that
happens when using Wayland on embedded.
This was mistakenly pushed to 5.12 branch, so it will not be
automatically merged upstream. Therefore we have to
cherry-pick it.
[ChangeLog][Client] Added support for QT_WAYLAND_FRAME_CALLBACK_TIMEOUT
environment variable, which can be used to disable or change the
internal frame callback timeout. If you see windows that stop rendering
or minimize on heavy load, then try setting the variable to 0.
Task-number: QTBUG-82914
Reviewed-by: David Edmundson <davidedmundson@kde.org>
(cherry picked from commit 0a0e0eb8dca699858435dec5194b0b8b6ebd3cf8)
Change-Id: I2aeeecb0fab8f7be9b838e477c88eae22b322d75
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use two timers to create timeout trigger for framecallback.
Removes multiple timers approach that is subject to race conditions.
This was mistakenly pushed to 5.12 branch which will not be
automatically merged upstream, so it has to be cherry-picked.
Fixes: QTBUG-82914
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
(cherry picked from commit d18c29931b0bc889fff66bdbde89133544ba0529)
Change-Id: I258c0c08f0ac5803192fc0024e40ba72e72c37a8
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
|
| |
| |
| |
| |
| |
| | |
Change-Id: Iaff95aaf0345067cf8d6dd6592d712062026f4cd
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Semantically we want things in this order as wl_egl_window_create takes
a reference to the wl_surface. Teardown typically is the opposite of
construction.
This brings us in line with GTK which also tears down in this order.
This fixes a repeatable crash when using Nvidia's EGLStreams and closing
a window.
Change-Id: I356dfbba9a7315717c8ecdc7023ca7b047622697
Reviewed-by: Frederik Gladhorn <gladhorn@kde.org>
Reviewed-by: Johan Helsing <johanhelsing@gmail.com>
|
| |\
| | |
| | |
| | | |
Change-Id: I09245b4d620fdf75cbee512d6c95aab1b1d54f99
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The freetype backend can now do selective gamma-correcting, but need
to have a useful gamma-value.
Fixes: QTBUG-83636
Change-Id: I89e99d0a63b75d15d70763ee0c2459caa761beee
Reviewed-by: David Edmundson <davidedmundson@kde.org>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-78317
Change-Id: Ic2fdbf98dc744c659091f46b33de8e8a34ed8cb1
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
|
| |/
|/|
| |
| |
| |
| |
| |
| | |
waylandeglstreamintegration.cpp:248:121: warning: 'hex' is deprecated: Use Qt::hex [-Wdeprecated-declarations]
Change-Id: I99ab0f318b1c43b89888fffd160b5b6abebe48f2
(effective cherry-pick of 671f73bb1f26cf1d8daa1d33f01fc15fd1e9f62e)
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
| |
| |
| |
| |
| |
| | |
Task-number: QTBUG-83653
Change-Id: I604562fdc96c250eabba08d7fa8a9ec8f21cbbd1
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
qwaylandcursor.cpp:254:21: warning: redundant move in return statement [-Wredundant-move]
Change-Id: I9709abb1c3734e10a7defffd1607e1b3ed279d32
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|\ \
| | |
| | |
| | | |
Change-Id: I82c07ab72138774a0809bf60f0f3251d32923847
|
| |\ \
| | | |
| | | |
| | | | |
Change-Id: Id1726d5c5392a6b41ff052f1c82ece2a346d24fa
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
integrations fail"
This reverts commit 137966a6293b50f6b248d130a2e36e67df49335e.
Reason for revert: QTBUG-82948
Conflicts:
src/compositor/compositor_api/qwaylandcompositor.cpp
src/hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp
Change-Id: I77e3265c336fbcdf47eb1aa5dc07f31ec41006b5
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
+ 67d56a5cba4fdac8205a84bc4e3ca74d5efbb64c Avoid conflicting declaration for egl typedefs
+ e4e03650dbbc1f98ba90d15364d9c951a7e7506b Bump version
Change-Id: I89f3c1477b1d2cea950d2e879d6966d7f337f0bb
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The int-overload will in some cases truncate the descriptor.
So it's being replaced. On Linux it won't truncate, so the slot can stay
as int, but we still update which signal to connect to.
Task-number: QTBUG-70441
Change-Id: I516a453c381e8d29464febabfd69c788e58db5fe
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
|
| |_|/
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
A loop functions just as well is more readable and uses less stack
memory.
Change-Id: I6f6c6b7b8047c42080fb8b9e0bc3eae96f8872ab
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Johan Helsing <johan.helsing@qt.io>
(cherry picked from commit 80bf946e78b5b5b4276668249eb1fab769259426)
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
rect() has been deprecated since 5.6.
Change-Id: I7f05ead7d396bb3be222161241fd90684544dd94
Reviewed-by: David Edmundson <davidedmundson@kde.org>
|
|\ \ \
| |/ /
| | |
| | | |
Change-Id: Ia3e6dc7da90203e9c23cdbe877a7f9d6c68389d3
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes:
main.cpp:83:33: error: ‘GL_RGBA8’ was not declared in this scope; did you mean ‘GL_RGBA4’?
83 | *glInternalFormat = GL_RGBA8;
| ^~~~~~~~
| GL_RGBA4
main.cpp:120:33: error: ‘GL_RGBA8’ was not declared in this scope; did you mean ‘GL_RGBA4’?
120 | *glInternalFormat = GL_RGBA8;
| ^~~~~~~~
| GL_RGBA4
Task-number: QTBUG-83304
Change-Id: I0515f3303b08c405d162986e280e9a7bd35e28f7
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
|
| |
| |
| |
| |
| |
| |
| | |
Amends 222455cd643c128
Change-Id: Ifec3dc5d8698229cc0c2f375eebd5a4ebfd62d35
Reviewed-by: Johan Helsing <johanhelsing@gmail.com>
|