From: Thomas V. S. <tho...@us...> - 2002-07-28 13:09:50
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Jul 28 2002 06:09:47 PDT Log message: this triggers a regen of the autogenned source files Modified files: gst : Makefile.am Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/Makefile.am.diff?r1=1.114&r2=1.115 ====Begin Diffs==== Index: Makefile.am =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.114 retrieving revision 1.115 diff -u -d -r1.114 -r1.115 --- Makefile.am 28 Jul 2002 01:54:42 -0000 1.114 +++ Makefile.am 28 Jul 2002 13:09:35 -0000 1.115 @@ -101,7 +101,7 @@ glib-genmarshal --body --prefix=gst_marshal $(srcdir)/gstmarshal.list >> gstmarshal.c.tmp mv gstmarshal.c.tmp gstmarshal.c -gstenumtypes.h: +gstenumtypes.h: $(libgstreamerinclude_HEADERS) glib-mkenums \ --fhead "#ifndef __GST_ENUM_TYPES_H__\n#define __GST_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ --fprod "/* enumerations from \"@filename@\" */\n" \ @@ -109,7 +109,7 @@ --ftail "G_END_DECLS\n\n#endif /* __GST_ENUM_TYPES_H__ */" \ $(libgstreamerinclude_HEADERS) > gstenumtypes.h -gstenumtypes.c: +gstenumtypes.c: $(libgstreamerinclude_HEADERS) glib-mkenums \ --fhead "#include <gst/gst.h>" \ --fprod "\n/* enumerations from \"@filename@\" */" \ |
From: Thomas V. S. <tho...@us...> - 2002-07-31 14:27:39
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Wed Jul 31 2002 07:27:34 PDT Log message: fix name and comment Modified files: gst : gstdata_private.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstdata_private.h.diff?r1=1.1&r2=1.2 ====Begin Diffs==== Index: gstdata_private.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstdata_private.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gstdata_private.h 8 Jul 2002 19:12:38 -0000 1.1 +++ gstdata_private.h 31 Jul 2002 14:27:22 -0000 1.2 @@ -2,7 +2,7 @@ * Copyright (C) 1999,2000 Erik Walthinsen <om...@cs...> * 2000 Wim Taymans <wt...@ch...> * - * gstdata.c: Data operations + * gstdata_private.h: private gstdata stuff * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public |
From: Thomas V. S. <tho...@us...> - 2002-07-31 14:28:28
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Wed Jul 31 2002 07:28:27 PDT Log message: make dist fix Modified files: gst : Makefile.am Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/Makefile.am.diff?r1=1.115&r2=1.116 ====Begin Diffs==== Index: Makefile.am =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.115 retrieving revision 1.116 diff -u -d -r1.115 -r1.116 --- Makefile.am 28 Jul 2002 13:09:35 -0000 1.115 +++ Makefile.am 31 Jul 2002 14:28:15 -0000 1.116 @@ -170,6 +170,7 @@ noinst_HEADERS = \ gst_private.h \ + gstdata_private.h \ gstarch.h \ cothreads.h |
From: Thomas V. S. <tho...@us...> - 2002-08-11 19:34:04
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Aug 11 2002 12:34:00 PDT Log message: better error handling, still needs improvement Modified files: gst : gstpipeline.c gstscheduler.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpipeline.c.diff?r1=1.64&r2=1.65 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstscheduler.c.diff?r1=1.69&r2=1.70 ====Begin Diffs==== Index: gstpipeline.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpipeline.c,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -r1.64 -r1.65 --- gstpipeline.c 8 Jul 2002 19:07:26 -0000 1.64 +++ gstpipeline.c 11 Aug 2002 19:33:47 -0000 1.65 @@ -106,7 +106,11 @@ /* get an instance of the default scheduler */ scheduler = gst_scheduler_factory_make (NULL, GST_ELEMENT (pipeline)); /* FIXME need better error handling */ - g_return_if_fail (scheduler != NULL); + if (scheduler == NULL) + { + g_error ("Critical error: could not get a scheduler - \ + are you sure you have a registry ?"); + } gst_scheduler_setup (scheduler); } Index: gstscheduler.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstscheduler.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -d -r1.69 -r1.70 --- gstscheduler.c 30 Jul 2002 19:21:13 -0000 1.69 +++ gstscheduler.c 11 Aug 2002 19:33:47 -0000 1.70 @@ -810,11 +810,17 @@ gst_scheduler_factory_make (const gchar *name, GstElement *parent) { GstSchedulerFactory *factory; + const gchar *default_name = gst_scheduler_factory_get_default_name (); if (name) factory = gst_scheduler_factory_find (name); else - factory = gst_scheduler_factory_find (gst_scheduler_factory_get_default_name ()); + { + /* FIXME: do better error handling */ + if (default_name == NULL) + g_error ("No default scheduler name - do you have a registry ?"); + factory = gst_scheduler_factory_find (default_name); + } if (factory == NULL) return NULL; |
From: Thomas V. S. <tho...@us...> - 2002-08-11 21:00:30
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Aug 11 2002 14:00:30 PDT Log message: adding EXISTS flag Modified files: gst : gstregistry.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.h.diff?r1=1.6&r2=1.7 ====Begin Diffs==== Index: gstregistry.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstregistry.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gstregistry.h 9 Jul 2002 10:27:21 -0000 1.6 +++ gstregistry.h 11 Aug 2002 21:00:18 -0000 1.7 @@ -56,8 +56,9 @@ typedef enum { GST_REGISTRY_READABLE = (1 << 1), GST_REGISTRY_WRITABLE = (1 << 2), - GST_REGISTRY_REMOTE = (1 << 3), - GST_REGISTRY_DELAYED_LOADING = (1 << 4) + GST_REGISTRY_EXISTS = (1 << 3), + GST_REGISTRY_REMOTE = (1 << 4), + GST_REGISTRY_DELAYED_LOADING = (1 << 5) } GstRegistryFlags; |
From: Thomas V. S. <tho...@us...> - 2002-08-12 16:41:06
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Mon Aug 12 2002 09:41:03 PDT Log message: fixes bug http://bugzilla.gnome.org/show_bug.cgi?id=90332 Modified files: gst : gstelement.c gstelement.h gstpad.c gstpad.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.c.diff?r1=1.151&r2=1.152 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.h.diff?r1=1.103&r2=1.104 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.173&r2=1.174 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.h.diff?r1=1.94&r2=1.95 ====Begin Diffs==== Index: gstelement.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelement.c,v retrieving revision 1.151 retrieving revision 1.152 diff -u -d -r1.151 -r1.152 --- gstelement.c 30 Jul 2002 19:17:25 -0000 1.151 +++ gstelement.c 12 Aug 2002 16:40:50 -0000 1.152 @@ -995,7 +995,7 @@ * Returns: the added ghost pad or NULL, if no ghost pad was created. */ GstPad * -gst_element_add_ghost_pad (GstElement *element, GstPad *pad, gchar *name) +gst_element_add_ghost_pad (GstElement *element, GstPad *pad, const gchar *name) { GstPad *ghostpad; @@ -1007,8 +1007,9 @@ /* then check to see if there's already a pad by that name here */ g_return_val_if_fail (gst_object_check_uniqueness (element->pads, name) == TRUE, NULL); - GST_DEBUG(GST_CAT_ELEMENT_PADS,"creating new ghost pad called %s, from pad %s:%s", - name,GST_DEBUG_PAD_NAME(pad)); + GST_DEBUG (GST_CAT_ELEMENT_PADS, + "creating new ghost pad called %s, from pad %s:%s", + name, GST_DEBUG_PAD_NAME(pad)); ghostpad = gst_ghost_pad_new (name, pad); /* add it to the list */ Index: gstelement.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelement.h,v retrieving revision 1.103 retrieving revision 1.104 diff -u -d -r1.103 -r1.104 --- gstelement.h 30 Jul 2002 19:17:25 -0000 1.103 +++ gstelement.h 12 Aug 2002 16:40:50 -0000 1.104 @@ -228,7 +228,7 @@ void gst_element_add_pad (GstElement *element, GstPad *pad); void gst_element_remove_pad (GstElement *element, GstPad *pad); -GstPad * gst_element_add_ghost_pad (GstElement *element, GstPad *pad, gchar *name); +GstPad * gst_element_add_ghost_pad (GstElement *element, GstPad *pad, const gchar *name); void gst_element_remove_ghost_pad (GstElement *element, GstPad *pad); GstPad* gst_element_get_pad (GstElement *element, const gchar *name); Index: gstpad.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.173 retrieving revision 1.174 diff -u -d -r1.173 -r1.174 --- gstpad.c 2 Aug 2002 11:40:26 -0000 1.173 +++ gstpad.c 12 Aug 2002 16:40:50 -0000 1.174 @@ -2400,7 +2400,7 @@ * Returns: new ghost pad */ GstPad* -gst_ghost_pad_new (gchar *name, +gst_ghost_pad_new (const gchar *name, GstPad *pad) { GstGhostPad *ghostpad; Index: gstpad.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.h,v retrieving revision 1.94 retrieving revision 1.95 diff -u -d -r1.94 -r1.95 --- gstpad.h 2 Aug 2002 11:40:27 -0000 1.94 +++ gstpad.h 12 Aug 2002 16:40:50 -0000 1.95 @@ -489,7 +489,7 @@ /* ghostpads */ -GstPad* gst_ghost_pad_new (gchar *name,GstPad *pad); +GstPad* gst_ghost_pad_new (const gchar *name, GstPad *pad); /* templates and factories */ |
From: Thomas V. S. <tho...@us...> - 2002-08-12 16:59:54
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Mon Aug 12 2002 09:59:52 PDT Log message: fixes bug http://bugzilla.gnome.org/show_bug.cgi?id=90333 and similar. I'd like to also do s/guchar/gchar/ in the xml functions, any reason not to ? please comment ;) Modified files: gst : gst.c gstelement.c gstelement.h gstpad.c gsttrace.c gsttrace.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gst.c.diff?r1=1.76&r2=1.77 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.c.diff?r1=1.152&r2=1.153 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.h.diff?r1=1.104&r2=1.105 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.174&r2=1.175 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gsttrace.c.diff?r1=1.7&r2=1.8 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gsttrace.h.diff?r1=1.9&r2=1.10 ====Begin Diffs==== Index: gst.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gst.c,v retrieving revision 1.76 retrieving revision 1.77 diff -u -d -r1.76 -r1.77 --- gst.c 11 Aug 2002 21:50:37 -0000 1.76 +++ gst.c 12 Aug 2002 16:59:39 -0000 1.77 @@ -434,12 +434,12 @@ #ifndef GST_DISABLE_TRACE _gst_trace_on = 0; if (_gst_trace_on) { - gst_trace = gst_trace_new ("gst.trace",1024); + gst_trace = gst_trace_new ("gst.trace", 1024); gst_trace_set_default (gst_trace); } #endif /* GST_DISABLE_TRACE */ if (_gst_progname == NULL) { - _gst_progname = g_strdup("gstprog"); + _gst_progname = g_strdup ("gstprog"); } } Index: gstelement.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelement.c,v retrieving revision 1.152 retrieving revision 1.153 diff -u -d -r1.152 -r1.153 --- gstelement.c 12 Aug 2002 16:40:50 -0000 1.152 +++ gstelement.c 12 Aug 2002 16:59:39 -0000 1.153 @@ -1252,7 +1252,7 @@ * Returns: the padtemplate with the given name. No unreferencing is necessary. */ GstPadTemplate* -gst_element_get_pad_template (GstElement *element, const guchar *name) +gst_element_get_pad_template (GstElement *element, const gchar *name) { GList *padlist; @@ -2333,8 +2333,8 @@ { xmlNodePtr children; GstElement *element; - guchar *name = NULL; - guchar *value = NULL; + gchar *name = NULL; + gchar *value = NULL; element = GST_ELEMENT (object); g_return_if_fail (element != NULL); Index: gstelement.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelement.h,v retrieving revision 1.104 retrieving revision 1.105 diff -u -d -r1.104 -r1.105 --- gstelement.h 12 Aug 2002 16:40:50 -0000 1.104 +++ gstelement.h 12 Aug 2002 16:59:39 -0000 1.105 @@ -245,7 +245,7 @@ GstPad* gst_element_get_compatible_static_pad (GstElement *element, GstPadTemplate *templ); */ -GstPadTemplate* gst_element_get_pad_template (GstElement *element, const guchar *name); +GstPadTemplate* gst_element_get_pad_template (GstElement *element, const gchar *name); GList* gst_element_get_pad_template_list (GstElement *element); GstPadTemplate* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl); Index: gstpad.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.174 retrieving revision 1.175 diff -u -d -r1.174 -r1.175 --- gstpad.c 12 Aug 2002 16:40:50 -0000 1.174 +++ gstpad.c 12 Aug 2002 16:59:39 -0000 1.175 @@ -1880,7 +1880,7 @@ { xmlNodePtr field = self->xmlChildrenNode; GstPad *pad = NULL, *targetpad; - guchar *peer = NULL; + gchar *peer = NULL; gchar **split; GstElement *target; GstObject *grandparent; Index: gsttrace.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gsttrace.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gsttrace.c 4 Dec 2001 22:12:38 -0000 1.7 +++ gsttrace.c 12 Aug 2002 16:59:39 -0000 1.8 @@ -56,7 +56,7 @@ gint _gst_trace_on = 1; GstTrace * -gst_trace_new (guchar * filename, gint size) +gst_trace_new (gchar * filename, gint size) { GstTrace *trace = g_malloc (sizeof (GstTrace)); Index: gsttrace.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gsttrace.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- gsttrace.h 8 Jul 2002 19:07:28 -0000 1.9 +++ gsttrace.h 12 Aug 2002 16:59:39 -0000 1.10 @@ -51,7 +51,7 @@ gchar message[112]; }; -GstTrace* gst_trace_new (guchar *filename, gint size); +GstTrace* gst_trace_new (gchar *filename, gint size); void gst_trace_destroy (GstTrace *trace); void gst_trace_flush (GstTrace *trace); |
From: Thomas V. S. <tho...@us...> - 2002-08-13 13:56:18
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Tue Aug 13 2002 06:56:17 PDT Log message: fix for older glibc's Modified files: gst : cothreads.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/cothreads.c.diff?r1=1.79&r2=1.80 ====Begin Diffs==== Index: cothreads.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/cothreads.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -d -r1.79 -r1.80 --- cothreads.c 28 Jul 2002 01:04:33 -0000 1.79 +++ cothreads.c 13 Aug 2002 13:56:05 -0000 1.80 @@ -36,6 +36,10 @@ #include "gstlog.h" #include "gstutils.h" +/* older glibc's have MAP_ANON instead of MAP_ANONYMOUS */ +#ifndef MAP_ANONYMOUS +#define MAP_ANONYMOUS MAP_ANON +#endif #define STACK_SIZE 0x200000 |
From: Thomas V. S. <tho...@us...> - 2002-08-13 14:11:46
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Tue Aug 13 2002 07:11:45 PDT Log message: readable cleanups Modified files: gst : cothreads.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/cothreads.c.diff?r1=1.80&r2=1.81 ====Begin Diffs==== Index: cothreads.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/cothreads.c,v retrieving revision 1.80 retrieving revision 1.81 diff -u -d -r1.80 -r1.81 --- cothreads.c 13 Aug 2002 13:56:05 -0000 1.80 +++ cothreads.c 13 Aug 2002 14:11:33 -0000 1.81 @@ -567,7 +567,8 @@ /* find the number of the thread to switch to */ - GST_INFO (GST_CAT_COTHREAD_SWITCH, "switching from cothread #%d to cothread #%d", + GST_INFO (GST_CAT_COTHREAD_SWITCH, + "switching from cothread #%d to cothread #%d", ctx->current, thread->threadnum); ctx->current = thread->threadnum; @@ -577,12 +578,15 @@ #endif enter = setjmp (current->jmp); if (enter != 0) { - GST_DEBUG (GST_CAT_COTHREADS, "enter thread #%d %d %p<->%p (%d) %p", current->threadnum, enter, - current->sp, current->top_sp, (char*)current->top_sp - (char*)current->sp, current->jmp); + GST_DEBUG (GST_CAT_COTHREADS, + "enter thread #%d %d %p<->%p (%d) %p", + current->threadnum, enter, current->sp, current->top_sp, + (char*) current->top_sp - (char*) current->sp, current->jmp); return; } - GST_DEBUG (GST_CAT_COTHREADS, "exit thread #%d %d %p<->%p (%d) %p", current->threadnum, enter, - current->sp, current->top_sp, (char*)current->top_sp - (char*)current->sp, current->jmp); + GST_DEBUG (GST_CAT_COTHREADS, "exit thread #%d %d %p<->%p (%d) %p", + current->threadnum, enter, current->sp, current->top_sp, + (char*) current->top_sp - (char*) current->sp, current->jmp); enter = 1; if (current->flags & COTHREAD_DESTROYED) { |
From: Thomas V. S. <tho...@us...> - 2002-08-13 17:39:02
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Tue Aug 13 2002 10:39:01 PDT Log message: fixing recursive make problem and nonscrdir builds Modified files: gst : Makefile.am Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/Makefile.am.diff?r1=1.116&r2=1.117 ====Begin Diffs==== Index: Makefile.am =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.116 retrieving revision 1.117 diff -u -d -r1.116 -r1.117 --- Makefile.am 31 Jul 2002 14:28:15 -0000 1.116 +++ Makefile.am 13 Aug 2002 17:38:48 -0000 1.117 @@ -90,48 +90,12 @@ BUILT_SOURCES = gstmarshal.h gstmarshal.c gstenumtypes.h gstenumtypes.c -gstmarshal.h: gstmarshal.list - glib-genmarshal --header --prefix=gst_marshal $(srcdir)/gstmarshal.list > gstmarshal.h.tmp - mv gstmarshal.h.tmp gstmarshal.h - -gstmarshal.c: gstmarshal.list - echo "#include \"glib-object.h\"" >gstmarshal.c.tmp - echo "#include \"gstlog.h\"" >> gstmarshal.c.tmp - echo "#include \"gstmarshal.h\"" >> gstmarshal.c.tmp - glib-genmarshal --body --prefix=gst_marshal $(srcdir)/gstmarshal.list >> gstmarshal.c.tmp - mv gstmarshal.c.tmp gstmarshal.c - -gstenumtypes.h: $(libgstreamerinclude_HEADERS) - glib-mkenums \ - --fhead "#ifndef __GST_ENUM_TYPES_H__\n#define __GST_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ - --fprod "/* enumerations from \"@filename@\" */\n" \ - --vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ - --ftail "G_END_DECLS\n\n#endif /* __GST_ENUM_TYPES_H__ */" \ - $(libgstreamerinclude_HEADERS) > gstenumtypes.h - -gstenumtypes.c: $(libgstreamerinclude_HEADERS) - glib-mkenums \ - --fhead "#include <gst/gst.h>" \ - --fprod "\n/* enumerations from \"@filename@\" */" \ - --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ - --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ - --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ - $(libgstreamerinclude_HEADERS) > gstenumtypes.c - -# Don't want the generated marshal files in the dist -dist-hook: - rm -f $(distdir)/gstmarshal.c $(distdir)/gstmarshal.h -# Clean generated files -distclean-local: - rm -f $(top_builddir)/gst/gstmarshal.c $(top_builddir)/gst/gstmarshal.h - libgstreamerincludedir = $(includedir)/gstreamer-@VERSION@/gst -libgstreamerinclude_HEADERS = \ + +gst_headers = \ gst.h \ gstatomic.h \ gstconfig.h \ - gstmarshal.h \ - gstenumtypes.h \ gstobject.h \ gsttypes.h \ gstautoplug.h \ @@ -165,14 +129,57 @@ gstregistry.h \ gsttimecache.h \ gstparse.h \ - gstversion.h \ gstxml.h +built_headers = \ + gstversion.h \ + gstmarshal.h \ + gstenumtypes.h + +libgstreamerinclude_HEADERS = $(gst_headers) $(built_headers) + noinst_HEADERS = \ gst_private.h \ - gstdata_private.h \ + gstdata_private.h \ gstarch.h \ cothreads.h + + +gstmarshal.h: gstmarshal.list + glib-genmarshal --header --prefix=gst_marshal $^ > gstmarshal.h.tmp + mv gstmarshal.h.tmp gstmarshal.h + +gstmarshal.c: gstmarshal.list + echo "#include \"glib-object.h\"" >gstmarshal.c.tmp + echo "#include \"gstlog.h\"" >> gstmarshal.c.tmp + echo "#include \"gstmarshal.h\"" >> gstmarshal.c.tmp + glib-genmarshal --body --prefix=gst_marshal $^ >> gstmarshal.c.tmp + mv gstmarshal.c.tmp gstmarshal.c + +gstenumtypes.h: $(gst_headers) + glib-mkenums \ + --fhead "#ifndef __GST_ENUM_TYPES_H__\n#define __GST_ENUM_TYPES_H__\n\n#include <glib-object.h>\n\nG_BEGIN_DECLS\n" \ + --fprod "/* enumerations from \"@filename@\" */\n" \ + --vhead "GType @enum_name@_get_type (void);\n#define GST_TYPE_@ENUMSHORT@ (@enum_name@_get_type())\n" \ + --ftail "G_END_DECLS\n\n#endif /* __GST_ENUM_TYPES_H__ */" \ + $^ > gstenumtypes.h + +gstenumtypes.c: $(gst_headers) + glib-mkenums \ + --fhead "#include <gst/gst.h>" \ + --fprod "\n/* enumerations from \"@filename@\" */" \ + --vhead "GType\n@enum_name@_get_type (void)\n{\n static GType etype = 0;\n if (etype == 0) {\n static const G@Type@Value values[] = {" \ + --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \ + --vtail " { 0, NULL, NULL }\n };\n etype = g_@type@_register_static (\"@EnumName@\", values);\n }\n return etype;\n}\n" \ + $^ > gstenumtypes.c + +# Don't want the generated marshal files in the dist +dist-hook: + rm -f $(distdir)/gstmarshal.c $(distdir)/gstmarshal.h + +# Clean generated files +distclean-local: + rm -f $(top_builddir)/gst/gstmarshal.c $(top_builddir)/gst/gstmarshal.h libgstreamer_la_CFLAGS = -D_GNU_SOURCE -DGST_CONFIG_DIR=\""$(GST_CONFIG_DIR)"\" \ $(LIBGST_CFLAGS) \ |
From: Thomas V. S. <tho...@us...> - 2002-08-28 10:46:10
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Wed Aug 28 2002 03:46:09 PDT Log message: code cleanup fixes Modified files: gst : gstelementfactory.c gstobject.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelementfactory.c.diff?r1=1.68&r2=1.69 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstobject.c.diff?r1=1.47&r2=1.48 ====Begin Diffs==== Index: gstelementfactory.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelementfactory.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -d -r1.68 -r1.69 --- gstelementfactory.c 8 Jul 2002 19:07:24 -0000 1.68 +++ gstelementfactory.c 28 Aug 2002 10:45:56 -0000 1.69 @@ -188,9 +188,10 @@ GstElement *element; GstElementClass *oclass; - g_return_val_if_fail(factory != NULL, NULL); + g_return_val_if_fail (factory != NULL, NULL); - GST_DEBUG (GST_CAT_ELEMENT_FACTORY,"creating element from factory \"%s\" with name \"%s\" and type %d", + GST_DEBUG (GST_CAT_ELEMENT_FACTORY, + "creating element from factory \"%s\" (name \"%s\", type %d)", GST_OBJECT_NAME (factory), name, (gint) factory->type); if (!gst_plugin_feature_ensure_loaded (GST_PLUGIN_FEATURE (factory))) @@ -203,16 +204,17 @@ } /* create an instance of the element */ - element = GST_ELEMENT(g_object_new(factory->type,NULL)); - g_assert(element != NULL); + element = GST_ELEMENT (g_object_new (factory->type, NULL)); + g_assert (element != NULL); /* attempt to set the elemenfactory class pointer if necessary */ - oclass = GST_ELEMENT_CLASS(G_OBJECT_GET_CLASS(element)); + oclass = GST_ELEMENT_CLASS (G_OBJECT_GET_CLASS (element)); if (oclass->elementfactory == NULL) { - GST_DEBUG (GST_CAT_ELEMENT_FACTORY,"class %s", GST_OBJECT_NAME (factory)); + GST_DEBUG (GST_CAT_ELEMENT_FACTORY, "class %s", GST_OBJECT_NAME (factory)); oclass->elementfactory = factory; - /* copy pad template pointers to the element class, allow for custom padtemplates */ + /* copy pad template pointers to the element class, + * allow for custom padtemplates */ oclass->padtemplates = g_list_concat (oclass->padtemplates, g_list_copy (factory->padtemplates)); oclass->numpadtemplates += factory->numpadtemplates; @@ -243,17 +245,21 @@ g_return_val_if_fail (factoryname != NULL, NULL); - GST_DEBUG (GST_CAT_ELEMENT_FACTORY, "gstelementfactory: make \"%s\" \"%s\"", factoryname, name); + GST_DEBUG (GST_CAT_ELEMENT_FACTORY, "gstelementfactory: make \"%s\" \"%s\"", + factoryname, name); - /* gst_plugin_load_element_factory(factoryname); */ - factory = gst_element_factory_find(factoryname); + /* gst_plugin_load_element_factory (factoryname); */ + factory = gst_element_factory_find (factoryname); if (factory == NULL) { - GST_INFO (GST_CAT_ELEMENT_FACTORY,"no such elementfactory \"%s\"!",factoryname); + GST_INFO (GST_CAT_ELEMENT_FACTORY,"no such element factory \"%s\"!", + factoryname); return NULL; } element = gst_element_factory_create (factory, name); if (element == NULL) { - GST_INFO (GST_CAT_ELEMENT_FACTORY,"couldn't create instance of elementfactory \"%s\"!",factoryname); + GST_INFO (GST_CAT_ELEMENT_FACTORY, + "couldn't create instance of element factory \"%s\"!", + factoryname); return NULL; } Index: gstobject.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstobject.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -d -r1.47 -r1.48 --- gstobject.c 24 Jul 2002 20:42:13 -0000 1.47 +++ gstobject.c 28 Aug 2002 10:45:57 -0000 1.48 @@ -274,13 +274,16 @@ type_name = G_OBJECT_TYPE_NAME (object); + /* to ensure guaranteed uniqueness across threads, only one thread + * may ever assign a name */ G_LOCK (object_name_mutex); if (!object_name_counts) object_name_counts = g_hash_table_new (g_str_hash, g_str_equal); count = GPOINTER_TO_INT (g_hash_table_lookup (object_name_counts, type_name)); - g_hash_table_insert (object_name_counts, g_strdup (type_name), GINT_TO_POINTER (count+1)); + g_hash_table_insert (object_name_counts, g_strdup (type_name), + GINT_TO_POINTER (count + 1)); G_UNLOCK (object_name_mutex); @@ -300,7 +303,8 @@ * @object: GstObject to set the name of * @name: new name of object * - * Set the name of the object. + * Sets the name of the object, or gives the element a guaranteed unique + * name (if @name is NULL). */ void gst_object_set_name (GstObject *object, const gchar *name) |
From: Thomas V. S. <tho...@us...> - 2002-08-28 16:08:03
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Wed Aug 28 2002 09:07:53 PDT Log message: get the type number before showing it Modified files: gst : gstelementfactory.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelementfactory.c.diff?r1=1.69&r2=1.70 ====Begin Diffs==== Index: gstelementfactory.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelementfactory.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -d -r1.69 -r1.70 --- gstelementfactory.c 28 Aug 2002 10:45:56 -0000 1.69 +++ gstelementfactory.c 28 Aug 2002 16:07:34 -0000 1.70 @@ -190,12 +190,12 @@ g_return_val_if_fail (factory != NULL, NULL); + if (!gst_plugin_feature_ensure_loaded (GST_PLUGIN_FEATURE (factory))) + return NULL; + GST_DEBUG (GST_CAT_ELEMENT_FACTORY, "creating element from factory \"%s\" (name \"%s\", type %d)", GST_OBJECT_NAME (factory), name, (gint) factory->type); - - if (!gst_plugin_feature_ensure_loaded (GST_PLUGIN_FEATURE (factory))) - return NULL; if (factory->type == 0) { g_critical ("Factory for `%s' has no type", |
From: Thomas V. S. <tho...@us...> - 2002-08-29 10:30:05
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Thu Aug 29 2002 03:30:04 PDT Log message: clearer code and debug info Modified files: gst : gstdata.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstdata.c.diff?r1=1.4&r2=1.5 ====Begin Diffs==== Index: gstdata.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstdata.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- gstdata.c 25 Jul 2002 18:47:48 -0000 1.4 +++ gstdata.c 29 Aug 2002 10:29:51 -0000 1.5 @@ -191,8 +191,9 @@ g_return_if_fail (data != NULL); - GST_INFO (GST_CAT_BUFFER, "unref data %p, current count is %d", data,GST_DATA_REFCOUNT_VALUE(data)); - g_return_if_fail (GST_DATA_REFCOUNT_VALUE(data) > 0); + GST_INFO (GST_CAT_BUFFER, "unref data %p, count before unref is %d", + data, GST_DATA_REFCOUNT_VALUE (data)); + g_return_if_fail (GST_DATA_REFCOUNT_VALUE (data) > 0); GST_ATOMIC_INT_DEC_AND_TEST (&data->refcount, &zero); |
From: Thomas V. S. <tho...@us...> - 2002-08-30 14:02:28
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Fri Aug 30 2002 07:02:27 PDT Log message: code cleanups and doc fixes Modified files: gst : gstelement.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.c.diff?r1=1.153&r2=1.154 ====Begin Diffs==== Index: gstelement.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstelement.c,v retrieving revision 1.153 retrieving revision 1.154 diff -u -d -r1.153 -r1.154 --- gstelement.c 12 Aug 2002 16:59:39 -0000 1.153 +++ gstelement.c 30 Aug 2002 14:02:15 -0000 1.154 @@ -247,19 +247,20 @@ /** * gst_element_default_deep_notify: - * @object: the object that signalled the notify - * @orig: the object that intiated the notify - * @psepc: the paramspec of the property - * @excluded_props: user specified properties to exclude + * @object: the #GObject that signalled the notify. + * @orig: a #GstObject that initiated the notify. + * @pspec: a #GParamSpec of the property. + * @excluded_props: a set of user-specified properties to exclude. [...1334 lines suppressed...] -gst_element_class_install_std_props (GstElementClass * klass, const gchar *first_name, ...) +gst_element_class_install_std_props (GstElementClass * klass, + const gchar *first_name, ...) { const char *name; @@ -2655,11 +2708,11 @@ /** * gst_element_get_managing_bin: - * @element: a #GstElement + * @element: a #GstElement to get the managing bin of. * * Gets the managing bin (a pipeline or a thread, for example) of an element. * - * Returns: the #GstBin, or NULL on failure + * Returns: the #GstBin, or NULL on failure. **/ GstBin* gst_element_get_managing_bin (GstElement *element) |
From: Thomas V. S. <tho...@us...> - 2002-08-30 14:55:15
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Fri Aug 30 2002 07:55:10 PDT Log message: doc updates Modified files: gst : gstbuffer.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.c.diff?r1=1.54&r2=1.55 ====Begin Diffs==== Index: gstbuffer.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstbuffer.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- gstbuffer.c 24 Jul 2002 20:20:50 -0000 1.54 +++ gstbuffer.c 30 Aug 2002 14:54:58 -0000 1.55 @@ -42,17 +42,18 @@ _gst_buffer_initialize (void) { _gst_buffer_type = g_boxed_type_register_static ("GstBuffer", - (GBoxedCopyFunc) gst_data_ref, - (GBoxedFreeFunc) gst_data_unref); + (GBoxedCopyFunc) gst_data_ref, + (GBoxedFreeFunc) gst_data_unref); _gst_buffer_pool_type = g_boxed_type_register_static ("GstBufferPool", - (GBoxedCopyFunc) gst_data_ref, - (GBoxedFreeFunc) gst_data_unref); + (GBoxedCopyFunc) gst_data_ref, + (GBoxedFreeFunc) gst_data_unref); _gst_buffer_live = 0; _gst_buffer_pool_live = 0; - chunk = gst_mem_chunk_new ("GstBufferChunk", sizeof (GstBuffer), sizeof (GstBuffer) * 200, 0); + chunk = gst_mem_chunk_new ("GstBufferChunk", sizeof (GstBuffer), + sizeof (GstBuffer) * 200, 0); GST_INFO (GST_CAT_BUFFER, "Buffers are initialized now"); } @@ -65,10 +66,10 @@ void gst_buffer_print_stats (void) { - g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO, - "%d live buffer(s)", _gst_buffer_live); - g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO, - "%d live bufferpool(s)", _gst_buffer_pool_live); + g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO, "%d live buffer(s)", + _gst_buffer_live); + g_log (g_log_domain_gstreamer, G_LOG_LEVEL_INFO, "%d live bufferpool(s)", + _gst_buffer_pool_live); } static void @@ -97,11 +98,11 @@ /** * gst_buffer_default_free: - * @buffer: a #GstBuffer to free + * @buffer: a #GstBuffer to free. * - * Free the memory associated with the buffer including the buffer data, + * Frees the memory associated with the buffer including the buffer data, * unless the GST_BUFFER_DONTFREE flags was set or the buffer data is NULL. - * This function is used by bufferpools. + * This function is used by buffer pools. */ void gst_buffer_default_free (GstBuffer *buffer) @@ -128,12 +129,12 @@ /** * gst_buffer_default_copy: - * @buffer: a #GstBuffer to make a copy of + * @buffer: a #GstBuffer to make a copy of. * * Make a full newly allocated copy of the given buffer, data and all. - * This function is used by bufferpools. + * This function is used by buffer pools. * - * Returns: new #GstBuffer + * Returns: the new #GstBuffer. */ GstBuffer* gst_buffer_default_copy (GstBuffer *buffer) @@ -144,7 +145,8 @@ copy = gst_buffer_new (); /* we simply copy everything from our parent */ - GST_BUFFER_DATA (copy) = g_memdup (GST_BUFFER_DATA (buffer), GST_BUFFER_SIZE (buffer)); + GST_BUFFER_DATA (copy) = g_memdup (GST_BUFFER_DATA (buffer), + GST_BUFFER_SIZE (buffer)); GST_BUFFER_SIZE (copy) = GST_BUFFER_SIZE (buffer); GST_BUFFER_MAXSIZE (copy) = GST_BUFFER_MAXSIZE (buffer); GST_BUFFER_TIMESTAMP (copy) = GST_BUFFER_TIMESTAMP (buffer); @@ -158,7 +160,7 @@ * * Creates a newly allocated buffer without any data. * - * Returns: new #GstBuffer + * Returns: the new #GstBuffer. */ GstBuffer* gst_buffer_new (void) @@ -182,11 +184,11 @@ /** * gst_buffer_new_and_alloc: - * @size: the size of the buffer and the memory to allocate + * @size: the size of the new buffer's data. * * Creates a newly allocated buffer with data of the given size. * - * Returns: new #GstBuffer + * Returns: the new #GstBuffer. */ GstBuffer* gst_buffer_new_and_alloc (guint size) @@ -203,13 +205,14 @@ /** * gst_buffer_new_from_pool: - * @pool: the buffer pool to use - * @offset: the offset of the new buffer - * @size: the size of the new buffer + * @pool: a #GstBufferPool to use. + * @offset: the offset of the new buffer. + * @size: the size of the new buffer. * - * Creates a newly allocated buffer using the specified bufferpool, offset and size. + * Creates a newly allocated buffer using the specified buffer pool, + * offset and size. * - * Returns: new #GstBuffer + * Returns: the new #GstBuffer, or NULL if there was an error. */ GstBuffer* gst_buffer_new_from_pool (GstBufferPool *pool, guint64 offset, guint size) @@ -236,14 +239,14 @@ /** * gst_buffer_create_sub: - * @parent: parent #GstBuffer - * @offset: offset into parent #GstBuffer - * @size: size of new sub-buffer + * @parent: a parent #GstBuffer to create a subbuffer from. + * @offset: the offset into parent #GstBuffer. + * @size: the size of the new #GstBuffer sub-buffer (with size > 0). * * Creates a sub-buffer from the parent at a given offset. * This sub-buffer uses the actual memory space of the parent buffer. * - * Returns: a new #GstBuffer + * Returns: the new #GstBuffer, or NULL if there was an error. */ GstBuffer* gst_buffer_create_sub (GstBuffer *parent, guint offset, guint size) @@ -274,7 +277,8 @@ buffer = gst_mem_chunk_alloc0 (chunk); _gst_buffer_live++; - /* make sure nobody overwrites data in the new buffer by setting the READONLY flag */ + /* make sure nobody overwrites data in the new buffer + * by setting the READONLY flag */ _GST_DATA_INIT (GST_DATA (buffer), _gst_buffer_type, GST_DATA_FLAG_SHIFT (GST_BUFFER_SUBBUFFER) | @@ -297,8 +301,8 @@ /** * gst_buffer_merge: - * @buf1: first source #GstBuffer to merge - * @buf2: second source #GstBuffer to merge + * @buf1: a first source #GstBuffer to merge. + * @buf2: the second source #GstBuffer to merge. * * Create a new buffer that is the concatenation of the two source * buffers. The original source buffers will not be modified or @@ -307,7 +311,7 @@ * Internally is nothing more than a specialized gst_buffer_span(), * so the same optimizations can occur. * - * Returns: a new #GstBuffer that's the concatenation of the source buffers + * Returns: the new #GstBuffer that's the concatenation of the source buffers. */ GstBuffer* gst_buffer_merge (GstBuffer *buf1, GstBuffer *buf2) @@ -321,13 +325,14 @@ /** * gst_buffer_is_span_fast: - * @buf1: first source buffer - * @buf2: second source buffer + * @buf1: a first source #GstBuffer. + * @buf2: the second source #GstBuffer. * * Determines whether a gst_buffer_span() is free (as in free beer), * or requires a memcpy. * - * Returns: TRUE if the buffers are contiguous, FALSE if a copy would be required. + * Returns: TRUE if the buffers are contiguous, + * FALSE if a copy would be required. */ gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer *buf2) @@ -344,10 +349,11 @@ /** * gst_buffer_span: - * @buf1: first source #GstBuffer to merge - * @offset: offset in first buffer to start new buffer - * @buf2: second source #GstBuffer to merge - * @len: length of new buffer + * @buf1: a first source #GstBuffer to merge. + * @offset: the offset in the first buffer from where the new + * buffer should start. + * @buf2: the second source #GstBuffer to merge. + * @len: the total length of the new buffer. * * Creates a new buffer that consists of part of buf1 and buf2. * Logically, buf1 and buf2 are concatenated into a single larger @@ -359,7 +365,7 @@ * parent, and thus no copying is necessary. you can use * gst_buffer_is_span_fast() to determine if a memcpy will be needed. * - * Returns: a new #GstBuffer that spans the two source buffers + * Returns: the new #GstBuffer that spans the two source buffers. */ GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 offset, GstBuffer *buf2, guint32 len) @@ -374,10 +380,13 @@ if (gst_buffer_is_span_fast (buf1, buf2)) { GstBuffer *parent = GST_BUFFER (buf1->pool_private); /* we simply create a subbuffer of the common parent */ - newbuf = gst_buffer_create_sub (parent, buf1->data - parent->data + offset, len); + newbuf = gst_buffer_create_sub (parent, + buf1->data - parent->data + offset, len); } else { - GST_DEBUG (GST_CAT_BUFFER,"slow path taken while spanning buffers %p and %p", buffer, append); + GST_DEBUG (GST_CAT_BUFFER, + "slow path taken while spanning buffers %p and %p", + buffer, append); /* otherwise we simply have to brute-force copy the buffers */ newbuf = gst_buffer_new_and_alloc (len); @@ -387,7 +396,8 @@ /* copy the first buffer's data across */ memcpy (newbuf->data, buf1->data + offset, buf1->size - offset); /* copy the second buffer's data across */ - memcpy (newbuf->data + (buf1->size - offset), buf2->data, len - (buf1->size - offset)); + memcpy (newbuf->data + (buf1->size - offset), buf2->data, + len - (buf1->size - offset)); } /* if the offset is 0, the new buffer has the same timestamp as buf1 */ if (offset == 0) @@ -406,16 +416,19 @@ /** * gst_buffer_pool_new: - * @free: The function to free the bufferpool - * @copy: The function to copy the bufferpool - * @buffer_new: the function to create a new buffer from this pool - * @buffer_copy: the function to copy a buffer from this pool - * @buffer_free: the function to free a buffer in this pool - * @user_data: user data passed to buffer_* functions + * @free: the #GstDataFreeFunction to free the buffer pool. + * @copy: the #GstDataCopyFunction to copy the buffer pool. + * @buffer_new: the #GstBufferPoolBufferNewFunction to create a new buffer + * from this pool + * @buffer_copy: the #GstBufferPoolBufferCopyFunction to copy a buffer + * from this pool + * @buffer_free: the #GstBufferPoolBufferFreeFunction to free a buffer + * in this pool + * @user_data: the user data gpointer passed to buffer_* functions. * - * Create a new bufferpool with the given functions. + * Creates a new buffer pool with the given functions. * - * Returns: a new GstBufferPool or NULL on error. + * Returns: a new #GstBufferPool, or NULL on error. */ GstBufferPool* gst_buffer_pool_new (GstDataFreeFunction free, @@ -453,9 +466,9 @@ /** * gst_buffer_pool_is_active: - * @pool: the pool to query + * @pool: the #GstBufferPool to query. * - * Query if the geven bufferpool is active. + * Queries if the given buffer pool is active. * * Returns: TRUE if the pool is active. */ @@ -467,11 +480,11 @@ /** * gst_buffer_pool_set_active: - * @pool: the pool to activate - * @active: new status of the pool + * @pool: a #GstBufferPool to set the activity status on. + * @active: the new status of the pool. * - * Set the given pool to the active or inactive state depending on the - * activate parameter + * Sets the given pool to the active or inactive state depending on the + * active parameter. */ void gst_buffer_pool_set_active (GstBufferPool *pool, gboolean active) @@ -481,10 +494,10 @@ /** * gst_buffer_pool_set_user_data: - * @pool: the pool set the user data for - * @user_data: the user_data to set + * @pool: the #GstBufferPool to set the user data for. + * @user_data: the user_data to set on the buffer pool. * - * Set the given user data to the bufferpool + * Sets the given user data on the buffer pool. */ void gst_buffer_pool_set_user_data (GstBufferPool *pool, gpointer user_data) @@ -494,11 +507,11 @@ /** * gst_buffer_pool_get_user_data: - * @pool: the pool get the user data for + * @pool: the #GstBufferPool to get the user data for. * - * Get the user data of the bufferpool + * Gets the user data of the buffer pool. * - * Returns: the user data associated with this bufferpool + * Returns: the user data associated with this buffer pool. */ gpointer gst_buffer_pool_get_user_data (GstBufferPool *pool) |
From: Thomas V. S. <tho...@us...> - 2002-09-01 20:11:27
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Sep 01 2002 13:11:27 PDT Log message: big ass set of useless dog fixes [1] changes to pad code so that NULL names are allowed and useful [1] some API changes [2] lots of code cleanup [1] approved by wtay [3] [2] approved by wingo [3] how long can we keep blaming that code guy that's not back from holidays yet for everything we commit ? Modified files: gst : gstpad.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.176&r2=1.177 ====Begin Diffs==== Index: gstpad.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.176 retrieving revision 1.177 diff -u -d -r1.176 -r1.177 --- gstpad.c 1 Sep 2002 19:43:06 -0000 1.176 +++ gstpad.c 1 Sep 2002 20:11:14 -0000 1.177 @@ -57,22 +57,18 @@ static GstObject *pad_parent_class = NULL; GType -gst_pad_get_type(void) +gst_pad_get_type (void) { if (!_gst_pad_type) { static const GTypeInfo pad_info = { - sizeof(GstPadClass), - NULL, - NULL, [...2199 lines suppressed...] + * @pad: a #GstPad to invoke the default query on. + * @type: the #GstPadQueryType of the query to perform. + * @format: a pointer to the #GstFormat of the result. + * @value: a pointer to the result. * - * Query a pad for one of the available GstPadQuery properties. + * Queries a pad for one of the available properties. * * Returns: TRUE if the query could be performed. */ @@ -2832,7 +2903,8 @@ { GstFormat *result = NULL; - gst_pad_dispatcher (pad, (GstPadDispatcherFunction) gst_pad_get_formats_dispatcher, &result); + gst_pad_dispatcher (pad, (GstPadDispatcherFunction) + gst_pad_get_formats_dispatcher, &result); return result; } |
From: Thomas V. S. <tho...@us...> - 2002-09-01 20:31:58
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Sep 01 2002 13:31:58 PDT Log message: forgot this one Modified files: gst : gstpad.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.h.diff?r1=1.95&r2=1.96 ====Begin Diffs==== Index: gstpad.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.h,v retrieving revision 1.95 retrieving revision 1.96 diff -u -d -r1.95 -r1.96 --- gstpad.h 12 Aug 2002 16:40:50 -0000 1.95 +++ gstpad.h 1 Sep 2002 20:31:45 -0000 1.96 @@ -189,7 +189,7 @@ struct _GstRealPad { GstPad pad; - /* the pad cpabilities */ + /* the pad capabilities */ GstCaps *caps; GstCaps *filter; GstCaps *appfilter; @@ -390,7 +390,7 @@ void gst_pad_set_element_private (GstPad *pad, gpointer priv); gpointer gst_pad_get_element_private (GstPad *pad); -void gst_pad_set_parent (GstPad *pad, GstObject *parent); +void gst_pad_set_parent (GstPad *pad, GstElement *parent); GstElement* gst_pad_get_parent (GstPad *pad); GstElement* gst_pad_get_real_parent (GstPad *pad); @@ -502,7 +502,7 @@ GstCaps* gst_pad_template_get_caps (GstPadTemplate *templ); GstCaps* gst_pad_template_get_caps_by_name (GstPadTemplate *templ, const gchar *name); -xmlNodePtr gst_pad_ghost_save_thyself (GstPad *pad, +xmlNodePtr gst_ghost_pad_save_thyself (GstPad *pad, GstElement *bin, xmlNodePtr parent); |
From: Thomas V. S. <tho...@us...> - 2002-09-01 21:11:31
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Sep 01 2002 14:11:30 PDT Log message: crap Modified files: gst : gstpad.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.h.diff?r1=1.96&r2=1.97 ====Begin Diffs==== Index: gstpad.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.h,v retrieving revision 1.96 retrieving revision 1.97 diff -u -d -r1.96 -r1.97 --- gstpad.h 1 Sep 2002 20:31:45 -0000 1.96 +++ gstpad.h 1 Sep 2002 21:11:18 -0000 1.97 @@ -503,7 +503,6 @@ GstCaps* gst_pad_template_get_caps_by_name (GstPadTemplate *templ, const gchar *name); xmlNodePtr gst_ghost_pad_save_thyself (GstPad *pad, - GstElement *bin, xmlNodePtr parent); G_END_DECLS |
From: Thomas V. S. <tho...@us...> - 2002-09-10 07:56:20
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Tue Sep 10 2002 00:56:18 PDT Log message: one extra check Modified files: gst : gstpluginfeature.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpluginfeature.c.diff?r1=1.8&r2=1.9 ====Begin Diffs==== Index: gstpluginfeature.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpluginfeature.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- gstpluginfeature.c 8 Jul 2002 19:07:26 -0000 1.8 +++ gstpluginfeature.c 10 Sep 2002 07:56:06 -0000 1.9 @@ -86,9 +86,11 @@ { GstPlugin *plugin = (GstPlugin *) (feature->manager); + g_assert (feature); if (plugin && !gst_plugin_is_loaded (plugin)) { if (GST_IS_REGISTRY (plugin->manager)) { - GST_DEBUG (GST_CAT_PLUGIN_LOADING, "loading plugin %s for feature", plugin->name); + GST_DEBUG (GST_CAT_PLUGIN_LOADING, + "loading plugin %s for feature", plugin->name); if (gst_registry_load_plugin (GST_REGISTRY (plugin->manager), plugin) != GST_REGISTRY_OK) return FALSE; |
From: Thomas V. S. <tho...@us...> - 2002-09-12 18:55:34
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Thu Sep 12 2002 11:55:33 PDT Log message: cleanups Modified files: gst : gstbin.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbin.c.diff?r1=1.141&r2=1.142 ====Begin Diffs==== Index: gstbin.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstbin.c,v retrieving revision 1.141 retrieving revision 1.142 diff -u -d -r1.141 -r1.142 --- gstbin.c 28 Jul 2002 01:46:38 -0000 1.141 +++ gstbin.c 12 Sep 2002 18:55:21 -0000 1.142 @@ -791,15 +791,15 @@ /** * gst_bin_iterate: - * @bin: #Gstbin to iterate + * @bin: a#GstBin to iterate. * * Iterates over the elements in this bin. * - * Returns: TRUE if the bin did something usefull. This value + * Returns: TRUE if the bin did something useful. This value * can be used to determine it the bin is in EOS. */ gboolean -gst_bin_iterate (GstBin * bin) +gst_bin_iterate (GstBin *bin) { GstBinClass *oclass; gboolean running = TRUE; @@ -823,7 +823,8 @@ GST_DEBUG_LEAVE ("(\"%s\") %d", GST_ELEMENT_NAME (bin), running); if (!running) { - if (GST_STATE (bin) == GST_STATE_PLAYING && GST_STATE_PENDING (bin) == GST_STATE_VOID_PENDING) { + if (GST_STATE (bin) == GST_STATE_PLAYING && + GST_STATE_PENDING (bin) == GST_STATE_VOID_PENDING) { GST_DEBUG_ELEMENT (GST_CAT_DATAFLOW, bin, "polling for child shutdown after useless iteration"); usleep (1); |
From: Thomas V. S. <tho...@us...> - 2002-09-12 18:56:44
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Thu Sep 12 2002 11:56:43 PDT Log message: * useful comments * change thread -> cothread in varnames where it's applicable * code cleanups Modified files: gst : cothreads.c cothreads.h gstscheduler.c gstthread.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/cothreads.c.diff?r1=1.81&r2=1.82 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/cothreads.h.diff?r1=1.25&r2=1.26 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstscheduler.c.diff?r1=1.70&r2=1.71 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstthread.c.diff?r1=1.91&r2=1.92 ====Begin Diffs==== Index: cothreads.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/cothreads.c,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- cothreads.c 13 Aug 2002 14:11:33 -0000 1.81 +++ cothreads.c 12 Sep 2002 18:56:30 -0000 1.82 @@ -52,14 +52,19 @@ struct _cothread_context { - cothread_state *threads[COTHREAD_MAXTHREADS]; - int nthreads; + cothread_state *cothreads[COTHREAD_MAXTHREADS]; /* array of cothread states */ + int ncothreads; int current; GHashTable *data; }; -static pthread_key_t _cothread_key = -1; +/* this _cothread_ctx_key is used as a pthread key to the thread's context + * a pthread key is a "pointer" to memory space that is/can be different + * (ie. private) for each thread. The key itself is shared among threads, + * so it only needs to be initialized once. + */ +static pthread_key_t _cothread_ctx_key = -1; /* Disabling this define allows you to shut off a few checks in * cothread_switch. This likely will speed things up fractionally */ @@ -75,37 +80,49 @@ cothread_context * cothread_context_init (void) { + /* + * initalize the whole of the cothreads context + */ cothread_context *ctx = (cothread_context *) g_malloc (sizeof (cothread_context)); /* we consider the initiating process to be cothread 0 */ - ctx->nthreads = 1; + ctx->ncothreads = 1; ctx->current = 0; ctx->data = g_hash_table_new (g_str_hash, g_str_equal); GST_INFO (GST_CAT_COTHREADS, "initializing cothreads"); - if (_cothread_key == (pthread_key_t)-1) { - if (pthread_key_create (&_cothread_key, NULL) != 0) { + /* initialize the cothread key (for pthread space) if not done yet */ + if (_cothread_ctx_key == (pthread_key_t) -1) { + if (pthread_key_create (&_cothread_ctx_key, NULL) != 0) { perror ("pthread_key_create"); return NULL; } } - pthread_setspecific (_cothread_key, ctx); - memset (ctx->threads, 0, sizeof (ctx->threads)); + /* set this thread's context pointer */ + pthread_setspecific (_cothread_ctx_key, ctx); - ctx->threads[0] = (cothread_state *) g_malloc0 (sizeof (cothread_state)); - ctx->threads[0]->ctx = ctx; - ctx->threads[0]->threadnum = 0; - ctx->threads[0]->func = NULL; - ctx->threads[0]->argc = 0; - ctx->threads[0]->argv = NULL; - ctx->threads[0]->priv = NULL; - ctx->threads[0]->flags = COTHREAD_STARTED; - ctx->threads[0]->sp = (void *) CURRENT_STACK_FRAME; - ctx->threads[0]->pc = 0; + /* clear the cothread data */ - GST_INFO (GST_CAT_COTHREADS, "0th thread is %p at sp:%p", ctx->threads[0], ctx->threads[0]->sp); + memset (ctx->cothreads, 0, sizeof (ctx->cothreads)); + + /* + * initialize the 0th cothread + */ + ctx->cothreads[0] = (cothread_state *) g_malloc0 (sizeof (cothread_state)); + ctx->cothreads[0]->ctx = ctx; + ctx->cothreads[0]->cothreadnum = 0; + ctx->cothreads[0]->func = NULL; + ctx->cothreads[0]->argc = 0; + ctx->cothreads[0]->argv = NULL; + ctx->cothreads[0]->priv = NULL; + ctx->cothreads[0]->flags = COTHREAD_STARTED; + ctx->cothreads[0]->sp = (void *) CURRENT_STACK_FRAME; + ctx->cothreads[0]->pc = 0; + + GST_INFO (GST_CAT_COTHREADS, "0th cothread is %p at sp:%p", + ctx->cothreads[0], ctx->cothreads[0]->sp); return ctx; } @@ -126,8 +143,8 @@ GST_INFO (GST_CAT_COTHREADS, "free cothread context"); for (i = 0; i < COTHREAD_MAXTHREADS; i++) { - if (ctx->threads[i]) { - cothread_destroy (ctx->threads[i]); + if (ctx->cothreads[i]) { + cothread_destroy (ctx->cothreads[i]); } } g_hash_table_destroy (ctx->data); @@ -145,7 +162,7 @@ cothread_state* cothread_create (cothread_context *ctx) { - cothread_state *thread; + cothread_state *cothread; void *sp; void *mmaped = 0; guchar *stack_end; @@ -153,41 +170,44 @@ g_return_val_if_fail (ctx != NULL, NULL); - if (ctx->nthreads == COTHREAD_MAXTHREADS) { + if (ctx->ncothreads == COTHREAD_MAXTHREADS) { /* this is pretty fatal */ g_warning ("cothread_create: attempt to create > COTHREAD_MAXTHREADS\n"); return NULL; } /* find a free spot in the stack, note slot 0 has the main thread */ - for (slot = 1; slot < ctx->nthreads; slot++) { - if (ctx->threads[slot] == NULL) + for (slot = 1; slot < ctx->ncothreads; slot++) { + if (ctx->cothreads[slot] == NULL) break; - else if (ctx->threads[slot]->flags & COTHREAD_DESTROYED && + else if (ctx->cothreads[slot]->flags & COTHREAD_DESTROYED && slot != ctx->current) { - cothread_destroy (ctx->threads[slot]); + cothread_destroy (ctx->cothreads[slot]); break; } } - GST_DEBUG(GST_CAT_COTHREADS, "Found free cothread slot %d", slot); + GST_DEBUG (GST_CAT_COTHREADS, "Found free cothread slot %d", slot); sp = CURRENT_STACK_FRAME; /* FIXME this may not be 64bit clean * could use casts to uintptr_t from inttypes.h * if only all platforms had inttypes.h */ + /* FIXME: a little explanation on what this REALLY means would be nice ;) */ stack_end = (guchar *) ((gulong) sp & ~(STACK_SIZE - 1)); - thread = (cothread_state *) (stack_end + ((slot - 1) * COTHREAD_STACKSIZE)); + /* cothread stack space of the thread is mapped in reverse, with cothread 0 + * stack space at the top */ + cothread = (cothread_state *) (stack_end + ((slot - 1) * COTHREAD_STACKSIZE)); GST_DEBUG (GST_CAT_COTHREADS, "mmap cothread slot stack from %p to %p (size 0x%lx)", - thread, thread + COTHREAD_STACKSIZE, + cothread, cothread + COTHREAD_STACKSIZE, (long) COTHREAD_STACKSIZE); GST_DEBUG (GST_CAT_COTHREADS, "going into mmap"); /* the mmap is used to reserve part of the stack * ie. we state explicitly that we are going to use it */ - mmaped = mmap ((void *) thread, COTHREAD_STACKSIZE, + mmaped = mmap ((void *) cothread, COTHREAD_STACKSIZE, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); GST_DEBUG (GST_CAT_COTHREADS, "coming out of mmap"); @@ -195,70 +215,74 @@ perror ("mmap'ing cothread stack space"); return NULL; } - if (mmaped != thread) { - g_warning ("could not mmap requested memory"); + if (mmaped != cothread) { + g_warning ("could not mmap requested memory for cothread"); return NULL; } - thread->magic_number = COTHREAD_MAGIC_NUMBER; + cothread->magic_number = COTHREAD_MAGIC_NUMBER; GST_DEBUG (GST_CAT_COTHREADS, "create cothread %d with magic number 0x%x", - slot, thread->magic_number); - thread->ctx = ctx; - thread->threadnum = slot; - thread->flags = 0; - thread->priv = NULL; - thread->sp = ((guchar *) thread + COTHREAD_STACKSIZE); - thread->top_sp = thread->sp; /* for debugging purposes to detect stack overruns */ + slot, cothread->magic_number); + cothread->ctx = ctx; + cothread->cothreadnum = slot; + cothread->flags = 0; + cothread->priv = NULL; + cothread->sp = ((guchar *) cothread + COTHREAD_STACKSIZE); + cothread->top_sp = cothread->sp; /* for debugging purposes + to detect stack overruns */ GST_INFO (GST_CAT_COTHREADS, "created cothread #%d in slot %d: %p at sp:%p", - ctx->nthreads, slot, thread, thread->sp); + ctx->ncothreads, slot, cothread, cothread->sp); - ctx->threads[slot] = thread; - ctx->nthreads++; + ctx->cothreads[slot] = cothread; + ctx->ncothreads++; - return thread; + return cothread; } /** * cothread_free: - * @thread: the cothread state + * @cothread: the cothread state * * Free the given cothread state */ void -cothread_free (cothread_state *thread) +cothread_free (cothread_state *cothread) { - g_return_if_fail (thread != NULL); + g_return_if_fail (cothread != NULL); - GST_INFO (GST_CAT_COTHREADS, "flag cothread %d for destruction", thread->threadnum); + GST_INFO (GST_CAT_COTHREADS, "flag cothread %d for destruction", + cothread->cothreadnum); /* we simply flag the cothread for destruction here */ - thread->flags |= COTHREAD_DESTROYED; + cothread->flags |= COTHREAD_DESTROYED; } static void -cothread_destroy (cothread_state *thread) +cothread_destroy (cothread_state *cothread) { cothread_context *ctx; - gint threadnum; + gint cothreadnum; - g_return_if_fail (thread != NULL); + g_return_if_fail (cothread != NULL); - threadnum = thread->threadnum; - ctx = thread->ctx; + cothreadnum = cothread->cothreadnum; + ctx = cothread->ctx; - GST_INFO (GST_CAT_COTHREADS, "destroy cothread %d %p %d", threadnum, thread, ctx->current); + GST_INFO (GST_CAT_COTHREADS, "destroy cothread %d %p %d", + cothreadnum, cothread, ctx->current); - /* we have to unlock here because we might be switched out with the lock held */ - cothread_unlock (thread); + /* we have to unlock here because we might be switched out + * with the lock held */ + cothread_unlock (cothread); - if (threadnum == 0) + if (cothreadnum == 0) { GST_INFO (GST_CAT_COTHREADS, "trying to destroy cothread 0 with %d cothreads left", - ctx->nthreads); - if (ctx->nthreads > 1) + ctx->ncothreads); + if (ctx->ncothreads > 1) { /* we're trying to destroy cothread 0 when there are still cothreads * active, so kill those first */ @@ -266,17 +290,17 @@ for (i = 1; i < COTHREAD_MAXTHREADS; ++i) { - if (ctx->threads[i] != NULL) + if (ctx->cothreads[i] != NULL) { - cothread_destroy (ctx->threads[i]); + cothread_destroy (ctx->cothreads[i]); GST_INFO (GST_CAT_COTHREADS, "destroyed cothread %d, %d cothreads left\n", - i, ctx->nthreads); + i, ctx->ncothreads); } } } - g_assert (ctx->nthreads == 1); - g_free (thread); + g_assert (ctx->ncothreads == 1); + g_free (cothread); } else { /* int res; @@ -285,14 +309,14 @@ /* doing cleanups of the cothread create */ GST_DEBUG (GST_CAT_COTHREADS, "destroy cothread %d with magic number 0x%x", - threadnum, thread->magic_number); - g_assert (thread->magic_number == COTHREAD_MAGIC_NUMBER); + cothreadnum, cothread->magic_number); + g_assert (cothread->magic_number == COTHREAD_MAGIC_NUMBER); - g_assert (thread->priv == NULL); + g_assert (cothread->priv == NULL); GST_DEBUG (GST_CAT_COTHREADS, "munmap cothread slot stack from %p to %p (size 0x%lx)", - thread, thread + COTHREAD_STACKSIZE, + cothread, cothread + COTHREAD_STACKSIZE, (long) COTHREAD_STACKSIZE); /* res = munmap (thread, COTHREAD_STACKSIZE); * Commented out waiting for resolution for cothread issue */ @@ -302,18 +326,19 @@ { case EINVAL: g_warning ("munmap doesn't like start %p or length %d\n", - thread, COTHREAD_STACKSIZE); + cothread, COTHREAD_STACKSIZE); break; default: - g_warning ("Thomas was too lazy to check for all errors, so I can't tell you what is wrong.\n"); + g_warning ("Thomas was too lazy to check for all errors, " + "so I can't tell you what is wrong.\n"); break; } } } GST_DEBUG (GST_CAT_COTHREADS, "munmap done\n"); - ctx->threads[threadnum] = NULL; - ctx->nthreads--; + ctx->cothreads[cothreadnum] = NULL; + ctx->ncothreads--; } /** @@ -350,17 +375,18 @@ /** * cothread_main: - * @ctx: cothread context to find main thread of + * @ctx: cothread context to find main cothread of. * - * Get the main thread. + * Gets the main thread. * - * Returns: the #cothread_state of the main (0th) thread + * Returns: the #cothread_state of the main (0th) cothread. */ cothread_state * cothread_main (cothread_context * ctx) { - GST_DEBUG (GST_CAT_COTHREADS, "returning %p, the 0th cothread", ctx->threads[0]); - return ctx->threads[0]; + GST_DEBUG (GST_CAT_COTHREADS, "returning %p, the 0th cothread", + ctx->cothreads[0]); + return ctx->cothreads[0]; } /** @@ -373,9 +399,9 @@ cothread_state * cothread_current_main (void) { - cothread_context *ctx = pthread_getspecific (_cothread_key); + cothread_context *ctx = pthread_getspecific (_cothread_ctx_key); - return ctx->threads[0]; + return ctx->cothreads[0]; } /** @@ -388,16 +414,16 @@ cothread_state * cothread_current (void) { - cothread_context *ctx = pthread_getspecific (_cothread_key); + cothread_context *ctx = pthread_getspecific (_cothread_ctx_key); - return ctx->threads[ctx->current]; + return ctx->cothreads[ctx->current]; } static void cothread_stub (void) { - cothread_context *ctx = pthread_getspecific (_cothread_key); - register cothread_state *thread = ctx->threads[ctx->current]; + cothread_context *ctx = pthread_getspecific (_cothread_ctx_key); + register cothread_state *thread = ctx->cothreads[ctx->current]; GST_DEBUG_ENTER (""); @@ -422,7 +448,7 @@ int cothread_getcurrent (void) { - cothread_context *ctx = pthread_getspecific (_cothread_key); + cothread_context *ctx = pthread_getspecific (_cothread_ctx_key); if (!ctx) return -1; @@ -453,7 +479,7 @@ void cothread_context_set_data (cothread_state *thread, gchar *key, gpointer data) { - cothread_context *ctx = pthread_getspecific (_cothread_key); + cothread_context *ctx = pthread_getspecific (_cothread_ctx_key); g_hash_table_insert (ctx->data, key, data); } @@ -484,7 +510,7 @@ gpointer cothread_context_get_data (cothread_state * thread, gchar * key) { - cothread_context *ctx = pthread_getspecific (_cothread_key); + cothread_context *ctx = pthread_getspecific (_cothread_ctx_key); return g_hash_table_lookup (ctx->data, key); } @@ -499,7 +525,13 @@ gboolean cothread_stackquery (void **stack, glong* stacksize) { - /* wingo says: use posix_memalign to allocate a 2M-aligned, 2M stack */ + /* use either + * - posix_memalign to allocate a 2M-aligned, 2M stack + * or + * - valloc + * + * memory allocated by either of these two can be freed using free () + * FIXME: define how the stack grows */ #ifdef HAVE_POSIX_MEMALIGN int retval = posix_memalign (stack, STACK_SIZE, STACK_SIZE); @@ -516,7 +548,7 @@ return FALSE; } GST_DEBUG (GST_CAT_THREAD, "have posix_memalign at %p of size %d", - (void *) *stack, STACK_SIZE); + (void *) *stack, STACK_SIZE); #else if ((*stack = valloc (STACK_SIZE)) != 0) { @@ -524,7 +556,7 @@ return FALSE; } GST_DEBUG (GST_CAT_THREAD, "have valloc at %p of size %d", - (void *) *stack, STACK_SIZE); + (void *) *stack, STACK_SIZE); #endif GST_DEBUG (GST_CAT_COTHREADS, @@ -557,7 +589,7 @@ goto nocontext; #endif - current = ctx->threads[ctx->current]; + current = ctx->cothreads[ctx->current]; #ifdef COTHREAD_PARANOID if (current == NULL) goto nocurrent; @@ -569,8 +601,8 @@ /* find the number of the thread to switch to */ GST_INFO (GST_CAT_COTHREAD_SWITCH, "switching from cothread #%d to cothread #%d", - ctx->current, thread->threadnum); - ctx->current = thread->threadnum; + ctx->current, thread->cothreadnum); + ctx->current = thread->cothreadnum; /* save the current stack pointer, frame pointer, and pc */ #ifdef GST_ARCH_PRESETJMP @@ -579,14 +611,14 @@ enter = setjmp (current->jmp); if (enter != 0) { GST_DEBUG (GST_CAT_COTHREADS, - "enter thread #%d %d %p<->%p (%d) %p", - current->threadnum, enter, current->sp, current->top_sp, + "enter cothread #%d %d %p<->%p (%d) %p", + current->cothreadnum, enter, current->sp, current->top_sp, (char*) current->top_sp - (char*) current->sp, current->jmp); return; } - GST_DEBUG (GST_CAT_COTHREADS, "exit thread #%d %d %p<->%p (%d) %p", - current->threadnum, enter, current->sp, current->top_sp, - (char*) current->top_sp - (char*) current->sp, current->jmp); + GST_DEBUG (GST_CAT_COTHREADS, "exit cothread #%d %d %p<->%p (%d) %p", + current->cothreadnum, enter, current->sp, current->top_sp, + (char *) current->top_sp - (char *) current->sp, current->jmp); enter = 1; if (current->flags & COTHREAD_DESTROYED) { Index: cothreads.h =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/cothreads.h,v retrieving revision 1.25 retrieving revision 1.26 diff -u -d -r1.25 -r1.26 --- cothreads.h 8 Jul 2002 19:10:11 -0000 1.25 +++ cothreads.h 12 Sep 2002 18:56:30 -0000 1.26 @@ -26,6 +26,7 @@ #include <glib.h> #include <setjmp.h> +/* this bit is lifted out of glibc */ #ifndef CURRENT_STACK_FRAME #define CURRENT_STACK_FRAME ({ char __csf; &__csf; }) #endif /* CURRENT_STACK_FRAME */ @@ -40,7 +41,7 @@ struct _cothread_state { cothread_context *ctx; - int threadnum; + int cothreadnum; gpointer priv; cothread_func func; Index: gstscheduler.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstscheduler.c,v retrieving revision 1.70 retrieving revision 1.71 diff -u -d -r1.70 -r1.71 --- gstscheduler.c 11 Aug 2002 19:33:47 -0000 1.70 +++ gstscheduler.c 12 Sep 2002 18:56:30 -0000 1.71 @@ -96,11 +96,11 @@ /** * gst_scheduler_get_preferred_stack: - * @sched: the scheduler - * @stack: a pointer to the location of the preferred stack - * @size: a pointer to the size of the preferred stack + * @sched: a #GstScheduler to query. + * @stack: the pointer to store the location of the preferred stack in. + * @size: the pointer to store the size of the preferred stack in. * - * Get the preferred stack location and size of this scheduler. + * Gets the preferred stack location and size of this scheduler. * * Returns: TRUE if the scheduler suggested a preferred stacksize and location. */ @@ -117,9 +117,9 @@ /** * gst_scheduler_reset: - * @sched: the scheduler + * @sched: a #GstScheduler to reset. * - * Reset the scheduler + * Reset the schedulers. */ void gst_scheduler_reset (GstScheduler *sched) Index: gstthread.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstthread.c,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- gstthread.c 11 Jul 2002 21:22:55 -0000 1.91 +++ gstthread.c 12 Sep 2002 18:56:31 -0000 1.92 @@ -181,6 +181,7 @@ thread->thread_id = (pthread_t) -1; thread->sched_policy = SCHED_OTHER; thread->priority = 0; + thread->stack = NULL; } static void @@ -261,17 +262,24 @@ return gst_element_factory_make ("thread", name); } +/* these two macros are used for debug/info from the state_change function */ #define THR_INFO(format,args...) \ GST_INFO_ELEMENT(GST_CAT_THREAD, thread, "sync(" GST_DEBUG_THREAD_FORMAT "): " format , \ GST_DEBUG_THREAD_ARGS(thread->pid) , ## args ) + #define THR_DEBUG(format,args...) \ GST_DEBUG_ELEMENT(GST_CAT_THREAD, thread, "sync(" GST_DEBUG_THREAD_FORMAT "): " format , \ GST_DEBUG_THREAD_ARGS(thread->pid) , ## args ) +/* these two macros are used for debug/info from the gst_thread_main_loop + * function + */ + #define THR_INFO_MAIN(format,args...) \ GST_INFO_ELEMENT(GST_CAT_THREAD, thread, "sync-main(" GST_DEBUG_THREAD_FORMAT "): " format , \ GST_DEBUG_THREAD_ARGS(thread->ppid) , ## args ) + #define THR_DEBUG_MAIN(format,args...) \ GST_DEBUG_ELEMENT(GST_CAT_THREAD, thread, "sync-main(" GST_DEBUG_THREAD_FORMAT "): " format , \ GST_DEBUG_THREAD_ARGS(thread->ppid) , ## args ) @@ -279,13 +287,17 @@ static GstElementStateReturn gst_thread_update_state (GstThread *thread) { + GST_DEBUG_ELEMENT (GST_CAT_THREAD, thread, "updating state of thread"); /* check for state change */ - if (GST_STATE_PENDING(thread) != GST_STATE_VOID_PENDING) { + if (GST_STATE_PENDING (thread) != GST_STATE_VOID_PENDING) { /* punt and change state on all the children */ if (GST_ELEMENT_CLASS (parent_class)->change_state) - return GST_ELEMENT_CLASS (parent_class)->change_state (GST_ELEMENT(thread)); + return GST_ELEMENT_CLASS (parent_class)->change_state (GST_ELEMENT (thread)); } + /* FIXME: in the case of no change_state function in the parent's class, + * shouldn't we actually change the thread's state ? */ + g_warning ("thread's parent doesn't have change_state, returning success"); return GST_STATE_SUCCESS; } @@ -324,15 +336,36 @@ THR_DEBUG ("creating thread \"%s\"", GST_ELEMENT_NAME (element)); + /* this bit of code handles creation of pthreads + * this is therefor tricky code + * compare it with the block of code that handles the destruction + * in GST_STATE_READY_TO_NULL below + */ g_mutex_lock (thread->lock); + /* create attribute struct for pthread + * and assign stack pointer and size to it + * + * the default state of a pthread is PTHREAD_CREATE_JOINABLE + * (see man pthread_attr_init) + * - other thread can sync on termination + * - thread resources are kept allocated until other thread performs + * pthread_join + */ + if (pthread_attr_init (&thread->attr) != 0) g_warning ("pthread_attr_init returned an error !"); + /* this function should return a newly allocated stack + * (using whatever method) + * which we can initiate the pthreads with + * the stack should be freed in + */ if (gst_scheduler_get_preferred_stack (GST_ELEMENT_SCHED (element), &thread->stack, &stacksize)) { #ifdef HAVE_PTHREAD_ATTR_SETSTACK - if (pthread_attr_setstack (&thread->attr, thread->stack, stacksize) != 0) { + if (pthread_attr_setstack (&thread->attr, + thread->stack, stacksize) != 0) { g_warning ("pthread_attr_setstack failed\n"); return GST_STATE_FAILURE; } @@ -349,16 +382,24 @@ GST_DEBUG (GST_CAT_THREAD, "pthread attr set stack at %p of size %ld", thread->stack, stacksize); } + else { + g_warning ("scheduler did not return a preferred stack"); + } - /* create the thread */ - THR_DEBUG ("going to pthread_create..."); - if (pthread_create (&thread->thread_id, &thread->attr, gst_thread_main_loop, thread) != 0) { - THR_DEBUG ("pthread create failed"); + /* create a new pthread + * use the specified attributes + * make it execute gst_thread_main_loop (thread) + */ + GST_DEBUG (GST_CAT_THREAD, "going to pthread_create..."); + if (pthread_create (&thread->thread_id, &thread->attr, + gst_thread_main_loop, thread) != 0) { + GST_DEBUG (GST_CAT_THREAD, "pthread_create failed"); g_mutex_unlock (thread->lock); - THR_DEBUG ("could not create thread \"%s\"", GST_ELEMENT_NAME (element)); + GST_DEBUG (GST_CAT_THREAD, "could not create thread \"%s\"", + GST_ELEMENT_NAME (element)); return GST_STATE_FAILURE; } - THR_DEBUG ("pthread created"); + GST_DEBUG (GST_CAT_THREAD, "pthread created"); /* wait for it to 'spin up' */ THR_DEBUG ("waiting for child thread spinup"); @@ -477,19 +518,38 @@ THR_DEBUG ("waiting for ack"); g_cond_wait (thread->cond, thread->lock); THR_DEBUG ("got ack"); + + /* this block of code is very tricky + * basically, we try to clean up the whole thread and + * everything related to it in the right order without + * triggering segfaults + * compare this block to the block + */ + + + /* in glibc 2.2.5, pthread_attr_destroy does nothing more + * than return 0 */ + if (pthread_attr_destroy (&thread->attr) != 0) + g_warning ("pthread_attr_destroy has failed !"); + + GST_DEBUG (GST_CAT_THREAD, "joining pthread %ld", thread->thread_id); if (pthread_join (thread->thread_id, NULL) != 0) g_warning ("pthread_join has failed !\n"); - if (pthread_attr_destroy (&thread->attr) != 0) - g_warning ("pthread_attr_destroy has failed !\n"); - thread->thread_id = -1; - g_mutex_unlock (thread->lock); + thread->thread_id = -1; + + /* the stack was allocated when we created the thread + * using scheduler->get_preferred_stack */ if (thread->stack) { - GST_DEBUG (GST_CAT_THREAD, "freeing allocated stack (%p)", thread->stack); + GST_DEBUG (GST_CAT_THREAD, "freeing allocated stack (%p)", + thread->stack); free (thread->stack); thread->stack = NULL; } - + + THR_DEBUG ("unlocking mutex"); + g_mutex_unlock (thread->lock); + GST_FLAG_UNSET (thread, GST_THREAD_STATE_REAPING); GST_FLAG_UNSET (thread, GST_THREAD_STATE_STARTED); GST_FLAG_UNSET (thread, GST_THREAD_STATE_SPINNING); @@ -531,6 +591,7 @@ thread = GST_THREAD (arg); g_mutex_lock (thread->lock); + /* handle scheduler policy */ if (thread->sched_policy != SCHED_OTHER) { struct sched_param sched_param; @@ -544,12 +605,15 @@ GST_DEBUG (GST_CAT_THREAD, "not running with real-time priority"); } } + else + g_warning ("thread has SCHED_OTHER policy, unhandled !"); + /* set up the element's scheduler */ gst_scheduler_setup (GST_ELEMENT_SCHED (thread)); GST_FLAG_UNSET (thread, GST_THREAD_STATE_REAPING); thread->pid = getpid(); - THR_INFO_MAIN("thread is running"); + THR_INFO_MAIN ("thread is running"); /* first we need to change the state of all the children */ if (GST_ELEMENT_CLASS (parent_class)->change_state) { @@ -560,7 +624,6 @@ } } - THR_DEBUG_MAIN ("indicating spinup"); g_cond_signal (thread->cond); /* don't unlock the mutex because we hold it into the top of the while loop */ @@ -581,7 +644,7 @@ gst_element_state_get_name (GST_STATE_READY), gst_element_state_get_name (GST_STATE_NULL), gst_element_state_get_name (GST_STATE_PAUSED)); - g_cond_wait (thread->cond,thread->lock); + g_cond_wait (thread->cond, thread->lock); /* this must have happened by a state change in the thread context */ if (GST_STATE_PENDING (thread) != GST_STATE_NULL && @@ -592,20 +655,23 @@ /* been signaled, we need to state transition now and signal back */ gst_thread_update_state (thread); - THR_DEBUG_MAIN ("done with state transition, signaling back to parent process"); + THR_DEBUG_MAIN ("done with state transition, " + "signaling back to parent process"); g_cond_signal (thread->cond); /* now we decide what to do next */ if (GST_STATE (thread) == GST_STATE_NULL) { /* REAPING must be set, we can simply break this iteration */ + THR_DEBUG_MAIN ("set GST_THREAD_STATE_REAPING"); GST_FLAG_SET (thread, GST_THREAD_STATE_REAPING); } continue; + case GST_STATE_PAUSED: /* wait to be set to either the READY or PLAYING states */ - THR_DEBUG_MAIN("thread in %s state, waiting for either %s or %s", - gst_element_state_get_name (GST_STATE_PAUSED), - gst_element_state_get_name (GST_STATE_READY), - gst_element_state_get_name (GST_STATE_PLAYING)); + THR_DEBUG_MAIN ("thread in %s state, waiting for either %s or %s", + gst_element_state_get_name (GST_STATE_PAUSED), + gst_element_state_get_name (GST_STATE_READY), + gst_element_state_get_name (GST_STATE_PLAYING)); g_cond_wait (thread->cond, thread->lock); /* this must have happened by a state change in the thread context */ @@ -651,8 +717,8 @@ case GST_STATE_PLAYING: /* wait to be set to PAUSED */ THR_DEBUG_MAIN ("thread in %s state, waiting for %s", - gst_element_state_get_name(GST_STATE_PLAYING), - gst_element_state_get_name(GST_STATE_PAUSED)); + gst_element_state_get_name (GST_STATE_PLAYING), + gst_element_state_get_name (GST_STATE_PAUSED)); g_cond_wait (thread->cond,thread->lock); /* been signaled, we need to state transition now and signal back */ @@ -663,7 +729,7 @@ continue; case GST_STATE_NULL: THR_DEBUG_MAIN ("thread in %s state, preparing to die", - gst_element_state_get_name(GST_STATE_NULL)); + gst_element_state_get_name (GST_STATE_NULL)); GST_FLAG_SET (thread, GST_THREAD_STATE_REAPING); break; default: @@ -671,6 +737,9 @@ break; } } + + /* THREAD HAS STOPPED RUNNING */ + /* we need to destroy the scheduler here because it has mapped it's * stack into the threads stack space */ gst_scheduler_reset (GST_ELEMENT_SCHED (thread)); |
From: Thomas V. S. <tho...@us...> - 2002-09-12 20:13:34
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Thu Sep 12 2002 13:13:33 PDT Log message: revert this comment Modified files: gst : gstthread.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstthread.c.diff?r1=1.92&r2=1.93 ====Begin Diffs==== Index: gstthread.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstthread.c,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- gstthread.c 12 Sep 2002 18:56:31 -0000 1.92 +++ gstthread.c 12 Sep 2002 20:13:21 -0000 1.93 @@ -591,7 +591,7 @@ thread = GST_THREAD (arg); g_mutex_lock (thread->lock); - /* handle scheduler policy */ + /* handle scheduler policy; do stuff if not the normal scheduler */ if (thread->sched_policy != SCHED_OTHER) { struct sched_param sched_param; @@ -605,8 +605,6 @@ GST_DEBUG (GST_CAT_THREAD, "not running with real-time priority"); } } - else - g_warning ("thread has SCHED_OTHER policy, unhandled !"); /* set up the element's scheduler */ gst_scheduler_setup (GST_ELEMENT_SCHED (thread)); |
From: Thomas V. S. <tho...@us...> - 2002-09-15 18:20:54
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Sep 15 2002 11:20:54 PDT Log message: better warning (?) Modified files: gst : gstbin.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbin.c.diff?r1=1.142&r2=1.143 ====Begin Diffs==== Index: gstbin.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstbin.c,v retrieving revision 1.142 retrieving revision 1.143 diff -u -d -r1.142 -r1.143 --- gstbin.c 12 Sep 2002 18:55:21 -0000 1.142 +++ gstbin.c 15 Sep 2002 18:20:41 -0000 1.143 @@ -783,7 +783,8 @@ } } else { - g_warning ("bin \"%s\" can't be iterated on!\n", GST_ELEMENT_NAME (bin)); + g_warning ("bin \"%s\" is not the managing bin, can't be iterated on!\n", + GST_ELEMENT_NAME (bin)); } return FALSE; |
From: Thomas V. S. <tho...@us...> - 2002-09-23 05:03:50
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Sun Sep 22 2002 22:03:50 PDT Log message: even more obvious Modified files: gst : gstpipeline.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpipeline.c.diff?r1=1.65&r2=1.66 ====Begin Diffs==== Index: gstpipeline.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpipeline.c,v retrieving revision 1.65 retrieving revision 1.66 diff -u -d -r1.65 -r1.66 --- gstpipeline.c 11 Aug 2002 19:33:47 -0000 1.65 +++ gstpipeline.c 23 Sep 2002 05:03:38 -0000 1.66 @@ -109,7 +109,8 @@ if (scheduler == NULL) { g_error ("Critical error: could not get a scheduler - \ - are you sure you have a registry ?"); + are you sure you have a registry ? Run gst-register as root \ + if you haven't done so yet."); } gst_scheduler_setup (scheduler); |
From: Thomas V. S. <tho...@us...> - 2002-10-01 10:00:58
|
CVS Root: /cvsroot/gstreamer Module: gstreamer Changes by: thomasvs Date: Tue Oct 01 2002 03:00:53 PDT Log message: make exit conditions give debug info Modified files: gst : gstpad.c Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.182&r2=1.183 ====Begin Diffs==== Index: gstpad.c =================================================================== RCS file: /cvsroot/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.182 retrieving revision 1.183 diff -u -d -r1.182 -r1.183 --- gstpad.c 13 Sep 2002 23:02:54 -0000 1.182 +++ gstpad.c 1 Oct 2002 10:00:39 -0000 1.183 @@ -960,7 +960,7 @@ g_return_val_if_fail (sinkpad != NULL, FALSE); g_return_val_if_fail (GST_IS_PAD (sinkpad), FALSE); - GST_INFO (GST_CAT_PADS, "connecting %s:%s and %s:%s", + GST_INFO (GST_CAT_PADS, "trying to connect %s:%s and %s:%s", GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad)); /* now we need to deal with the real/ghost stuff */ @@ -971,11 +971,30 @@ GST_INFO (GST_CAT_PADS, "*actually* connecting %s:%s and %s:%s", GST_DEBUG_PAD_NAME (realsrc), GST_DEBUG_PAD_NAME (realsink)); } - - g_return_val_if_fail (GST_RPAD_PEER (realsrc) == NULL, FALSE); - g_return_val_if_fail (GST_RPAD_PEER (realsink) == NULL, FALSE); - g_return_val_if_fail (GST_PAD_PARENT (realsrc) != NULL, FALSE); - g_return_val_if_fail (GST_PAD_PARENT (realsink) != NULL, FALSE); + if (GST_RPAD_PEER (realsrc) != NULL) + { + GST_INFO (GST_CAT_PADS, "Real source pad %s:%s has a peer, failed", + GST_DEBUG_PAD_NAME (realsrc)); + return FALSE; + } + if (GST_RPAD_PEER (realsink) != NULL) + { + GST_INFO (GST_CAT_PADS, "Real sink pad %s:%s has a peer, failed", + GST_DEBUG_PAD_NAME (realsink)); + return FALSE; + } + if (GST_PAD_PARENT (realsrc) == NULL) + { + GST_INFO (GST_CAT_PADS, "Real src pad %s:%s has no parent, failed", + GST_DEBUG_PAD_NAME (realsrc)); + return FALSE; + } + if (GST_PAD_PARENT (realsink) == NULL) + { + GST_INFO (GST_CAT_PADS, "Real src pad %s:%s has no parent, failed", + GST_DEBUG_PAD_NAME (realsrc)); + return FALSE; + } if (!gst_pad_check_schedulers (realsrc, realsink)) { g_warning ("connecting pads with different scheds requires " @@ -992,9 +1011,19 @@ realsrc = realsink; realsink = temppad; } - g_return_val_if_fail ((GST_RPAD_DIRECTION (realsrc) == GST_PAD_SRC) && - (GST_RPAD_DIRECTION (realsink) == GST_PAD_SINK), FALSE); - + if (GST_PAD_PARENT (realsink) == NULL) + if (GST_RPAD_DIRECTION (realsrc) != GST_PAD_SRC) + { + GST_INFO (GST_CAT_PADS, "Real src pad %s:%s is not a source pad, failed", + GST_DEBUG_PAD_NAME (realsrc)); + return FALSE; + } + if (GST_RPAD_DIRECTION (realsink) != GST_PAD_SINK) + { + GST_INFO (GST_CAT_PADS, "Real sink pad %s:%s is not a sink pad, failed", + GST_DEBUG_PAD_NAME (realsink)); + return FALSE; + } /* first set peers */ GST_RPAD_PEER (realsrc) = realsink; GST_RPAD_PEER (realsink) = realsrc; @@ -1002,7 +1031,7 @@ /* try to negotiate the pads, we don't need to clear the caps here */ if (!gst_pad_try_reconnect_filtered_func (realsrc, realsink, filtercaps, FALSE)) { - GST_DEBUG (GST_CAT_CAPS, "pads cannot connect"); + GST_DEBUG (GST_CAT_CAPS, "reconnect_filtered_func failed, can't connect"); GST_RPAD_PEER (realsrc) = NULL; GST_RPAD_PEER (realsink) = NULL; @@ -1028,7 +1057,7 @@ gst_scheduler_pad_connect (sink_sched, GST_PAD_CAST (realsrc), GST_PAD_CAST (realsink)); - GST_INFO (GST_CAT_PADS, "connected %s:%s and %s:%s", + GST_INFO (GST_CAT_PADS, "connected %s:%s and %s:%s, successful", GST_DEBUG_PAD_NAME (srcpad), GST_DEBUG_PAD_NAME (sinkpad)); gst_caps_debug (gst_pad_get_caps (GST_PAD_CAST (realsrc)), "caps of newly connected src pad"); |