Lines Matching full:sink
19 @@ -675,9 +675,10 @@ render_last_buffer (GstWaylandSink * sink, gboolean redraw)
20 sink->callback = callback;
21 wl_callback_add_listener (callback, &frame_callback_listener, sink);
23 - if (G_UNLIKELY (sink->video_info_changed && !redraw)) {
24 + if (G_UNLIKELY ((sink->video_info_changed && !redraw) || sink->resend_info)) {
25 info = &sink->video_info;
26 sink->video_info_changed = FALSE;
27 + sink->resend_info = FALSE;
29 gst_wl_window_render (sink->window, wlbuffer, info);
33 g_return_if_fail (sink != NULL);
35 - if (sink->window != NULL) {
36 - GST_WARNING_OBJECT (sink, "changing window handle is not supported");
37 + if (sink->window_handle == handle)
41 + sink->window_handle = handle;
43 g_mutex_lock (&sink->render_lock);
45 + if (sink->window != NULL) {
46 + GST_WARNING_OBJECT (sink, "changing window handle is dangerous");
47 + g_clear_object (&sink->window);
50 GST_DEBUG_OBJECT (sink, "Setting window handle %" GST_PTR_FORMAT,
53 - g_clear_object (&sink->window);
56 if (G_LIKELY (gst_wayland_sink_find_display (sink))) {
60 sink->window = gst_wl_window_new_in_surface (sink->display, surface,
61 &sink->render_lock);
63 + if (sink->last_buffer) {
65 + sink->resend_info = TRUE;
66 + sink->redraw_pending = FALSE;
70 GST_ERROR_OBJECT (sink, "Failed to find display handle, "