Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Unified Diff: third_party/wayland/include/protocol/wayland-client-protocol-core.h

Issue 1628333004: Update Wayland to version 1.9.91. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/wayland/include/protocol/wayland-client-protocol-core.h
diff --git a/third_party/wayland/include/protocol/wayland-client-protocol-core.h b/third_party/wayland/include/protocol/wayland-client-protocol-core.h
index fbf170facb88c39e39fa7d5f189ac17e059f1b0a..9927b07a255bad29ae8c3cbc32524a3021f4efe3 100644
--- a/third_party/wayland/include/protocol/wayland-client-protocol-core.h
+++ b/third_party/wayland/include/protocol/wayland-client-protocol-core.h
@@ -1,8 +1,8 @@
-/*
+/*
* Copyright © 2008-2011 Kristian Høgsberg
* Copyright © 2010-2011 Intel Corporation
* Copyright © 2012-2013 Collabora, Ltd.
- *
+ *
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation files
* (the "Software"), to deal in the Software without restriction,
@@ -10,11 +10,11 @@
* publish, distribute, sublicense, and/or sell copies of the Software,
* and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice (including the
* next paragraph) shall be included in all copies or substantial
* portions of the Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -158,6 +158,9 @@ wl_display_add_listener(struct wl_display *wl_display,
#define WL_DISPLAY_SYNC 0
#define WL_DISPLAY_GET_REGISTRY 1
+#define WL_DISPLAY_SYNC_SINCE_VERSION 1
+#define WL_DISPLAY_GET_REGISTRY_SINCE_VERSION 1
+
static inline void
wl_display_set_user_data(struct wl_display *wl_display, void *user_data)
{
@@ -170,6 +173,12 @@ wl_display_get_user_data(struct wl_display *wl_display)
return wl_proxy_get_user_data((struct wl_proxy *) wl_display);
}
+static inline uint32_t
+wl_display_get_version(struct wl_display *wl_display)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_display);
+}
+
static inline struct wl_callback *
wl_display_sync(struct wl_display *wl_display)
{
@@ -262,6 +271,8 @@ wl_registry_add_listener(struct wl_registry *wl_registry,
#define WL_REGISTRY_BIND 0
+#define WL_REGISTRY_BIND_SINCE_VERSION 1
+
static inline void
wl_registry_set_user_data(struct wl_registry *wl_registry, void *user_data)
{
@@ -274,6 +285,12 @@ wl_registry_get_user_data(struct wl_registry *wl_registry)
return wl_proxy_get_user_data((struct wl_proxy *) wl_registry);
}
+static inline uint32_t
+wl_registry_get_version(struct wl_registry *wl_registry)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_registry);
+}
+
static inline void
wl_registry_destroy(struct wl_registry *wl_registry)
{
@@ -285,8 +302,8 @@ wl_registry_bind(struct wl_registry *wl_registry, uint32_t name, const struct wl
{
struct wl_proxy *id;
- id = wl_proxy_marshal_constructor((struct wl_proxy *) wl_registry,
- WL_REGISTRY_BIND, interface, name, interface->name, version, NULL);
+ id = wl_proxy_marshal_constructor_versioned((struct wl_proxy *) wl_registry,
+ WL_REGISTRY_BIND, interface, version, name, interface->name, version, NULL);
return (void *) id;
}
@@ -318,6 +335,7 @@ wl_callback_add_listener(struct wl_callback *wl_callback,
(void (**)(void)) listener, data);
}
+
static inline void
wl_callback_set_user_data(struct wl_callback *wl_callback, void *user_data)
{
@@ -330,6 +348,12 @@ wl_callback_get_user_data(struct wl_callback *wl_callback)
return wl_proxy_get_user_data((struct wl_proxy *) wl_callback);
}
+static inline uint32_t
+wl_callback_get_version(struct wl_callback *wl_callback)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_callback);
+}
+
static inline void
wl_callback_destroy(struct wl_callback *wl_callback)
{
@@ -339,6 +363,9 @@ wl_callback_destroy(struct wl_callback *wl_callback)
#define WL_COMPOSITOR_CREATE_SURFACE 0
#define WL_COMPOSITOR_CREATE_REGION 1
+#define WL_COMPOSITOR_CREATE_SURFACE_SINCE_VERSION 1
+#define WL_COMPOSITOR_CREATE_REGION_SINCE_VERSION 1
+
static inline void
wl_compositor_set_user_data(struct wl_compositor *wl_compositor, void *user_data)
{
@@ -351,6 +378,12 @@ wl_compositor_get_user_data(struct wl_compositor *wl_compositor)
return wl_proxy_get_user_data((struct wl_proxy *) wl_compositor);
}
+static inline uint32_t
+wl_compositor_get_version(struct wl_compositor *wl_compositor)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_compositor);
+}
+
static inline void
wl_compositor_destroy(struct wl_compositor *wl_compositor)
{
@@ -383,6 +416,10 @@ wl_compositor_create_region(struct wl_compositor *wl_compositor)
#define WL_SHM_POOL_DESTROY 1
#define WL_SHM_POOL_RESIZE 2
+#define WL_SHM_POOL_CREATE_BUFFER_SINCE_VERSION 1
+#define WL_SHM_POOL_DESTROY_SINCE_VERSION 1
+#define WL_SHM_POOL_RESIZE_SINCE_VERSION 1
+
static inline void
wl_shm_pool_set_user_data(struct wl_shm_pool *wl_shm_pool, void *user_data)
{
@@ -395,6 +432,12 @@ wl_shm_pool_get_user_data(struct wl_shm_pool *wl_shm_pool)
return wl_proxy_get_user_data((struct wl_proxy *) wl_shm_pool);
}
+static inline uint32_t
+wl_shm_pool_get_version(struct wl_shm_pool *wl_shm_pool)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_shm_pool);
+}
+
static inline struct wl_buffer *
wl_shm_pool_create_buffer(struct wl_shm_pool *wl_shm_pool, int32_t offset, int32_t width, int32_t height, int32_t stride, uint32_t format)
{
@@ -605,6 +648,8 @@ wl_shm_add_listener(struct wl_shm *wl_shm,
#define WL_SHM_CREATE_POOL 0
+#define WL_SHM_CREATE_POOL_SINCE_VERSION 1
+
static inline void
wl_shm_set_user_data(struct wl_shm *wl_shm, void *user_data)
{
@@ -617,6 +662,12 @@ wl_shm_get_user_data(struct wl_shm *wl_shm)
return wl_proxy_get_user_data((struct wl_proxy *) wl_shm);
}
+static inline uint32_t
+wl_shm_get_version(struct wl_shm *wl_shm)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_shm);
+}
+
static inline void
wl_shm_destroy(struct wl_shm *wl_shm)
{
@@ -675,6 +726,8 @@ wl_buffer_add_listener(struct wl_buffer *wl_buffer,
#define WL_BUFFER_DESTROY 0
+#define WL_BUFFER_DESTROY_SINCE_VERSION 1
+
static inline void
wl_buffer_set_user_data(struct wl_buffer *wl_buffer, void *user_data)
{
@@ -687,6 +740,12 @@ wl_buffer_get_user_data(struct wl_buffer *wl_buffer)
return wl_proxy_get_user_data((struct wl_proxy *) wl_buffer);
}
+static inline uint32_t
+wl_buffer_get_version(struct wl_buffer *wl_buffer)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_buffer);
+}
+
static inline void
wl_buffer_destroy(struct wl_buffer *wl_buffer)
{
@@ -696,9 +755,21 @@ wl_buffer_destroy(struct wl_buffer *wl_buffer)
wl_proxy_destroy((struct wl_proxy *) wl_buffer);
}
+#ifndef WL_DATA_OFFER_ERROR_ENUM
+#define WL_DATA_OFFER_ERROR_ENUM
+enum wl_data_offer_error {
+ WL_DATA_OFFER_ERROR_INVALID_FINISH = 0,
+ WL_DATA_OFFER_ERROR_INVALID_ACTION_MASK = 1,
+ WL_DATA_OFFER_ERROR_INVALID_ACTION = 2,
+ WL_DATA_OFFER_ERROR_INVALID_OFFER = 3,
+};
+#endif /* WL_DATA_OFFER_ERROR_ENUM */
+
/**
* wl_data_offer - offer to transfer data
* @offer: advertise offered mime type
+ * @source_actions: notify the source-side available actions
+ * @action: notify the selected action
*
* A wl_data_offer represents a piece of data offered for transfer by
* another client (the source client). It is used by the copy-and-paste and
@@ -717,6 +788,65 @@ struct wl_data_offer_listener {
void (*offer)(void *data,
struct wl_data_offer *wl_data_offer,
const char *mime_type);
+ /**
+ * source_actions - notify the source-side available actions
+ * @source_actions: (none)
+ *
+ * This event indicates the actions offered by the data source.
+ * It will be sent right after wl_data_device.enter, or anytime the
+ * source side changes its offered actions through
+ * wl_data_source.set_actions.
+ * @since: 3
+ */
+ void (*source_actions)(void *data,
+ struct wl_data_offer *wl_data_offer,
+ uint32_t source_actions);
+ /**
+ * action - notify the selected action
+ * @dnd_action: (none)
+ *
+ * This event indicates the action selected by the compositor
+ * after matching the source/destination side actions. Only one
+ * action (or none) will be offered here.
+ *
+ * This event can be emitted multiple times during the
+ * drag-and-drop operation in response to destination side action
+ * changes through wl_data_offer.set_actions.
+ *
+ * This event will no longer be emitted after wl_data_device.drop
+ * happened on the drag-and-drop destination, the client must honor
+ * the last action received, or the last preferred one set through
+ * wl_data_offer.set_actions when handling an "ask" action.
+ *
+ * Compositors may also change the selected action on the fly,
+ * mainly in response to keyboard modifier changes during the
+ * drag-and-drop operation.
+ *
+ * The most recent action received is always the valid one. Prior
+ * to receiving wl_data_device.drop, the chosen action may change
+ * (e.g. due to keyboard modifiers being pressed). At the time of
+ * receiving wl_data_device.drop the drag-and-drop destination must
+ * honor the last action received.
+ *
+ * Action changes may still happen after wl_data_device.drop,
+ * especially on "ask" actions, where the drag-and-drop destination
+ * may choose another action afterwards. Action changes happening
+ * at this stage are always the result of inter-client negotiation,
+ * the compositor shall no longer be able to induce a different
+ * action.
+ *
+ * Upon "ask" actions, it is expected that the drag-and-drop
+ * destination may potentially choose different a different action
+ * and/or mime type, based on wl_data_offer.source_actions and
+ * finally chosen by the user (e.g. popping up a menu with the
+ * available options). The final wl_data_offer.set_actions and
+ * wl_data_offer.accept requests must happen before the call to
+ * wl_data_offer.finish.
+ * @since: 3
+ */
+ void (*action)(void *data,
+ struct wl_data_offer *wl_data_offer,
+ uint32_t dnd_action);
};
static inline int
@@ -730,6 +860,14 @@ wl_data_offer_add_listener(struct wl_data_offer *wl_data_offer,
#define WL_DATA_OFFER_ACCEPT 0
#define WL_DATA_OFFER_RECEIVE 1
#define WL_DATA_OFFER_DESTROY 2
+#define WL_DATA_OFFER_FINISH 3
+#define WL_DATA_OFFER_SET_ACTIONS 4
+
+#define WL_DATA_OFFER_ACCEPT_SINCE_VERSION 1
+#define WL_DATA_OFFER_RECEIVE_SINCE_VERSION 1
+#define WL_DATA_OFFER_DESTROY_SINCE_VERSION 1
+#define WL_DATA_OFFER_FINISH_SINCE_VERSION 3
+#define WL_DATA_OFFER_SET_ACTIONS_SINCE_VERSION 3
static inline void
wl_data_offer_set_user_data(struct wl_data_offer *wl_data_offer, void *user_data)
@@ -743,6 +881,12 @@ wl_data_offer_get_user_data(struct wl_data_offer *wl_data_offer)
return wl_proxy_get_user_data((struct wl_proxy *) wl_data_offer);
}
+static inline uint32_t
+wl_data_offer_get_version(struct wl_data_offer *wl_data_offer)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_data_offer);
+}
+
static inline void
wl_data_offer_accept(struct wl_data_offer *wl_data_offer, uint32_t serial, const char *mime_type)
{
@@ -766,11 +910,36 @@ wl_data_offer_destroy(struct wl_data_offer *wl_data_offer)
wl_proxy_destroy((struct wl_proxy *) wl_data_offer);
}
+static inline void
+wl_data_offer_finish(struct wl_data_offer *wl_data_offer)
+{
+ wl_proxy_marshal((struct wl_proxy *) wl_data_offer,
+ WL_DATA_OFFER_FINISH);
+}
+
+static inline void
+wl_data_offer_set_actions(struct wl_data_offer *wl_data_offer, uint32_t dnd_actions, uint32_t preferred_action)
+{
+ wl_proxy_marshal((struct wl_proxy *) wl_data_offer,
+ WL_DATA_OFFER_SET_ACTIONS, dnd_actions, preferred_action);
+}
+
+#ifndef WL_DATA_SOURCE_ERROR_ENUM
+#define WL_DATA_SOURCE_ERROR_ENUM
+enum wl_data_source_error {
+ WL_DATA_SOURCE_ERROR_INVALID_ACTION_MASK = 0,
+ WL_DATA_SOURCE_ERROR_INVALID_SOURCE = 1,
+};
+#endif /* WL_DATA_SOURCE_ERROR_ENUM */
+
/**
* wl_data_source - offer to transfer data
* @target: a target accepts an offered mime type
* @send: send the data
* @cancelled: selection was cancelled
+ * @dnd_drop_performed: the drag-and-drop operation physically finished
+ * @dnd_finished: the drag-and-drop operation concluded
+ * @action: notify the selected action
*
* The wl_data_source object is the source side of a wl_data_offer. It is
* created by the source client in a data transfer and provides a way to
@@ -806,11 +975,96 @@ struct wl_data_source_listener {
/**
* cancelled - selection was cancelled
*
- * This data source has been replaced by another data source. The
- * client should clean up and destroy this data source.
+ * This data source is no longer valid. There are several reasons
+ * why this could happen:
+ *
+ * - The data source has been replaced by another data source. -
+ * The drag-and-drop operation was performed, but the drop
+ * destination did not accept any of the mimetypes offered through
+ * wl_data_source.target. - The drag-and-drop operation was
+ * performed, but the drop destination did not select any of the
+ * actions present in the mask offered through
+ * wl_data_source.action. - The drag-and-drop operation was
+ * performed but didn't happen over a surface. - The compositor
+ * cancelled the drag-and-drop operation (e.g. compositor dependent
+ * timeouts to avoid stale drag-and-drop transfers).
+ *
+ * The client should clean up and destroy this data source.
+ *
+ * For objects of version 2 or older, wl_data_source.cancelled will
+ * only be emitted if the data source was replaced by another data
+ * source.
*/
void (*cancelled)(void *data,
struct wl_data_source *wl_data_source);
+ /**
+ * dnd_drop_performed - the drag-and-drop operation physically
+ * finished
+ *
+ * The user performed the drop action. This event does not
+ * indicate acceptance, wl_data_source.cancelled may still be
+ * emitted afterwards if the drop destination does not accept any
+ * mimetype.
+ *
+ * However, this event might however not be received if the
+ * compositor cancelled the drag-and-drop operation before this
+ * event could happen.
+ *
+ * Note that the data_source may still be used in the future and
+ * should not be destroyed here.
+ * @since: 3
+ */
+ void (*dnd_drop_performed)(void *data,
+ struct wl_data_source *wl_data_source);
+ /**
+ * dnd_finished - the drag-and-drop operation concluded
+ *
+ * The drop destination finished interoperating with this data
+ * source, so the client is now free to destroy this data source
+ * and free all associated data.
+ *
+ * If the action used to perform the operation was "move", the
+ * source can now delete the transferred data.
+ * @since: 3
+ */
+ void (*dnd_finished)(void *data,
+ struct wl_data_source *wl_data_source);
+ /**
+ * action - notify the selected action
+ * @dnd_action: (none)
+ *
+ * This event indicates the action selected by the compositor
+ * after matching the source/destination side actions. Only one
+ * action (or none) will be offered here.
+ *
+ * This event can be emitted multiple times during the
+ * drag-and-drop operation, mainly in response to destination side
+ * changes through wl_data_offer.set_actions, and as the data
+ * device enters/leaves surfaces.
+ *
+ * It is only possible to receive this event after
+ * wl_data_source.dnd_drop_performed if the drag-and-drop operation
+ * ended in an "ask" action, in which case the final
+ * wl_data_source.action event will happen immediately before
+ * wl_data_source.dnd_finished.
+ *
+ * Compositors may also change the selected action on the fly,
+ * mainly in response to keyboard modifier changes during the
+ * drag-and-drop operation.
+ *
+ * The most recent action received is always the valid one. The
+ * chosen action may change alongside negotiation (e.g. an "ask"
+ * action can turn into a "move" operation), so the effects of the
+ * final action must always be applied in
+ * wl_data_offer.dnd_finished.
+ *
+ * Clients can trigger cursor surface changes from this point, so
+ * they reflect the current action.
+ * @since: 3
+ */
+ void (*action)(void *data,
+ struct wl_data_source *wl_data_source,
+ uint32_t dnd_action);
};
static inline int
@@ -823,6 +1077,11 @@ wl_data_source_add_listener(struct wl_data_source *wl_data_source,
#define WL_DATA_SOURCE_OFFER 0
#define WL_DATA_SOURCE_DESTROY 1
+#define WL_DATA_SOURCE_SET_ACTIONS 2
+
+#define WL_DATA_SOURCE_OFFER_SINCE_VERSION 1
+#define WL_DATA_SOURCE_DESTROY_SINCE_VERSION 1
+#define WL_DATA_SOURCE_SET_ACTIONS_SINCE_VERSION 3
static inline void
wl_data_source_set_user_data(struct wl_data_source *wl_data_source, void *user_data)
@@ -836,6 +1095,12 @@ wl_data_source_get_user_data(struct wl_data_source *wl_data_source)
return wl_proxy_get_user_data((struct wl_proxy *) wl_data_source);
}
+static inline uint32_t
+wl_data_source_get_version(struct wl_data_source *wl_data_source)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_data_source);
+}
+
static inline void
wl_data_source_offer(struct wl_data_source *wl_data_source, const char *mime_type)
{
@@ -852,6 +1117,13 @@ wl_data_source_destroy(struct wl_data_source *wl_data_source)
wl_proxy_destroy((struct wl_proxy *) wl_data_source);
}
+static inline void
+wl_data_source_set_actions(struct wl_data_source *wl_data_source, uint32_t dnd_actions)
+{
+ wl_proxy_marshal((struct wl_proxy *) wl_data_source,
+ WL_DATA_SOURCE_SET_ACTIONS, dnd_actions);
+}
+
#ifndef WL_DATA_DEVICE_ERROR_ENUM
#define WL_DATA_DEVICE_ERROR_ENUM
enum wl_data_device_error {
@@ -940,6 +1212,17 @@ struct wl_data_device_listener {
*
* The event is sent when a drag-and-drop operation is ended
* because the implicit grab is removed.
+ *
+ * The drag-and-drop destination is expected to honor the last
+ * action received through wl_data_offer.action, if the resulting
+ * action is "copy" or "move", the destination can still perform
+ * wl_data_offer.receive requests, and is expected to end all
+ * transfers with a wl_data_offer.finish request.
+ *
+ * If the resulting action is "ask", the action will not be
+ * considered final. The drag-and-drop destination is expected to
+ * perform one last wl_data_offer.set_actions request, or
+ * wl_data_offer.destroy in order to cancel the operation.
*/
void (*drop)(void *data,
struct wl_data_device *wl_data_device);
@@ -975,6 +1258,10 @@ wl_data_device_add_listener(struct wl_data_device *wl_data_device,
#define WL_DATA_DEVICE_SET_SELECTION 1
#define WL_DATA_DEVICE_RELEASE 2
+#define WL_DATA_DEVICE_START_DRAG_SINCE_VERSION 1
+#define WL_DATA_DEVICE_SET_SELECTION_SINCE_VERSION 1
+#define WL_DATA_DEVICE_RELEASE_SINCE_VERSION 2
+
static inline void
wl_data_device_set_user_data(struct wl_data_device *wl_data_device, void *user_data)
{
@@ -987,6 +1274,12 @@ wl_data_device_get_user_data(struct wl_data_device *wl_data_device)
return wl_proxy_get_user_data((struct wl_proxy *) wl_data_device);
}
+static inline uint32_t
+wl_data_device_get_version(struct wl_data_device *wl_data_device)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_data_device);
+}
+
static inline void
wl_data_device_destroy(struct wl_data_device *wl_data_device)
{
@@ -1016,9 +1309,50 @@ wl_data_device_release(struct wl_data_device *wl_data_device)
wl_proxy_destroy((struct wl_proxy *) wl_data_device);
}
+#ifndef WL_DATA_DEVICE_MANAGER_DND_ACTION_ENUM
+#define WL_DATA_DEVICE_MANAGER_DND_ACTION_ENUM
+/**
+ * wl_data_device_manager_dnd_action - drag and drop actions
+ * @WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE: (none)
+ * @WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY: (none)
+ * @WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE: (none)
+ * @WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK: (none)
+ *
+ * This is a bitmask of the available/preferred actions in a
+ * drag-and-drop operation.
+ *
+ * In the compositor, the selected action is a result of matching the
+ * actions offered by the source and destination sides. "action" events
+ * with a "none" action will be sent to both source and destination if
+ * there is no match. All further checks will effectively happen on (source
+ * actions ∩ destination actions).
+ *
+ * In addition, compositors may also pick different actions in reaction to
+ * key modifiers being pressed, one common design that is used in major
+ * toolkits (and the behavior recommended for compositors) is:
+ *
+ * - If no modifiers are pressed, the first match (in bit order) will be
+ * used. - Pressing Shift selects "move", if enabled in the mask. -
+ * Pressing Control selects "copy", if enabled in the mask.
+ *
+ * Behavior beyond that is considered implementation-dependent. Compositors
+ * may for example bind other modifiers (like Alt/Meta) or drags initiated
+ * with other buttons than BTN_LEFT to specific actions (e.g. "ask").
+ */
+enum wl_data_device_manager_dnd_action {
+ WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE = 0,
+ WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY = 1,
+ WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE = 2,
+ WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK = 4,
+};
+#endif /* WL_DATA_DEVICE_MANAGER_DND_ACTION_ENUM */
+
#define WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE 0
#define WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE 1
+#define WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE_SINCE_VERSION 1
+#define WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE_SINCE_VERSION 1
+
static inline void
wl_data_device_manager_set_user_data(struct wl_data_device_manager *wl_data_device_manager, void *user_data)
{
@@ -1031,6 +1365,12 @@ wl_data_device_manager_get_user_data(struct wl_data_device_manager *wl_data_devi
return wl_proxy_get_user_data((struct wl_proxy *) wl_data_device_manager);
}
+static inline uint32_t
+wl_data_device_manager_get_version(struct wl_data_device_manager *wl_data_device_manager)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_data_device_manager);
+}
+
static inline void
wl_data_device_manager_destroy(struct wl_data_device_manager *wl_data_device_manager)
{
@@ -1068,6 +1408,8 @@ enum wl_shell_error {
#define WL_SHELL_GET_SHELL_SURFACE 0
+#define WL_SHELL_GET_SHELL_SURFACE_SINCE_VERSION 1
+
static inline void
wl_shell_set_user_data(struct wl_shell *wl_shell, void *user_data)
{
@@ -1080,6 +1422,12 @@ wl_shell_get_user_data(struct wl_shell *wl_shell)
return wl_proxy_get_user_data((struct wl_proxy *) wl_shell);
}
+static inline uint32_t
+wl_shell_get_version(struct wl_shell *wl_shell)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_shell);
+}
+
static inline void
wl_shell_destroy(struct wl_shell *wl_shell)
{
@@ -1257,6 +1605,17 @@ wl_shell_surface_add_listener(struct wl_shell_surface *wl_shell_surface,
#define WL_SHELL_SURFACE_SET_TITLE 8
#define WL_SHELL_SURFACE_SET_CLASS 9
+#define WL_SHELL_SURFACE_PONG_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_MOVE_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_RESIZE_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_TOPLEVEL_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_TRANSIENT_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_FULLSCREEN_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_POPUP_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_MAXIMIZED_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_TITLE_SINCE_VERSION 1
+#define WL_SHELL_SURFACE_SET_CLASS_SINCE_VERSION 1
+
static inline void
wl_shell_surface_set_user_data(struct wl_shell_surface *wl_shell_surface, void *user_data)
{
@@ -1269,6 +1628,12 @@ wl_shell_surface_get_user_data(struct wl_shell_surface *wl_shell_surface)
return wl_proxy_get_user_data((struct wl_proxy *) wl_shell_surface);
}
+static inline uint32_t
+wl_shell_surface_get_version(struct wl_shell_surface *wl_shell_surface)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_shell_surface);
+}
+
static inline void
wl_shell_surface_destroy(struct wl_shell_surface *wl_shell_surface)
{
@@ -1446,6 +1811,18 @@ wl_surface_add_listener(struct wl_surface *wl_surface,
#define WL_SURFACE_COMMIT 6
#define WL_SURFACE_SET_BUFFER_TRANSFORM 7
#define WL_SURFACE_SET_BUFFER_SCALE 8
+#define WL_SURFACE_DAMAGE_BUFFER 9
+
+#define WL_SURFACE_DESTROY_SINCE_VERSION 1
+#define WL_SURFACE_ATTACH_SINCE_VERSION 1
+#define WL_SURFACE_DAMAGE_SINCE_VERSION 1
+#define WL_SURFACE_FRAME_SINCE_VERSION 1
+#define WL_SURFACE_SET_OPAQUE_REGION_SINCE_VERSION 1
+#define WL_SURFACE_SET_INPUT_REGION_SINCE_VERSION 1
+#define WL_SURFACE_COMMIT_SINCE_VERSION 1
+#define WL_SURFACE_SET_BUFFER_TRANSFORM_SINCE_VERSION 2
+#define WL_SURFACE_SET_BUFFER_SCALE_SINCE_VERSION 3
+#define WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION 4
static inline void
wl_surface_set_user_data(struct wl_surface *wl_surface, void *user_data)
@@ -1459,6 +1836,12 @@ wl_surface_get_user_data(struct wl_surface *wl_surface)
return wl_proxy_get_user_data((struct wl_proxy *) wl_surface);
}
+static inline uint32_t
+wl_surface_get_version(struct wl_surface *wl_surface)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_surface);
+}
+
static inline void
wl_surface_destroy(struct wl_surface *wl_surface)
{
@@ -1528,6 +1911,13 @@ wl_surface_set_buffer_scale(struct wl_surface *wl_surface, int32_t scale)
WL_SURFACE_SET_BUFFER_SCALE, scale);
}
+static inline void
+wl_surface_damage_buffer(struct wl_surface *wl_surface, int32_t x, int32_t y, int32_t width, int32_t height)
+{
+ wl_proxy_marshal((struct wl_proxy *) wl_surface,
+ WL_SURFACE_DAMAGE_BUFFER, x, y, width, height);
+}
+
#ifndef WL_SEAT_CAPABILITY_ENUM
#define WL_SEAT_CAPABILITY_ENUM
/**
@@ -1564,6 +1954,28 @@ struct wl_seat_listener {
* This is emitted whenever a seat gains or loses the pointer,
* keyboard or touch capabilities. The argument is a capability
* enum containing the complete set of capabilities this seat has.
+ *
+ * When the pointer capability is added, a client may create a
+ * wl_pointer object using the wl_seat.get_pointer request. This
+ * object will receive pointer events until the capability is
+ * removed in the future.
+ *
+ * When the pointer capability is removed, a client should destroy
+ * the wl_pointer objects associated with the seat where the
+ * capability was removed, using the wl_pointer.release request. No
+ * further pointer events will be received on these objects.
+ *
+ * In some compositors, if a seat regains the pointer capability
+ * and a client has a previously obtained wl_pointer object of
+ * version 4 or less, that object may start sending pointer events
+ * again. This behavior is considered a misinterpretation of the
+ * intended behavior and must not be relied upon by the client.
+ * wl_pointer objects of version 5 or later must not send events if
+ * created before the most recent event notifying the client of an
+ * added pointer capability.
+ *
+ * The above behavior also applies to wl_keyboard and wl_touch with
+ * the keyboard and touch capabilities, respectively.
*/
void (*capabilities)(void *data,
struct wl_seat *wl_seat,
@@ -1593,6 +2005,12 @@ wl_seat_add_listener(struct wl_seat *wl_seat,
#define WL_SEAT_GET_POINTER 0
#define WL_SEAT_GET_KEYBOARD 1
#define WL_SEAT_GET_TOUCH 2
+#define WL_SEAT_RELEASE 3
+
+#define WL_SEAT_GET_POINTER_SINCE_VERSION 1
+#define WL_SEAT_GET_KEYBOARD_SINCE_VERSION 1
+#define WL_SEAT_GET_TOUCH_SINCE_VERSION 1
+#define WL_SEAT_RELEASE_SINCE_VERSION 5
static inline void
wl_seat_set_user_data(struct wl_seat *wl_seat, void *user_data)
@@ -1606,6 +2024,12 @@ wl_seat_get_user_data(struct wl_seat *wl_seat)
return wl_proxy_get_user_data((struct wl_proxy *) wl_seat);
}
+static inline uint32_t
+wl_seat_get_version(struct wl_seat *wl_seat)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_seat);
+}
+
static inline void
wl_seat_destroy(struct wl_seat *wl_seat)
{
@@ -1645,6 +2069,15 @@ wl_seat_get_touch(struct wl_seat *wl_seat)
return (struct wl_touch *) id;
}
+static inline void
+wl_seat_release(struct wl_seat *wl_seat)
+{
+ wl_proxy_marshal((struct wl_proxy *) wl_seat,
+ WL_SEAT_RELEASE);
+
+ wl_proxy_destroy((struct wl_proxy *) wl_seat);
+}
+
#ifndef WL_POINTER_ERROR_ENUM
#define WL_POINTER_ERROR_ENUM
enum wl_pointer_error {
@@ -1683,6 +2116,34 @@ enum wl_pointer_axis {
};
#endif /* WL_POINTER_AXIS_ENUM */
+#ifndef WL_POINTER_AXIS_SOURCE_ENUM
+#define WL_POINTER_AXIS_SOURCE_ENUM
+/**
+ * wl_pointer_axis_source - axis source types
+ * @WL_POINTER_AXIS_SOURCE_WHEEL: A physical wheel
+ * @WL_POINTER_AXIS_SOURCE_FINGER: Finger on a touch surface
+ * @WL_POINTER_AXIS_SOURCE_CONTINUOUS: Continuous coordinate space
+ *
+ * Describes the source types for axis events. This indicates to the
+ * client how an axis event was physically generated; a client may adjust
+ * the user interface accordingly. For example, scroll events from a
+ * "finger" source may be in a smooth coordinate space with kinetic
+ * scrolling whereas a "wheel" source may be in discrete steps of a number
+ * of lines.
+ *
+ * The "continuous" axis source is a device generating events in a
+ * continuous coordinate space, but using something other than a finger.
+ * One example for this source is button-based scrolling where the vertical
+ * motion of a device is converted to scroll events while a button is held
+ * down.
+ */
+enum wl_pointer_axis_source {
+ WL_POINTER_AXIS_SOURCE_WHEEL = 0,
+ WL_POINTER_AXIS_SOURCE_FINGER = 1,
+ WL_POINTER_AXIS_SOURCE_CONTINUOUS = 2,
+};
+#endif /* WL_POINTER_AXIS_SOURCE_ENUM */
+
/**
* wl_pointer - pointer input device
* @enter: enter event
@@ -1690,6 +2151,10 @@ enum wl_pointer_axis {
* @motion: pointer motion event
* @button: pointer button event
* @axis: axis event
+ * @frame: end of a pointer event sequence
+ * @axis_source: axis source event
+ * @axis_stop: axis stop event
+ * @axis_discrete: axis click event
*
* The wl_pointer interface represents one or more input devices, such as
* mice, which control the pointer location and pointer_focus of a seat.
@@ -1796,6 +2261,143 @@ struct wl_pointer_listener {
uint32_t time,
uint32_t axis,
wl_fixed_t value);
+ /**
+ * frame - end of a pointer event sequence
+ *
+ * Indicates the end of a set of events that logically belong
+ * together. A client is expected to accumulate the data in all
+ * events within the frame before proceeding.
+ *
+ * All wl_pointer events before a wl_pointer.frame event belong
+ * logically together. For example, in a diagonal scroll motion the
+ * compositor will send an optional wl_pointer.axis_source event,
+ * two wl_pointer.axis events (horizontal and vertical) and finally
+ * a wl_pointer.frame event. The client may use this information to
+ * calculate a diagonal vector for scrolling.
+ *
+ * When multiple wl_pointer.axis events occur within the same
+ * frame, the motion vector is the combined motion of all events.
+ * When a wl_pointer.axis and a wl_pointer.axis_stop event occur
+ * within the same frame, this indicates that axis movement in one
+ * axis has stopped but continues in the other axis. When multiple
+ * wl_pointer.axis_stop events occur within in the same frame, this
+ * indicates that these axes stopped in the same instance.
+ *
+ * A wl_pointer.frame event is sent for every logical event group,
+ * even if the group only contains a single wl_pointer event.
+ * Specifically, a client may get a sequence: motion, frame,
+ * button, frame, axis, frame, axis_stop, frame.
+ *
+ * The wl_pointer.enter and wl_pointer.leave events are logical
+ * events generated by the compositor and not the hardware. These
+ * events are also grouped by a wl_pointer.frame. When a pointer
+ * moves from one surface to the another, a compositor should group
+ * the wl_pointer.leave event within the same wl_pointer.frame.
+ * However, a client must not rely on wl_pointer.leave and
+ * wl_pointer.enter being in the same wl_pointer.frame.
+ * Compositor-specific policies may require the wl_pointer.leave
+ * and wl_pointer.enter event being split across multiple
+ * wl_pointer.frame groups.
+ * @since: 5
+ */
+ void (*frame)(void *data,
+ struct wl_pointer *wl_pointer);
+ /**
+ * axis_source - axis source event
+ * @axis_source: (none)
+ *
+ * Source information for scroll and other axes.
+ *
+ * This event does not occur on its own. It is sent before a
+ * wl_pointer.frame event and carries the source information for
+ * all events within that frame.
+ *
+ * The source specifies how this event was generated. If the source
+ * is wl_pointer.axis_source.finger, a wl_pointer.axis_stop event
+ * will be sent when the user lifts the finger off the device.
+ *
+ * If the source is wl_pointer axis_source.wheel or
+ * wl_pointer.axis_source.continuous, a wl_pointer.axis_stop event
+ * may or may not be sent. Whether a compositor sends a axis_stop
+ * event for these sources is hardware-specific and
+ * implementation-dependent; clients must not rely on receiving an
+ * axis_stop event for these scroll sources and should treat scroll
+ * sequences from these scroll sources as unterminated by default.
+ *
+ * This event is optional. If the source is unknown for a
+ * particular axis event sequence, no event is sent. Only one
+ * wl_pointer.axis_source event is permitted per frame.
+ *
+ * The order of wl_pointer.axis_discrete and wl_pointer.axis_source
+ * is not guaranteed.
+ * @since: 5
+ */
+ void (*axis_source)(void *data,
+ struct wl_pointer *wl_pointer,
+ uint32_t axis_source);
+ /**
+ * axis_stop - axis stop event
+ * @time: timestamp with millisecond granularity
+ * @axis: the axis stopped with this event
+ *
+ * Stop notification for scroll and other axes.
+ *
+ * For some wl_pointer.axis_source types, a wl_pointer.axis_stop
+ * event is sent to notify a client that the axis sequence has
+ * terminated. This enables the client to implement kinetic
+ * scrolling. See the wl_pointer.axis_source documentation for
+ * information on when this event may be generated.
+ *
+ * Any wl_pointer.axis events with the same axis_source after this
+ * event should be considered as the start of a new axis motion.
+ *
+ * The timestamp is to be interpreted identical to the timestamp in
+ * the wl_pointer.axis event. The timestamp value may be the same
+ * as a preceeding wl_pointer.axis event.
+ * @since: 5
+ */
+ void (*axis_stop)(void *data,
+ struct wl_pointer *wl_pointer,
+ uint32_t time,
+ uint32_t axis);
+ /**
+ * axis_discrete - axis click event
+ * @axis: (none)
+ * @discrete: (none)
+ *
+ * Discrete step information for scroll and other axes.
+ *
+ * This event carries the axis value of the wl_pointer.axis event
+ * in discrete steps (e.g. mouse wheel clicks).
+ *
+ * This event does not occur on its own, it is coupled with a
+ * wl_pointer.axis event that represents this axis value on a
+ * continuous scale. The protocol guarantees that each
+ * axis_discrete event is always followed by exactly one axis event
+ * with the same axis number within the same wl_pointer.frame. Note
+ * that the protocol allows for other events to occur between the
+ * axis_discrete and its coupled axis event, including other
+ * axis_discrete or axis events.
+ *
+ * This event is optional; continuous scrolling devices like
+ * two-finger scrolling on touchpads do not have discrete steps and
+ * do not generate this event.
+ *
+ * The discrete value carries the directional information. e.g. a
+ * value of -2 is two steps towards the negative direction of this
+ * axis.
+ *
+ * The axis number is identical to the axis number in the associate
+ * axis event.
+ *
+ * The order of wl_pointer.axis_discrete and wl_pointer.axis_source
+ * is not guaranteed.
+ * @since: 5
+ */
+ void (*axis_discrete)(void *data,
+ struct wl_pointer *wl_pointer,
+ uint32_t axis,
+ int32_t discrete);
};
static inline int
@@ -1809,6 +2411,9 @@ wl_pointer_add_listener(struct wl_pointer *wl_pointer,
#define WL_POINTER_SET_CURSOR 0
#define WL_POINTER_RELEASE 1
+#define WL_POINTER_SET_CURSOR_SINCE_VERSION 1
+#define WL_POINTER_RELEASE_SINCE_VERSION 3
+
static inline void
wl_pointer_set_user_data(struct wl_pointer *wl_pointer, void *user_data)
{
@@ -1821,6 +2426,12 @@ wl_pointer_get_user_data(struct wl_pointer *wl_pointer)
return wl_proxy_get_user_data((struct wl_proxy *) wl_pointer);
}
+static inline uint32_t
+wl_pointer_get_version(struct wl_pointer *wl_pointer)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_pointer);
+}
+
static inline void
wl_pointer_destroy(struct wl_pointer *wl_pointer)
{
@@ -2003,6 +2614,8 @@ wl_keyboard_add_listener(struct wl_keyboard *wl_keyboard,
#define WL_KEYBOARD_RELEASE 0
+#define WL_KEYBOARD_RELEASE_SINCE_VERSION 3
+
static inline void
wl_keyboard_set_user_data(struct wl_keyboard *wl_keyboard, void *user_data)
{
@@ -2015,6 +2628,12 @@ wl_keyboard_get_user_data(struct wl_keyboard *wl_keyboard)
return wl_proxy_get_user_data((struct wl_proxy *) wl_keyboard);
}
+static inline uint32_t
+wl_keyboard_get_version(struct wl_keyboard *wl_keyboard)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_keyboard);
+}
+
static inline void
wl_keyboard_destroy(struct wl_keyboard *wl_keyboard)
{
@@ -2131,6 +2750,8 @@ wl_touch_add_listener(struct wl_touch *wl_touch,
#define WL_TOUCH_RELEASE 0
+#define WL_TOUCH_RELEASE_SINCE_VERSION 3
+
static inline void
wl_touch_set_user_data(struct wl_touch *wl_touch, void *user_data)
{
@@ -2143,6 +2764,12 @@ wl_touch_get_user_data(struct wl_touch *wl_touch)
return wl_proxy_get_user_data((struct wl_proxy *) wl_touch);
}
+static inline uint32_t
+wl_touch_get_version(struct wl_touch *wl_touch)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_touch);
+}
+
static inline void
wl_touch_destroy(struct wl_touch *wl_touch)
{
@@ -2347,6 +2974,7 @@ wl_output_add_listener(struct wl_output *wl_output,
(void (**)(void)) listener, data);
}
+
static inline void
wl_output_set_user_data(struct wl_output *wl_output, void *user_data)
{
@@ -2359,6 +2987,12 @@ wl_output_get_user_data(struct wl_output *wl_output)
return wl_proxy_get_user_data((struct wl_proxy *) wl_output);
}
+static inline uint32_t
+wl_output_get_version(struct wl_output *wl_output)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_output);
+}
+
static inline void
wl_output_destroy(struct wl_output *wl_output)
{
@@ -2369,6 +3003,10 @@ wl_output_destroy(struct wl_output *wl_output)
#define WL_REGION_ADD 1
#define WL_REGION_SUBTRACT 2
+#define WL_REGION_DESTROY_SINCE_VERSION 1
+#define WL_REGION_ADD_SINCE_VERSION 1
+#define WL_REGION_SUBTRACT_SINCE_VERSION 1
+
static inline void
wl_region_set_user_data(struct wl_region *wl_region, void *user_data)
{
@@ -2381,6 +3019,12 @@ wl_region_get_user_data(struct wl_region *wl_region)
return wl_proxy_get_user_data((struct wl_proxy *) wl_region);
}
+static inline uint32_t
+wl_region_get_version(struct wl_region *wl_region)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_region);
+}
+
static inline void
wl_region_destroy(struct wl_region *wl_region)
{
@@ -2414,6 +3058,9 @@ enum wl_subcompositor_error {
#define WL_SUBCOMPOSITOR_DESTROY 0
#define WL_SUBCOMPOSITOR_GET_SUBSURFACE 1
+#define WL_SUBCOMPOSITOR_DESTROY_SINCE_VERSION 1
+#define WL_SUBCOMPOSITOR_GET_SUBSURFACE_SINCE_VERSION 1
+
static inline void
wl_subcompositor_set_user_data(struct wl_subcompositor *wl_subcompositor, void *user_data)
{
@@ -2426,6 +3073,12 @@ wl_subcompositor_get_user_data(struct wl_subcompositor *wl_subcompositor)
return wl_proxy_get_user_data((struct wl_proxy *) wl_subcompositor);
}
+static inline uint32_t
+wl_subcompositor_get_version(struct wl_subcompositor *wl_subcompositor)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_subcompositor);
+}
+
static inline void
wl_subcompositor_destroy(struct wl_subcompositor *wl_subcompositor)
{
@@ -2460,6 +3113,13 @@ enum wl_subsurface_error {
#define WL_SUBSURFACE_SET_SYNC 4
#define WL_SUBSURFACE_SET_DESYNC 5
+#define WL_SUBSURFACE_DESTROY_SINCE_VERSION 1
+#define WL_SUBSURFACE_SET_POSITION_SINCE_VERSION 1
+#define WL_SUBSURFACE_PLACE_ABOVE_SINCE_VERSION 1
+#define WL_SUBSURFACE_PLACE_BELOW_SINCE_VERSION 1
+#define WL_SUBSURFACE_SET_SYNC_SINCE_VERSION 1
+#define WL_SUBSURFACE_SET_DESYNC_SINCE_VERSION 1
+
static inline void
wl_subsurface_set_user_data(struct wl_subsurface *wl_subsurface, void *user_data)
{
@@ -2472,6 +3132,12 @@ wl_subsurface_get_user_data(struct wl_subsurface *wl_subsurface)
return wl_proxy_get_user_data((struct wl_proxy *) wl_subsurface);
}
+static inline uint32_t
+wl_subsurface_get_version(struct wl_subsurface *wl_subsurface)
+{
+ return wl_proxy_get_version((struct wl_proxy *) wl_subsurface);
+}
+
static inline void
wl_subsurface_destroy(struct wl_subsurface *wl_subsurface)
{

Powered by Google App Engine
This is Rietveld 408576698