18 Commits

Author SHA1 Message Date
Laurent Montel
03fbd3318b Add override 2019-01-03 21:42:30 +01:00
Laurent Montel
70a274ad3a Use override 2018-05-23 08:05:40 +02:00
David Edmundson
505295ce4b Revert "windowthumbnail: Use mipmap texture filtering"
This reverts commit 612494e2b2e9265d33ce148332d5f490b024a3bd.

This caused a huge regression for some drivers breaking functionality
completely. Better to revert for now, and try again when we have it
fully working.

See 393241
2018-05-03 23:15:53 +01:00
Fredrik Höglund
612494e2b2 windowthumbnail: Use mipmap texture filtering
Blit the contents of the TFP texture to a separate mipmap texture,
and (re)generate the mipmaps on each damage event.

This commit also fixes ARGB thumbnails being rendered as opaque.

Note that this commit only modifies the GLX path.

BUG: 390457
2018-03-27 16:42:18 +02:00
Fredrik Höglund
46121d5848 windowthumbnail: Fix the GLXFBConfig selection code
Check that the sizes of the color channels in the fbconfig match those
in the window visual.

This fixes a 2-10-10-10 fbconfig being choosen for the ARGB32 visual.

Differential Revision: https://phabricator.kde.org/D10173
Signed-off-by: Fredrik Höglund <fredrik@kde.org>
Acked-by: David Edmundson <kde@davidedmundson.co.uk>
2018-01-31 14:56:54 +01:00
Montel Laurent
7f0c023d3f Use nullptr + add explicit 2017-12-13 07:36:22 +01:00
David Edmundson
8e517b1578 WindowThumbnail: Do GL calls in the correct thread
WindowThumbnail did some open GL operations, discarding old textures, in
the GUI thread. Whislt it's not going to cause a threading issue (as
updatePaintNode always ran when the main thread was blocked) we're not
meant to mix threads with openGL contexts.

It also seems to have a GL leak on nvidia, which was previously masked
by the double delete fixed in
https://git.reviewboard.kde.org/r/126131/diff/2/
It seems only one worked, and in the applied version we went with the
wrong one.

This patch makes use of QQuickItem::releaseResources to delete the GL
textures on window change and destructor; it's then removed from
stopRedirecting so that start/stop redirecting handles xcb on the GUI
thread and updatePaintNode/discardPixmap is the GL stuff on the render
thread.

See http://doc.qt.io/qt-5/qquickitem.html#graphics-resource-handling

REVIEW: 128763
BUG: 368066
2016-09-03 10:33:44 +02:00
Allen Winter
f1844014dd declarativeimports/core/windowthumbnail.h - fix -Wreorder warning 2016-05-01 16:02:46 -04:00
Kai Uwe Broulik
9b48e3d010 [Window Thumbnails] Don't crash if Composite is disabled
We were checking for Composite at compile-time but not at runtime causing a crash
when Composite has explicitly been disable in which case Damage might still be availab.e

REVIEW: 126296
2015-12-13 20:25:20 +01:00
Martin Gräßlin
fae8384845 [declarativeimports/core] Specify HAVE_XCB_COMPOSITE in config-x11.h 2015-11-09 11:11:06 +01:00
Kevin Funk
7e302a5236 Use Q_DECL_OVERRIDE where possible
REVIEW: 122542
2015-02-13 13:31:58 +01:00
Kai Uwe Broulik
ce1ba8a687 Add thumbnailAvailable property to PlasmaCore.WindowThumbnail
This property tells us whether a thumbnail is actually being rendered or it has
fallen back to the window icon

REVIEW: 120946
BUG: 336524
2014-11-03 10:11:32 +01:00
Nicolás Alvarez
0807dda74f Add missing cstdint include.
Needed for uint32_t.
2014-08-30 14:45:21 -03:00
Kai Uwe Broulik
347e073df3 Add paintedWidth and paintedHeight properties to WindowThumbnail
REVIEW: 118886
2014-06-23 19:58:15 +02:00
Martin Gräßlin
9653fad2f0 [declarative/core] Use proper GLXFBConfig for glxpixmap
We need to use a GLXFBConfig which matches the depth of the window
pixmap's depth. So far it used the GLXFBConfig of the GL context.
This worked fine for RGBA windows, but failed for RGB windows on e.g.
some NVIDIA drivers.

After this change the FBConfig of the context is completely ignored,
instead it tries to find a good FBConfig for a given depth.

Whenever a FBConfig for a given depth is found it's inserted in a
cache shared between all WindowThumbnails so that we don't have the
X roundtrips all the time.

BUG: 334241
REVIEW: 118110
2014-05-16 07:49:42 +02:00
Kevin Ottens
72ba7b4146 Apply the astyle-kdelibs script 2014-04-26 01:48:37 +02:00
Martin Gräßlin
d2452e2917 EGL/X11 backend for WindowThumbnail QQuickItem
Introduces a new optional dependency to EGL. If EGL is found the
WindowThumbnail gets compiled with EGL support. The EGL support is
unlike Qt's XCB plugin not mutual exclusive to the GLX backend, thus
it's possible to compile with EGL and GLX at the same time.
By that this implementation is prepared for the case that Qt supports
EGL or GLX through runtime selection.

In practice EGL support is only useful if Qt is compiled with GLESv2.
In that case the corebindingsplugin gets linked against Qt5::Gui_GLESv2
to get the dependency to GLES.

The implementation makes use of the EGL_KHR_image extension
(or EGL_KHR_image_base and EGL_KHR_Image_pixmap) and
the GL_OES_EGL_image extension to bind the X pixmap to an EGLImageKHR.

REVIEW: 116627
2014-03-17 09:09:23 +01:00
Martin Gräßlin
91d306d2e8 QQuick item for live updating window thumbnails
New qquick item in PlasmaCore to render a live updating window
thumbnail. The implementation uses XCB to redirect the specified
window using the composite extension. This means a running compositor
is not required. Through the damage extension the item tracks changes
to the window and triggers updates of the texture. Furthermore the
item tracks geometry changes of the window to recreate the window
pixmap.

If the pixmap of the window is valid, a texture is generated from it
using the glx texture from pixmap extension. For this a new optional
dependency for glx is added. On platform where glx is not available
(e.g. Windows, Linux with OpenGL ES) this will not get compiled and
the window's icon is used instead as a fallback.

REVIEW: 112142
2013-09-11 09:45:47 +02:00