--- wayland-1.0.4.orig/configure.ac
+++ wayland-1.0.4/configure.ac
@@ -2,7 +2,7 @@
m4_define([wayland_major_version], [1])
m4_define([wayland_minor_version], [0])
-m4_define([wayland_micro_version], [0])
+m4_define([wayland_micro_version], [4])
m4_define([wayland_version],
[wayland_major_version.wayland_minor_version.wayland_micro_version])
@@ -76,6 +76,20 @@
AC_PATH_PROG(XSLTPROC, xsltproc)
AM_CONDITIONAL([HAVE_XSLTPROC], [test "x$XSLTPROC" != "x"])
+AC_MSG_CHECKING([for docbook manpages stylesheet])
+MANPAGES_STYLESHEET=http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
+AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
+ AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$MANPAGES_STYLESHEET" > /dev/null 2>&1`],
+ [HAVE_MANPAGES_STYLESHEET=yes]))
+if test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"; then
+ AM_CONDITIONAL([HAVE_MANPAGES_STYLESHEET], true)
+ AC_SUBST(MANPAGES_STYLESHEET)
+ AC_MSG_RESULT([yes])
+else
+ AM_CONDITIONAL([HAVE_MANPAGES_STYLESHEET], false)
+ AC_MSG_RESULT([no])
+fi
+
AM_CONDITIONAL(BUILD_DOCS, [test x$enable_documentation = xyes])
if test "x$enable_documentation" = "xyes"; then
AC_PATH_PROG(DOXYGEN, doxygen)
--- wayland-1.0.4.orig/doc/doxygen/wayland.doxygen.in
+++ wayland-1.0.4/doc/doxygen/wayland.doxygen.in
@@ -151,7 +151,7 @@
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
-JAVADOC_AUTOBRIEF = NO
+JAVADOC_AUTOBRIEF = YES
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
@@ -540,12 +540,6 @@
SHOW_USED_FILES = YES
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES.
@@ -935,12 +929,6 @@
HTML_TIMESTAMP = YES
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded. For this to work a browser that supports
@@ -1127,11 +1115,6 @@
ENUM_VALUES_PER_LINE = 4
-# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list.
-
-USE_INLINE_TREES = NO
-
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
# is shown.
--- wayland-1.0.4.orig/doc/Wayland/Makefile.am
+++ wayland-1.0.4/doc/Wayland/Makefile.am
@@ -14,6 +14,7 @@
$(srcdir)/en_US/images/x-architecture.png
if HAVE_PUBLICAN
+if HAVE_XSLTPROC
noinst_DATA = Wayland $(publican_targets)
pubdir = $(docdir)/Wayland/en-US
@@ -32,10 +33,20 @@
$(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol-interfaces-to-docbook.xsl \
$(top_srcdir)/protocol/wayland.xml > en-US/ProtocolInterfaces.xml
-en-US/WaylandClientAPI.xml: $(top_builddir)/doc/doxygen/xml/wayland-client_8h.xml $(srcdir)/doxygen-to-publican.xsl
+# WaylandClientAPI.xml is generated after combining all xml in one single file
+# with the exception of wayland-client_8h.xml that is omitted to not duplicate
+# the output methods.
+en-US/WaylandClientAPI.xml: $(top_builddir)/doc/doxygen/xml/index.xml $(srcdir)/doxygen-to-publican.xsl
$(AM_V_GEN)$(MKDIR_P) en-US/images
+ $(AM_V_GEN)mv $(top_builddir)/doc/doxygen/xml/wayland-client_8h.xml \
+ $(top_builddir)/doc/doxygen/
+ $(AM_V_GEN)$(XSLTPROC) $(top_builddir)/doc/doxygen/xml/combine.xslt \
+ $(top_builddir)/doc/doxygen/xml/index.xml > \
+ $(top_builddir)/doc/doxygen/xml/clientAPI.xml
+ $(AM_V_GEN)mv $(top_builddir)/doc/doxygen/wayland-client_8h.xml \
+ $(top_builddir)/doc/doxygen/xml
$(AM_V_GEN)$(XSLTPROC) $(srcdir)/doxygen-to-publican.xsl \
- $(top_builddir)/doc/doxygen/xml/wayland-client_8h.xml > en-US/WaylandClientAPI.xml
+ $(top_builddir)/doc/doxygen/xml/clientAPI.xml > en-US/WaylandClientAPI.xml
# Copy the en_US source files into en-US destination
# This is required for out-of-source-tree build as publican does not allow us
@@ -52,7 +63,7 @@
$(AM_V_GEN)$(PUBLICAN) rename --name Wayland \
--version "$(WAYLAND_VERSION_MAJOR).$(WAYLAND_VERSION_MINOR)" \
--config $(builddir)/publican-copy.cfg
- $(AM_V_GEN)$(PUBLICAN) build --lang en-US --format html,pdf \
+ $(AM_V_GEN)$(PUBLICAN) build --quiet --lang en-US --format html,pdf \
--config $(builddir)/publican-copy.cfg
@touch Wayland
@@ -86,5 +97,6 @@
fi;
endif
+endif
EXTRA_DIST = $(publican_sources) publican.cfg protocol-to-docbook.xsl protocol-interfaces-to-docbook.xsl doxygen-to-publican.xsl
--- wayland-1.0.4.orig/doc/Wayland/doxygen-to-publican.xsl
+++ wayland-1.0.4/doc/Wayland/doxygen-to-publican.xsl
@@ -13,7 +13,7 @@
Client API
- Following is the Wayland library interface for clients
+ Following is the Wayland library classes for clients
(libwayland-client). Note that most of the
procedures are related with IPC, which is the main responsibility of
the library.
@@ -21,26 +21,52 @@
+
+
+
+
+ And methods for the respective classes.
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
--- wayland-1.0.4.orig/doc/Wayland/en_US/Architecture.xml
+++ wayland-1.0.4/doc/Wayland/en_US/Architecture.xml
@@ -263,8 +263,10 @@
that even if an application passes a new buffer to the
compositor, only a small part of the buffer may be
different, like a blinking cursor or a spinner.
- Hardware Enabling for Wayland
+
+
+ Hardware Enabling for Wayland
Typically, hardware enabling includes modesetting/display
and EGL/GLES2. On top of that Wayland needs a way to share
--- wayland-1.0.4.orig/doc/man/Makefile.am
+++ wayland-1.0.4/doc/man/Makefile.am
@@ -16,6 +16,7 @@
man_MANS =
if HAVE_XSLTPROC
+if HAVE_MANPAGES_STYLESHEET
CLEANFILES += $(MANPAGES) $(MANPAGES_ALIASES)
EXTRA_DIST += $(MANPAGES) $(MANPAGES_ALIASES) $(XML_FILES)
@@ -25,11 +26,12 @@
--stringparam man.authors.section.enabled 0 \
--stringparam man.copyright.section.enabled 0 \
--stringparam funcsynopsis.style ansi \
- --stringparam man.output.quietly 1
+ --stringparam man.output.quietly 1 \
+ --nonet
XSLTPROC_PROCESS_MAN = \
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
- $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< && \
+ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(MANPAGES_STYLESHEET) $< && \
$(SED) -i -e 's/^\.so \(.*\)\.\(.\)$$/\.so man\2\/\1\.\2/' $(MANPAGES_ALIASES)
%.1: %.xml
@@ -46,4 +48,5 @@
wl_display_connect_to_fd.3: wl_display_connect.3
+endif # HAVE_MANPAGES_STYLESHEET
endif # HAVE_XSLTPROC
--- wayland-1.0.4.orig/tests/event-loop-test.c
+++ wayland-1.0.4/tests/event-loop-test.c
@@ -1,5 +1,6 @@
/*
* Copyright © 2012 Intel Corporation
+ * Copyright © 2012 Jason Ekstrand
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
@@ -25,6 +26,7 @@
#include
#include
#include "wayland-server.h"
+#include "wayland-private.h"
#include "test-runner.h"
static int
@@ -43,14 +45,19 @@
struct wl_event_loop *loop = wl_event_loop_create();
struct wl_event_source *source;
int dispatch_ran = 0;
+ int p[2];
- source = wl_event_loop_add_fd(loop, 1, WL_EVENT_READABLE,
+ assert(pipe(p) == 0);
+
+ source = wl_event_loop_add_fd(loop, p[0], WL_EVENT_READABLE,
fd_dispatch, &dispatch_ran);
wl_event_source_check(source);
wl_event_loop_dispatch(loop, 0);
assert(dispatch_ran);
+ assert(close(p[0]) == 0);
+ assert(close(p[1]) == 0);
wl_event_source_remove(source);
wl_event_loop_destroy(loop);
}
@@ -185,3 +192,58 @@
wl_event_source_remove(source);
wl_event_loop_destroy(loop);
}
+
+struct event_loop_destroy_listener {
+ struct wl_listener listener;
+ int done;
+};
+
+static void
+event_loop_destroy_notify(struct wl_listener *l, void *data)
+{
+ struct event_loop_destroy_listener *listener =
+ container_of(l, struct event_loop_destroy_listener, listener);
+
+ listener->done = 1;
+}
+
+TEST(event_loop_destroy)
+{
+ struct wl_event_loop *loop;
+ struct wl_display * display;
+ struct event_loop_destroy_listener a, b;
+
+ loop = wl_event_loop_create();
+ assert(loop);
+
+ a.listener.notify = &event_loop_destroy_notify;
+ a.done = 0;
+ wl_event_loop_add_destroy_listener(loop, &a.listener);
+
+ assert(wl_event_loop_get_destroy_listener(loop,
+ event_loop_destroy_notify) == &a.listener);
+
+ b.listener.notify = &event_loop_destroy_notify;
+ b.done = 0;
+ wl_event_loop_add_destroy_listener(loop, &b.listener);
+
+ wl_list_remove(&a.listener.link);
+ wl_event_loop_destroy(loop);
+
+ assert(!a.done);
+ assert(b.done);
+
+ /* Test to make sure it gets fired on display destruction */
+ display = wl_display_create();
+ assert(display);
+ loop = wl_display_get_event_loop(display);
+ assert(loop);
+
+ a.done = 0;
+ wl_event_loop_add_destroy_listener(loop, &a.listener);
+
+ wl_display_destroy(display);
+
+ assert(a.done);
+}
+
--- wayland-1.0.4.orig/tests/display-test.c
+++ wayland-1.0.4/tests/display-test.c
@@ -0,0 +1,79 @@
+/*
+ * Copyright © 2012 Intel Corporation
+ * Copyright © 2013 Jason Ekstrand
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "wayland-server.h"
+#include "wayland-private.h"
+#include "test-runner.h"
+
+struct display_destroy_listener {
+ struct wl_listener listener;
+ int done;
+};
+
+static void
+display_destroy_notify(struct wl_listener *l, void *data)
+{
+ struct display_destroy_listener *listener;
+
+ listener = container_of(l, struct display_destroy_listener, listener);
+ listener->done = 1;
+}
+
+TEST(display_destroy_listener)
+{
+ struct wl_display *display;
+ struct display_destroy_listener a, b;
+
+ display = wl_display_create();
+ assert(display);
+
+ a.listener.notify = &display_destroy_notify;
+ a.done = 0;
+ wl_display_add_destroy_listener(display, &a.listener);
+
+ assert(wl_display_get_destroy_listener(display, display_destroy_notify) ==
+ &a.listener);
+
+ b.listener.notify = display_destroy_notify;
+ b.done = 0;
+ wl_display_add_destroy_listener(display, &b.listener);
+
+ wl_list_remove(&a.listener.link);
+
+ wl_display_destroy(display);
+
+ assert(!a.done);
+ assert(b.done);
+}
+
--- wayland-1.0.4.orig/tests/Makefile.am
+++ wayland-1.0.4/tests/Makefile.am
@@ -1,6 +1,7 @@
TESTS = \
array-test \
client-test \
+ display-test \
connection-test \
event-loop-test \
fixed-test \
@@ -8,7 +9,8 @@
map-test \
os-wrappers-test \
sanity-test \
- socket-test
+ socket-test \
+ queue-test
check_PROGRAMS = \
$(TESTS) \
@@ -21,6 +23,7 @@
array_test_SOURCES = array-test.c $(test_runner_src)
client_test_SOURCES = client-test.c $(test_runner_src)
+display_test_SOURCES = display-test.c $(test_runner_src)
connection_test_SOURCES = connection-test.c $(test_runner_src)
event_loop_test_SOURCES = event-loop-test.c $(test_runner_src)
fixed_test_SOURCES = fixed-test.c $(test_runner_src)
@@ -28,6 +31,7 @@
map_test_SOURCES = map-test.c $(test_runner_src)
sanity_test_SOURCES = sanity-test.c $(test_runner_src)
socket_test_SOURCES = socket-test.c $(test_runner_src)
+queue_test_SOURCES = queue-test.c $(test_runner_src)
fixed_benchmark_SOURCES = fixed-benchmark.c
--- wayland-1.0.4.orig/tests/connection-test.c
+++ wayland-1.0.4/tests/connection-test.c
@@ -425,7 +425,7 @@
TEST(connection_marshal_demarshal)
{
struct marshal_data data;
- char f[] = "/tmp/weston-tests-XXXXXX";
+ char f[] = "/tmp/wayland-tests-XXXXXX";
setup_marshal_data(&data);
@@ -447,6 +447,7 @@
data.value.h = mkstemp(f);
assert(data.value.h >= 0);
+ unlink(f);
marshal_demarshal(&data, (void *) validate_demarshal_h,
8, "h", data.value.h);
@@ -477,9 +478,10 @@
* for both regular data an fds. */
for (i = 0; i < 2000; i++) {
- strcpy(f, "/tmp/weston-tests-XXXXXX");
+ strcpy(f, "/tmp/wayland-tests-XXXXXX");
data.value.h = mkstemp(f);
assert(data.value.h >= 0);
+ unlink(f);
marshal_demarshal(&data, (void *) validate_demarshal_h,
8, "h", data.value.h);
}
--- wayland-1.0.4.orig/tests/queue-test.c
+++ wayland-1.0.4/tests/queue-test.c
@@ -0,0 +1,286 @@
+/*
+ * Copyright © 2012 Jonas Ådahl
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "wayland-client.h"
+#include "wayland-server.h"
+#include "test-runner.h"
+
+#define SOCKET_NAME "wayland-queue-test"
+
+#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
+
+#define client_assert(expr) \
+ do { \
+ if (!(expr)) { \
+ fprintf(stderr, "%s:%d: " \
+ "Assertion `%s' failed.\n", \
+ __FILE__, __LINE__, #expr); \
+ exit(EXIT_FAILURE); \
+ } \
+ } while (0)
+
+struct display {
+ struct wl_display *display;
+ int child_exit_status;
+};
+
+static void
+registry_handle_global(void *data, struct wl_registry *registry,
+ uint32_t id, const char *interface, uint32_t version)
+{
+ int *pcounter = data;
+ (*pcounter)++;
+ client_assert(*pcounter == 1);
+ wl_registry_destroy(registry);
+}
+
+static const struct wl_registry_listener registry_listener = {
+ registry_handle_global,
+ NULL
+};
+
+/* Test that destroying a proxy object doesn't result in any more
+ * callback being invoked, even though were many queued. */
+static int
+client_test_proxy_destroy(void)
+{
+ struct wl_display *display;
+ struct wl_registry *registry;
+ int counter = 0;
+
+ display = wl_display_connect(SOCKET_NAME);
+ client_assert(display);
+
+ registry = wl_display_get_registry(display);
+ wl_registry_add_listener(registry, ®istry_listener,
+ &counter);
+ wl_display_roundtrip(display);
+
+ client_assert(counter == 1);
+
+ wl_display_disconnect(display);
+
+ return 0;
+}
+
+struct multiple_queues_state {
+ struct wl_display *display;
+ struct wl_callback* callback2;
+ bool done;
+};
+
+static void
+sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
+{
+ struct multiple_queues_state *state = data;
+
+ state->done = true;
+ wl_callback_destroy(callback);
+
+ wl_display_dispatch_pending(state->display);
+
+ wl_callback_destroy(state->callback2);
+}
+
+static const struct wl_callback_listener sync_listener = {
+ sync_callback
+};
+
+/* Test that when receiving the first of two synchronization
+ * callback events, destroying the second one doesn't cause any
+ * errors even if the delete_id event is handled out of order. */
+static int
+client_test_multiple_queues(void)
+{
+ struct wl_event_queue *queue;
+ struct wl_callback *callback1;
+ struct multiple_queues_state state;
+ int ret = 0;
+
+ state.display = wl_display_connect(SOCKET_NAME);
+ client_assert(state.display);
+
+ /* Make the current thread the display thread. This is because
+ * wl_display_dispatch_queue() will only read the display fd if
+ * the main display thread has been set. */
+ wl_display_dispatch_pending(state.display);
+
+ queue = wl_display_create_queue(state.display);
+ client_assert(queue);
+
+ state.done = false;
+ callback1 = wl_display_sync(state.display);
+ wl_callback_add_listener(callback1, &sync_listener, &state);
+ wl_proxy_set_queue((struct wl_proxy *) callback1, queue);
+
+ state.callback2 = wl_display_sync(state.display);
+ wl_callback_add_listener(state.callback2, &sync_listener, NULL);
+ wl_proxy_set_queue((struct wl_proxy *) state.callback2, queue);
+
+ wl_display_flush(state.display);
+
+ while (!state.done && !ret)
+ ret = wl_display_dispatch_queue(state.display, queue);
+
+ wl_display_disconnect(state.display);
+
+ return ret == -1 ? -1 : 0;
+}
+
+static void
+client_alarm_handler(int sig)
+{
+ fprintf(stderr, "Received SIGALRM signal, aborting.\n");
+ exit(EXIT_FAILURE);
+}
+
+static void
+client_sigsegv_handler(int sig)
+{
+ fprintf(stderr, "Received SIGSEGV signal, aborting.\n");
+ exit(EXIT_FAILURE);
+}
+
+static int
+client_main(int fd)
+{
+ bool cont = false;
+
+ signal(SIGSEGV, client_sigsegv_handler);
+ signal(SIGALRM, client_alarm_handler);
+ alarm(2);
+
+ if (read(fd, &cont, sizeof cont) != 1) {
+ close(fd);
+ return EXIT_FAILURE;
+ }
+ close(fd);
+
+ if (!cont)
+ return EXIT_FAILURE;
+
+ if (client_test_proxy_destroy() != 0) {
+ fprintf(stderr, "proxy destroy test failed\n");
+ return EXIT_FAILURE;
+ }
+
+ if (client_test_multiple_queues() != 0) {
+ fprintf(stderr, "multiple proxy test failed\n");
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+static void
+dummy_bind(struct wl_client *client,
+ void *data, uint32_t version, uint32_t id)
+{
+}
+
+static int
+sigchld_handler(int signal_number, void *data)
+{
+ struct display *display = data;
+ int status;
+
+ waitpid(-1, &status, 0);
+ display->child_exit_status = WEXITSTATUS(status);
+
+ wl_display_terminate(display->display);
+
+ return 0;
+}
+
+static void
+signal_client(int fd, bool cont)
+{
+ int ret;
+
+ ret = write(fd, &cont, sizeof cont);
+ close(fd);
+ assert(ret == sizeof cont);
+}
+
+TEST(queue)
+{
+ struct display display;
+ struct wl_event_loop *loop;
+ struct wl_event_source *signal_source;
+ const struct wl_interface *dummy_interfaces[] = {
+ &wl_seat_interface,
+ &wl_pointer_interface,
+ &wl_keyboard_interface,
+ &wl_surface_interface
+ };
+ unsigned int i;
+ pid_t pid;
+ int fds[2];
+ int ret;
+
+ ret = pipe(fds);
+ assert(ret == 0);
+
+ pid = fork();
+ if (pid == -1) {
+ perror("fork");
+ exit(EXIT_FAILURE);
+ } else if (pid == 0) {
+ close(fds[1]);
+ exit(client_main(fds[0]));
+ }
+ close(fds[0]);
+
+ display.child_exit_status = EXIT_FAILURE;
+ display.display = wl_display_create();
+ if (!display.display) {
+ signal_client(fds[1], false);
+ abort();
+ }
+
+ for (i = 0; i < ARRAY_LENGTH(dummy_interfaces); i++)
+ wl_display_add_global(display.display, dummy_interfaces[i],
+ NULL, dummy_bind);
+
+ ret = wl_display_add_socket(display.display, SOCKET_NAME);
+ assert(ret == 0);
+
+ loop = wl_display_get_event_loop(display.display);
+ signal_source = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler,
+ &display);
+
+ signal_client(fds[1], true);
+ wl_display_run(display.display);
+
+ wl_event_source_remove(signal_source);
+ wl_display_destroy(display.display);
+
+ assert(display.child_exit_status == EXIT_SUCCESS);
+}
--- wayland-1.0.4.orig/cursor/wayland-cursor.pc.in
+++ wayland-1.0.4/cursor/wayland-cursor.pc.in
@@ -1,8 +1,8 @@
prefix=@prefix@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
Name: Wayland Cursor
Description: Wayland cursor helper library
Version: @WAYLAND_VERSION@
--- wayland-1.0.4.orig/debian/libwayland0.symbols
+++ wayland-1.0.4/debian/libwayland0.symbols
@@ -0,0 +1,183 @@
+libwayland-client.so.0 libwayland0 #MINVER#
+ wl_array_add@Base 1.0.2
+ wl_array_copy@Base 1.0.2
+ wl_array_init@Base 1.0.2
+ wl_array_release@Base 1.0.2
+ wl_buffer_interface@Base 1.0.2
+ wl_callback_interface@Base 1.0.2
+ wl_compositor_interface@Base 1.0.2
+ wl_data_device_interface@Base 1.0.2
+ wl_data_device_manager_interface@Base 1.0.2
+ wl_data_offer_interface@Base 1.0.2
+ wl_data_source_interface@Base 1.0.2
+ wl_display_connect@Base 1.0.2
+ wl_display_connect_to_fd@Base 1.0.2
+ wl_display_create_queue@Base 1.0.2
+ wl_display_disconnect@Base 1.0.2
+ wl_display_dispatch@Base 1.0.2
+ wl_display_dispatch_pending@Base 1.0.2
+ wl_display_dispatch_queue@Base 1.0.2
+ wl_display_dispatch_queue_pending@Base 1.0.2
+ wl_display_flush@Base 1.0.2
+ wl_display_get_error@Base 1.0.2
+ wl_display_get_fd@Base 1.0.2
+ wl_display_interface@Base 1.0.2
+ wl_display_roundtrip@Base 1.0.2
+ wl_event_queue_destroy@Base 1.0.2
+ wl_keyboard_interface@Base 1.0.2
+ wl_list_empty@Base 1.0.2
+ wl_list_init@Base 1.0.2
+ wl_list_insert@Base 1.0.2
+ wl_list_insert_list@Base 1.0.2
+ wl_list_length@Base 1.0.2
+ wl_list_remove@Base 1.0.2
+ wl_log_set_handler_client@Base 1.0.2
+ wl_map_for_each@Base 1.0.2
+ wl_map_init@Base 1.0.2
+ wl_map_insert_at@Base 1.0.2
+ wl_map_insert_new@Base 1.0.2
+ wl_map_lookup@Base 1.0.2
+ wl_map_release@Base 1.0.2
+ wl_map_remove@Base 1.0.2
+ wl_map_reserve_new@Base 1.0.2
+ wl_output_interface@Base 1.0.2
+ wl_pointer_interface@Base 1.0.2
+ wl_proxy_add_listener@Base 1.0.2
+ wl_proxy_create@Base 1.0.2
+ wl_proxy_destroy@Base 1.0.2
+ wl_proxy_get_id@Base 1.0.2
+ wl_proxy_get_user_data@Base 1.0.2
+ wl_proxy_marshal@Base 1.0.2
+ wl_proxy_set_queue@Base 1.0.2
+ wl_proxy_set_user_data@Base 1.0.2
+ wl_region_interface@Base 1.0.2
+ wl_registry_interface@Base 1.0.2
+ wl_seat_interface@Base 1.0.2
+ wl_shell_interface@Base 1.0.2
+ wl_shell_surface_interface@Base 1.0.2
+ wl_shm_interface@Base 1.0.2
+ wl_shm_pool_interface@Base 1.0.2
+ wl_surface_interface@Base 1.0.2
+ wl_touch_interface@Base 1.0.2
+
+libwayland-cursor.so.0 libwayland0 #MINVER#
+ wl_cursor_frame@Base 1.0.2
+ wl_cursor_image_get_buffer@Base 1.0.2
+ wl_cursor_theme_destroy@Base 1.0.2
+ wl_cursor_theme_get_cursor@Base 1.0.2
+ wl_cursor_theme_load@Base 1.0.2
+
+libwayland-server.so.0 libwayland0 #MINVER#
+ wl_array_add@Base 1.0.2
+ wl_array_copy@Base 1.0.2
+ wl_array_init@Base 1.0.2
+ wl_array_release@Base 1.0.2
+ wl_buffer_interface@Base 1.0.2
+ wl_buffer_is_shm@Base 1.0.2
+ wl_callback_interface@Base 1.0.2
+ wl_client_add_destroy_listener@Base 1.0.2
+ wl_client_add_object@Base 1.0.2
+ wl_client_add_resource@Base 1.0.2
+ wl_client_create@Base 1.0.2
+ wl_client_destroy@Base 1.0.2
+ wl_client_flush@Base 1.0.2
+ wl_client_get_credentials@Base 1.0.2
+ wl_client_get_destroy_listener@Base 1.0.2
+ wl_client_get_display@Base 1.0.2
+ wl_client_get_object@Base 1.0.2
+ wl_client_new_object@Base 1.0.2
+ wl_compositor_interface@Base 1.0.2
+ wl_data_device_interface@Base 1.0.2
+ wl_data_device_manager_init@Base 1.0.2
+ wl_data_device_manager_interface@Base 1.0.2
+ wl_data_device_set_keyboard_focus@Base 1.0.2
+ wl_data_offer_interface@Base 1.0.2
+ wl_data_source_interface@Base 1.0.2
+ wl_display_add_destroy_listener@Base 1.0.4
+ wl_display_add_global@Base 1.0.2
+ wl_display_add_socket@Base 1.0.2
+ wl_display_create@Base 1.0.2
+ wl_display_destroy@Base 1.0.2
+ wl_display_flush_clients@Base 1.0.2
+ wl_display_get_destroy_listener@Base 1.0.4
+ wl_display_get_event_loop@Base 1.0.2
+ wl_display_get_serial@Base 1.0.2
+ wl_display_init_shm@Base 1.0.2
+ wl_display_interface@Base 1.0.2
+ wl_display_next_serial@Base 1.0.2
+ wl_display_remove_global@Base 1.0.2
+ wl_display_run@Base 1.0.2
+ wl_display_terminate@Base 1.0.2
+ wl_event_loop_add_destroy_listener@Base 1.0.4
+ wl_event_loop_add_fd@Base 1.0.2
+ wl_event_loop_add_idle@Base 1.0.2
+ wl_event_loop_add_signal@Base 1.0.2
+ wl_event_loop_add_timer@Base 1.0.2
+ wl_event_loop_create@Base 1.0.2
+ wl_event_loop_destroy@Base 1.0.2
+ wl_event_loop_dispatch@Base 1.0.2
+ wl_event_loop_dispatch_idle@Base 1.0.2
+ wl_event_loop_get_destroy_listener@Base 1.0.4
+ wl_event_loop_get_fd@Base 1.0.2
+ wl_event_source_check@Base 1.0.2
+ wl_event_source_fd_update@Base 1.0.2
+ wl_event_source_remove@Base 1.0.2
+ wl_event_source_timer_update@Base 1.0.2
+ wl_keyboard_end_grab@Base 1.0.2
+ wl_keyboard_init@Base 1.0.2
+ wl_keyboard_interface@Base 1.0.2
+ wl_keyboard_release@Base 1.0.2
+ wl_keyboard_set_focus@Base 1.0.2
+ wl_keyboard_start_grab@Base 1.0.2
+ wl_list_empty@Base 1.0.2
+ wl_list_init@Base 1.0.2
+ wl_list_insert@Base 1.0.2
+ wl_list_insert_list@Base 1.0.2
+ wl_list_length@Base 1.0.2
+ wl_list_remove@Base 1.0.2
+ wl_log_set_handler_server@Base 1.0.2
+ wl_map_for_each@Base 1.0.2
+ wl_map_init@Base 1.0.2
+ wl_map_insert_at@Base 1.0.2
+ wl_map_insert_new@Base 1.0.2
+ wl_map_lookup@Base 1.0.2
+ wl_map_release@Base 1.0.2
+ wl_map_remove@Base 1.0.2
+ wl_map_reserve_new@Base 1.0.2
+ wl_output_interface@Base 1.0.2
+ wl_pointer_end_grab@Base 1.0.2
+ wl_pointer_init@Base 1.0.2
+ wl_pointer_interface@Base 1.0.2
+ wl_pointer_release@Base 1.0.2
+ wl_pointer_set_focus@Base 1.0.2
+ wl_pointer_start_grab@Base 1.0.2
+ wl_region_interface@Base 1.0.2
+ wl_registry_interface@Base 1.0.2
+ wl_resource_destroy@Base 1.0.2
+ wl_resource_post_error@Base 1.0.2
+ wl_resource_post_event@Base 1.0.2
+ wl_resource_post_no_memory@Base 1.0.2
+ wl_resource_queue_event@Base 1.0.2
+ wl_seat_init@Base 1.0.2
+ wl_seat_interface@Base 1.0.2
+ wl_seat_release@Base 1.0.2
+ wl_seat_set_keyboard@Base 1.0.2
+ wl_seat_set_pointer@Base 1.0.2
+ wl_seat_set_selection@Base 1.0.2
+ wl_seat_set_touch@Base 1.0.2
+ wl_shell_interface@Base 1.0.2
+ wl_shell_surface_interface@Base 1.0.2
+ wl_shm_buffer_create@Base 1.0.2
+ wl_shm_buffer_get_data@Base 1.0.2
+ wl_shm_buffer_get_format@Base 1.0.2
+ wl_shm_buffer_get_height@Base 1.0.2
+ wl_shm_buffer_get_stride@Base 1.0.2
+ wl_shm_buffer_get_width@Base 1.0.2
+ wl_shm_interface@Base 1.0.2
+ wl_shm_pool_interface@Base 1.0.2
+ wl_surface_interface@Base 1.0.2
+ wl_touch_end_grab@Base 1.0.2
+ wl_touch_init@Base 1.0.2
+ wl_touch_interface@Base 1.0.2
+ wl_touch_release@Base 1.0.2
+ wl_touch_start_grab@Base 1.0.2
--- wayland-1.0.4.orig/debian/libwayland0.install
+++ wayland-1.0.4/debian/libwayland0.install
@@ -0,0 +1,4 @@
+# Be careful with wildcards to ensure we spot any ABI bump:
+usr/lib/*/libwayland-client.so.0*
+usr/lib/*/libwayland-cursor.so.0*
+usr/lib/*/libwayland-server.so.0*
--- wayland-1.0.4.orig/debian/control
+++ wayland-1.0.4/debian/control
@@ -0,0 +1,79 @@
+Source: wayland
+Section: x11
+Priority: optional
+Maintainer: Ubuntu X-SWAT
+XSBC-Original-Maintainer: Debian X Strike Force
+Uploaders: Cyril Brulebois
+Build-Depends:
+ debhelper (>= 9),
+ quilt,
+ dh-autoreconf,
+ pkg-config,
+ doxygen,
+ xsltproc,
+ docbook-xsl,
+ libexpat1-dev,
+ libffi-dev,
+Standards-Version: 3.9.4
+Vcs-Git: git://git.debian.org/git/pkg-xorg/wayland/wayland
+Vcs-Browser: http://git.debian.org/?p=pkg-xorg/wayland/wayland.git
+Homepage: http://wayland.freedesktop.org/
+
+Package: libwayland0
+Section: libs
+Architecture: any
+Pre-Depends: ${misc:Pre-Depends}
+Multi-Arch: same
+Depends:
+ ${shlibs:Depends},
+ ${misc:Depends},
+Description: wayland compositor infrastructure - shared libraries
+ Wayland is a protocol for a compositor to talk to its clients as well
+ as a C library implementation of that protocol. The compositor can be
+ a standalone display server running on Linux kernel modesetting and
+ evdev input devices, an X application, or a wayland client
+ itself. The clients can be traditional applications, X servers
+ (rootless or fullscreen) or other display servers.
+ .
+ This is an experimental library package, neither ABI or API are fixed
+ right now. As a consequence, generated dependencies are made as
+ strict as possible. It should only be used by mesa and weston for
+ the time being.
+
+Package: libwayland0-dbg
+Section: debug
+Priority: extra
+Architecture: any
+Depends:
+ libwayland0 (= ${binary:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+Description: wayland compositor infrastructure - shared libraries (debug)
+ Wayland is a protocol for a compositor to talk to its clients as well
+ as a C library implementation of that protocol. The compositor can be
+ a standalone display server running on Linux kernel modesetting and
+ evdev input devices, an X application, or a wayland client
+ itself. The clients can be traditional applications, X servers
+ (rootless or fullscreen) or other display servers.
+ .
+ This package contains the debug version of the libraries found in
+ libwayland0. Non-developers likely have little use for this package.
+
+Package: libwayland-dev
+Section: libdevel
+Architecture: any
+Priority: extra
+Depends:
+ libwayland0 (= ${binary:Version}),
+ ${shlibs:Depends},
+ ${misc:Depends},
+Description: wayland compositor infrastructure - development files
+ Wayland is a protocol for a compositor to talk to its clients as well
+ as a C library implementation of that protocol. The compositor can be
+ a standalone display server running on Linux kernel modesetting and
+ evdev input devices, an X application, or a wayland client
+ itself. The clients can be traditional applications, X servers
+ (rootless or fullscreen) or other display servers.
+ .
+ This package contains the development headers for the libraries found
+ in libwayland0. Non-developers likely have little use for this package.
--- wayland-1.0.4.orig/debian/gbp.conf
+++ wayland-1.0.4/debian/gbp.conf
@@ -0,0 +1,5 @@
+[DEFAULT]
+upstream-branch=upstream-ubuntu
+debian-branch=ubuntu
+pristine-tar=true
+debian-tag=ubuntu/%(version)s
--- wayland-1.0.4.orig/debian/changelog
+++ wayland-1.0.4/debian/changelog
@@ -0,0 +1,273 @@
+wayland (1.0.4-0ubuntu1) raring; urgency=low
+
+ * Merge from unreleased debian git.
+ - new upstream release
+
+ -- Timo Aaltonen Fri, 01 Feb 2013 19:05:50 +0200
+
+wayland (1.0.4-1) UNRELEASED; urgency=low
+
+ [ Robert Ancell ]
+ * debian/libwayland-dev.install:
+ - Install development man pages
+ * debian/control:
+ - Build-depend on doxygen
+ - Build-depend on xsltproc
+
+ [ Timo Aaltonen ]
+ * New upstream release.
+ * Migrate to multiarch (Closes: #690081).
+ * copyright: Refresh.
+ * control: Update Standards-Version to 3.9.4, no changes.
+ * rules: Make it non-fatal to fail the tests, which don't all succeed
+ when ran in headless mode.
+ * rules: Drop the creation of hard dependencies, wayland should be
+ mostly API stable now.
+ * rules: Drop dh_auto_install override. dh_auto_install automatically
+ installs to debian/tmp whenever there are multiple binary packages.
+ * libwayland*.install: Add missing files.
+ * rules: Temporarily disable installing the protocol docs, decide where
+ to put them first.
+ * Add README.source
+
+ [ Sven Joachim ]
+ * Update symbols file, bumping minver of all symbols to at least 1.0.2.
+ * Add docbook-xsl to Build-Depends.
+ * Add Homepage field to debian/control.
+ * Update debian/copyright.
+
+ -- Timo Aaltonen Thu, 16 Aug 2012 13:04:41 +0300
+
+wayland (1.0.3-0ubuntu2) raring; urgency=low
+
+ * debian/control:
+ - Build-depend on docbook-xsl
+ - Use standards-version 3.9.4
+
+ -- Robert Ancell Thu, 10 Jan 2013 10:31:46 +1300
+
+wayland (1.0.3-0ubuntu1) raring; urgency=low
+
+ * New upstream release
+
+ -- Robert Ancell Thu, 10 Jan 2013 10:13:22 +1300
+
+wayland (1.0.2-0ubuntu2) raring; urgency=low
+
+ * debian/libwayland0.install:
+ - Fix library path
+
+ -- Robert Ancell Mon, 03 Dec 2012 18:07:04 +1300
+
+wayland (1.0.2-0ubuntu1) raring; urgency=low
+
+ * New upstream release
+
+ -- Robert Ancell Mon, 03 Dec 2012 15:34:32 +1300
+
+wayland (1.0.1-0ubuntu1) raring; urgency=low
+
+ * New upstream release
+
+ -- Robert Ancell Thu, 22 Nov 2012 10:14:02 +1300
+
+wayland (1.0.0-0ubuntu3) raring; urgency=low
+
+ * debian/control:
+ - Build-depend on xsltproc
+
+ -- Robert Ancell Fri, 16 Nov 2012 12:05:28 +1300
+
+wayland (1.0.0-0ubuntu2) raring; urgency=low
+
+ * debian/control:
+ - Build-depend on doxygen
+
+ -- Robert Ancell Fri, 16 Nov 2012 11:41:07 +1300
+
+wayland (1.0.0-0ubuntu1) raring; urgency=low
+
+ * New upstream release
+ * debian/libwayland-dev.install:
+ - Install development man pages
+
+ -- Robert Ancell Fri, 16 Nov 2012 10:07:08 +1300
+
+wayland (0.95.0-0ubuntu1) quantal; urgency=low
+
+ * Merge from unreleased debian git, remaining changes
+ - debian/gbp.conf:
+ Point to ubuntu and upstream-ubuntu branches; use pristine-tar
+ - debian/rules:
+ Switch the gentarball target to generate tarball from upstream-ubuntu.
+ * Drop lintian overrides, get more in sync with the Debian packaging.
+ * Drop Replaces/Conflicts against the old package names, not needed
+ anymore.
+
+ -- Timo Aaltonen Thu, 16 Aug 2012 14:52:50 +0300
+
+wayland (0.85.0-2) unstable; urgency=low
+
+ * Upload to unstable.
+ * Wayland/Weston aren't quite ready to replace Xorg yet, but let's
+ upload those to unstable anyway, so that people can find out by
+ themselves. On the plus side, mesa can stop getting wayland support
+ enabled in experimental, then disabled back when uploaded to unstable.
+ * Update long description, wayland-demos got replaced by weston.
+
+ -- Cyril Brulebois Sun, 29 Apr 2012 22:34:18 +0200
+
+wayland (0.85.0-1ubuntu2) precise; urgency=low
+
+ * rules: Drop the creation of hard dependencies, wayland should be
+ (almost) API stable now.
+
+ -- Timo Aaltonen Sat, 17 Mar 2012 18:05:55 +0200
+
+wayland (0.85.0-1ubuntu1) precise; urgency=low
+
+ * Merge from Debian experimental. For the remaining changes see
+ the changelog entry from 0.1.0~2-1ubuntu1.
+ * Drop COPYING.GPL-2, the project uses MIT/X11 license for the most
+ part, the rest is explained in debian/copyright.
+
+ -- Timo Aaltonen Thu, 23 Feb 2012 11:55:38 +0200
+
+wayland (0.85.0-1) experimental; urgency=low
+
+ * First upstream release:
+ - http://article.gmane.org/gmane.comp.freedesktop.wayland.devel/1770
+ * Update watch file, even if that's only useful for notifications:
+ upstream releases xz tarballs, and the 1.0 source format only suports
+ gz.
+
+ -- Cyril Brulebois Fri, 10 Feb 2012 11:51:36 +0100
+
+wayland (0.1.0~2-1ubuntu1) precise; urgency=low
+
+ * Merge from debian-experimental. Changes:
+ * debian/rules:
+ - Switch the gentarball target to generate tarball from upstream-ubuntu.
+ * debian/control:
+ * debian/libwayland0.install:
+ * debian/libwayland-dev.install:
+ * debian/compat:
+ - Switch to compat 9 and build for multiarch.
+ * debian/source.lintian-overrides:
+ - Silence lintian's warning that compat 9 is subject to change. We know.
+ * debian/wayland.lintian-overrides:
+ - Rename to libwayland0.lintian-overrides and fix contents to refer to
+ the actual package these overrides apply to. Package-name-is-not-SONAME
+ warning is now successfully suppressed.
+ * debian/rules:
+ - Drop dh_auto_install override. dh_auto_install automatically installs to
+ debian/tmp whenever there are multiple binary packages.
+ * debian/gbp.conf:
+ - Point to ubuntu and upstream-ubuntu branches; use pristine-tar
+ * Add COPYING.GPL-2 to satisfy the final requirement for main inclusion.
+
+ -- Robert Hooker Mon, 30 Jan 2012 18:11:15 -0500
+
+wayland (0.1.0~2-1) experimental; urgency=low
+
+ * New upstream snapshot.
+ * Update symbols file.
+
+ -- Cyril Brulebois Mon, 30 Jan 2012 22:37:54 +0100
+
+wayland (0.1.0~1-1) experimental; urgency=low
+
+ * New upstream snapshot.
+ * Update symbols file.
+
+ -- Cyril Brulebois Fri, 23 Dec 2011 14:45:10 +0100
+
+wayland (0.1.0~0.2-0ubuntu3) oneiric; urgency=low
+
+ * debian/control:
+ - libwayland should be Arch:any. There's no reason it can't work on PPC,
+ and this means I don't have to special-case mesa for !armel !i386 !amd64.
+
+ -- Christopher James Halse Rogers Mon, 08 Aug 2011 17:22:14 +1000
+
+wayland (0.1.0~0.2-0ubuntu2) oneiric; urgency=low
+
+ * Add COPYING.GPL-2 to satisfy the final requirement for main inclusion.
+
+ -- Christopher James Halse Rogers Fri, 05 Aug 2011 16:34:55 +1000
+
+wayland (0.1.0~0.2-0ubuntu1) oneiric; urgency=low
+
+ * Update to newer snapshot, to eb13ae17 from July 27, 2011
+ * debian/rules:
+ - Switch the gentarball target to generate tarball from upstream-ubuntu.
+ * debian/libwayland0.symbols:
+ - Add extra symbols in new snapshot.
+ * debian/control:
+ * debian/libwayland0.install:
+ * debian/libwayland-dev.install:
+ * debian/compat:
+ - Switch to compat 9 and build for multiarch.
+ * debian/source.lintian-overrides:
+ - Silence lintian's warning that compat 9 is subject to change. We know.
+ * debian/wayland.lintian-overrides:
+ - Rename to libwayland0.lintian-overrides and fix contents to refer to
+ the actual package these overrides apply to. Package-name-is-not-SONAME
+ warning is now successfully suppressed.
+ * debian/rules:
+ - Drop dh_auto_install override. dh_auto_install automatically installs to
+ debian/tmp whenever there are multiple binary packages.
+ * debian/gbp.conf:
+ - Point to ubuntu and upstream-ubuntu branches; use pristine-tar
+
+ -- Christopher James Halse Rogers Thu, 04 Aug 2011 16:45:00 +1000
+
+wayland (0.1.0~0.1-0ubuntu1) oneiric; urgency=low
+
+ * Update to newer upstream snapshot aa7bbb21 from June 29, 2011
+ - Patch a56c0455 "Add busy_count and client parameter to wl_buffer"
+ (at least) is required by Ubuntu's 7.11 mesa snapshot.
+ - Other changes flesh out wayland protocol definition,
+ wl_display_remove_global, and a handful of other fixes.
+
+ -- Bryce Harrington Wed, 13 Jul 2011 17:51:02 -0700
+
+wayland (0.1.0~0-1ubuntu3) oneiric; urgency=low
+
+ * wayland.lintian-overrides: libwayland-client and libwayland-server are
+ shipped in a single lib package and share the same soname.
+
+ -- Bryce Harrington Wed, 13 Jul 2011 11:40:09 -0700
+
+wayland (0.1.0~0-1ubuntu2) oneiric; urgency=low
+
+ * control: Limit architecture to amd64, i386, and armel.
+
+ -- Bryce Harrington Tue, 12 Jul 2011 17:23:07 -0700
+
+wayland (0.1.0~0-1ubuntu1) oneiric; urgency=low
+
+ * Merge with Debian (experimental) packaging.
+ - Update to newer snapshot, to 98d8256b from June 10, 2011.
+ (LP: #729614, #733889)
+ - Splits out demos to separate package
+ (LP: #793399)
+ - control: Provide client and server libs together in libwayland0
+ binary package. Use shorter dependencies list. New package
+ descriptions.
+ * Remaining Ubuntu changes:
+ - control: Replaces/Conflicts on previous binary names
+ - control: Include wayland homepage
+ - copyright: dep5 metadata
+ - libwayland0.symbols.in: omit blank line (dpkg-gensymbols warning)
+
+ -- Bryce Harrington Tue, 12 Jul 2011 12:41:44 -0700
+
+wayland (0.1.0~0-1) experimental; urgency=low
+
+ * Initial release (Closes: #611400).
+ * debian/rules contains a gentarball target to create a tarball from the
+ upstream-experimental branch, to be used until some upstream release
+ happens.
+
+ -- Cyril Brulebois Sat, 18 Jun 2011 13:38:40 +0200
--- wayland-1.0.4.orig/debian/rules
+++ wayland-1.0.4/debian/rules
@@ -0,0 +1,28 @@
+#!/usr/bin/make -f
+
+SOURCE=wayland
+PACKAGE=libwayland0
+
+# Kill *.la files, and forget no-one:
+override_dh_install:
+ find debian/tmp -name '*.la' -delete
+ dh_install --fail-missing
+
+override_dh_makeshlibs:
+ dh_makeshlibs -V '$(PACKAGE) (>= 1.0.4)' -- -c4
+
+# Debug package:
+override_dh_strip:
+ dh_strip --dbg-package=$(PACKAGE)-dbg
+
+override_dh_auto_test:
+ # the test suite does not pass completely in headless mode
+ dh_auto_test || true
+
+%:
+ dh $@ --with quilt,autoreconf --builddirectory=build/
+
+# For maintainer use only, generate a tarball:
+gentarball: UV=$(shell dpkg-parsechangelog|awk '/^Version:/ {print $$2}'|sed 's/-.*$$//')
+gentarball:
+ git archive --format=tar upstream-ubuntu --prefix=$(SOURCE)-$(UV)/ | gzip -9 > ../$(SOURCE)_$(UV).orig.tar.gz
--- wayland-1.0.4.orig/debian/README.source
+++ wayland-1.0.4/debian/README.source
@@ -0,0 +1,58 @@
+This package uses quilt to manage all modifications to the upstream
+source. Changes are stored in the source package as diffs in
+debian/patches and applied during the build.
+
+To configure quilt to use debian/patches instead of patches, you want
+either to export QUILT_PATCHES=debian/patches in your environment
+or use this snippet in your ~/.quiltrc:
+
+ for where in ./ ../ ../../ ../../../ ../../../../ ../../../../../; do
+ if [ -e ${where}debian/rules -a -d ${where}debian/patches ]; then
+ export QUILT_PATCHES=debian/patches
+ break
+ fi
+ done
+
+To get the fully patched source after unpacking the source package, cd to
+the root level of the source package and run:
+
+ quilt push -a
+
+The last patch listed in debian/patches/series will become the current
+patch.
+
+To add a new set of changes, first run quilt push -a, and then run:
+
+ quilt new
+
+where is a descriptive name for the patch, used as the filename in
+debian/patches. Then, for every file that will be modified by this patch,
+run:
+
+ quilt add
+
+before editing those files. You must tell quilt with quilt add what files
+will be part of the patch before making changes or quilt will not work
+properly. After editing the files, run:
+
+ quilt refresh
+
+to save the results as a patch.
+
+Alternately, if you already have an external patch and you just want to
+add it to the build system, run quilt push -a and then:
+
+ quilt import -P /path/to/patch
+ quilt push -a
+
+(add -p 0 to quilt import if needed). as above is the filename to
+use in debian/patches. The last quilt push -a will apply the patch to
+make sure it works properly.
+
+To remove an existing patch from the list of patches that will be applied,
+run:
+
+ quilt delete
+
+You may need to run quilt pop -a to unapply patches first before running
+this command.
--- wayland-1.0.4.orig/debian/compat
+++ wayland-1.0.4/debian/compat
@@ -0,0 +1 @@
+9
--- wayland-1.0.4.orig/debian/watch
+++ wayland-1.0.4/debian/watch
@@ -0,0 +1,3 @@
+#git=git://anongit.freedesktop.org/wayland/wayland
+version=3
+http://wayland.freedesktop.org/releases/wayland-(.*)\.tar\.xz
--- wayland-1.0.4.orig/debian/copyright
+++ wayland-1.0.4/debian/copyright
@@ -0,0 +1,36 @@
+Upstream-Name: wayland
+Upstream-Contact: Kristian Høgsberg
+Source: http://wayland.freedesktop.org/releases/
+
+Files: debian/*
+Copyright: © 2011 Cyril Brulebois
+License: X11
+
+Files: *
+Copyright: © 2008-2012 Kristian Høgsberg
+ © 2010-2012 Intel Corporation
+ © 2011 Benjamin Franzke
+ © 2012 Collabora, Ltd.
+ © 2012 Jonas Ådahl
+ © 2002 Keith Packard
+ © 1999 SuSE, Inc.
+License: X11
+
+License: X11
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting documentation, and
+ that the name of the copyright holders not be used in advertising or
+ publicity pertaining to distribution of the software without specific,
+ written prior permission. The copyright holders make no representations
+ about the suitability of this software for any purpose. It is provided "as
+ is" without express or implied warranty.
+ .
+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ OF THIS SOFTWARE.
--- wayland-1.0.4.orig/debian/libwayland-dev.install
+++ wayland-1.0.4/debian/libwayland-dev.install
@@ -0,0 +1,21 @@
+# Tool to build various other packages:
+usr/bin/wayland-scanner
+
+# Headers:
+usr/include
+
+# Man pages
+usr/share/man/man3
+
+# Use no wildcards to ensure we spot any update:
+usr/lib/*/libwayland-client.a
+usr/lib/*/libwayland-client.so
+usr/lib/*/libwayland-cursor.a
+usr/lib/*/libwayland-cursor.so
+usr/lib/*/libwayland-server.a
+usr/lib/*/libwayland-server.so
+usr/lib/*/pkgconfig/wayland-client.pc
+usr/lib/*/pkgconfig/wayland-cursor.pc
+usr/lib/*/pkgconfig/wayland-server.pc
+usr/share/aclocal/wayland-scanner.m4
+usr/share/aclocal/wayland-scanner.mk
--- wayland-1.0.4.orig/debian/patches/series
+++ wayland-1.0.4/debian/patches/series
@@ -0,0 +1 @@
+# placeholder.
--- wayland-1.0.4.orig/src/event-loop.c
+++ wayland-1.0.4/src/event-loop.c
@@ -43,6 +43,8 @@
struct wl_list check_list;
struct wl_list idle_list;
struct wl_list destroy_list;
+
+ struct wl_signal destroy_signal;
};
struct wl_event_source_interface {
@@ -357,12 +359,16 @@
wl_list_init(&loop->idle_list);
wl_list_init(&loop->destroy_list);
+ wl_signal_init(&loop->destroy_signal);
+
return loop;
}
WL_EXPORT void
wl_event_loop_destroy(struct wl_event_loop *loop)
{
+ wl_signal_emit(&loop->destroy_signal, loop);
+
wl_event_loop_process_destroy_list(loop);
close(loop->epoll_fd);
free(loop);
@@ -429,3 +435,18 @@
{
return loop->epoll_fd;
}
+
+WL_EXPORT void
+wl_event_loop_add_destroy_listener(struct wl_event_loop *loop,
+ struct wl_listener *listener)
+{
+ wl_signal_add(&loop->destroy_signal, listener);
+}
+
+WL_EXPORT struct wl_listener *
+wl_event_loop_get_destroy_listener(struct wl_event_loop *loop,
+ wl_notify_func_t notify)
+{
+ return wl_signal_get(&loop->destroy_signal, notify);
+}
+
--- wayland-1.0.4.orig/src/wayland-client.pc.in
+++ wayland-1.0.4/src/wayland-client.pc.in
@@ -1,8 +1,8 @@
prefix=@prefix@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
Name: Wayland Client
Description: Wayland client side library
Version: @WAYLAND_VERSION@
--- wayland-1.0.4.orig/src/Makefile.am
+++ wayland-1.0.4/src/Makefile.am
@@ -27,6 +27,7 @@
event-loop.c
libwayland_client_la_LIBADD = $(FFI_LIBS) libwayland-util.la -lrt -lm
+libwayland_client_la_LDFLAGS = -version-info 1:0:1
libwayland_client_la_SOURCES = \
wayland-protocol.c \
wayland-client.c
--- wayland-1.0.4.orig/src/wayland-server.c
+++ wayland-1.0.4/src/wayland-server.c
@@ -90,6 +90,8 @@
struct wl_list global_list;
struct wl_list socket_list;
struct wl_list client_list;
+
+ struct wl_signal destroy_signal;
};
struct wl_global {
@@ -1078,7 +1080,7 @@
const char *debug;
debug = getenv("WAYLAND_DEBUG");
- if (debug)
+ if (debug && (strstr(debug, "server") || strstr(debug, "1")))
wl_debug = 1;
display = malloc(sizeof *display);
@@ -1096,6 +1098,8 @@
wl_list_init(&display->client_list);
wl_list_init(&display->registry_resource_list);
+ wl_signal_init(&display->destroy_signal);
+
display->id = 1;
display->serial = 0;
@@ -1115,6 +1119,8 @@
struct wl_socket *s, *next;
struct wl_global *global, *gnext;
+ wl_signal_emit(&display->destroy_signal, display);
+
wl_list_for_each_safe(s, next, &display->socket_list, link) {
wl_event_source_remove(s->source);
unlink(s->addr.sun_path);
@@ -1381,6 +1387,20 @@
return 0;
}
+WL_EXPORT void
+wl_display_add_destroy_listener(struct wl_display *display,
+ struct wl_listener *listener)
+{
+ wl_signal_add(&display->destroy_signal, listener);
+}
+
+WL_EXPORT struct wl_listener *
+wl_display_get_destroy_listener(struct wl_display *display,
+ wl_notify_func_t notify)
+{
+ return wl_signal_get(&display->destroy_signal, notify);
+}
+
WL_EXPORT struct wl_resource *
wl_client_add_object(struct wl_client *client,
const struct wl_interface *interface,
--- wayland-1.0.4.orig/src/wayland-server.pc.in
+++ wayland-1.0.4/src/wayland-server.pc.in
@@ -1,8 +1,8 @@
prefix=@prefix@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
Name: Wayland Server
Description: Server side implementation of the Wayland protocol
Version: @WAYLAND_VERSION@
--- wayland-1.0.4.orig/src/wayland-client.c
+++ wayland-1.0.4/src/wayland-client.c
@@ -45,11 +45,17 @@
/** \cond */
+enum wl_proxy_flag {
+ WL_PROXY_FLAG_ID_DELETED = (1 << 0),
+ WL_PROXY_FLAG_DESTROYED = (1 << 1)
+};
+
struct wl_proxy {
struct wl_object object;
struct wl_display *display;
struct wl_event_queue *queue;
- int id_deleted;
+ uint32_t flags;
+ int refcount;
void *user_data;
};
@@ -216,7 +222,8 @@
proxy->object.implementation = NULL;
proxy->display = display;
proxy->queue = factory->queue;
- proxy->id_deleted = 0;
+ proxy->flags = 0;
+ proxy->refcount = 1;
pthread_mutex_lock(&display->mutex);
proxy->object.id = wl_map_insert_new(&display->objects,
@@ -243,7 +250,8 @@
proxy->object.id = id;
proxy->display = display;
proxy->queue = factory->queue;
- proxy->id_deleted = 0;
+ proxy->flags = 0;
+ proxy->refcount = 1;
wl_map_insert_at(&display->objects, id, proxy);
@@ -259,9 +267,11 @@
WL_EXPORT void
wl_proxy_destroy(struct wl_proxy *proxy)
{
- pthread_mutex_lock(&proxy->display->mutex);
+ struct wl_display *display = proxy->display;
+
+ pthread_mutex_lock(&display->mutex);
- if (proxy->id_deleted)
+ if (proxy->flags & WL_PROXY_FLAG_ID_DELETED)
wl_map_remove(&proxy->display->objects, proxy->object.id);
else if (proxy->object.id < WL_SERVER_ID_START)
wl_map_insert_at(&proxy->display->objects,
@@ -270,9 +280,14 @@
wl_map_insert_at(&proxy->display->objects,
proxy->object.id, NULL);
- pthread_mutex_unlock(&proxy->display->mutex);
- free(proxy);
+ proxy->flags |= WL_PROXY_FLAG_DESTROYED;
+
+ proxy->refcount--;
+ if (!proxy->refcount)
+ free(proxy);
+
+ pthread_mutex_unlock(&display->mutex);
}
/** Set a proxy's listener
@@ -283,11 +298,11 @@
* \return 0 on success or -1 on failure
*
* Set proxy's listener to \c implementation and its user data to
- * \c data. Ifa listener has already been set, this functions
+ * \c data. If a listener has already been set, this function
* fails and nothing is changed.
*
* \c implementation is a vector of function pointers. For an opcode
- * \c n, \c implemention[n] should point to the handler of \c n for
+ * \c n, \c implementation[n] should point to the handler of \c n for
* the given object.
*
* \memberof wl_proxy
@@ -401,7 +416,7 @@
proxy = wl_map_lookup(&display->objects, id);
if (proxy != WL_ZOMBIE_OBJECT)
- proxy->id_deleted = 1;
+ proxy->flags |= WL_PROXY_FLAG_ID_DELETED;
else
wl_map_remove(&display->objects, id);
@@ -487,7 +502,7 @@
const char *debug;
debug = getenv("WAYLAND_DEBUG");
- if (debug)
+ if (debug && (strstr(debug, "client") || strstr(debug, "1")))
wl_debug = 1;
display = malloc(sizeof *display);
@@ -514,6 +529,8 @@
display->proxy.object.implementation = (void(**)(void)) &display_listener;
display->proxy.user_data = display;
display->proxy.queue = &display->queue;
+ display->proxy.flags = 0;
+ display->proxy.refcount = 1;
display->connection = wl_connection_create(display->fd);
if (display->connection == NULL) {
@@ -632,9 +649,12 @@
done = 0;
callback = wl_display_sync(display);
wl_callback_add_listener(callback, &sync_listener, &done);
- while (!done && !ret)
+ while (!done && ret >= 0)
ret = wl_display_dispatch(display);
+ if (ret == -1 && !done)
+ wl_callback_destroy(callback);
+
return ret;
}
@@ -673,6 +693,31 @@
return 0;
}
+static void
+increase_closure_args_refcount(struct wl_closure *closure)
+{
+ const char *signature;
+ struct argument_details arg;
+ int i, count;
+ struct wl_proxy *proxy;
+
+ signature = closure->message->signature;
+ count = arg_count_for_signature(signature) + 2;
+ for (i = 2; i < count; i++) {
+ signature = get_next_argument(signature, &arg);
+ switch (arg.type) {
+ case 'n':
+ case 'o':
+ proxy = *(struct wl_proxy **) closure->args[i];
+ if (proxy)
+ proxy->refcount++;
+ break;
+ default:
+ break;
+ }
+ }
+}
+
static int
queue_event(struct wl_display *display, int len)
{
@@ -709,6 +754,15 @@
return -1;
}
+ if (wl_closure_lookup_objects(closure, &display->objects) != 0) {
+ wl_closure_destroy(closure);
+ return -1;
+ }
+
+ increase_closure_args_refcount(closure);
+ proxy->refcount++;
+ closure->proxy = proxy;
+
if (wl_list_empty(&proxy->queue->event_list))
pthread_cond_signal(&proxy->queue->cond);
wl_list_insert(proxy->queue->event_list.prev, &closure->link);
@@ -717,31 +771,68 @@
}
static void
+decrease_closure_args_refcount(struct wl_closure *closure)
+{
+ const char *signature;
+ struct argument_details arg;
+ int i, count;
+ struct wl_proxy *proxy;
+
+ signature = closure->message->signature;
+ count = arg_count_for_signature(signature) + 2;
+ for (i = 2; i < count; i++) {
+ signature = get_next_argument(signature, &arg);
+ switch (arg.type) {
+ case 'n':
+ case 'o':
+ proxy = *(struct wl_proxy **) closure->args[i];
+ if (proxy) {
+ if (proxy->flags & WL_PROXY_FLAG_DESTROYED)
+ *(void **) closure->args[i] = NULL;
+
+ proxy->refcount--;
+ if (!proxy->refcount)
+ free(proxy);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+static void
dispatch_event(struct wl_display *display, struct wl_event_queue *queue)
{
struct wl_closure *closure;
struct wl_proxy *proxy;
- uint32_t id;
- int opcode, ret;
+ int opcode;
+ bool proxy_destroyed;
closure = container_of(queue->event_list.next,
struct wl_closure, link);
wl_list_remove(&closure->link);
- id = closure->buffer[0];
opcode = closure->buffer[1] & 0xffff;
- /* Verify that the receiving object is still valid and look up
- * proxies for any arguments. We have to do this just before
- * calling the handler, since preceeding events may have
- * destroyed either the proxy or the proxy args since the
- * event was queued. */
- proxy = wl_map_lookup(&display->objects, id);
- ret = wl_closure_lookup_objects(closure, &display->objects);
+ /* Verify that the receiving object is still valid by checking if has
+ * been destroyed by the application. */
+
+ decrease_closure_args_refcount(closure);
+ proxy = closure->proxy;
+ proxy_destroyed = !!(proxy->flags & WL_PROXY_FLAG_DESTROYED);
+
+ proxy->refcount--;
+ if (!proxy->refcount)
+ free(proxy);
+
+ if (proxy_destroyed) {
+ wl_closure_destroy(closure);
+ return;
+ }
pthread_mutex_unlock(&display->mutex);
- if (proxy != WL_ZOMBIE_OBJECT &&
- proxy->object.implementation && ret == 0) {
+ if (proxy->object.implementation) {
if (wl_debug)
wl_closure_print(closure, &proxy->object, false);
@@ -838,6 +929,26 @@
return dispatch_queue(display, queue, 1);
}
+/** Dispatch pending events in an event queue
+ *
+ * \param display The display context object
+ * \param queue The event queue to dispatch
+ * \return The number of dispatched events on success or -1 on failure
+ *
+ * Dispatch all incoming events for objects assigned to the given
+ * event queue. On failure -1 is returned and errno set appropriately.
+ * If there are no events queued, this functions return immediately.
+ *
+ * \memberof wl_display
+ * \since 1.0.2
+ */
+WL_EXPORT int
+wl_display_dispatch_queue_pending(struct wl_display *display,
+ struct wl_event_queue *queue)
+{
+ return dispatch_queue(display, queue, 0);
+}
+
/** Process incoming events
*
* \param display The display context object
@@ -914,12 +1025,12 @@
return dispatch_queue(display, &display->queue, 0);
}
-/** Retrieve the last error occured on a display
+/** Retrieve the last error occurred on a display
*
* \param display The display context object
- * \return The last error occured on \c display or 0 if no error occured
+ * \return The last error occurred on \c display or 0 if no error occurred
*
- * Return the last error occured on the display. This may be an error sent
+ * Return the last error occurred on the display. This may be an error sent
* by the server or caused by the local client.
*
* \note Errors are \b fatal. If this function returns non-zero the display
--- wayland-1.0.4.orig/src/wayland-server.h
+++ wayland-1.0.4/src/wayland-server.h
@@ -84,6 +84,12 @@
struct wl_listener;
typedef void (*wl_notify_func_t)(struct wl_listener *listener, void *data);
+void wl_event_loop_add_destroy_listener(struct wl_event_loop *loop,
+ struct wl_listener * listener);
+struct wl_listener *wl_event_loop_get_destroy_listener(
+ struct wl_event_loop *loop,
+ wl_notify_func_t notify);
+
struct wl_display *wl_display_create(void);
void wl_display_destroy(struct wl_display *display);
struct wl_event_loop *wl_display_get_event_loop(struct wl_display *display);
@@ -106,6 +112,11 @@
uint32_t wl_display_get_serial(struct wl_display *display);
uint32_t wl_display_next_serial(struct wl_display *display);
+void wl_display_add_destroy_listener(struct wl_display *display,
+ struct wl_listener *listener);
+struct wl_listener *wl_display_get_destroy_listener(struct wl_display *display,
+ wl_notify_func_t notify);
+
struct wl_client *wl_client_create(struct wl_display *display, int fd);
void wl_client_destroy(struct wl_client *client);
void wl_client_flush(struct wl_client *client);
--- wayland-1.0.4.orig/src/wayland-client.h
+++ wayland-1.0.4/src/wayland-client.h
@@ -135,9 +135,6 @@
#include "wayland-client-protocol.h"
-typedef int (*wl_display_update_func_t)(uint32_t mask, void *data);
-typedef void (*wl_callback_func_t)(void *data, uint32_t time);
-
struct wl_display *wl_display_connect(const char *name);
struct wl_display *wl_display_connect_to_fd(int fd);
void wl_display_disconnect(struct wl_display *display);
@@ -145,6 +142,8 @@
int wl_display_dispatch(struct wl_display *display);
int wl_display_dispatch_queue(struct wl_display *display,
struct wl_event_queue *queue);
+int wl_display_dispatch_queue_pending(struct wl_display *display,
+ struct wl_event_queue *queue);
int wl_display_dispatch_pending(struct wl_display *display);
int wl_display_get_error(struct wl_display *display);
--- wayland-1.0.4.orig/src/wayland-private.h
+++ wayland-1.0.4/src/wayland-private.h
@@ -59,6 +59,7 @@
struct wl_connection;
struct wl_closure;
+struct wl_proxy;
struct wl_connection *wl_connection_create(int fd);
void wl_connection_destroy(struct wl_connection *connection);
@@ -80,6 +81,7 @@
void *args[20];
uint32_t *start;
struct wl_list link;
+ struct wl_proxy *proxy;
uint32_t buffer[0];
};
--- wayland-1.0.4.orig/src/scanner.c
+++ wayland-1.0.4/src/scanner.c
@@ -356,7 +356,7 @@
version = strtol(since, &end, 0);
if (errno == EINVAL || end == since || *end != '\0')
fail(ctx, "invalid integer\n");
- if (version <= ctx->interface->since)
+ if (version < ctx->interface->since)
fail(ctx, "since version not increasing\n");
ctx->interface->since = version;
}
--- wayland-1.0.4.orig/protocol/wayland.xml
+++ wayland-1.0.4/protocol/wayland.xml
@@ -102,7 +102,7 @@
When a client creates a registry object, the registry object
will emit a global event for each global currently in the
- regitry. Globals come and go as a result of device hotplugs,
+ registry. Globals come and go as a result of device hotplugs,
reconfiguration or other events, and the registry will send out
@global and @global_remove events to keep the client up to date
with the changes. To mark the end of the initial burst of
@@ -502,6 +502,14 @@
+
+ The wl_data_device_manager is a 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
+ corresponding to a wl_seat.
+
+
--- wayland-1.0.4.orig/protocol/Makefile.am
+++ wayland-1.0.4/protocol/Makefile.am
@@ -1,9 +1 @@
-if HAVE_XSLTPROC
-doc_DATA = wayland.html
-dist_doc_DATA = wayland-protocol.css wayland.xml protocol.xsl
-
-wayland.html: wayland.xml protocol.xsl
- $(AM_V_GEN)$(XSLTPROC) $(srcdir)/protocol.xsl $(srcdir)/wayland.xml > $@
-
-CLEANFILES = wayland.html
-endif
+EXTRA_DIST = wayland.xml