1. 03 Jan, 2020 1 commit
  2. 06 Nov, 2019 1 commit
    • Joshua Watt's avatar
      Move wl_priv_signal to wayland-server-private.h · e7d88f35
      Joshua Watt authored
      
      
      Including wayland-server-core.h in wayland-private.h is problematic
      because wayland-private.h is included by wayland-scanner which should be
      able to build against non-POSIX platforms (e.g. MinGW). The only reason
      that wayland-server-core.h was included in wayland-private.h was for the
      wl_private_signal definitions, so move those to a
      wayland-server-private.h file that can be included by both
      wayland-server.c and the tests.
      Signed-off-by: Joshua Watt's avatarJoshua Watt <JPEWhacker@gmail.com>
      e7d88f35
  3. 05 Nov, 2019 1 commit
  4. 24 Oct, 2019 1 commit
    • Jiayuan Ren's avatar
      adding O_RDWR flag in the open() · 8e051341
      Jiayuan Ren authored
      According to the manual of open:
      "The argument flags must include one of the following access modes:
      O_RDONLY, O_WRONLY, or O_RDWR."
      8e051341
  5. 16 Oct, 2019 2 commits
    • Simon Ser's avatar
      tests: add a test for wl_global_remove · 4162863c
      Simon Ser authored
      
      
      This test makes sure that after wl_global_remove:
      
      * The global_remove event is sent to existing clients
      * Binding to the removed global still works
      * A new client will not see the removed global advertised
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
      4162863c
    • Simon Ser's avatar
      server: add wl_global_remove · 39852f11
      Simon Ser authored
      This commit adds a new wl_global_remove function that just sends a global
      remove event without destroying it. See [1] for details.
      
      Removing a global is racy, because clients have no way to acknowledge they
      received the removal event.
      
      It's possible to mitigate the issue by sending the removal event, waiting a
      little and then destructing the global for real. The "wait a little" part is
      compositor policy.
      
      [1]: wayland/wayland#10
      
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
      39852f11
  6. 14 Oct, 2019 1 commit
  7. 27 Sep, 2019 1 commit
    • Simon Ser's avatar
      server: add wl_global_set_user_data · d5055ad9
      Simon Ser authored
      When implementing a workaround for [1], one needs to accept a global to be
      bound even though it has become stale.
      
      Often, a global's user data is free'd when the global needs to be destroyed.
      Being able to set the global's user data (e.g. to NULL) can help preventing a
      use-after-free.
      
      (The alternative is to make the compositor responsible for keeping track of
      stale user data objects via e.g. refcounting.)
      
      [1]: wayland/wayland#10
      
      Signed-off-by: Simon Ser's avatarSimon Ser <contact@emersion.fr>
      d5055ad9
  8. 17 Sep, 2019 1 commit
  9. 11 Sep, 2019 1 commit
  10. 10 Sep, 2019 4 commits
  11. 06 Sep, 2019 6 commits
  12. 05 Sep, 2019 1 commit
  13. 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>
      152c9ed9
  14. 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.
      17e49ba8
  15. 05 Aug, 2019 1 commit
  16. 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
      $current_year.
      a2f1343b
  17. 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 fo...
      493ab79b
  18. 21 Jul, 2019 1 commit
  19. 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>
      9d63c9ff
    • 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>
      a2817833
  20. 05 Jul, 2019 1 commit
  21. 05 Jun, 2019 2 commits
  22. 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 wayland/wayland#91
      
      Signed-off-by: orbea's avatarorbea <orbea@riseup.net>
      2485a5c2
  23. 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>
      294ed97e
    • 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>
      6db761d1
    • 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
      default.
      
      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>
      6ce4bbb3
  24. 27 Apr, 2019 1 commit
  25. 19 Apr, 2019 2 commits
  26. 12 Apr, 2019 1 commit