From fc45400f4ecc8a66d6393d806a0eb79776b04b5b Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Tue, 29 Apr 2014 16:38:55 +1000 Subject: [PATCH] gl/examples: move to -bad - fix all the compiler errors - give them their own gl directory --- tests/examples/gtk/fxtest/fxtest.c | 262 -------------------- tests/examples/gtk/fxtest/pixbufdrop.c | 325 ------------------------- tests/examples/gtk/gstgtk.c | 70 ------ 3 files changed, 657 deletions(-) delete mode 100644 tests/examples/gtk/fxtest/fxtest.c delete mode 100644 tests/examples/gtk/fxtest/pixbufdrop.c delete mode 100644 tests/examples/gtk/gstgtk.c diff --git a/tests/examples/gtk/fxtest/fxtest.c b/tests/examples/gtk/fxtest/fxtest.c deleted file mode 100644 index 7ff5d71d45..0000000000 --- a/tests/examples/gtk/fxtest/fxtest.c +++ /dev/null @@ -1,262 +0,0 @@ -/* - * GStreamer - * Copyright (C) 2008-2009 Filippo Argiolas - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#define GLIB_DISABLE_DEPRECATION_WARNINGS - -#include -#include -#include -#include - -#include "../gstgtk.h" - -#include - - -/* TODO: use video overlay in the proper way (like suggested in docs, see gtkvideooverlay example) */ -static gboolean -expose_cb (GtkWidget * widget, gpointer data) -{ - GstVideoOverlay *overlay = - GST_VIDEO_OVERLAY (gst_bin_get_by_interface (GST_BIN (data), - GST_TYPE_VIDEO_OVERLAY)); - - gst_video_overlay_set_gtk_window (overlay, widget); - - return FALSE; -} - -static void -destroy_cb (GtkWidget * widget, GdkEvent * event, GstElement * pipeline) -{ - g_message ("destroy callback"); - - gst_element_set_state (pipeline, GST_STATE_NULL); - gst_object_unref (pipeline); - - gtk_main_quit (); -} - -gboolean -apply_fx (GtkWidget * widget, gpointer data) -{ - gchar *fx; - GEnumClass *p_class; - -/* heeeellppppp!! */ - p_class = - G_PARAM_SPEC_ENUM (g_object_class_find_property (G_OBJECT_GET_CLASS - (G_OBJECT (data)), "effect") - )->enum_class; - - fx = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (widget)); - g_print ("setting: %s - %s\n", fx, g_enum_get_value_by_nick (p_class, - fx)->value_name); - g_object_set (G_OBJECT (data), "effect", g_enum_get_value_by_nick (p_class, - fx)->value, NULL); - return FALSE; -} - -gboolean -play_cb (GtkWidget * widget, gpointer data) -{ - g_message ("playing"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_PLAYING); - return FALSE; -} - -gboolean -null_cb (GtkWidget * widget, gpointer data) -{ - g_message ("nulling"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_NULL); - return FALSE; -} - -gboolean -ready_cb (GtkWidget * widget, gpointer data) -{ - g_message ("readying"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_READY); - return FALSE; -} - -gboolean -pause_cb (GtkWidget * widget, gpointer data) -{ - g_message ("pausing"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_PAUSED); - return FALSE; -} - -gint -main (gint argc, gchar * argv[]) -{ - GstStateChangeReturn ret; - GstElement *pipeline; - GstElement *filter, *sink; - GstElement *sourcebin; - GError *error = NULL; - - GtkWidget *window; - GtkWidget *screen; - GtkWidget *vbox, *combo; - GtkWidget *hbox; - GtkWidget *play, *pause, *null, *ready; - - gchar **source_desc_array = NULL; - gchar *source_desc = NULL; - - GOptionContext *context; - GOptionEntry options[] = { - {"source-bin", 's', 0, G_OPTION_ARG_STRING_ARRAY, &source_desc_array, - "Use a custom source bin description (gst-launch style)", NULL} - , - {NULL} - }; - - context = g_option_context_new (NULL); - g_option_context_add_main_entries (context, options, NULL); - g_option_context_add_group (context, gst_init_get_option_group ()); - g_option_context_add_group (context, gtk_get_option_group (TRUE)); - if (!g_option_context_parse (context, &argc, &argv, &error)) { - g_print ("Inizialization error: %s\n", GST_STR_NULL (error->message)); - return -1; - } - g_option_context_free (context); - - if (source_desc_array != NULL) { - source_desc = g_strjoinv (" ", source_desc_array); - g_strfreev (source_desc_array); - } - if (source_desc == NULL) { - source_desc = - g_strdup - ("videotestsrc ! video/x-raw, width=352, height=288 ! identity"); - } - - sourcebin = - gst_parse_bin_from_description (g_strdup (source_desc), TRUE, &error); - g_free (source_desc); - if (error) { - g_print ("Error while parsing source bin description: %s\n", - GST_STR_NULL (error->message)); - return -1; - } - - g_set_application_name ("gst-gl-effects test app"); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width (GTK_CONTAINER (window), 3); - - pipeline = gst_pipeline_new ("pipeline"); - - filter = gst_element_factory_make ("gleffects", "flt"); - sink = gst_element_factory_make ("glimagesink", "glsink"); - - gst_bin_add_many (GST_BIN (pipeline), sourcebin, filter, sink, NULL); - - if (!gst_element_link_many (sourcebin, filter, sink, NULL)) { - g_print ("Failed to link one or more elements!\n"); - return -1; - } - - g_signal_connect (G_OBJECT (window), "delete-event", - G_CALLBACK (destroy_cb), pipeline); - g_signal_connect (G_OBJECT (window), "destroy-event", - G_CALLBACK (destroy_cb), pipeline); - - screen = gtk_drawing_area_new (); - - gtk_widget_set_size_request (screen, 640, 480); // 500 x 376 - - vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - - gtk_box_pack_start (GTK_BOX (vbox), screen, TRUE, TRUE, 0); - - combo = gtk_combo_box_text_new (); - - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "identity"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "mirror"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "squeeze"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "stretch"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "fisheye"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "twirl"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "bulge"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "tunnel"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "square"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "heat"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "xpro"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "lumaxpro"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "sepia"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "xray"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "sin"); - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "glow"); - - g_signal_connect (G_OBJECT (combo), "changed", G_CALLBACK (apply_fx), filter); - - gtk_box_pack_start (GTK_BOX (vbox), combo, FALSE, FALSE, 0); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - - play = gtk_button_new_with_label ("PLAY"); - - g_signal_connect (G_OBJECT (play), "clicked", G_CALLBACK (play_cb), pipeline); - - pause = gtk_button_new_with_label ("PAUSE"); - - g_signal_connect (G_OBJECT (pause), "clicked", - G_CALLBACK (pause_cb), pipeline); - - null = gtk_button_new_with_label ("NULL"); - - g_signal_connect (G_OBJECT (null), "clicked", G_CALLBACK (null_cb), pipeline); - - ready = gtk_button_new_with_label ("READY"); - - g_signal_connect (G_OBJECT (ready), "clicked", - G_CALLBACK (ready_cb), pipeline); - - gtk_box_pack_start (GTK_BOX (hbox), null, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), ready, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), play, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), pause, TRUE, TRUE, 0); - - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - - gtk_container_add (GTK_CONTAINER (window), vbox); - - g_signal_connect (screen, "realize", G_CALLBACK (expose_cb), pipeline); - - 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_main (); - - return 0; -} diff --git a/tests/examples/gtk/fxtest/pixbufdrop.c b/tests/examples/gtk/fxtest/pixbufdrop.c deleted file mode 100644 index 7422e8afc6..0000000000 --- a/tests/examples/gtk/fxtest/pixbufdrop.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - * GStreamer - * Copyright (C) 2008-2009 Filippo Argiolas - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#define GLIB_DISABLE_DEPRECATION_WARNINGS - -#include -#include -#include -#include - -#include "../gstgtk.h" - -#include - -static gint delay = 0; -static gint saveddelay = 0; -static gint method = 1; - -struct _SourceData -{ - gpointer data; - gpointer nick; - gpointer value; -}; -typedef struct _SourceData SourceData; - -static GstBusSyncReply -create_window (GstBus * bus, GstMessage * message, GtkWidget * widget) -{ - // ignore anything but 'prepare-window-handle' element messages - if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT) - return GST_BUS_PASS; - - if (!gst_is_video_overlay_prepare_window_handle_message (message)) - return GST_BUS_PASS; - - gst_video_overlay_set_gtk_window (GST_VIDEO_OVERLAY (GST_MESSAGE_SRC - (message)), widget); - - gst_message_unref (message); - - 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 gboolean -expose_cb (GtkWidget * widget, cairo_t * cr, GstElement * videosink) -{ - gst_video_overlay_expose (GST_VIDEO_OVERLAY (videosink)); - return FALSE; -} - -static void -destroy_cb (GtkWidget * widget, GdkEvent * event, GstElement * pipeline) -{ - g_message ("destroy callback"); - - gst_element_set_state (pipeline, GST_STATE_NULL); - gst_object_unref (pipeline); - - gtk_main_quit (); -} - -gboolean -play_cb (GtkWidget * widget, gpointer data) -{ - g_message ("playing"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_PLAYING); - return FALSE; -} - -gboolean -null_cb (GtkWidget * widget, gpointer data) -{ - g_message ("nulling"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_NULL); - return FALSE; -} - -gboolean -ready_cb (GtkWidget * widget, gpointer data) -{ - g_message ("readying"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_READY); - return FALSE; -} - -gboolean -pause_cb (GtkWidget * widget, gpointer data) -{ - g_message ("pausing"); - gst_element_set_state (GST_ELEMENT (data), GST_STATE_PAUSED); - return FALSE; -} - -static gboolean -set_location_delayed (gpointer data) -{ - SourceData *sdata = (SourceData *) data; - delay--; - g_print ("%d\n", delay); - if (delay > 0) { - return TRUE; - } - g_object_set (G_OBJECT (sdata->data), sdata->nick, sdata->value, NULL); - delay = saveddelay; - return FALSE; -} - -static void -on_drag_data_received (GtkWidget * widget, - GdkDragContext * context, int x, int y, - GtkSelectionData * seldata, guint inf, guint time, gpointer data) -{ - SourceData *userdata = g_new0 (SourceData, 1); -#ifdef G_OS_WIN32 - gchar *filename = - g_filename_from_uri ((const gchar *) seldata->data, NULL, NULL); -#else - GdkPixbufFormat *format; - gchar **uris = gtk_selection_data_get_uris (seldata); - gchar *filename = NULL; - - g_return_if_fail (uris != NULL); - filename = g_filename_from_uri (uris[0], NULL, NULL); - g_return_if_fail (filename != NULL); - format = gdk_pixbuf_get_file_info (filename, NULL, NULL); - g_return_if_fail (format); - g_print ("received %s image: %s\n", filename, - gdk_pixbuf_format_get_name (format)); -#endif - - userdata->nick = "location"; - userdata->value = g_strdup (filename); - userdata->data = data; - saveddelay = delay; - if (delay > 0) { - g_print ("%d\n", delay); - g_timeout_add_seconds (1, set_location_delayed, userdata); - } else - g_object_set (G_OBJECT (userdata->data), userdata->nick, userdata->value, - NULL); - g_free (filename); -} - - -gint -main (gint argc, gchar * argv[]) -{ - GstElement *pipeline; - GstElement *filter, *sink; - GstElement *sourcebin; - GstBus *bus; - GError *error = NULL; - - GtkWidget *window; - GtkWidget *screen; - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *play, *pause, *null, *ready; - - gchar **source_desc_array = NULL; - gchar *source_desc = NULL; - - GOptionContext *context; - GOptionEntry options[] = { - {"source-bin", 's', 0, G_OPTION_ARG_STRING_ARRAY, &source_desc_array, - "Use a custom source bin description (gst-launch style)", NULL} - , - {"method", 'm', 0, G_OPTION_ARG_INT, &method, - "1 for gstdifferencematte, 2 for gloverlay", "M"} - , - {"delay", 'd', 0, G_OPTION_ARG_INT, &delay, - "Wait N seconds before to send the image to gstreamer (useful with differencematte)", - "N"} - , - {NULL} - }; - - context = g_option_context_new (NULL); - g_option_context_add_main_entries (context, options, NULL); - g_option_context_add_group (context, gst_init_get_option_group ()); - g_option_context_add_group (context, gtk_get_option_group (TRUE)); - if (!g_option_context_parse (context, &argc, &argv, &error)) { - g_print ("Inizialization error: %s\n", GST_STR_NULL (error->message)); - return -1; - } - g_option_context_free (context); - - if (source_desc_array != NULL) { - source_desc = g_strjoinv (" ", source_desc_array); - g_strfreev (source_desc_array); - } - if (source_desc == NULL) { - source_desc = - g_strdup - ("videotestsrc ! video/x-raw, width=352, height=288 ! identity"); - } - - sourcebin = - gst_parse_bin_from_description (g_strdup (source_desc), TRUE, &error); - g_free (source_desc); - if (error) { - g_print ("Error while parsing source bin description: %s\n", - GST_STR_NULL (error->message)); - return -1; - } - - g_set_application_name ("gst-gl-effects test app"); - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width (GTK_CONTAINER (window), 3); - - pipeline = gst_pipeline_new ("pipeline"); - - if (method == 2) { - filter = gst_element_factory_make ("gloverlay", "flt"); - } else { - filter = gst_element_factory_make ("gldifferencematte", "flt"); - } - sink = gst_element_factory_make ("glimagesink", "glsink"); - - gst_bin_add_many (GST_BIN (pipeline), sourcebin, filter, sink, NULL); - - if (!gst_element_link_many (sourcebin, filter, sink, NULL)) { - g_print ("Failed to link one or more elements!\n"); - return -1; - } - - g_signal_connect (G_OBJECT (window), "delete-event", - G_CALLBACK (destroy_cb), pipeline); - g_signal_connect (G_OBJECT (window), "destroy-event", - G_CALLBACK (destroy_cb), pipeline); - - screen = gtk_drawing_area_new (); - - gtk_widget_set_size_request (screen, 640, 480); // 500 x 376 - - vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); - - gtk_box_pack_start (GTK_BOX (vbox), screen, TRUE, TRUE, 0); - - hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); - - play = gtk_button_new_with_label ("PLAY"); - - g_signal_connect (G_OBJECT (play), "clicked", G_CALLBACK (play_cb), pipeline); - - pause = gtk_button_new_with_label ("PAUSE"); - - g_signal_connect (G_OBJECT (pause), "clicked", - G_CALLBACK (pause_cb), pipeline); - - null = gtk_button_new_with_label ("NULL"); - - g_signal_connect (G_OBJECT (null), "clicked", G_CALLBACK (null_cb), pipeline); - - ready = gtk_button_new_with_label ("READY"); - - g_signal_connect (G_OBJECT (ready), "clicked", - G_CALLBACK (ready_cb), pipeline); - - gtk_box_pack_start (GTK_BOX (hbox), null, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), ready, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), play, TRUE, TRUE, 0); - gtk_box_pack_start (GTK_BOX (hbox), pause, TRUE, TRUE, 0); - - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - - gtk_container_add (GTK_CONTAINER (window), vbox); - - gtk_widget_realize (screen); - - bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); - gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, screen, - NULL); - 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); - g_signal_connect (screen, "draw", G_CALLBACK (expose_cb), sink); - - gtk_drag_dest_set (screen, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY); - gtk_drag_dest_add_uri_targets (screen); - - g_signal_connect (screen, "drag-data-received", - G_CALLBACK (on_drag_data_received), filter); - - gtk_widget_show_all (GTK_WIDGET (window)); - - gst_element_set_state (pipeline, GST_STATE_PLAYING); - - gtk_main (); - - return 0; -} diff --git a/tests/examples/gtk/gstgtk.c b/tests/examples/gtk/gstgtk.c deleted file mode 100644 index 3d0d15ae22..0000000000 --- a/tests/examples/gtk/gstgtk.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * GStreamer - * Copyright (C) 2009 David A. Schleef - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include "gstgtk.h" - -#if GST_GL_HAVE_WINDOW_WIN32 && GDK_WINDOWING_WIN32 -#include -#endif -#if GST_GL_HAVE_WINDOW_X11 && GDK_WINDOWING_X11 -#include -#endif -#if GST_GL_HAVE_WINDOW_COCOA && GDK_WINDOWING_QUARTZ -#include -#endif - - -void -gst_video_overlay_set_gtk_window (GstVideoOverlay * videooverlay, - GtkWidget * widget) -{ - GdkWindow *window; - GdkDisplay *display; - const gchar *user_choice = g_getenv ("GST_GL_WINDOW"); - - window = gtk_widget_get_window (widget); - display = gdk_window_get_display (window); - -#if GST_GL_HAVE_WINDOW_WIN32 && GDK_WINDOWING_WIN32 - if (GDK_IS_WIN32_DISPLAY (display) && (!user_choice - || g_strcmp0 (user_choice, "win32") == 0)) { - gst_video_overlay_set_window_handle (videooverlay, - (guintptr) GDK_WINDOW_HWND (window)); - } else -#endif -#if GST_GL_HAVE_WINDOW_COCOA && GDK_WINDOWING_QUARTZ - if (GDK_IS_QUARTZ_DISPLAY (display) && (!user_choice - || g_strcmp0 (user_choice, "cocoa") == 0)) { - gst_video_overlay_set_window_handle (videooverlay, (guintptr) - gdk_quartz_window_get_nswindow (window)); - } else -#endif -#if GST_GL_HAVE_WINDOW_X11 && GDK_WINDOWING_X11 - if (GDK_IS_X11_DISPLAY (display) && (!user_choice - || g_strcmp0 (user_choice, "x11") == 0)) { - gst_video_overlay_set_window_handle (videooverlay, GDK_WINDOW_XID (window)); - } else -#endif - g_error ("Unsupported Gtk+ backend"); -}