Merge remote-tracking branch 'origin/dev' into stable
Conflicts: src/compositor/wayland_wrapper/qwlsurface.cpp Change-Id: I3b6a4af41f272d3dc7fc920ba2542f2dd7978175
This commit is contained in:
commit
ab78e6599f
87
src/3rdparty/wayland/patches/0001-Add-a-EGL_DRM_BUFFER_FORMAT_A8_MESA-10.patch
vendored
Normal file
87
src/3rdparty/wayland/patches/0001-Add-a-EGL_DRM_BUFFER_FORMAT_A8_MESA-10.patch
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
From be72a2ae7d14e57c423ce0885b153abf56eefca4 Mon Sep 17 00:00:00 2001
|
||||
From: Jorgen Lind <jorgen.lind@digia.com>
|
||||
Date: Thu, 2 Jan 2014 12:28:54 +0100
|
||||
Subject: [PATCH] Add a EGL_DRM_BUFFER_FORMAT_A8_MESA
|
||||
|
||||
This is to allow us to share A8 DRM buffers between processes
|
||||
---
|
||||
include/EGL/eglext.h | 1 +
|
||||
include/GL/internal/dri_interface.h | 1 +
|
||||
src/egl/drivers/dri2/egl_dri2.c | 7 +++++++
|
||||
src/mesa/drivers/dri/common/dri_util.c | 4 ++++
|
||||
4 files changed, 13 insertions(+)
|
||||
|
||||
diff --git a/include/EGL/eglext.h b/include/EGL/eglext.h
|
||||
index 1d68178..6c4fb7e 100644
|
||||
--- a/include/EGL/eglext.h
|
||||
+++ b/include/EGL/eglext.h
|
||||
@@ -271,6 +271,7 @@ typedef EGLSurface (EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dp
|
||||
#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* CreateDRMImageMESA attribute */
|
||||
#define EGL_DRM_BUFFER_USE_MESA 0x31D1 /* CreateDRMImageMESA attribute */
|
||||
#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 /* EGL_IMAGE_FORMAT_MESA attribute value */
|
||||
+#define EGL_DRM_BUFFER_FORMAT_A8_MESA 0x31D5 /* EGL_IMAGE_FORMAT_MESA attribute value */
|
||||
#define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */
|
||||
#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4
|
||||
#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 /* EGL_DRM_BUFFER_USE_MESA bits */
|
||||
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
|
||||
index b012570..c0ba605 100644
|
||||
--- a/include/GL/internal/dri_interface.h
|
||||
+++ b/include/GL/internal/dri_interface.h
|
||||
@@ -1015,6 +1015,7 @@ struct __DRIdri2ExtensionRec {
|
||||
#define __DRI_IMAGE_FORMAT_XRGB2101010 0x1009
|
||||
#define __DRI_IMAGE_FORMAT_ARGB2101010 0x100a
|
||||
#define __DRI_IMAGE_FORMAT_SARGB8 0x100b
|
||||
+#define __DRI_IMAGE_FORMAT_A8 0x100c
|
||||
|
||||
#define __DRI_IMAGE_USE_SHARE 0x0001
|
||||
#define __DRI_IMAGE_USE_SCANOUT 0x0002
|
||||
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
|
||||
index a64f4e8..a8253e1 100644
|
||||
--- a/src/egl/drivers/dri2/egl_dri2.c
|
||||
+++ b/src/egl/drivers/dri2/egl_dri2.c
|
||||
@@ -1185,6 +1185,10 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx,
|
||||
format = __DRI_IMAGE_FORMAT_ARGB8888;
|
||||
pitch = attrs.DRMBufferStrideMESA;
|
||||
break;
|
||||
+ case EGL_DRM_BUFFER_FORMAT_A8_MESA:
|
||||
+ format = __DRI_IMAGE_FORMAT_A8;
|
||||
+ pitch = attrs.DRMBufferStrideMESA;
|
||||
+ break;
|
||||
default:
|
||||
_eglError(EGL_BAD_PARAMETER,
|
||||
"dri2_create_image_khr: unsupported pixmap depth");
|
||||
@@ -1719,6 +1723,9 @@ dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp,
|
||||
case EGL_DRM_BUFFER_FORMAT_ARGB32_MESA:
|
||||
format = __DRI_IMAGE_FORMAT_ARGB8888;
|
||||
break;
|
||||
+ case EGL_DRM_BUFFER_FORMAT_A8_MESA:
|
||||
+ format = __DRI_IMAGE_FORMAT_A8;
|
||||
+ break;
|
||||
default:
|
||||
_eglLog(_EGL_WARNING, "bad image format value 0x%04x",
|
||||
attrs.DRMBufferFormatMESA);
|
||||
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
|
||||
index 9134a94..5fb55a2 100644
|
||||
--- a/src/mesa/drivers/dri/common/dri_util.c
|
||||
+++ b/src/mesa/drivers/dri/common/dri_util.c
|
||||
@@ -831,6 +831,8 @@ driGLFormatToImageFormat(gl_format format)
|
||||
return __DRI_IMAGE_FORMAT_NONE;
|
||||
case MESA_FORMAT_SARGB8:
|
||||
return __DRI_IMAGE_FORMAT_SARGB8;
|
||||
+ case MESA_FORMAT_A8:
|
||||
+ return __DRI_IMAGE_FORMAT_A8;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
@@ -860,6 +862,8 @@ driImageFormatToGLFormat(uint32_t image_format)
|
||||
return MESA_FORMAT_GR88;
|
||||
case __DRI_IMAGE_FORMAT_SARGB8:
|
||||
return MESA_FORMAT_SARGB8;
|
||||
+ case __DRI_IMAGE_FORMAT_A8:
|
||||
+ return MESA_FORMAT_A8;
|
||||
case __DRI_IMAGE_FORMAT_NONE:
|
||||
return MESA_FORMAT_NONE;
|
||||
default:
|
||||
--
|
||||
1.8.5.2
|
||||
|
252
src/3rdparty/wayland/protocols/wayland.xml
vendored
252
src/3rdparty/wayland/protocols/wayland.xml
vendored
@ -38,7 +38,7 @@
|
||||
The sync request asks the server to emit the 'done' event
|
||||
on the returned wl_callback object. Since requests are
|
||||
handled in-order and events are delivered in-order, this can
|
||||
used as a barrier to ensure all previous requests and the
|
||||
be used as a barrier to ensure all previous requests and the
|
||||
resulting events have been handled.
|
||||
|
||||
The object returned by this request will be destroyed by the
|
||||
@ -173,7 +173,7 @@
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_compositor" version="2">
|
||||
<interface name="wl_compositor" version="3">
|
||||
<description summary="the compositor singleton">
|
||||
A compositor. This object is a singleton global. The
|
||||
compositor is in charge of combining the contents of multiple
|
||||
@ -274,10 +274,73 @@
|
||||
|
||||
<enum name="format">
|
||||
<description summary="pixel formats">
|
||||
This describes the memory layout of an individual pixel.
|
||||
This describes the memory layout of an individual pixel.
|
||||
|
||||
All renderers should support argb8888 and xrgb8888 but any other
|
||||
formats are optional and may not be supported by the particular
|
||||
renderer in use.
|
||||
</description>
|
||||
<entry name="argb8888" value="0" summary="32-bit ARGB format"/>
|
||||
<entry name="xrgb8888" value="1" summary="32-bit RGB format"/>
|
||||
<!-- The drm format codes match the #defines in drm_fourcc.h.
|
||||
The formats actually supported by the compositor will be
|
||||
reported by the format event. -->
|
||||
<entry name="c8" value="0x20203843"/>
|
||||
<entry name="rgb332" value="0x38424752"/>
|
||||
<entry name="bgr233" value="0x38524742"/>
|
||||
<entry name="xrgb4444" value="0x32315258"/>
|
||||
<entry name="xbgr4444" value="0x32314258"/>
|
||||
<entry name="rgbx4444" value="0x32315852"/>
|
||||
<entry name="bgrx4444" value="0x32315842"/>
|
||||
<entry name="argb4444" value="0x32315241"/>
|
||||
<entry name="abgr4444" value="0x32314241"/>
|
||||
<entry name="rgba4444" value="0x32314152"/>
|
||||
<entry name="bgra4444" value="0x32314142"/>
|
||||
<entry name="xrgb1555" value="0x35315258"/>
|
||||
<entry name="xbgr1555" value="0x35314258"/>
|
||||
<entry name="rgbx5551" value="0x35315852"/>
|
||||
<entry name="bgrx5551" value="0x35315842"/>
|
||||
<entry name="argb1555" value="0x35315241"/>
|
||||
<entry name="abgr1555" value="0x35314241"/>
|
||||
<entry name="rgba5551" value="0x35314152"/>
|
||||
<entry name="bgra5551" value="0x35314142"/>
|
||||
<entry name="rgb565" value="0x36314752"/>
|
||||
<entry name="bgr565" value="0x36314742"/>
|
||||
<entry name="rgb888" value="0x34324752"/>
|
||||
<entry name="bgr888" value="0x34324742"/>
|
||||
<entry name="xbgr8888" value="0x34324258"/>
|
||||
<entry name="rgbx8888" value="0x34325852"/>
|
||||
<entry name="bgrx8888" value="0x34325842"/>
|
||||
<entry name="abgr8888" value="0x34324241"/>
|
||||
<entry name="rgba8888" value="0x34324152"/>
|
||||
<entry name="bgra8888" value="0x34324142"/>
|
||||
<entry name="xrgb2101010" value="0x30335258"/>
|
||||
<entry name="xbgr2101010" value="0x30334258"/>
|
||||
<entry name="rgbx1010102" value="0x30335852"/>
|
||||
<entry name="bgrx1010102" value="0x30335842"/>
|
||||
<entry name="argb2101010" value="0x30335241"/>
|
||||
<entry name="abgr2101010" value="0x30334241"/>
|
||||
<entry name="rgba1010102" value="0x30334152"/>
|
||||
<entry name="bgra1010102" value="0x30334142"/>
|
||||
<entry name="yuyv" value="0x56595559"/>
|
||||
<entry name="yvyu" value="0x55595659"/>
|
||||
<entry name="uyvy" value="0x59565955"/>
|
||||
<entry name="vyuy" value="0x59555956"/>
|
||||
<entry name="ayuv" value="0x56555941"/>
|
||||
<entry name="nv12" value="0x3231564e"/>
|
||||
<entry name="nv21" value="0x3132564e"/>
|
||||
<entry name="nv16" value="0x3631564e"/>
|
||||
<entry name="nv61" value="0x3136564e"/>
|
||||
<entry name="yuv410" value="0x39565559"/>
|
||||
<entry name="yvu410" value="0x39555659"/>
|
||||
<entry name="yuv411" value="0x31315559"/>
|
||||
<entry name="yvu411" value="0x31315659"/>
|
||||
<entry name="yuv420" value="0x32315559"/>
|
||||
<entry name="yvu420" value="0x32315659"/>
|
||||
<entry name="yuv422" value="0x36315559"/>
|
||||
<entry name="yvu422" value="0x36315659"/>
|
||||
<entry name="yuv444" value="0x34325559"/>
|
||||
<entry name="yvu444" value="0x34325659"/>
|
||||
</enum>
|
||||
|
||||
<request name="create_pool">
|
||||
@ -521,7 +584,7 @@
|
||||
<description summary="initiate drag-and-drop session">
|
||||
This event is sent when an active drag-and-drop pointer enters
|
||||
a surface owned by the client. The position of the pointer at
|
||||
enter time is provided by the x an y arguments, in surface
|
||||
enter time is provided by the x and y arguments, in surface
|
||||
local coordinates.
|
||||
</description>
|
||||
|
||||
@ -544,7 +607,7 @@
|
||||
<description summary="drag-and-drop session motion">
|
||||
This event is sent when the drag-and-drop pointer moves within
|
||||
the currently focused surface. The new position of the pointer
|
||||
is provided by the x an y arguments, in surface local
|
||||
is provided by the x and y arguments, in surface local
|
||||
coordinates.
|
||||
</description>
|
||||
<arg name="time" type="uint" summary="timestamp with millisecond granularity"/>
|
||||
@ -577,7 +640,7 @@
|
||||
|
||||
<interface name="wl_data_device_manager" version="1">
|
||||
<description summary="data transfer interface">
|
||||
The wl_data_device_manager is a a singleton global object that
|
||||
The wl_data_device_manager is a singleton global object that
|
||||
provides access to inter-client data transfer mechanisms such as
|
||||
copy-and-paste and drag-and-drop. These mechanisms are tied to
|
||||
a wl_seat and this interface lets a client get a wl_data_device
|
||||
@ -709,7 +772,7 @@
|
||||
|
||||
The x and y arguments specify the locations of the upper left
|
||||
corner of the surface relative to the upper left corner of the
|
||||
parent surface.
|
||||
parent surface, in surface local coordinates.
|
||||
|
||||
The flags argument controls details of the transient behaviour.
|
||||
</description>
|
||||
@ -729,7 +792,7 @@
|
||||
<entry name="default" value="0" summary="no preference, apply default policy"/>
|
||||
<entry name="scale" value="1" summary="scale, preserve the surface's aspect ratio and center on output"/>
|
||||
<entry name="driver" value="2" summary="switch output mode to the smallest mode that can fit the surface, add black borders to compensate size mismatch"/>
|
||||
<entry name="fill" value="3" summary="no scaling, center on output and add black borders to compensate size mismatch"/>
|
||||
<entry name="fill" value="3" summary="no upscaling, center on output and add black borders to compensate size mismatch"/>
|
||||
</enum>
|
||||
|
||||
<request name="set_fullscreen">
|
||||
@ -751,6 +814,19 @@
|
||||
indicates that the app does not care about framerate. The
|
||||
framerate is specified in mHz, that is framerate of 60000 is 60Hz.
|
||||
|
||||
A method of "scale" or "driver" implies a scaling operation of
|
||||
the surface, either via a direct scaling operation or a change of
|
||||
the output mode. This will override any kind of output scaling, so
|
||||
that mapping a surface with a buffer size equal to the mode can
|
||||
fill the screen independent of buffer_scale.
|
||||
|
||||
A method of "fill" means we don't scale up the buffer, however
|
||||
any output scale is applied. This means that you may run into
|
||||
an edge case where the application maps a buffer with the same
|
||||
size of the output mode but buffer_scale 1 (thus making a
|
||||
surface larger than the output). In this case it is allowed to
|
||||
downscale the results to fit the screen.
|
||||
|
||||
The compositor must reply to this request with a configure event
|
||||
with the dimensions for the output on which the surface will
|
||||
be made fullscreen.
|
||||
@ -777,6 +853,10 @@
|
||||
in any of the clients surfaces is reported as normal, however,
|
||||
clicks in other clients surfaces will be discarded and trigger
|
||||
the callback.
|
||||
|
||||
The x and y arguments specify the locations of the upper left
|
||||
corner of the surface relative to the upper left corner of the
|
||||
parent surface, in surface local coordinates.
|
||||
</description>
|
||||
|
||||
<arg name="seat" type="object" interface="wl_seat" summary="the wl_seat whose pointer is used"/>
|
||||
@ -829,9 +909,9 @@
|
||||
Set a class for the surface.
|
||||
|
||||
The surface class identifies the general class of applications
|
||||
to which the surface belongs. A common convention is to use
|
||||
the file name (full path if non-standard location) of the
|
||||
applications .desktop file as the class.
|
||||
to which the surface belongs. A common convention is to use the
|
||||
file name (or the full path if it is a non-standard location) of
|
||||
the application's .desktop file as the class.
|
||||
</description>
|
||||
<arg name="class_" type="string"/>
|
||||
</request>
|
||||
@ -860,6 +940,9 @@
|
||||
|
||||
The client is free to dismiss all but the last configure
|
||||
event it received.
|
||||
|
||||
The width and height arguments specify the size of the window
|
||||
in surface local coordinates.
|
||||
</description>
|
||||
|
||||
<arg name="edges" type="uint"/>
|
||||
@ -870,17 +953,22 @@
|
||||
<event name="popup_done">
|
||||
<description summary="popup interaction is done">
|
||||
The popup_done event is sent out when a popup grab is broken,
|
||||
that is, when the users clicks a surface that doesn't belong
|
||||
that is, when the user clicks a surface that doesn't belong
|
||||
to the client owning the popup surface.
|
||||
</description>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_surface" version="2">
|
||||
<interface name="wl_surface" version="3">
|
||||
<description summary="an onscreen surface">
|
||||
A surface is a rectangular area that is displayed on the screen.
|
||||
It has a location, size and pixel contents.
|
||||
|
||||
The size of a surface (and relative positions on it) is described
|
||||
in surface local coordinates, which may differ from the buffer
|
||||
local coordinates of the pixel content, in case a buffer_transform
|
||||
or a buffer_scale is used.
|
||||
|
||||
Surfaces are also used for some special purposes, e.g. as
|
||||
cursor images for pointers, drag icons, etc.
|
||||
</description>
|
||||
@ -895,20 +983,25 @@
|
||||
<description summary="set the surface contents">
|
||||
Set a buffer as the content of this surface.
|
||||
|
||||
The new size of the surface is calculated based on the buffer
|
||||
size transformed by the inverse buffer_transform and the
|
||||
inverse buffer_scale. This means that the supplied buffer
|
||||
must be an integer multiple of the buffer_scale.
|
||||
|
||||
The x and y arguments specify the location of the new pending
|
||||
buffer's upper left corner, relative to the current buffer's
|
||||
upper left corner. In other words, the x and y, and the width
|
||||
and height of the wl_buffer together define in which directions
|
||||
the surface's size changes.
|
||||
buffer's upper left corner, relative to the current buffer's upper
|
||||
left corner, in surface local coordinates. In other words, the
|
||||
x and y, combined with the new surface size define in which
|
||||
directions the surface's size changes.
|
||||
|
||||
Surface contents are double-buffered state, see wl_surface.commit.
|
||||
|
||||
The initial surface contents are void; there is no content.
|
||||
wl_surface.attach assigns the given wl_buffer as the pending
|
||||
wl_buffer. wl_surface.commit makes the pending wl_buffer the new
|
||||
surface contents, and the size of the surface becomes the size of
|
||||
the wl_buffer, as described above. After commit, there is no
|
||||
pending buffer until the next attach.
|
||||
surface contents, and the size of the surface becomes the size
|
||||
calculated from the wl_buffer, as described above. After commit,
|
||||
there is no pending buffer until the next attach.
|
||||
|
||||
Committing a pending wl_buffer allows the compositor to read the
|
||||
pixels in the wl_buffer. The compositor may access the pixels at
|
||||
@ -922,10 +1015,10 @@
|
||||
|
||||
Destroying the wl_buffer after wl_buffer.release does not change
|
||||
the surface contents. However, if the client destroys the
|
||||
wl_buffer before receiving wl_buffer.release, the surface
|
||||
wl_buffer before receiving the wl_buffer.release event, the surface
|
||||
contents become undefined immediately.
|
||||
|
||||
Only if wl_surface.attach is sent with a NULL wl_buffer, the
|
||||
If wl_surface.attach is sent with a NULL wl_buffer, the
|
||||
following wl_surface.commit will remove the surface content.
|
||||
</description>
|
||||
|
||||
@ -945,6 +1038,8 @@
|
||||
|
||||
Damage is double-buffered state, see wl_surface.commit.
|
||||
|
||||
The damage rectangle is specified in surface local coordinates.
|
||||
|
||||
The initial value for pending damage is empty: no damage.
|
||||
wl_surface.damage adds pending damage: the new pending damage
|
||||
is the union of old pending damage and the given rectangle.
|
||||
@ -996,6 +1091,8 @@
|
||||
behaviour, but marking transparent content as opaque will result
|
||||
in repaint artifacts.
|
||||
|
||||
The opaque region is specified in surface local coordinates.
|
||||
|
||||
The compositor ignores the parts of the opaque region that fall
|
||||
outside of the surface.
|
||||
|
||||
@ -1023,6 +1120,8 @@
|
||||
surface in the server surface stack. The compositor ignores the
|
||||
parts of the input region that fall outside of the surface.
|
||||
|
||||
The input region is specified in surface local coordinates.
|
||||
|
||||
Input region is double-buffered state, see wl_surface.commit.
|
||||
|
||||
wl_surface.set_input_region changes the pending input region.
|
||||
@ -1100,7 +1199,7 @@
|
||||
according to the output transform, thus permiting the compositor to
|
||||
use certain optimizations even if the display is rotated. Using
|
||||
hardware overlays and scanning out a client buffer for fullscreen
|
||||
surfaces are examples of such optmizations. Those optimizations are
|
||||
surfaces are examples of such optimizations. Those optimizations are
|
||||
highly dependent on the compositor implementation, so the use of this
|
||||
request should be considered on a case-by-case basis.
|
||||
|
||||
@ -1110,9 +1209,33 @@
|
||||
</description>
|
||||
<arg name="transform" type="int"/>
|
||||
</request>
|
||||
|
||||
<!-- Version 3 additions -->
|
||||
|
||||
<request name="set_buffer_scale" since="3">
|
||||
<description summary="sets the buffer scaling factor">
|
||||
This request sets an optional scaling factor on how the compositor
|
||||
interprets the contents of the buffer attached to the window.
|
||||
|
||||
Buffer scale is double-buffered state, see wl_surface.commit.
|
||||
|
||||
A newly created surface has its buffer scale set to 1.
|
||||
|
||||
The purpose of this request is to allow clients to supply higher
|
||||
resolution buffer data for use on high resolution outputs. Its
|
||||
intended that you pick the same buffer scale as the scale of the
|
||||
output that the surface is displayed on.This means the compositor
|
||||
can avoid scaling when rendering the surface on that output.
|
||||
|
||||
Note that if the scale is larger than 1, then you have to attach
|
||||
a buffer that is larger (by a factor of scale in each dimension)
|
||||
than the desired surface size.
|
||||
</description>
|
||||
<arg name="scale" type="int"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_seat" version="1">
|
||||
<interface name="wl_seat" version="3">
|
||||
<description summary="group of input devices">
|
||||
A seat is a group of keyboards, pointer and touch devices. This
|
||||
object is published as a global during start up, or when such a
|
||||
@ -1171,9 +1294,21 @@
|
||||
</description>
|
||||
<arg name="id" type="new_id" interface="wl_touch"/>
|
||||
</request>
|
||||
|
||||
<!-- Version 2 of additions -->
|
||||
|
||||
<event name="name" since="2">
|
||||
<description summary="unique identifier for this seat">
|
||||
In a multiseat configuration this can be used by the client to help
|
||||
identify which physical devices the seat represents. Based on
|
||||
the seat configuration used by the compositor.
|
||||
</description>
|
||||
<arg name="name" type="string"/>
|
||||
</event>
|
||||
|
||||
</interface>
|
||||
|
||||
<interface name="wl_pointer" version="1">
|
||||
<interface name="wl_pointer" version="3">
|
||||
<description summary="pointer input device">
|
||||
The wl_pointer interface represents one or more input devices,
|
||||
such as mice, which control the pointer location and pointer_focus
|
||||
@ -1197,7 +1332,8 @@
|
||||
The parameters hotspot_x and hotspot_y define the position of
|
||||
the pointer surface relative to the pointer location. Its
|
||||
top-left corner is always at (x, y) - (hotspot_x, hotspot_y),
|
||||
where (x, y) are the coordinates of the pointer location.
|
||||
where (x, y) are the coordinates of the pointer location, in surface
|
||||
local coordinates.
|
||||
|
||||
On surface.attach requests to the pointer surface, hotspot_x
|
||||
and hotspot_y are decremented by the x and y parameters
|
||||
@ -1221,6 +1357,10 @@
|
||||
<arg name="hotspot_y" type="int" summary="y coordinate in surface-relative coordinates"/>
|
||||
</request>
|
||||
|
||||
<request name="release" type="destructor" since="3">
|
||||
<description summary="release the pointer object"/>
|
||||
</request>
|
||||
|
||||
<event name="enter">
|
||||
<description summary="enter event">
|
||||
Notification that this seat's pointer is focused on a certain
|
||||
@ -1320,17 +1460,23 @@
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_keyboard" version="1">
|
||||
<interface name="wl_keyboard" version="3">
|
||||
<description summary="keyboard input device">
|
||||
The wl_keyboard interface represents one or more keyboards
|
||||
associated with a seat.
|
||||
</description>
|
||||
|
||||
<request name="release" type="destructor" since="3">
|
||||
<description summary="release the keyboard object"/>
|
||||
</request>
|
||||
|
||||
<enum name="keymap_format">
|
||||
<description summary="keyboard mapping format">
|
||||
This specifies the format of the keymap provided to the
|
||||
client with the wl_keyboard.keymap event.
|
||||
</description>
|
||||
<entry name="no_keymap" value="0"
|
||||
summary="no keymap; client must understand how to interpret the raw keycode"/>
|
||||
<entry name="xkb_v1" value="1" summary="libxkbcommon compatible"/>
|
||||
</enum>
|
||||
|
||||
@ -1401,7 +1547,7 @@
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_touch" version="1">
|
||||
<interface name="wl_touch" version="3">
|
||||
<description summary="touchscreen input device">
|
||||
The wl_touch interface represents a touchscreen
|
||||
associated with a seat.
|
||||
@ -1413,6 +1559,10 @@
|
||||
contact point can be identified by the ID of the sequence.
|
||||
</description>
|
||||
|
||||
<request name="release" type="destructor" since="3">
|
||||
<description summary="release the touch object"/>
|
||||
</request>
|
||||
|
||||
<event name="down">
|
||||
<description summary="touch down event and beginning of a touch sequence">
|
||||
A new touch point has appeared on the surface. This touch point is
|
||||
@ -1467,7 +1617,7 @@
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_output" version="1">
|
||||
<interface name="wl_output" version="2">
|
||||
<description summary="compositor output region">
|
||||
An output describes part of the compositor geometry. The
|
||||
compositor works in the 'compositor coordinate system' and an
|
||||
@ -1559,12 +1709,52 @@
|
||||
again if an output changes mode, for the mode that is now
|
||||
current. In other words, the current mode is always the last
|
||||
mode that was received with the current flag set.
|
||||
|
||||
The size of a mode is given in physical hardware units of
|
||||
the output device. This is not necessarily the same as
|
||||
the output size in the global compositor space. For instance,
|
||||
the output may be scaled, as described in wl_output.scale,
|
||||
or transformed , as described in wl_output.transform.
|
||||
</description>
|
||||
<arg name="flags" type="uint" summary="bitfield of mode flags"/>
|
||||
<arg name="width" type="int" summary="width of the mode in pixels"/>
|
||||
<arg name="height" type="int" summary="height of the mode in pixels"/>
|
||||
<arg name="width" type="int" summary="width of the mode in hardware units"/>
|
||||
<arg name="height" type="int" summary="height of the mode in hardware units"/>
|
||||
<arg name="refresh" type="int" summary="vertical refresh rate in mHz"/>
|
||||
</event>
|
||||
|
||||
<event name="done" since="2">
|
||||
<description summary="sent all information about output">
|
||||
This event is sent after all other properties has been
|
||||
sent after binding to the output object and after any
|
||||
other property changes done after that. This allows
|
||||
changes to the output properties to be seen as
|
||||
atomic, even if they happen via multiple events.
|
||||
</description>
|
||||
</event>
|
||||
|
||||
<event name="scale" since="2">
|
||||
<description summary="output scaling properties">
|
||||
This event contains scaling geometry information
|
||||
that is not in the geometry event. It may be sent after
|
||||
binding the output object or if the output scale changes
|
||||
later. If it is not sent, the client should assume a
|
||||
scale of 1.
|
||||
|
||||
A scale larger than 1 means that the compositor will
|
||||
automatically scale surface buffers by this amount
|
||||
when rendering. This is used for very high resolution
|
||||
displays where applications rendering at the native
|
||||
resolution would be too small to be legible.
|
||||
|
||||
It is intended that scaling aware clients track the
|
||||
current output of a surface, and if it is on a scaled
|
||||
output it should use wl_surface.set_buffer_scale with
|
||||
the scale of the output. That way the compositor can
|
||||
avoid scaling the surface, and the client can supply
|
||||
a higher detail image.
|
||||
</description>
|
||||
<arg name="factor" type="int" summary="scaling factor of output"/>
|
||||
</event>
|
||||
</interface>
|
||||
|
||||
<interface name="wl_region" version="1">
|
||||
|
@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
class QWaylandClientBufferIntegration;
|
||||
|
||||
#define QWaylandClientBufferIntegrationFactoryInterface_iid "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.2"
|
||||
#define QWaylandClientBufferIntegrationFactoryInterface_iid "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.3"
|
||||
|
||||
class Q_WAYLAND_CLIENT_EXPORT QWaylandClientBufferIntegrationPlugin : public QObject
|
||||
{
|
||||
|
@ -52,7 +52,7 @@ QT_BEGIN_NAMESPACE
|
||||
|
||||
class QWaylandServerBufferIntegration;
|
||||
|
||||
#define QWaylandServerBufferIntegrationFactoryInterface_iid "org.qt-project.Qt.WaylandClient.QWaylandServerBufferIntegrationFactoryInterface.5.2"
|
||||
#define QWaylandServerBufferIntegrationFactoryInterface_iid "org.qt-project.Qt.WaylandClient.QWaylandServerBufferIntegrationFactoryInterface.5.3"
|
||||
|
||||
class Q_WAYLAND_CLIENT_EXPORT QWaylandServerBufferIntegrationPlugin : public QObject
|
||||
{
|
||||
|
@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
|
||||
class QWaylandBrcmEglClientBufferPlugin : public QWaylandClientBufferIntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.2" FILE "brcm-egl.json")
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.3" FILE "brcm-egl.json")
|
||||
public:
|
||||
QStringList keys() const;
|
||||
QWaylandClientBufferIntegration *create(const QString&, const QStringList&);
|
||||
|
@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
|
||||
class DrmEglServerBufferPlugin : public QWaylandServerBufferIntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandServerBufferIntegrationFactoryInterface.5.2" FILE "drm-egl-server.json")
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandServerBufferIntegrationFactoryInterface.5.3" FILE "drm-egl-server.json")
|
||||
public:
|
||||
QStringList keys() const;
|
||||
QWaylandServerBufferIntegration *create(const QString&, const QStringList&);
|
||||
|
@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
|
||||
class QWaylandEglClientBufferPlugin : public QWaylandClientBufferIntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.2" FILE "wayland-egl.json")
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.3" FILE "wayland-egl.json")
|
||||
public:
|
||||
QStringList keys() const;
|
||||
QWaylandClientBufferIntegration *create(const QString&, const QStringList&);
|
||||
|
@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
|
||||
class QWaylandXCompositeEglClientBufferIntegrationPlugin : public QWaylandClientBufferIntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.2" FILE "xcomposite-egl.json")
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.3" FILE "xcomposite-egl.json")
|
||||
public:
|
||||
QStringList keys() const;
|
||||
QWaylandClientBufferIntegration *create(const QString&, const QStringList&);
|
||||
|
@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
|
||||
class QWaylandXCompositeGlxClientBufferIntegrationPlugin : public QWaylandClientBufferIntegrationPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.2" FILE "xcomposite-glx.json")
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.WaylandClient.QWaylandClientBufferIntegrationFactoryInterface.5.3" FILE "xcomposite-glx.json")
|
||||
public:
|
||||
QStringList keys() const;
|
||||
QWaylandClientBufferIntegration *create(const QString&, const QStringList&);
|
||||
|
@ -84,15 +84,18 @@ public:
|
||||
if (QGuiApplication::desktopSettingsAware()) {
|
||||
const QByteArray desktopEnvironment = QGuiApplicationPrivate::platformIntegration()->services()->desktopEnvironment();
|
||||
|
||||
// Ignore X11 desktop environments
|
||||
if (!desktopEnvironment.isEmpty() &&
|
||||
if (desktopEnvironment == QByteArrayLiteral("KDE")) {
|
||||
#ifndef QT_NO_SETTINGS
|
||||
result.push_back(QStringLiteral("kde"));
|
||||
#endif
|
||||
} else if (!desktopEnvironment.isEmpty() &&
|
||||
desktopEnvironment != QByteArrayLiteral("UNKNOWN") &&
|
||||
desktopEnvironment != QByteArrayLiteral("KDE") &&
|
||||
desktopEnvironment != QByteArrayLiteral("GNOME") &&
|
||||
desktopEnvironment != QByteArrayLiteral("UNITY") &&
|
||||
desktopEnvironment != QByteArrayLiteral("MATE") &&
|
||||
desktopEnvironment != QByteArrayLiteral("XFCE") &&
|
||||
desktopEnvironment != QByteArrayLiteral("LXDE"))
|
||||
// Ignore X11 desktop environments
|
||||
result.push_back(QString::fromLocal8Bit(desktopEnvironment.toLower()));
|
||||
}
|
||||
|
||||
|
@ -606,7 +606,7 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
|
||||
|
||||
printf(" void %s::init(struct ::wl_display *display)\n", interfaceName);
|
||||
printf(" {\n");
|
||||
printf(" m_global = wl_display_add_global(display, &::%s_interface, this, bind_func);\n", interfaceName);
|
||||
printf(" m_global = wl_global_create(display, &::%s_interface, ::%s_interface.version, this, bind_func);\n", interfaceName, interfaceName);
|
||||
printf(" }\n");
|
||||
printf("\n");
|
||||
|
||||
@ -657,9 +657,9 @@ void process(QXmlStreamReader &xml, const QByteArray &headerPath, const QByteArr
|
||||
printf(" Resource *resource = %s_allocate();\n", interfaceNameStripped);
|
||||
printf(" resource->%s = this;\n", interfaceNameStripped);
|
||||
printf("\n");
|
||||
printf(" struct ::wl_resource *handle = id != 0 ? wl_client_add_object(client, &::%s_interface, %s, id, resource) : wl_client_new_object(client, &::%s_interface, %s, resource);\n", interfaceName, interfaceMember.constData(), interfaceName, interfaceMember.constData());
|
||||
printf(" struct ::wl_resource *handle = wl_resource_create(client, &::%s_interface, ::%s_interface.version, id);\n", interfaceName, interfaceName);
|
||||
printf(" wl_resource_set_implementation(handle, %s, resource, destroy_func);", interfaceMember.constData());
|
||||
printf("\n");
|
||||
printf(" handle->destroy = destroy_func;\n");
|
||||
printf(" resource->handle = handle;\n");
|
||||
printf(" %s_bind_resource(resource);\n", interfaceNameStripped);
|
||||
printf(" return resource;\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user