--- 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