waylandsink: remove the manual synchronization from pause/resume_rendering and use...
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Thu, 29 May 2014 09:27:46 +0000 (12:27 +0300)
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Tue, 17 Jun 2014 11:51:28 +0000 (13:51 +0200)
commit06639dd72748e24822dab453a97a8fa3902adc6d
tree113eefacd7d3dfbd7d0fc95bf725068085c1bd2e
parentc17521c096a4e7c217aea6250325933c31d3e079
waylandsink: remove the manual synchronization from pause/resume_rendering and use subsurface sync/desync

Previously, in order to change the surface size we had to let the pipeline
redraw it, which at first also involved re-negotiating caps, etc, so a
synchronization with the pipeline was absolutely necessary.

At the moment, we are using wl_viewport, which separates the surface size
from the buffer size and it also allows us to commit a surface resize without
attaching a new buffer, so it is enough to just do:

gst_wayland_video_pause_rendering():
wl_subsurface_set_sync()
gst_video_overlay_set_render_rectangle():
wl_subsurface_set_position()
wl_viewport_set_destination()
wl_surface_damage()
wl_surface_commit()
... commit the parent surface ...
gst_wayland_video_resume_rendering():
wl_subsurface_set_desync()

This is enough to synchronize a surface resize and the pipeline can continue
drawing independently. Now of course, the names pause/resume_rendering are
bad. I will rename them in another commit.
ext/wayland/gstwaylandsink.c
ext/wayland/gstwaylandsink.h