[Mesa-dev] [PATCH] wayland-drm: Implement wl_buffer.damage in old versions of Wayland
Neil Roberts
neil at linux.intel.com
Wed Apr 11 09:07:56 PDT 2012
Commit 272bc48976 removed the damage implementation for the
wl_buffer_interface because that has been removed from git master of
Wayland. However this breaks building with the 0.85 branch of Wayland
because it would end up initialising the struct incorrectly.
For the time being it's quite convenient for some compositors to track
the 0.85 branch of Wayland because the protocol is stable but they
will also want to track the master branch of Mesa so that they can use
the gbm surface changes.
This patch adds a compile-time check for the version of Wayland so
that it can work with either Wayland master or the 0.85 branch.
---
src/egl/wayland/wayland-drm/wayland-drm.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c b/src/egl/wayland/wayland-drm/wayland-drm.c
index 101b2c4..f5c31db 100644
--- a/src/egl/wayland/wayland-drm/wayland-drm.c
+++ b/src/egl/wayland/wayland-drm/wayland-drm.c
@@ -70,7 +70,33 @@ buffer_destroy(struct wl_client *client, struct wl_resource *resource)
wl_resource_destroy(resource, 0);
}
+/* In Git master of Wayland, the damage member of wl_buffer_interface
+ * has been removed. For the time being, it's convenient to be able to
+ * build Mesa against both master and 0.85.0 of Wayland so to make
+ * this work we'll do a compile-time version check and add a dummy
+ * damage implementation for old Wayland */
+#define VERSION_ENCODE(major, minor, micro) \
+ (((major) << 20) | ((minor) << 10) | (micro))
+#if !defined (WAYLAND_VERSION_MAJOR) || \
+ VERSION_ENCODE (WAYLAND_VERSION_MAJOR, \
+ WAYLAND_VERSION_MINOR, \
+ WAYLAND_VERSION_MICRO) < \
+ VERSION_ENCODE (0, 99, 0)
+#define BUFFER_INTERFACE_HAS_DAMAGE
+#endif
+
+#ifdef BUFFER_INTERFACE_HAS_DAMAGE
+static void
+buffer_damage(struct wl_client *client, struct wl_resource *buffer,
+ int32_t x, int32_t y, int32_t width, int32_t height)
+{
+}
+#endif
+
const static struct wl_buffer_interface drm_buffer_interface = {
+#ifdef BUFFER_INTERFACE_HAS_DAMAGE
+ buffer_damage,
+#endif
buffer_destroy
};
--
1.7.3.16.g9464b
More information about the mesa-dev
mailing list