1. 26 Jul, 2016 1 commit
  2. 04 Jul, 2016 1 commit
  3. 23 Jun, 2016 2 commits
  4. 06 Jun, 2016 1 commit
  5. 03 May, 2016 1 commit
  6. 24 Mar, 2016 1 commit
    • Pekka Paalanen's avatar
      compositor-x11: stop using input_loop · 157109b6
      Pekka Paalanen authored
      X11 is the only backend that still used the input event loop.
      
      This patch is an identical rewrite of
      6deb09ef which was then reverted in
      3bebe646 for reasons unrecorded. This
      patch is also the revert of 22ba60e5.
      
      Originally input devices were moved into their own event loop in
      7ea10864 and the reason for that is
      explained in 7dbf5e2e.
      
      The idea behind the input event loop was that it would be beneficial to
      process and relay input events to clients just once during an output
      repaint cycle, because clients cannot update the image on screen any
      faster anyway. All input events also carry a timestamp, so we didn't
      lose any timing information. This was supposed to save power by reducing
      the process wake-ups and context switches. There was also a mention of
      reducing lag.
      
      However, the concept of an output repaint loop does not really work out
      when you have several outputs, but the input devices are not exclusive
      to a certain output.
      
      The logic for driving the input event loop in Weston core was written to
      assume a single output. When you have multiple outputs with independent
      repaint cycles, the input event loop handling becomes fairly random, one
      output freezes input while another output thaws it, etc.
      
      The DRM backend stopped using the input event loop when it started using
      the libinput input backend, which became the default in
      3f5e9062, and the old code was finally
      ripped out in 823ad33e.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Reviewed-by: default avatarDerek Foreman <derekf@osg.samsung.com>
      157109b6
  7. 23 Mar, 2016 1 commit
  8. 07 Mar, 2016 1 commit
  9. 09 Feb, 2016 1 commit
  10. 19 Jan, 2016 2 commits
  11. 20 Nov, 2015 1 commit
  12. 23 Oct, 2015 1 commit
  13. 09 Oct, 2015 1 commit
  14. 14 Aug, 2015 1 commit
  15. 31 Jul, 2015 1 commit
    • Derek Foreman's avatar
      input: Don't test keyboard/pointer/touch pointers · 1281a36e
      Derek Foreman authored
      Keyboards and pointers aren't freed when devices are removed, so we should
      really be testing keyboard_device_count and pointer_device_count in most
      cases, not the actual pointers. Otherwise we end up with different
      behaviour after removing a device than we had before it was inserted.
      
      This commit renames the touch/keyboard/pointer pointers and adds helper
      functions to get them that hide this complexity and return NULL when
      *_device_count is 0.
      Signed-off-by: default avatarDerek Foreman <derekf@osg.samsung.com>
      Reviewed-by: Jonas Ådahl's avatarJonas Ådahl <jadahl@gmail.com>
      1281a36e
  16. 10 Jul, 2015 1 commit
    • Giulio Camuffo's avatar
      compositor: add API to manage compositor instances · 459137bf
      Giulio Camuffo authored
      This commit adds three new exported functions:
      - weston_compositor_create() returns a new weston_compositor instance,
      initializing it as the now removed weston_compositor_init() did.
      - weston_compositor_exit(compositor) asks the compositor to tear
      down by calling the compositor's exit vfunc which is set by the
      libweston application.
      - weston_compositor_destroy(compositor) is called by the libweston
      application when tearing down the compositor. The compositor is destroyed
      and the memory freed.
      Reviewed-by: default avatarJon A. Cruz <jonc@osg.samsung.com>
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      459137bf
  17. 09 Jul, 2015 1 commit
    • Giulio Camuffo's avatar
      compositor: introduce struct weston_backend · 954f183e
      Giulio Camuffo authored
      This is a preliminary change for libweston, with no functional modifications.
      Separate the backends and the core weston_compositor struct, by creating
      the weston_compositor in the main(), and having the various backends extend
      the weston_backend struct, an instance of which is returned by the backend
      entry point.
      This enable us to logically separate the compositor core from the backend,
      allowing the core to be extended without messing with the backends.
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      954f183e
  18. 16 Jun, 2015 3 commits
  19. 15 Jun, 2015 1 commit
  20. 06 Jun, 2015 1 commit
  21. 18 May, 2015 1 commit
  22. 08 May, 2015 1 commit
    • Giulio Camuffo's avatar
      compositor: send the output_created signal after inserting it in the list · b114715d
      Giulio Camuffo authored
      The compositor's output_created signal used to be sent in weston_output_init()
      which the backend call before putting the output in the output_list.
      This caused problems when creating a new view in a listener to that signal,
      because weston_view_assign_output() doesn't yet know the new output exists.
      To fix this add a new weston_composito_add_output() func which adds the
      output in the list and later sends the signal, and make the backends call
      that.
      b114715d
  23. 26 Mar, 2015 4 commits
  24. 20 Mar, 2015 3 commits
  25. 09 Mar, 2015 1 commit
  26. 05 Feb, 2015 2 commits
  27. 27 Jan, 2015 2 commits
  28. 21 Jan, 2015 1 commit
    • Pekka Paalanen's avatar
      compositor: set presentation.presented flags · 363aa7bc
      Pekka Paalanen authored
      Change weston_output_finish_frame() signature so that backends are
      required to set the flags, that will be reported on the Presentation
      'presented' event. This is meant for output-wide feedback flags. Flags
      that vary per wl_surface are subject for the following patch.
      
      All start_repaint_loop functions use the special private flag
      PRESENTATION_FEEDBACK_INVALID to mark, that this call of
      weston_output_finish_frame() cannot trigger the 'presented' event. If it
      does, we now hit an assert, and should then investigate why a fake update
      triggered Presentation feedback.
      
      DRM:
      
      Page flip is always vsync'd, and always gets the completion timestamp
      from the kernel which should correspond well to hardware. Completion is
      triggered by the kernel/hardware.
      
      Vblank handler is only used with the broken planes path, therefore do
      not report VSYNC, because we cannot guarantee all the planes updated at
      the same time. We cannot set the INVALID, because it would abort the
      compositor if the broken planes path was ever used.  This is a hack that
      will get fixed with nuclear pageflip support in the future.
      
      fbdev:
      
      No vsync, update done by copy, no completion event from hardware, and
      completion time is totally fake.
      
      headless:
      
      No real output to update.
      
      RDP:
      
      Guessing that maybe no vsync, fake time, and copy make sense (pixels
      sent over network). Also no event that the pixels have been shown?
      
      RPI:
      
      Presumably Dispmanx updates are vsync'd. We get a completion event from
      the driver, but need to read the clock ourselves, so the completion time
      is somewhat unreliable. Zero-copy flag not implemented though it would
      be theoretically possible with EGL clients (zero-copy is a per-surface
      flag anyway, so in this patch).
      
      Wayland:
      
      No information how the host compositor is doing updates, so make a safe
      guess without assuming vsync or hardware completion event. While we do
      get some timestamp from the host compositor, it is not the completion
      time. Would need to hook to the Presentation extension of the host
      compositor to get more accurate flags.
      
      X11:
      
      No idea about vsync, completion event, or copying. Also the timestamp is
      a fake.
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Reviewed-by: Mario Kleiner's avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Tested-by: Mario Kleiner's avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Acked-by: Mario Kleiner's avatarMario Kleiner <mario.kleiner.de@gmail.com>
      363aa7bc
  29. 19 Dec, 2014 1 commit
    • Derek Foreman's avatar
      compositor-x11: Fix some shutdown crashes · 99bfa647
      Derek Foreman authored
      The assertion in x11_compositor_find_output() can trigger during normal
      shutdown, for example, when moving the mouse while hitting a hotkey to
      close the weston window.
      
      Instead we can remove the assert(), return NULL, and discard events
      we can't find a destination output for.
      
      v2 Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
      v1 Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
      Reviewed-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      99bfa647