diff options
author | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2014-05-29 12:27:46 +0300 |
---|---|---|
committer | George Kiagiadakis <george.kiagiadakis@collabora.com> | 2014-06-17 13:51:28 +0200 |
commit | 06639dd72748e24822dab453a97a8fa3902adc6d (patch) | |
tree | 113eefacd7d3dfbd7d0fc95bf725068085c1bd2e /ext/wayland/gstwaylandsink.h | |
parent | c17521c096a4e7c217aea6250325933c31d3e079 (diff) | |
download | gstreamer-plugins-bad-06639dd72748e24822dab453a97a8fa3902adc6d.tar.gz |
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.
Diffstat (limited to 'ext/wayland/gstwaylandsink.h')
-rw-r--r-- | ext/wayland/gstwaylandsink.h | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/ext/wayland/gstwaylandsink.h b/ext/wayland/gstwaylandsink.h index 1280f746b..85265e8da 100644 --- a/ext/wayland/gstwaylandsink.h +++ b/ext/wayland/gstwaylandsink.h @@ -63,10 +63,7 @@ struct _GstWaylandSink gchar *display_name; gboolean redraw_pending; - gboolean drawing_frozen; - gboolean rendered; GMutex render_lock; - GCond render_cond; GstBuffer *last_buffer; }; |