From: Benjamin O. <co...@us...> - 2002-02-12 21:38:05
|
Update of /cvsroot/gstreamer/gst-player/libs/gst/player In directory usw-pr-cvs1:/tmp/cvs-serv15382/libs/gst/player Modified Files: Makefile.am gstmediaplay.c gstmediaplay.h gstplayer-marshal.list gststatusarea.c Added Files: gstplay.c gstplay.h stockicons.c stockicons.h Removed Files: gstplayer.c gstplayer.h Log Message: big reorganization and getting that thing going again: - changed pixmaps to be statically linked - removed old pixmaps and added new ones from tigert's stock project <http://primates.ximian.com/~tigert/new_stock_project> - changed image loading to allow themeable icons (most code stolen from libgnomeui) - changed gstplayer.[ch] to gstplay.[ch] - removed #ifndef USE_GLIB2 stuff - removed old workarounds for signals from state changes - fixed a bug in autoplugging - some other little changes (like updating the spec) --- NEW FILE: gstplay.c --- /* #include <gtk/gtk.h> */ #include "gstplay.h" #include "gstplayer-marshal.h" /* This is a 1:1 copy from gst/gstpropsprivate. * It is needed to parse INFO_EVENTs. * * In case you are wondering: * This is probably a bug and needs a big FIXME */ enum { INFORMATION, STATE_CHANGE, LAST_SIGNAL }; enum { ARG_0, ARG_URI, ARG_STATE, /* FILL ME */ }; /* GObject/GType variables */ static GstElementClass * parent_class = NULL; static guint gst_play_signals[LAST_SIGNAL] = { 0 }; /* GObject/GType initialization functions */ static void gst_play_init (GstPlay *play); static void gst_play_class_init (GstPlayClass *klass); /* properties */ static void gst_play_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); static void gst_play_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); /* pipeline signal callbacks */ static void callback_pipeline_state_change (GstElement *element, GstElementState old, GstElementState state, GstPlay* play); static void callback_pipeline_deep_notify (GstElement *element, GstElement *orig, GParamSpec *param, GstPlay* play); /* idle callback function */ gboolean gst_play_idle_callback (GstPlay *play); /* couples/decouples the state of pipeline and Gstplay */ static void gst_play_set_couple_state (GstPlay *play, gboolean new_couple); /* FIXME: Make output and input elements pluggable */ static GstElement * get_default_audio_element (void); static GstElement * get_default_video_element (void); /* Enumerations that need a GType because they're arguments */ /* FIXME: This shouldn't go here but it is supposed to break anyway if someone implements this in the core */ #define GST_TYPE_ELEMENT_STATE (gst_element_state_get_type()) static GType gst_element_state_get_type(void) { static GType element_state_type = 0; static GEnumValue element_state[] = { { GST_STATE_NULL, "0", "null" }, { GST_STATE_READY, "1", "ready" }, { GST_STATE_PAUSED, "2", "paused" }, { GST_STATE_PLAYING, "3", "playing" }, { 0, NULL, NULL }, }; if (!element_state_type) { element_state_type = g_enum_register_static("GstElementState", element_state); } return element_state_type; } GType gst_play_get_type (void) { static GType play_type = 0; if (!play_type) { static const GTypeInfo play_info = { sizeof (GstPlayClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gst_play_class_init, /* class_init */ NULL, /* class_finalize */ NULL, /* class_data */ sizeof (GstPlay), 0, /* n_preallocs */ (GInstanceInitFunc) gst_play_init, }; play_type = g_type_register_static (G_TYPE_OBJECT, "GstPlay", &play_info, 0); } return play_type; } static void gst_play_class_init(GstPlayClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); /* initialize parent class */ parent_class = g_type_class_ref(GST_TYPE_OBJECT); /* initialize signal functions */ klass->information = NULL; klass->state_changed = NULL; /* properties */ gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_play_set_property); gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_play_get_property); g_object_class_install_property (gobject_class, ARG_URI, g_param_spec_string ("URI", "location", "name of the file to play", NULL, G_PARAM_READWRITE)); g_object_class_install_property (gobject_class, ARG_STATE, g_param_spec_enum ("state", "State", "Null, Ready, Paused or Playing", GST_TYPE_ELEMENT_STATE, GST_STATE_NULL, G_PARAM_READWRITE)); /* initialize signals */ gst_play_signals[INFORMATION] = g_signal_new ("information", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstPlayClass, information), NULL, NULL, gst_play_marshal_VOID__OBJECT_PARAM, G_TYPE_NONE, 2, G_TYPE_OBJECT, G_TYPE_PARAM); gst_play_signals[STATE_CHANGE] = g_signal_new ("state_change", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GstPlayClass, state_changed), NULL, NULL, gst_play_marshal_VOID__INT_INT, G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT); } /* initializes the pipeline that should be used. * FIXME: Should this go into the _new function to allow returning NULL * if something fails? */ static void gst_play_init(GstPlay *play) { GstElement *autoplugger; /* init pipeline */ play->pipeline = gst_pipeline_new ("main_pipeline"); g_assert (GST_IS_PIPELINE(play->pipeline)); /* connect to pipeline events */ g_signal_connect (G_OBJECT (play->pipeline), "deep_notify", G_CALLBACK (callback_pipeline_deep_notify), play); g_signal_connect (G_OBJECT (play->pipeline), "state_change", G_CALLBACK (callback_pipeline_state_change), play); /* create those elements */ play->source = gst_elementfactory_make ("filesrc", "source"); autoplugger = gst_elementfactory_make ("spider", "autoplugger"); play->audio_sink = get_default_audio_element(); play->video_sink = get_default_video_element(); /* add those elements */ gst_bin_add (GST_BIN (play->pipeline), play->source); gst_bin_add (GST_BIN (play->pipeline), autoplugger); gst_bin_add (GST_BIN (play->pipeline), play->audio_sink); gst_bin_add (GST_BIN (play->pipeline), play->video_sink); /* and connect them */ gst_element_connect_elements (play->source, autoplugger); gst_element_connect_elements (autoplugger, play->audio_sink); gst_element_connect_elements (autoplugger, play->video_sink); /* set variables */ play->state = gst_element_get_state (play->pipeline); play->state_coupled = TRUE; gst_bin_use_clock (GST_BIN (play->pipeline), gst_system_clock_obtain ()); } /* pipeline signal callbacks */ static void callback_pipeline_deep_notify (GstElement *element, GstElement *orig, GParamSpec *param, GstPlay* play) { g_signal_emit (G_OBJECT (play), gst_play_signals[INFORMATION], 0, orig, param); } /* callback on changing states * makes the pipeline state and the state of the GstPlay object match */ static void callback_pipeline_state_change (GstElement *element, GstElementState old, GstElementState state, GstPlay* play) { GstElementState old_state; /* check that the input is ok */ g_assert (element != NULL); g_assert (GST_IS_ELEMENT (element)); g_assert (play != NULL); g_assert (GST_IS_PLAY (play)); g_assert (element == GST_ELEMENT (play->pipeline)); /* don't care if states aren't coupled */ if (!play->state_coupled) return; /* don't care if the state hasn't changed */ /* g_print("state change\n"); */ if (state == play->state) return; /* change state */ old_state = play->state; play->state = state; /* do additional stuff depending on state */ switch (state) { case GST_STATE_PLAYING: /* g_print("idle func added\n"); */ g_idle_add ((GSourceFunc) gst_play_idle_callback, play); break; default: /* g_print("idle func removed\n"); */ g_idle_remove_by_data(play); break; } g_signal_emit (G_OBJECT (play), gst_play_signals[STATE_CHANGE], 0, old_state, play->state); } GstPlay * gst_play_new (void) { return g_object_new (GST_TYPE_PLAY, NULL); } GstPlay * gst_play_new_from_uri (const guchar *uri) { GstPlay * play; play = gst_play_new(); g_object_set (G_OBJECT (play), "URI", uri, NULL); return play; } static GstElement * get_default_audio_element (void) { GstElement* audio_sink; audio_sink = gst_elementfactory_make ("osssink", "play_audio"); /* g_object_set(G_OBJECT(audio_sink), "fragment", 256, NULL); */ return audio_sink; } static GstElement * get_default_video_element (void) { GstElement *video_sink; GstElement *video_show; GstElement *colorspace; video_sink = gst_elementfactory_make ("bin", "video_bin"); g_return_if_fail (video_sink != NULL); video_show = gst_elementfactory_make ("xvideosink", "show"); g_return_if_fail (video_show != NULL); gst_bin_add (GST_BIN (video_sink), video_show); colorspace = gst_elementfactory_make ("colorspace", "colorspace"); if (colorspace == NULL) { g_warning ("could not create the 'colorspace' element, doing without"); gst_element_add_ghost_pad (video_sink, gst_element_get_pad (video_show, "sink"), "sink"); } else { GST_FLAG_SET (video_sink, GST_ELEMENT_THREAD_SUGGESTED); gst_bin_add (GST_BIN (video_sink), colorspace); gst_element_connect (colorspace, "src", video_show, "sink"); gst_element_add_ghost_pad (video_sink, gst_element_get_pad (colorspace, "sink"), "sink"); } return video_sink; } /* idle function callback */ gboolean gst_play_idle_callback(GstPlay *play) { gboolean ret; ret = gst_bin_iterate (GST_BIN (play->pipeline)); if (!ret) { /* g_print("idle func removing itself\n"); */ } return ret; } /* couples or decouples the pipeline state from the GstPlay state. */ static void gst_play_set_couple_state (GstPlay *play, gboolean new_couple) { /* sanity checks */ g_return_if_fail(play != NULL); g_return_if_fail(GST_IS_PLAY (play)); /* return if nothing must be done */ if (new_couple == play->state_coupled) return; /* set new state */ play->state_coupled = new_couple; /* set play state to pipeline state if coupled */ if (new_couple) { callback_pipeline_state_change(play->pipeline, play->state, gst_element_get_state (GST_ELEMENT (play->pipeline)), play); } } static void gst_play_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GstPlay *play = GST_PLAY (object); gchar *location; /* it's not null if we got it, but it might not be ours */ g_return_if_fail (GST_IS_PLAY (play)); /*g_print("%d\n", prop_id);*/ switch (prop_id) { case ARG_URI: g_object_get (play->source, "location", &location, NULL); /* somebody make the spider handle new streams, plz */ if (location != NULL) { g_warning ("This property is not working. Expect segfault. or weird behaviour."); /* return; */ } g_object_set (play->source, "location", g_value_get_string (value), NULL); break; case ARG_STATE: gst_element_set_state( GST_ELEMENT(play->pipeline), g_value_get_enum (value)); /* gst_element_set_state (GST_ELEMENT (play->pipeline), g_value_get_enum (value)); */ break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } static void gst_play_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GstPlay *play = GST_PLAY (object); gchar *location; /* it's not null if we got it, but it might not be ours */ g_return_if_fail (GST_IS_PLAY (play)); switch (prop_id) { case ARG_URI: g_object_get (play->source, "location", &location, NULL); g_value_set_string (value, location); break; case ARG_STATE: g_value_set_enum (value, gst_element_get_state (GST_ELEMENT (play->pipeline))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } } --- NEW FILE: gstplay.h --- #ifndef __GSTPLAY_H__ #define __GSTPLAY_H__ #include <gst/gst.h> /* * GstPlay is a simple class for audio and video playback. * It's job is to get the media (supplied by a URI) played. * More specific it should get the media from source to the output elements. * How that is done should not be relevant for developers using this class. * A user using this class should not have to know very much about how * GStreamer works, other than that it plays back media. * Additionally it supplies signals to get information about the current * playing state. */ /* disabled in the hope that using GstElementState is enough */ /* typedef enum { /* after errors or before loading a file */ /*GST_PLAY_EMPTY, /* states like gst states */ /*GST_PLAY_STOPPED, GST_PLAY_PAUSED, GST_PLAY_PLAYING, } GstPlayState; */ typedef enum { GST_PLAY_OK, GST_PLAY_UNKNOWN_MEDIA, GST_PLAY_CANNOT_PLAY, GST_PLAY_ERROR, } GstPlayReturn; #define GST_TYPE_PLAY (gst_play_get_type()) #define GST_PLAY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PLAY, GstPlay)) #define GST_PLAY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLAY, GstPlayClass)) #define GST_IS_PLAY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PLAY)) #define GST_IS_PLAY_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PLAY)) #define GST_PLAY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PLAY, GstPlayClass)) typedef struct _GstPlayInfo GstPlayInfo; typedef struct _GstPlay GstPlay; typedef struct _GstPlayClass GstPlayClass; struct _GstPlay { GObject parent; GstElement * pipeline; GstElement * video_sink; GstElement * audio_sink; GstElement * source; /* FIXME: Do we need the next two? */ /* the current state of this object */ GstElementState state; /* wether or not the state is the same as the pipeline's * It's only used for internal things like autoplugging */ gboolean state_coupled; /* Should GstPlay support muting or be simpler? gboolean muted; */ }; struct _GstPlayClass { GObjectClass parent_class; /* signals */ void (*information) (GstPlay* play, GstElement* element, gchar *name); void (*state_changed) (GstPlay* play, GstElementState old_state, GstElementState new_state); }; GType gst_play_get_type (void); /* setup the player */ GstPlay * gst_play_new (void); GstPlay * gst_play_new_from_uri (const guchar *uri); #endif /* __GSTPLAY_H__ */ --- NEW FILE: stockicons.c --- #include "stockicons.h" #include "pixmaps/pixmaps.h" /* add Icons with given size */ static void G_GNUC_UNUSED add_sized (GtkIconFactory *factory, const guchar *inline_data, GtkIconSize size, const gchar *stock_id) { GtkIconSet *set; GtkIconSource *source; GdkPixbuf *pixbuf; pixbuf = gdk_pixbuf_new_from_inline (-1, inline_data, FALSE, NULL); source = gtk_icon_source_new (); gtk_icon_source_set_pixbuf (source, pixbuf); gtk_icon_source_set_size (source, size); set = gtk_icon_set_new (); gtk_icon_set_add_source (set, source); gtk_icon_factory_add (factory, stock_id, set); g_object_unref (G_OBJECT (pixbuf)); gtk_icon_source_free (source); gtk_icon_set_unref (set); } /* add our default icons */ static void G_GNUC_UNUSED add_default_icons (GtkIconFactory *factory) { add_sized (factory, stock_media_forward, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_FORWARD); add_sized (factory, stock_media_pause, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_PAUSE); add_sized (factory, stock_media_previous, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_PREVIOUS); add_sized (factory, stock_media_rewind, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_REWIND); add_sized (factory, stock_media_next, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_NEXT); add_sized (factory, stock_media_play, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_PLAY); add_sized (factory, stock_media_record, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_RECORD); add_sized (factory, stock_media_stop, GTK_ICON_SIZE_BUTTON, GST_STOCK_MEDIA_STOP); } /* init our stock items */ void _gstplay_stock_icons_init (void) { static gboolean initialized = FALSE; GtkIconFactory *factory; if (initialized) return; else initialized = TRUE; factory = gtk_icon_factory_new (); add_default_icons (factory); gtk_icon_factory_add_default (factory); } --- NEW FILE: stockicons.h --- #ifndef __GSTPLAY_STOCK_ICONS_H__ #define __GSTPLAY_STOCK_ICONS_H__ #include <glib/gmacros.h> #include <gtk/gtkiconfactory.h> G_BEGIN_DECLS #define GST_STOCK_MEDIA_FORWARD "stock-media-forward" #define GST_STOCK_MEDIA_PAUSE "stock-media-pause" #define GST_STOCK_MEDIA_PREVIOUS "stock-media-previous" #define GST_STOCK_MEDIA_REWIND "stock-media-rewind" #define GST_STOCK_MEDIA_NEXT "stock-media-next" #define GST_STOCK_MEDIA_PLAY "stock-media-play" #define GST_STOCK_MEDIA_RECORD "stock-media-record" #define GST_STOCK_MEDIA_STOP "stock-media-stop" G_END_DECLS #endif /* __GSTPLAY_STOCK_ICONS_H__ */ Index: Makefile.am =================================================================== RCS file: /cvsroot/gstreamer/gst-player/libs/gst/player/Makefile.am,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile.am 3 Feb 2002 21:12:32 -0000 1.1 +++ Makefile.am 12 Feb 2002 20:39:06 -0000 1.2 @@ -7,23 +7,28 @@ lib_LTLIBRARIES = libgstplayer.la libgstplayer_la_SOURCES = \ - gstplayer.c \ + gstplay.c \ songinfo.c \ gststatusarea.c \ gstmediaplay.c \ gstprefs.c \ + stockicons.c \ gstplayer-marshal.c -libgstplayer_la_CFLAGS = $(GST_PLAYER_CFLAGS) -DPIXMAPS_INSTALLED=\""$(pkgdatadir)/pixmaps"\" +libgstplayer_la_CFLAGS = $(GST_CFLAGS) $(GNOME_CFLAGS) +libgstplayer_la_LIBADD = $(GST_LIBS) $(GNOME_LIBS) + + noinst_HEADERS = \ - gstplayer.h \ + gstplay.h \ songinfo.h \ gstplayer-private.h \ gststatusarea.h \ gstprefs.h \ gstmediaplay.h \ - gstplayer-marshal.h + gstplayer-marshal.h \ + stockicons.h ## playlist.h \ gstplayer-marshal.h: gstplayer-marshal.list @@ -37,6 +42,6 @@ || ( rm -f gstplayer-marshal.tmp && exit 1 ) EXTRA_DIST = \ - gstplayer.h songinfo.h gststatusarea.h gstmediaplay.h gstprefs.h gstplayer-marshal.list + stockicons.h gstplayer.h songinfo.h gststatusarea.h gstmediaplay.h gstprefs.h gstplayer-marshal.list DISTCLEANFILES = gstplayer-marshal.c gstplayer-marshal.h Index: gstmediaplay.c =================================================================== RCS file: /cvsroot/gstreamer/gst-player/libs/gst/player/gstmediaplay.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gstmediaplay.c 12 Feb 2002 14:13:51 -0000 1.4 +++ gstmediaplay.c 12 Feb 2002 20:39:08 -0000 1.5 @@ -3,6 +3,7 @@ #include "gstmediaplay.h" /* #include "playlist.h" */ #include "gstprefs.h" +#include "stockicons.h" static void gst_media_play_class_init (GstMediaPlayClass *klass); static void gst_media_play_init (GstMediaPlay *play); @@ -21,8 +22,6 @@ static void gst_media_play_frame_displayed (GstMediaPlay *mplay); void gst_media_play_set_fullscreen (GstMediaPlay *mplay); -gchar* gst_pixmap_path (gchar *pixmap_fn); - gchar *current_directory; static GObject *parent_class = NULL; @@ -54,7 +53,6 @@ GNOMEUIINFO_END }; -#ifdef USE_GLIB2 GType gst_media_play_get_type (void) { @@ -82,44 +80,13 @@ return play_type; } -#else /* !USE_GLIB2 */ -GtkType -gst_media_play_get_type (void) -{ - static GtkType play_type = 0; - - if (!play_type) { - static const GtkTypeInfo play_info = { - "GstMediaPlay", - sizeof (GstMediaPlay), - sizeof (GstMediaPlayClass), - (GtkClassInitFunc) gst_media_play_class_init, - (GtkObjectInitFunc) gst_media_play_init, - NULL, - NULL, - (GtkClassInitFunc) NULL, - }; - play_type = gtk_type_unique (gtk_object_get_type(), &play_info); - } - return play_type; -} -#endif /* !USE_GLIB2 */ +extern void _gstplay_stock_icons_init (void); /* delete me? */ static void gst_media_play_class_init (GstMediaPlayClass *klass) { -#ifdef USE_GLIB2 - GObjectClass *object_class; - - parent_class = gtk_type_class (G_TYPE_OBJECT); - object_class = (GObjectClass*) klass; -#else /* !USE_GLIB2 */ - GtkObjectClass *object_class; - - parent_class = gtk_type_class (gtk_object_get_type ()); - object_class = (GtkObjectClass*) klass; -#endif /* !USE_GLIB2 */ + _gstplay_stock_icons_init (); } static void @@ -130,7 +97,6 @@ GtkWidget *button; GtkWidget *pixmap; GtkTooltips *tooltips; - gchar *path = NULL; mplay->play = gst_play_new (); @@ -165,10 +131,9 @@ tooltips = gtk_tooltips_new (); + button = gtk_button_new (); - path = gst_pixmap_path ("play.xpm"); - pixmap = gnome_pixmap_new_from_file (path); - if (path) { g_free (path); path = NULL; } + pixmap = gtk_image_new_from_stock (GST_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), pixmap); gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, "Play", NULL); gtk_box_pack_start (GTK_BOX (mplay->button_hbox), button, 1, 1, 0); @@ -176,9 +141,7 @@ G_CALLBACK (gst_media_play_play), mplay); button = gtk_button_new (); - path = gst_pixmap_path ("pause.xpm"); - pixmap = gnome_pixmap_new_from_file (path); - if (path) { g_free (path); path = NULL; } + pixmap = gtk_image_new_from_stock (GST_STOCK_MEDIA_PAUSE, GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), pixmap); gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, "Pause", NULL); gtk_box_pack_start (GTK_BOX (mplay->button_hbox), button, 1, 1, 0); @@ -186,9 +149,7 @@ G_CALLBACK (gst_media_play_pause), mplay); button = gtk_button_new (); - path = gst_pixmap_path ("stop.xpm"); - pixmap = gnome_pixmap_new_from_file (path); - if (path) { g_free (path); path = NULL; } + pixmap = gtk_image_new_from_stock (GST_STOCK_MEDIA_STOP, GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), pixmap); gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, "Stop", NULL); gtk_box_pack_start (GTK_BOX (mplay->button_hbox), button, 1, 1, 0); @@ -196,9 +157,7 @@ G_CALLBACK (gst_media_play_stop), mplay); button = gtk_button_new (); - path = gst_pixmap_path ("next.xpm"); - pixmap = gnome_pixmap_new_from_file (path); - if (path) { g_free (path); path = NULL; } + pixmap = gtk_image_new_from_stock (GST_STOCK_MEDIA_NEXT, GTK_ICON_SIZE_BUTTON); gtk_container_add (GTK_CONTAINER (button), pixmap); gtk_tooltips_set_tip (GTK_TOOLTIPS (tooltips), button, "Next", NULL); gtk_box_pack_start (GTK_BOX (mplay->button_hbox), button, 1, 1, 0); @@ -338,6 +297,7 @@ NULL, NULL, NULL); + g_signal_connect (G_OBJECT (about), "destroy", G_CALLBACK (gtk_widget_destroyed), &about); @@ -648,23 +608,4 @@ mplay->fullscreen_active = FALSE; } } -} - -/* return path to a gst pixmap - * try the hard-coded path first - * if that doesn't exist, use the one based on prefix - */ - -gchar* -gst_pixmap_path (gchar *pixmap_fn) -{ - gchar *path; - - path = g_strconcat (PIXMAPS_UNINSTALLED, "/", pixmap_fn, NULL); - if (access (path, R_OK) != 0) - { - g_free (path); - path = g_strconcat(PIXMAPS_INSTALLED, "/", pixmap_fn, NULL); - } - return path; } Index: gstmediaplay.h =================================================================== RCS file: /cvsroot/gstreamer/gst-player/libs/gst/player/gstmediaplay.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gstmediaplay.h 3 Feb 2002 21:12:32 -0000 1.1 +++ gstmediaplay.h 12 Feb 2002 20:39:12 -0000 1.2 @@ -1,7 +1,7 @@ #ifndef __GST_MEDIA_PLAY_H__ #define __GST_MEDIA_PLAY_H__ -#include "gstplayer.h" +#include "gstplay.h" #include "gststatusarea.h" #define GST_TYPE_MEDIA_PLAY (gst_media_play_get_type()) Index: gstplayer-marshal.list =================================================================== RCS file: /cvsroot/gstreamer/gst-player/libs/gst/player/gstplayer-marshal.list,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gstplayer-marshal.list 3 Feb 2002 21:12:32 -0000 1.1 +++ gstplayer-marshal.list 12 Feb 2002 20:39:16 -0000 1.2 @@ -1,2 +1,2 @@ -VOID:STRING,POINTER,POINTER +VOID:OBJECT,PARAM VOID:INT,INT Index: gststatusarea.c =================================================================== RCS file: /cvsroot/gstreamer/gst-player/libs/gst/player/gststatusarea.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- gststatusarea.c 12 Feb 2002 14:02:57 -0000 1.2 +++ gststatusarea.c 12 Feb 2002 20:39:24 -0000 1.3 @@ -23,7 +23,7 @@ }; static GtkDrawingArea *parent_class = NULL; -//static guint gst_status_area_signals[LAST_SIGNAL] = { 0 }; +/* static guint gst_status_area_signals[LAST_SIGNAL] = { 0 }; */ GtkType gst_status_area_get_type (void) @@ -258,11 +258,11 @@ void cb_gst_toggle_extended (void) { - //get pointer to status area + /* get pointer to status area */ - //grab current extended status + /* grab current extended status */ - //reverse truth on that by gst_status_show_extended + /* reverse truth on that by gst_status_show_extended */ } void --- gstplayer.c DELETED --- --- gstplayer.h DELETED --- |