1. 24 Jan, 2014 1 commit
  2. 20 Jan, 2014 4 commits
  3. 19 Jan, 2014 1 commit
  4. 17 Jan, 2014 1 commit
  5. 15 Jan, 2014 11 commits
  6. 10 Jan, 2014 1 commit
  7. 09 Jan, 2014 1 commit
  8. 17 Dec, 2013 2 commits
  9. 10 Dec, 2013 1 commit
  10. 09 Dec, 2013 2 commits
  11. 05 Dec, 2013 1 commit
    • Neil Roberts's avatar
      client: Make wl_proxy_set_queue() with NULL revert to default queue · 1521c62a
      Neil Roberts authored
      This will be useful in order to implement the
      EGL_WL_create_wayland_buffer_from_image extension. The buffers created
      within Mesa's Wayland platform are created using the the wl_drm object
      as a proxy factory which means they will be set to use Mesa's internal
      event queue. However, these buffers will be owned by the client
      application so they ideally need to use the default event loop. This
      function provides a way to set the proxy's event queue back to the
      default.
      
      krh: Edited from Neils original patch to just use wl_proxy_set_queue() with
      a NULL argument instead of introducing a new function.
      1521c62a
  12. 03 Dec, 2013 2 commits
    • Pekka Paalanen's avatar
      cursor: handle running out of buffer space · 3b3e81f4
      Pekka Paalanen authored
      If posix_fallocate is available, use it to detect when we are running
      out of buffer space.
      
      Propagate the failure properly through the various functions, stopping
      loading cursors but keeping the cursors that were already successfully
      loaded.
      
      This may result in an animated cursor not having all of its images, or a
      cursor theme not having all of its cursors. When that happens, the
      failure is NOT communicated to the application. Instead, the application
      will get NULL from wl_cursor_theme_get_cursor() for a cursor that was
      not loaded successfully. If an animated cursor is missing only some
      images, the animation is truncated but the cursor is still available.
      
      This patch relies on the commit "os: use posix_fallocate in creating
      sharable buffers" for defining HAVE_POSIX_FALLOCATE.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      3b3e81f4
    • Pekka Paalanen's avatar
      os: use posix_fallocate in creating sharable buffers · 011b6954
      Pekka Paalanen authored
      If posix_fallocate is available, use it instead of ftruncate. Unlike
      ftruncate, when posix_fallocate succeeds, it guarantees that you cannot
      run out of disk space, when later writing to the mmap()'ed file.
      
      With posix_fallocate, if os_create_anonymous_file() succeeds, the
      program cannot get a SIGBUS later from accessing this file via mmap. If
      there is insufficient disk space, the function fails and errno is set to
      ENOSPC.
      
      This is useful on systems, that limit the available buffer space by
      having XDG_RUNTIME_DIR on a small tmpfs.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      011b6954
  13. 23 Nov, 2013 1 commit
  14. 22 Nov, 2013 1 commit
  15. 19 Nov, 2013 2 commits
  16. 16 Nov, 2013 3 commits
    • Kristian Høgsberg's avatar
      client: Introduce functions to allocate and marshal proxies atomically · 853c24e6
      Kristian Høgsberg authored
      The server requires clients to only allocate one ID ahead of the previously
      highest ID in order to keep the ID range tight.  Failure to do so will
      make the server close the client connection.  However, the way we allocate
      new IDs is racy.  The generated code looks like:
      
        new_proxy = wl_proxy_create(...);
        wl_proxy_marshal(proxy, ... new_proxy, ...);
      
      If two threads do this at the same time, there's a chance that thread A
      will allocate a proxy, then get pre-empted by thread B which then allocates
      a proxy and then passes it to wl_proxy_marshal().  The ID for thread As
      proxy will be one higher that the currently highest ID, but the ID for
      thread Bs proxy will be two higher.  But since thread B prempted thread A
      before it could send its new ID, B will send its new ID first, the server
      will see the ID from thread Bs proxy first, and will reject it.
      
      We fix this by introducing wl_proxy_marshal_constructor().  This
      function is identical to wl_proxy_marshal(), except that it will
      allocate a wl_proxy for NEW_ID arguments and send it, all under the
      display mutex.  By introducing a new function, we maintain backwards
      compatibility with older code from the generator, and make sure that
      the new generated code has an explicit dependency on a new enough
      libwayland-client.so.
      
      A virtual Wayland merit badge goes to Kalle Vahlman, who tracked this
      down and analyzed the issue.
      Reported-by: default avatarKalle Vahlman <kalle.vahlman@movial.com>
      853c24e6
    • Pekka Paalanen's avatar
      protocol: add sub-surfaces to the core · 81c57614
      Pekka Paalanen authored
      The sub-surface protocol was originally committed into Weston on May
      10th, 2013, in commit 2396aec6. The
      design for the protocol had started in the beginning of December 2012. I
      think it is high time to move this into the core now.
      
      This patch copies the sub-surface protocol as it was in Weston on Nov
      15th, 2013, into Wayland. Weston gets a patch to remove the protocol from
      there.
      
      Sub-surface is a wl_surface role. You create a wl_surface as usual, and
      assign it the sub-surface role and a parent wl_surface. Sub-surfaces are
      an integral part of the parent surface, and stay glued to the parent.
      For window management, a window is the union of the top-level
      wl_surface and all its sub-surfaces. Sub-surfaces are not clipped to the
      parent, and the union of the surface tree can be larger than the
      (top-level) wl_surface at its root.
      
      The representative use case for sub-surfaces is a video player window.
      When the video content is given its own wl_surface, there is no need to
      modify the video frame contents after decoding or copy them into a whole
      window sized buffer before submitting it to the compositor. This allows
      efficient, zero-copy video presentation paths, where video decoding
      hardware produces a (YUV) buffer, which eventually ends up in a
      (YUV-capable) hardware overlay and is scanned out directly.
      
      This can also be used for zero-copy presentation of windowed OpenGL
      content, where the OpenGL rendering engine does not need to draw or
      avoid window decorations.
      
      Sub-surfaces allow mixing different buffer types into the same window,
      e.g. software-rendered decorations in wl_shm buffers, and live content
      in EGL-based buffers.
      
      However, the sub-surface extension does not offer clipping or scaling
      facilities, or accurate presentation timing. Those are topics for
      additional extensions.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      81c57614
    • Lubomir Rintel's avatar
      shm: Avoid file descriptor leak upon unsuccessful mmap · 4a196570
      Lubomir Rintel authored
      It would be possible to make the compositor leak file descriptors by
      passing descriptors of open unmmapable files to it, such as /dev/null.
      Signed-off-by: Lubomir Rintel's avatarLubomir Rintel <lkundrak@v3.sk>
      4a196570
  17. 15 Nov, 2013 5 commits