1. 02 Sep, 2019 4 commits
    • Simon Ser's avatar
      protocol: sync wl_shm.format with 2.4.99 · 5c24fa22
      Simon Ser authored
      This adds 42 new formats.
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
    • Simon Ser's avatar
      protocol: add a note about the wl_shm.format script · 5a1577b6
      Simon Ser authored
      Add a note to wl.shm_format's description to advise contributors to use the
      automated script (generate-shm-formats.py) instead of updating the list
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
    • Simon Ser's avatar
      Add an automated script to update wl_shm.format · 399b5be3
      Simon Ser authored
      This prevents mismatches and missing formats between wl_shm.formats and
      The script collects DRM_FORMAT_* constants from drm_fourcc.h, compares the list
      with the current wayland.xml entries (checking for any mismatch) and then
      appends missing entries to wayland.xml.
      Enum values are obtained by executing a generated C file which prints the
      constants. There is no other reliable way to get these values as they are
      defined via various macros.
      There is no widespread Python library able to parse an XML file and format it
      with all whitespace preserved. For this reason, we don't use an XML library to
      create the new XML elements. Instead, we keep track of the line number of the
      last wl_shm.format enum entry and add new entries right after. To be able to
      read the line number of an element, we use lxml (the standard library doesn't
      retain line number information).
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
    • Simon Ser's avatar
      Update .editorconfig for Python · d725bbd5
      Simon Ser authored
      This uses the idiomatic Python indentation rules.
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
  2. 26 Aug, 2019 1 commit
    • Liu Wenlong's avatar
      server: Fix fake "Address already in use" error · 152c9ed9
      Liu Wenlong authored
      In the current workflow, socket file will be deleted if it already exists.
      However, if the socket file is a symbolic link and the file that it refers
      to doesn't exist, we will got "Address already in use" because bind()
      thinks the socket file exists and won't create it.
      Now, use lstat() to determine whether the socket file exists.
      Signed-off-by: Liu Wenlong's avatarLiu Wenlong <liuwl.fnst@cn.fujitsu.com>
  3. 17 Aug, 2019 1 commit
    • Drew DeVault's avatar
      Improve description of wl_surface · 17e49ba8
      Drew DeVault authored
      The original text makes some assumptions about surfaces which may not be
      true and fails to capture some details which are important to the
      essential traits of a wl_surface.
  4. 05 Aug, 2019 1 commit
  5. 30 Jul, 2019 1 commit
    • Drew DeVault's avatar
      Document unusual wl_registry.bind new_id behavior · a2f1343b
      Drew DeVault authored
      When wayland-scanner encounters a new_id field with no corresponding
      interface name defined, instead of emitting a function whose signature
      lines up with the usual case (a uint32_t ID), it adds the interface name
      as a string and the version number so that the interface can be
      identified from the protcol message.
      Without docs, this was previously left for the interprid wire protocol
      implementor (e.g. me an hour ago) to discover when Wayland clients send
      them apparently bogus messages.
      I would have preferred if a different primitive type were used here
      (e.g. typed_new_id) to reflect the fact that the wire protocol is
      different, but I felt it unwise to add a new primitive to wayland.xml in
  6. 29 Jul, 2019 1 commit
    • Jonas Ådahl's avatar
      proxy: Add API to tag proxy objects · 493ab79b
      Jonas Ådahl authored
      When an application and a toolkit share the same Wayland connection,
      it will receive events with each others objects. For example if the
      toolkit manages a set of surfaces, and the application another set, if
      both the toolkit and application listen to pointer focus events,
      they'll receive focus events for each others surfaces.
      In order for the toolkit and application layers to identify whether a
      surface is managed by itself or not, it cannot only rely on retrieving
      the proxy user data, without going through all it's own proxy objects
      finding whether it's one of them.
      By adding the ability to "tag" a proxy object, the toolkit and
      application can use the tag to identify what the user data pointer
      points to something known.
      To create a tag, the recommended way is to define a statically allocated
      constant char array containing some descriptive string. The tag will be
      the pointer to the non-const pointer to the beginning of the array.
      For example, to identify whether a focus event is for a surface managed
      by the code in question:
      	static const char *my_tag = "my tag";
      	static void
      	pointer_enter(void *data,
      		      struct wl_pointer *wl_pointer,
      		      uint32_t serial,
      		      struct wl_surface *surface,
      		      wl_fixed_t surface_x,
      		      wl_fixed_t surface_y)
      		struct window *window;
      		const char * const *tag;
      		tag = wl_proxy_get_tag((struct wl_proxy *) surface);
      		if (tag != &my_tag)
      		window = wl_surface_get_user_data(surface);
      	static void
      	init_window_surface(struct window *window)
      		struct wl_surface *surface;
      		surface = wl_compositor_create_surface(compositor);
      		wl_surface_set_user_data(surface, window);
      		wl_proxy_set_tag((struct wl_proxy *) surface,
      Signed-off-by: Jonas Ådahl's avatarJonas Ådahl <jadahl@gmail.com>
  7. 21 Jul, 2019 1 commit
  8. 09 Jul, 2019 2 commits
    • Manuel Stoeckl's avatar
      connection: do not abort when dup(fd) fails · 9d63c9ff
      Manuel Stoeckl authored
      Instead, cleanly exit wl_closure_marshal and let the caller handler
      the error. For wayland-client, the sole calling function will call
      wl_abort() anyway. For wayland-server, the calling function will
      cleanly shutdown the client.
      This change ensures that compositors run with low file descriptor
      limits or internal leaks need not crash suddenly (and sometimes
      far from the problem) when space runs out.
      Signed-off-by: default avatarManuel Stoeckl <code@mstoeckl.com>
    • Scott Anderson's avatar
      wayland.xml: Make releases for multiple 'wl_surface.attach' undefined · a2817833
      Scott Anderson authored
      Fixes #46
      The way wl_buffer is specified makes this situation inherently racy,
      meaning there is no way this can be done unambiguously. Current real
      compositor implementations already have differing behaviour for this, so
      any client relying on it was already broken, if any such client exists.
      This specifically only singles out wl_buffer.release as being undefined;
      every other aspect of it should still be valid. This is so existing and
      correct uses of multiple attaches are still valid, where a
      "static"/immutable wl_buffer is being used (i.e. they don't care about
      the release event).
      Signed-off-by: Scott Anderson's avatarScott Anderson <scott.anderson@collabora.com>
  9. 05 Jul, 2019 1 commit
  10. 05 Jun, 2019 2 commits
  11. 31 May, 2019 1 commit
    • orbea's avatar
      Add a missing -pthread to fix compile with slibtool. · 2485a5c2
      orbea authored
      When compiling wayland with slibtool instead of GNU libtool
      it will fail building libtest_runner with an undefined
      reference to pthread_join@@GLIBC_2.2.5. This is because
      -pthread (Or -lpthread) is missing from display_test. If its
      added the build succeeds as expected with slibtool and
      continues to work with libtool. Its likely that libtool is
      hiding this failure by silently adding the missing flag which
      is not uncommon...
      Exposed in commit aa51a833.
      Fixes #91Signed-off-by: orbea's avatarorbea <orbea@riseup.net>
  12. 02 May, 2019 3 commits
    • Antonio Borneo's avatar
      log: remove "%m" from format strings by using strerror(errno) · 294ed97e
      Antonio Borneo authored
      The printf() format specifier "%m" is a glibc extension to print
      the string returned by strerror(errno). While supported by other
      libraries (e.g. uClibc and musl), it is not widely portable.
      In Wayland code the format string is often passed to a logging
      function that calls other syscalls before the conversion of "%m"
      takes place. If one of such syscall modifies the value in errno,
      the conversion of "%m" will incorrectly report the error string
      corresponding to the new value of errno.
      Remove all the occurrences of the specifier "%m" in Wayland code
      by using directly the string returned by strerror(errno).
      Signed-off-by: Antonio Borneo's avatarAntonio Borneo <borneo.antonio@gmail.com>
    • Manuel Stoeckl's avatar
      tests: Verify that wayland_scanner can catch bad identifiers · 6db761d1
      Manuel Stoeckl authored
      The test runs wayland_scanner on a set of XML protocol files which
      have malformed element names, and confirms that an error is produced
      and indicates the correct line.
      Copyright notifications are not included in the test files, as
      they are not code; of course, the project license still applies.
      Signed-off-by: default avatarManuel Stoeckl <code@mstoeckl.com>
    • Manuel Stoeckl's avatar
      scanner: error when element names will not compile · 6ce4bbb3
      Manuel Stoeckl authored
      This change checks that the "name" fields of the various structures in
      a Wayland protocol XML file will be converted into C identifiers that
      can be successfully compiled.
      For names which will be inserted as the prefix of an identifier
      enforce a match with [_a-zA-Z][_0-9a-zA-Z]* . For types only inserted
      as the suffix of an identifier (enum, entry), enforce a format of
      [_0-9a-zA-Z]+ .
      Unicode characters (and escape sequences like \u0394) are not allowed,
      because most older and some newer C compilers do not support them by
      For sake of simplicity, this patch does not check for collisions
      with reserved words or standard library names.
      Signed-off-by: default avatarManuel Stoeckl <code@mstoeckl.com>
  13. 27 Apr, 2019 1 commit
  14. 19 Apr, 2019 2 commits
  15. 12 Apr, 2019 1 commit
  16. 11 Apr, 2019 2 commits
  17. 08 Apr, 2019 1 commit
  18. 06 Apr, 2019 1 commit
  19. 21 Mar, 2019 1 commit
  20. 14 Mar, 2019 1 commit
  21. 13 Mar, 2019 3 commits
  22. 07 Mar, 2019 2 commits
  23. 05 Mar, 2019 1 commit
  24. 25 Feb, 2019 1 commit
    • Leonid Bobrov via wayland-devel's avatar
      tests: fix main symbol duplication · c70fd8a8
      Leonid Bobrov via wayland-devel authored
      So far I got these errors before patching:
      libtool: link: cc -o .libs/headers-test -pthread -Wall -Wextra -Wno-unused-parameter -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden -O2 -pipe tests/headers-test.o tests/headers-protocol-test.o tests/headers-protocol-core-test.o /tmp/obj/wayland-1.16.0/build-amd64/.libs/libtest-runner.a -L.libs -lwayland-client -lffi -lm -lwayland-server -lkvm -Wl,-rpath-link,/usr/local/lib
      ld: error: duplicate symbol: main
      >>> defined at headers-test.c:53 (/tmp/obj/wayland-1.16.0/wayland-1.16.0/tests/headers-test.c:53)
      >>>            tests/headers-test.o:(main)
      >>> defined at test-runner.c:377 (/tmp/obj/wayland-1.16.0/wayland-1.16.0/tests/test-runner.c:377)
      >>>            test-runner.o:(.text+0x250) in archive /tmp/obj/wayland-1.16.0/build-amd64/.libs/libtest-runner.a
      libtool: link: cc -o .libs/exec-fd-leak-checker -pthread -Wall -Wextra -Wno-unused-parameter -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden -O2 -pipe tests/exec-fd-leak-checker.o /tmp/obj/wayland-1.16.0/build-amd64/.libs/libtest-runner.a -L.libs -lwayland-client -lffi -lm -lwayland-server -lkvm -Wl,-rpath-link,/usr/local/lib
      ld: error: duplicate symbol: main
      >>> defined at exec-fd-leak-checker.c:57 (/tmp/obj/wayland-1.16.0/wayland-1.16.0/tests/exec-fd-leak-checker.c:57)
      >>>            tests/exec-fd-leak-checker.o:(main)
      >>> defined at test-runner.c:377 (/tmp/obj/wayland-1.16.0/wayland-1.16.0/tests/test-runner.c:377)
      >>>            test-runner.o:(.text+0x250) in archive /tmp/obj/wayland-1.16.0/build-amd64/.libs/libtest-runner.a
      Makefile.am: error: object 'tests/test-helpers.$(OBJEXT)' created both with libtool and without
      libtool: link: cc -o .libs/fixed-benchmark -pthread -Wall -Wextra -Wno-unused-parameter -g -Wstrict-prototypes -Wmissing-prototypes -fvisibility=hidden -O2 -pipe tests/fixed-benchmark.o /tmp/obj/wayland-1.16.0/build-amd64/.libs/libtest-runner.a -L.libs -lwayland-client -lffi -lm -lwayland-server -lkvm -Wl,-rpath-link,/usr/local/lib
      ld: error: duplicate symbol: main
      >>> defined at fixed-benchmark.c:100 (/tmp/obj/wayland-1.16.0/wayland-1.16.0/tests/fixed-benchmark.c:100)
      >>>            tests/fixed-benchmark.o:(main)
      >>> defined at test-runner.c:377 (/tmp/obj/wayland-1.16.0/wayland-1.16.0/tests/test-runner.c:377)
      >>>            test-runner.o:(.text+0x250) in archive /tmp/obj/wayland-1.16.0/build-amd64/.libs/libtest-runner.a
      This commit fixes all of that.
      Signed-off-by: Leonid Bobrov's avatarLeonid Bobrov <mazocomp@disroot.org>
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.com>
  25. 20 Feb, 2019 1 commit
  26. 19 Feb, 2019 1 commit
  27. 05 Feb, 2019 1 commit
  28. 30 Jan, 2019 1 commit