}
static void
+wl_window_map_cb (GstWlWindow * wl_window, GstGtkWaylandSink * self)
+{
+ GstGtkWaylandSinkPrivate *priv =
+ gst_gtk_wayland_sink_get_instance_private (self);
+
+ GST_DEBUG_OBJECT (self, "waylandsink surface is ready");
+
+ gtk_gst_base_widget_queue_draw (GTK_GST_BASE_WIDGET (priv->gtk_widget));
+}
+
+static void
setup_wl_window (GstGtkWaylandSink * self)
{
GstGtkWaylandSinkPrivate *priv =
wl_surface, &priv->render_lock);
gst_wl_window_set_rotate_method (priv->wl_window,
priv->current_rotate_method);
+ g_signal_connect_object (priv->wl_window, "map",
+ G_CALLBACK (wl_window_map_cb), self, 0);
}
/* In order to position the subsurface correctly within a scrollable widget,
enum
{
CLOSED,
+ MAP,
LAST_SIGNAL
};
signals[CLOSED] = g_signal_new ("closed", G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+ signals[MAP] = g_signal_new ("map", G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
+
}
static void
gst_wl_window_update_borders (self);
wl_surface_commit (priv->area_surface_wrapper);
priv->is_area_surface_mapped = TRUE;
+ g_signal_emit (self, signals[MAP], 0);
}
} else {
/* clear both video and parent surfaces */