Commit Graph

12506 Commits (0cc86656c9950e516cfdd3824d109b08e7ef726a)

Author SHA1 Message Date
l10n daemon script e75adfa9f5 SVN_SILENT made messages (.desktop file) 2014-09-04 08:36:54 +00:00
Martin Gräßlin d2e4b4300e [autotests/wayland_client] Make TestWaylandShell more robust 2014-09-03 21:31:10 +02:00
Martin Gräßlin 7b2d7d9c54 [autotests/wayland_client] Improve TestWaylandShell
Uses our own Wayland server instead of starting Weston and adds
tests for the interface removed signals.
2014-09-03 21:13:25 +02:00
Martin Gräßlin 7748b64ba0 [kwin_wayland] Add assert in Display::setRunning
Making the impossible condition an assert instead of a return.
2014-09-03 20:04:31 +02:00
Martin Gräßlin a69228ed0d [kwin_wayland] Fix Display::outputs
Should return a const-ref not a const copy.
2014-09-03 20:03:13 +02:00
Martin Gräßlin 515903cc33 [kwin_wayland] Test that Seat gets destroyed when Display terminates 2014-09-03 20:02:42 +02:00
Martin Gräßlin 7e27f2fc0c [kwin_wayland] Test adding/removing Outputs in TestWaylandServerDisplay 2014-09-03 20:01:54 +02:00
Fredrik Höglund c061cc5fd9 Match the fbconfig visual depth to the window
Not all RGBA 8888 fbconfigs in the NVIDIA driver have an associated
X visual with a 32 bit depth.

This fixes a regression from 88f8078073.

Tested-by: Eike Hein <hein@kde.org>
2014-09-03 19:52:56 +02:00
Martin Gräßlin c00c67bf29 [scripting] Drop qmlRegisterType for QQuickWindow
Not needed as one can just do:
import QtQuick.Window;

This fixes a build problem with Qt 5.4.

BUG: 338277
2014-09-03 09:47:21 +02:00
l10n daemon script 9af9814859 SVN_SILENT made messages (.desktop file) 2014-09-02 11:19:59 +00:00
l10n daemon script 493e9b3238 SVN_SILENT made messages (.desktop file) 2014-09-02 10:43:26 +00:00
Martin Gräßlin dbad3d12e6 [kwin_wayland] define WL_SEAT_NAME_SINCE_VERSION if not defined
Apparently not yet in wayland server library on build.kde.org.
2014-09-02 11:11:26 +02:00
Martin Gräßlin 5852a4c069 [kwin_wayland] Add SeatInterface to server module
So far the Seat interface is provided together with pointer and
keyboard. As always touch is not yet implemented. The pointer interface
is still lacking the set cursor callback. Keyboard on the other hand is
complete.

Both Keyboard and Pointer have the concept of a focused surface and only
to the bound interface belonging to the same client as the focused
surface events are sent.

The change comes with a set of new auto tests also verifying the client
side which wasn't possible before as we couldn't fake events.
2014-09-02 10:55:33 +02:00
Martin Gräßlin 106b540d91 [kwin_wayland] Add Shell and ShellSurface to server module
ShellSurfaceInterface is not yet completely implemented. Several parts
are still TODO, e.g. move/resize is missing, setting to maximized is
missing and also flags for fullscreen are missing.

The surface test is extended as far as possible.
2014-09-02 10:55:33 +02:00
Martin Gräßlin 35c4786820 [kwin_wayland] Add support for shm buffers in server module
The Display provides a method to create the shm pool and a
BufferInterface class is added to the server module. It is created
from the SurfaceInterface when a buffer gets attached to the surface.
The BufferInterface can be referenced and once its unreferenced it
sends a buffer release to the client and destroys itself.

For the case that the buffer is a shm buffer the BufferInterface
provides a convenience method to turn it into a QImage.

The auto test for Surface is extended by attaching buffers to the
surface and verifying that the content is correct.
2014-09-02 09:52:16 +02:00
Martin Gräßlin cb7cabe98e [kwin_wayland] Add CompositorInterface and SurfaceInterface
As far as it's currently possible to implement. CompositorInterface is
able to create a surface and emits the created SurfaceInterface. It
does not yet support regions.

The SurfaceInterface is already more complete. It keeps track of the
double buffered states and emits signals when one of the values are
changed after the committing. It supports frame callbacks and has a
hook to mark the frame as rendered.

What's still missing are the regions (as it's not implemented in
CompositorInterface) and attaching the buffer as we do not yet support
creating shm buffers and pools.

The client side test is changed to use our own server and extended to
test damage and frame callback. The test needs to be extended for scale
and transform, but that is still missing in the client side
implementation.
2014-09-02 09:52:16 +02:00
Martin Gräßlin 1e230fda77 [kwin_wayland] Initial addition of the WaylandServer module
So far this new module contains:
* Display
* OutputInterface

Display manages the server socket and server event loop. In general it's
the entry point to any part of the server.

OutputInterface is the abstraction for the wl_output interface on server
side. An OutputInterface is created through the Display.

The auto tests for ConnectionThread and Output are adjusted to use the
internal server instead of starting Weston. Especially the Output test
could be extended to test much more as we have absolute control over
the server now.
2014-09-02 09:52:16 +02:00
Martin Gräßlin 81eab11dbb [kwin_wayland] Fix enum arguments in Q_SIGNALS
Need to be fully specified and declared as a metatype.
2014-09-02 09:52:16 +02:00
Martin Gräßlin e11df5b4f5 [kwin_wayland] Keep the size in Surface
Technically the Surface itself does not have a size, it's the
ShellSurface or the size of the FullScreenShell's Output. But it
simplifies a lot if we keep track of the size in the Surface as that
way we can hide the fact which kind of Shell is used.

The user of the Surface must connect either the FullscreenShell's
Output or the ShellSurface to set the size on the Surface.
2014-09-02 09:52:16 +02:00
Martin Gräßlin 9bde3bf0ce [kwin_wayland] Hold the currently entered Surface in Pointer 2014-09-02 09:48:05 +02:00
Martin Gräßlin 94654a12dd [kwin_wayland] Track all created Wayland::Surface
Add static accessors to get all Surfaces and the Surface for a
wl_surface to Wayland::Surface.
2014-09-02 09:48:05 +02:00
Fredrik Höglund e1e6badb6a glx: Remove initDrawableConfigs()
The table that maps pixmap depths to FBConfigs is no longer used.
2014-09-01 17:45:58 +02:00
Fredrik Höglund 4f9ea5335d Remove SceneOpenGL::Texture::findTarget()
It is no longer used.
2014-09-01 17:45:58 +02:00
Fredrik Höglund 59212e3a79 Remove SceneOpenGL::Texture::load(..., int depth)
The scene always uses the version that takes an xcb_visualid_t.
2014-09-01 17:45:58 +02:00
Fredrik Höglund 88f8078073 glx: Use the X visual when choosing an FBConfig
This adds a SceneOpenGL::Texture::load(..., xcb_visualid_t) overload,
and uses it to bind window pixmaps to textures.

By taking the RGBA masks in the visual into account when choosing an
FBConfig for the GLXPixmap, we are able to disambiguate formats that
have the same depth, such as GL_RGB10_A2 and GL_RGBA8.
2014-09-01 17:45:58 +02:00
Fredrik Höglund ada5d02170 xrender: Remove findFormatForVisual()
Use XRenderUtils::findPictFormat() instead.
2014-09-01 17:45:58 +02:00
Fredrik Höglund 3a47b1c1c0 Add XRenderUtils::findPictFormat() and findPictFormatInfo()
These methods look up the render pictformat that correspond to an
X visual, and the format description respectively.
2014-09-01 17:45:58 +02:00
Fredrik Höglund cf62fe51dc Add a bitCount() util function
This function returns the number of bits set in an unsigned integer.
2014-09-01 17:45:58 +02:00
Fredrik Höglund fc56ac28fb Remove SceneOpenGL::Texture::update()
The default implementation is a no-op, and none of the current
backends reimplement it.
2014-09-01 17:45:57 +02:00
Fredrik Höglund 210df22b17 Remove SceneOpenGL::Texture::load(QPixmap)
Fold it into the constructor, since that's the only place
where it's called.
2014-09-01 17:45:57 +02:00
Fredrik Höglund 49c8827345 Remove SceneOpenGL::Texture::load(QImage)
It's never called.
2014-09-01 17:45:57 +02:00
Fredrik Höglund ff096e532f Remove the region parameter from Texture::load()
It's never used.
2014-09-01 17:45:57 +02:00
Fredrik Höglund 1c7938e43e Don't pass pixmap handles as const references
But do pass the region in SceneOpenGL::Texture::load() as a const
reference.

This patch also replaces the Xlib types with their xcb equivalents.
2014-09-01 17:45:57 +02:00
l10n daemon script 26baff06a4 SVN_SILENT made messages (.desktop file) 2014-09-01 09:18:50 +00:00
l10n daemon script baf37deacd SVN_SILENT made messages (.desktop file) 2014-09-01 08:42:05 +00:00
l10n daemon script 5114d9b5da SVN_SILENT made messages (.desktop file) 2014-08-31 08:41:36 +00:00
Bernd Steinhauser 9ec2272dc3 Fix target dependencies. 2014-08-29 12:49:04 +02:00
Thomas Lübking c8abd56a2f fix shortcut extrapolation
NativeText is translated (ie. matching
ctrl against eg. strg) and the shortcut
must be added to KGlobalAccel to feed
further extrapolations

BUG: 338579
REVIEW: 119949
2014-08-28 20:31:15 +02:00
Thomas Lübking 32dbb57618 block warps after warping for VD switch
until the event cycle finished - xcb_flush nor
even XSync around the cursor setting does not
help and the pushback operates on a false position,
purging the VD switch warp

BUG: 338593
REVIEW: 119960
2014-08-28 20:30:00 +02:00
l10n daemon script ed02a9fb96 SVN_SILENT made messages (.desktop file) 2014-08-28 08:49:28 +00:00
Martin Gräßlin 7d059c8b08 [autotests/wayland_client] Don't build TestWaylandFullscreenShell for Wayland < 1.5
The fullscreen shell is only provided with at least Weston 1.5.
It should be checked on runtime, but that's difficult as Weston doesn't
fail if it cannot find the shell.so. So we disable it based on the
assumption that if Wayland library is not 1.5 the Weston is also not 1.5.
2014-08-27 12:59:32 +02:00
Martin Gräßlin 42e2bbf387 [tests] Mark wayland-client-fullscreen-shell.c as generated
This should fix the build.
2014-08-27 09:19:36 +02:00
Martin Gräßlin e125cbc4e6 [tests] Add a waylandclienttest application
A small test application to use the Wayland Client classes. It opens
a fullscreen Shell surface and reacts to input events:
* q quits
* left click toggles the background color animation
* right click quits

REVIEW: 119883
2014-08-27 08:57:21 +02:00
Martin Gräßlin 6ddded0852 [kwin_wayland] Cleanup wayland_backend.[h|cpp]
Remove no longer needed includes, turn one time slot methods into
lambdas, etc.
2014-08-27 08:57:06 +02:00
Martin Gräßlin 46f2b252d8 [kwin_wayland] Create dedicated classes for Seat, Keyboard and Pointer
Split out from wayland_backend. So far no unit test as there is no proper
way to simulate input events.
2014-08-27 08:57:06 +02:00
Martin Gräßlin 0b0a48ca08 [kwin_wayland] Create a dedicated class for Compositor
Wraps the compositor interface.
2014-08-27 08:57:06 +02:00
Martin Gräßlin a7ea4e1a56 [kwin_wayland] Make ShmPool more like the other wrapper classes
Normal QObject ctor and the setup method to bind to the interface.
2014-08-27 08:57:06 +02:00
Martin Gräßlin 08ab2c424e [kwin_wayland] Split out Buffer and ShmPool into dedicated files
Moved from wayland_backend.[h|cpp] to buffer.[h|cpp] and
shm_pool.[h|cpp]. Buffer is slightly adjusted to have the ShmPool
passed in as a ctor argument and the ctor is private and friended with
ShmPool, so that it can only be constructed from ShmPool.
2014-08-27 08:57:06 +02:00
Martin Gräßlin ce8c4240f7 [kwin_wayland] Create a dedicated Surface class
A Surface class is split out which holds a wl_surface and supports
attaching a buffer, setting the damage and emitting a signal when the
frame callback got called.

It doesn't come with a unit test yet as it first needs the ShmPool
and Buffer properly split out to easily set it up.
2014-08-27 08:57:06 +02:00
Martin Gräßlin bd8ed3cd70 [kwin_wayland] Flush display connection before going to block
Integrate with QAbstractEventDispatcher::aboutToBlock and because of that
we can drop all direct calls to flush from the Scenes.
2014-08-27 08:57:06 +02:00