mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +00:00
[457/906] gtk examples: adapt code since the native-window changes from gtk
Fixes bug #599885
This commit is contained in:
parent
df4b871718
commit
b130c3b750
1 changed files with 27 additions and 8 deletions
|
@ -57,6 +57,26 @@ create_window (GstBus * bus, GstMessage * message, GtkWidget * widget)
|
||||||
return GST_BUS_DROP;
|
return GST_BUS_DROP;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
message_cb (GstBus * bus, GstMessage * message, GstElement * pipeline)
|
||||||
|
{
|
||||||
|
gst_element_set_state (pipeline, GST_STATE_NULL);
|
||||||
|
gst_object_unref (pipeline);
|
||||||
|
|
||||||
|
gtk_main_quit ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
realize_cb (GtkWidget * widget, GstElement * pipeline)
|
||||||
|
{
|
||||||
|
#if GTK_CHECK_VERSION(2,18,0)
|
||||||
|
if (!gdk_window_ensure_native (widget->window))
|
||||||
|
g_error ("Failed to create native window!");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
gst_element_set_state (pipeline, GST_STATE_PLAYING);
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
expose_cb (GtkWidget * widget, GdkEventExpose * event, GstElement * videosink)
|
expose_cb (GtkWidget * widget, GdkEventExpose * event, GstElement * videosink)
|
||||||
{
|
{
|
||||||
|
@ -128,7 +148,8 @@ on_drag_data_received (GtkWidget * widget,
|
||||||
{
|
{
|
||||||
SourceData *userdata = g_new0 (SourceData, 1);
|
SourceData *userdata = g_new0 (SourceData, 1);
|
||||||
#ifdef G_OS_WIN32
|
#ifdef G_OS_WIN32
|
||||||
gchar *filename = g_filename_from_uri ((const gchar *) seldata->data, NULL, NULL);
|
gchar *filename =
|
||||||
|
g_filename_from_uri ((const gchar *) seldata->data, NULL, NULL);
|
||||||
#else
|
#else
|
||||||
GdkPixbufFormat *format;
|
GdkPixbufFormat *format;
|
||||||
gchar **uris = gtk_selection_data_get_uris (seldata);
|
gchar **uris = gtk_selection_data_get_uris (seldata);
|
||||||
|
@ -160,7 +181,6 @@ on_drag_data_received (GtkWidget * widget,
|
||||||
gint
|
gint
|
||||||
main (gint argc, gchar * argv[])
|
main (gint argc, gchar * argv[])
|
||||||
{
|
{
|
||||||
GstStateChangeReturn ret;
|
|
||||||
GstElement *pipeline;
|
GstElement *pipeline;
|
||||||
GstElement *uload, *filter, *sink;
|
GstElement *uload, *filter, *sink;
|
||||||
GstElement *sourcebin;
|
GstElement *sourcebin;
|
||||||
|
@ -288,8 +308,13 @@ main (gint argc, gchar * argv[])
|
||||||
|
|
||||||
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
|
bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
|
||||||
gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, screen);
|
gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, screen);
|
||||||
|
gst_bus_add_signal_watch (bus);
|
||||||
|
g_signal_connect (bus, "message::error", G_CALLBACK (message_cb), pipeline);
|
||||||
|
g_signal_connect (bus, "message::warning", G_CALLBACK (message_cb), pipeline);
|
||||||
|
g_signal_connect (bus, "message::eos", G_CALLBACK (message_cb), pipeline);
|
||||||
gst_object_unref (bus);
|
gst_object_unref (bus);
|
||||||
g_signal_connect (screen, "expose-event", G_CALLBACK (expose_cb), sink);
|
g_signal_connect (screen, "expose-event", G_CALLBACK (expose_cb), sink);
|
||||||
|
g_signal_connect (screen, "realize", G_CALLBACK (realize_cb), pipeline);
|
||||||
|
|
||||||
gtk_drag_dest_set (screen, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY);
|
gtk_drag_dest_set (screen, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY);
|
||||||
gtk_drag_dest_add_uri_targets (screen);
|
gtk_drag_dest_add_uri_targets (screen);
|
||||||
|
@ -297,12 +322,6 @@ main (gint argc, gchar * argv[])
|
||||||
g_signal_connect (screen, "drag-data-received",
|
g_signal_connect (screen, "drag-data-received",
|
||||||
G_CALLBACK (on_drag_data_received), filter);
|
G_CALLBACK (on_drag_data_received), filter);
|
||||||
|
|
||||||
ret = gst_element_set_state (pipeline, GST_STATE_PLAYING);
|
|
||||||
if (ret == GST_STATE_CHANGE_FAILURE) {
|
|
||||||
g_print ("Failed to start up pipeline!\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_widget_show_all (GTK_WIDGET (window));
|
gtk_widget_show_all (GTK_WIDGET (window));
|
||||||
|
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
|
|
Loading…
Reference in a new issue