1. 28 May, 2019 4 commits
    • Manuel Stoeckl's avatar
      Use wl_surface.damage requests to reduce diff costs · d61d431c
      Manuel Stoeckl authored
      waypipe now records all wl_surface.damage requests made to a given surface,
      and at surface commit time, determines which range of bytes in the attached
      wl_buffer's memory pool file may have changed. This range can be much
      smaller than the size of the file, so that change detection on the range
      can be significantly cheaper than full-file change detection.
      
      This commit also sets up subtyping for struct wp_object, to reduce the memory
      usage needed for typical objects.
      d61d431c
    • Manuel Stoeckl's avatar
      Include common private protocol files · 2508d388
      Manuel Stoeckl authored
      Currently, waypipe requires these to correctly identify which wayland
      messages consume a passed file descriptor.
      2508d388
    • Manuel Stoeckl's avatar
      Defer truncated message parts correctly · 15ac2e38
      Manuel Stoeckl authored
      This commit ensures that when a series of messages read from
      either the compositor or application is truncated halfway through
      a message, that the truncated message is completed and correctly
      parsed on the next iteration of the message transport state machine.
      15ac2e38
    • Manuel Stoeckl's avatar
      Rewrite main proxy loop to use nonblocking sockets · 4d42fae3
      Manuel Stoeckl authored
      Previously, the main proxy loops in `run_server_child` and
      `run_client_child` alternated between making transfers from their shared
      channel to their individual wayland compositor/application channels.
      
      By using socket connections in nonblocking mode, the proxy now can
      simultaneously maintain transfers in both directions. This ensures that
      large transfers (such as a full-screen image) do not prevent e.g. key
      release events from being transferred.
      
      Additionally, as the two proxy loops were very similar, they have been
       combined into the `main_interface_loop` routine.
      
      The code still does not correctly handle the case where a read from
      the wayland compositor/application fills the entire read buffer and
      truncates a sent message, but it is now easier to adjust for that case.
      4d42fae3
  2. 27 May, 2019 5 commits
    • Manuel Stoeckl's avatar
      Add deletion framework for file descriptors · 1c834fdf
      Manuel Stoeckl authored
      When shadow_fd structs _that are owned by known protocol objects_
      have their reference count drop to zero, they are deleted.
      
      Newly created shadow_fd's begin with a reference count of 1,
      which is reduced when the translated fd to sent to the
      display/application/other waypipe socket end. This ensures
      that the object is not deleted early, even if the compositor
      e.g. wl_display.delete_id's the fd owning object before receiving
      it.
      1c834fdf
    • Manuel Stoeckl's avatar
      Remove incorrect warning messages · fc9fecef
      Manuel Stoeckl authored
      For wl_shm_pool.resize, wl_shm.create_pool, and wl_surface.commit .
      fc9fecef
    • Manuel Stoeckl's avatar
      d9e70242
    • Manuel Stoeckl's avatar
      Improve build portability · 065233ab
      Manuel Stoeckl authored
      * Make scdoc optional; documentation is not strictly necessary
      * Explicitly test for fmacro-prefix-map support
      * Test for the minimum possible versions of wayland dependencies
      * Reduce required meson version
      065233ab
    • Manuel Stoeckl's avatar
      Implement simple buffer ownership system · f73e15a0
      Manuel Stoeckl authored
      Every wp_object has a nullable reference to the shadow structure
      for a file descriptor. As the existence of wayland protocol
      objects is not guaranteed in the face of compositor/application
      misbehavior, when e.g. a wl_buffer is created from a wl_shm_pool,
      the wl_buffer registers a reference to the file descriptor that
      the wl_shm_pool had. Methods that imply a file descriptor change
      (wl_keyboard.keymap, wl_surface.commit) mark the object's referenced
      file descriptor as dirty, so that changes can be transferred.
      
      This commit does not yet implement any deletion logic.
      f73e15a0
  3. 26 May, 2019 1 commit
  4. 25 May, 2019 1 commit
  5. 23 May, 2019 1 commit
  6. 21 May, 2019 1 commit
  7. 20 May, 2019 3 commits
  8. 18 May, 2019 1 commit
  9. 17 May, 2019 1 commit
  10. 16 May, 2019 1 commit
  11. 15 May, 2019 4 commits
  12. 14 May, 2019 3 commits
  13. 13 May, 2019 2 commits
  14. 12 May, 2019 2 commits
  15. 11 May, 2019 1 commit