From: <ms...@fr...> - 2005-09-13 14:49:39
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Tue Sep 13 2005 07:49:35 PDT Log message: Don't use windows linking attributes in MinGW Modified files: . : ChangeLog gst : gstconfig.h.in Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1477&r2=1.1478 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstconfig.h.in.diff?r1=1.12&r2=1.13 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1477 retrieving revision 1.1478 diff -u -d -r1.1477 -r1.1478 --- ChangeLog 13 Sep 2005 11:00:44 -0000 1.1477 +++ ChangeLog 13 Sep 2005 14:49:23 -0000 1.1478 @@ -1,3 +1,8 @@ +2005-09-13 Michael Smith <ms...@fl...> + + * gst/gstconfig.h.in: + Don't Use windows linking attributes for MinGW. Fixes #316157 2005-09-13 Thomas Vander Stichele <thomas at apestaart dot org> * gst/gstutils.c: (set_state_async_thread_func), Index: gstconfig.h.in RCS file: /cvs/gstreamer/gstreamer/gst/gstconfig.h.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- gstconfig.h.in 30 Aug 2005 08:17:48 -0000 1.12 +++ gstconfig.h.in 13 Sep 2005 14:49:23 -0000 1.13 @@ -136,7 +136,7 @@ * On Windows, this exports the plugin definition from the DLL. * On other platforms, this gets defined as a no-op. */ -#ifdef WIN32 +#if defined(WIN32) && (!defined(__MINGW32__)) #define GST_PLUGIN_EXPORT __declspec(dllexport) extern #ifdef GST_EXPORTS #define GST_EXPORT __declspec(dllexport) extern |
From: <ms...@fr...> - 2005-09-15 14:21:23
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Sep 15 2005 07:21:20 PDT Log message: Implement missing function. This is enough to get the basics of typefinding working - oggdemux succeeds now. decodebin is still broken. Modified files: . : ChangeLog gst : gstregistry.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1493&r2=1.1494 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.c.diff?r1=1.32&r2=1.33 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1493 retrieving revision 1.1494 diff -u -d -r1.1493 -r1.1494 --- ChangeLog 15 Sep 2005 05:58:36 -0000 1.1493 +++ ChangeLog 15 Sep 2005 14:21:08 -0000 1.1494 @@ -1,3 +1,8 @@ +2005-09-15 Michael Smith <ms...@fl...> + + * gst/gstregistry.c: (gst_registry_get_feature_list): + Implement this. Makes oggdemux work; decodebin still broken. 2005-09-14 David Schleef <ds...@sc...> * configure.ac: Add -no-undefined to GST_PLUGIN_LDFLAGS (bug Index: gstregistry.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -d -r1.32 -r1.33 --- gstregistry.c 15 Sep 2005 00:13:25 -0000 1.32 +++ gstregistry.c 15 Sep 2005 14:21:08 -0000 1.33 @@ -402,13 +402,17 @@ return feature; } - GList * gst_registry_get_feature_list (GstRegistry * registry, GType type) { - /* FIXME */ + GstTypeNameData data; - return NULL; + data.type = type; + data.name = NULL; + return gst_registry_feature_filter (registry, + (GstPluginFeatureFilter) gst_plugin_feature_type_name_filter, + FALSE, &data); |
From: <ms...@fr...> - 2005-11-16 11:30:11
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Wed Nov 16 2005 03:30:09 PST Log message: * gst/Makefile.am: Don't link against VALGRIND_LIBS. That was always the wrong thing to do, but only breaks with newer valgrind versions. We're not a valgrind tool, we have no link-time dependencies on libcoregrind. Modified files: . : ChangeLog gst : Makefile.am Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1893&r2=1.1894 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/Makefile.am.diff?r1=1.198&r2=1.199 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1893 retrieving revision 1.1894 diff -u -d -r1.1893 -r1.1894 --- ChangeLog 16 Nov 2005 11:06:06 -0000 1.1893 +++ ChangeLog 16 Nov 2005 11:29:57 -0000 1.1894 @@ -1,3 +1,10 @@ +2005-11-16 Michael Smith <ms...@fl...> + + * gst/Makefile.am: + Don't link against VALGRIND_LIBS. That was always the wrong thing to + do, but only breaks with newer valgrind versions. We're not a + valgrind tool, we have no link-time dependencies on libcoregrind. 2005-11-16 Thomas Vander Stichele <thomas at apestaart dot org> * gst/base/gstbasesrc.c: (gst_base_src_default_negotiate): Index: Makefile.am RCS file: /cvs/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.198 retrieving revision 1.199 diff -u -d -r1.198 -r1.199 --- Makefile.am 17 Oct 2005 18:09:32 -0000 1.198 +++ Makefile.am 16 Nov 2005 11:29:57 -0000 1.199 @@ -138,7 +138,6 @@ libgstreamer_@GST_MAJORMINOR@_la_LIBADD = \ $(GST_PARSE_LA) \ - $(VALGRIND_LIBS) \ $(GST_ALL_LIBS) \ $(XML_LIBS) |
From: <ms...@fr...> - 2005-11-17 12:36:47
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Nov 17 2005 04:36:42 PST Log message: * gst/gstclock.c: (gst_clock_init), (gst_clock_adjust_unlocked), (gst_clock_set_rate_offset), (gst_clock_get_rate_offset): * gst/gstclock.h: Anonymous structs are a gcc (and some other compilers) extension, so don't use them. Since this is only for ABI-compatibility, and our API/ABI freeze is over in a few days, this whole thing will only last a few days, so don't bother trying to think up a meaningful name for the struct. Modified files: . : ChangeLog gst : gstclock.c gstclock.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1910&r2=1.1911 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstclock.c.diff?r1=1.67&r2=1.68 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstclock.h.diff?r1=1.49&r2=1.50 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1910 retrieving revision 1.1911 diff -u -d -r1.1910 -r1.1911 --- ChangeLog 17 Nov 2005 11:51:49 -0000 1.1910 +++ ChangeLog 17 Nov 2005 12:36:29 -0000 1.1911 @@ -1,3 +1,14 @@ +2005-11-17 Michael Smith <ms...@fl...> + + * gst/gstclock.c: (gst_clock_init), (gst_clock_adjust_unlocked), + (gst_clock_set_rate_offset), (gst_clock_get_rate_offset): + * gst/gstclock.h: + Anonymous structs are a gcc (and some other compilers) extension, so + don't use them. Since this is only for ABI-compatibility, and our + API/ABI freeze is over in a few days, this whole thing will only + last a few days, so don't bother trying to think up a meaningful + name for the struct. 2005-11-17 Andy Wingo <wi...@po...> * gst/gstclock.h (GstClock): Add rate and offset properties, Index: gstclock.c RCS file: /cvs/gstreamer/gstreamer/gst/gstclock.c,v retrieving revision 1.67 retrieving revision 1.68 diff -u -d -r1.67 -r1.68 --- gstclock.c 17 Nov 2005 11:51:49 -0000 1.67 +++ gstclock.c 17 Nov 2005 12:36:30 -0000 1.68 @@ -533,8 +533,8 @@ clock->flags = 0; clock->stats = FALSE; - clock->rate = 1.0; - clock->offset = 0; + clock->A.rate = 1.0; + clock->A.offset = 0; } static void @@ -619,22 +619,22 @@ /* internal is uint64, rate is double, offset is int64, ret is uint64 */ - ret = internal * clock->rate; + ret = internal * clock->A.rate; - if (clock->offset < 0) { - if ((clock->offset == G_MININT64 && ret <= G_MAXINT64) - || (clock->offset + ((gint64) ret) < 0)) + if (clock->A.offset < 0) { + if ((clock->A.offset == G_MININT64 && ret <= G_MAXINT64) + || (clock->A.offset + ((gint64) ret) < 0)) /* underflow */ ret = 0; else - ret -= (guint64) (-clock->offset); + ret -= (guint64) (-clock->A.offset); } else { - if (clock->offset > 0 && ret >= G_MAXINT64 - && G_MAXUINT64 - ret - 1 <= clock->offset) + if (clock->A.offset > 0 && ret >= G_MAXINT64 + && G_MAXUINT64 - ret - 1 <= clock->A.offset) /* overflow, but avoiding CLOCK_TIME_NONE which is MAXUINT64 */ ret = G_MAXUINT64 - 1; - ret += (guint64) clock->offset; + ret += (guint64) clock->A.offset; } /* make sure the time is increasing */ @@ -760,8 +760,8 @@ g_return_if_fail (rate > 0.0); GST_LOCK (clock); - clock->rate = rate; - clock->offset = offset; + clock->A.rate = rate; + clock->A.offset = offset; GST_UNLOCK (clock); @@ -787,8 +787,8 @@ g_return_if_fail (offset != NULL); - *rate = clock->rate; - *offset = clock->offset; + *rate = clock->A.rate; + *offset = clock->A.offset; Index: gstclock.h RCS file: /cvs/gstreamer/gstreamer/gst/gstclock.h,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- gstclock.h 17 Nov 2005 11:51:49 -0000 1.49 +++ gstclock.h 17 Nov 2005 12:36:30 -0000 1.50 @@ -388,7 +388,7 @@ * bit machines at least */ gdouble rate; GstClockTime offset; - }; + } A; gpointer _gst_reserved[GST_PADDING-1+1]; }; }; |
From: <ms...@fr...> - 2005-11-21 18:10:27
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Mon Nov 21 2005 10:10:26 PST Log message: * gst/gstplugin.h: * gst/gstregistry.h: Remove unimplemented declarations for which we can see no sensible use. Modified files: . : ChangeLog gst : gstplugin.h gstregistry.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.1971&r2=1.1972 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstplugin.h.diff?r1=1.60&r2=1.61 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.h.diff?r1=1.28&r2=1.29 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.1971 retrieving revision 1.1972 diff -u -d -r1.1971 -r1.1972 --- ChangeLog 21 Nov 2005 18:03:22 -0000 1.1971 +++ ChangeLog 21 Nov 2005 18:10:13 -0000 1.1972 @@ -1,3 +1,10 @@ +2005-11-21 Michael Smith <ms...@fl...> + + * gst/gstplugin.h: + * gst/gstregistry.h: + Remove unimplemented declarations for which we can see no sensible + use. 2005-11-21 Andy Wingo <wi...@po...> * gst/gst.h: Include glib-compat.h. Index: gstplugin.h RCS file: /cvs/gstreamer/gstreamer/gst/gstplugin.h,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- gstplugin.h 21 Nov 2005 14:50:22 -0000 1.60 +++ gstplugin.h 21 Nov 2005 18:10:13 -0000 1.61 @@ -269,9 +269,6 @@ gboolean gst_plugin_name_filter (GstPlugin *plugin, const gchar *name); -/* This is not implemented (yet|anymore) -gboolean gst_plugin_check_file (const gchar *filename, GError** error); -*/ GstPlugin * gst_plugin_load_file (const gchar *filename, GError** error); GstPlugin * gst_plugin_load (GstPlugin *plugin); Index: gstregistry.h RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- gstregistry.h 4 Nov 2005 15:02:48 -0000 1.28 +++ gstregistry.h 21 Nov 2005 18:10:13 -0000 1.29 @@ -100,7 +100,6 @@ gboolean gst_registry_xml_read_cache (GstRegistry * registry, const char *location); gboolean gst_registry_xml_write_cache (GstRegistry * registry, const char *location); -void gst_registry_scan_paths (GstRegistry *registry); void _gst_registry_remove_cache_plugins (GstRegistry *registry); void _gst_registry_cleanup (void); |
From: <ms...@fr...> - 2005-11-29 11:08:23
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Tue Nov 29 2005 03:08:06 PST Log message: * gst/gstregistryxml.c: (load_plugin): Don't crash if we failed to load a feature from a plugin. Modified files: . : ChangeLog gst : gstregistryxml.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2038&r2=1.2039 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistryxml.c.diff?r1=1.15&r2=1.16 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2038 retrieving revision 1.2039 diff -u -d -r1.2038 -r1.2039 --- ChangeLog 28 Nov 2005 21:51:37 -0000 1.2038 +++ ChangeLog 29 Nov 2005 11:07:53 -0000 1.2039 @@ -1,3 +1,8 @@ +2005-11-29 Michael Smith <ms...@fl...> + + * gst/gstregistryxml.c: (load_plugin): + Don't crash if we failed to load a feature from a plugin. 2005-11-28 Thomas Vander Stichele <thomas at apestaart dot org> * check/pipelines/simple_launch_lines.c: (setup_pipeline), Index: gstregistryxml.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistryxml.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- gstregistryxml.c 21 Nov 2005 18:03:22 -0000 1.15 +++ gstregistryxml.c 29 Nov 2005 11:07:54 -0000 1.16 @@ -699,9 +699,8 @@ } else if (g_str_equal (tag, "feature")) { GstPluginFeature *feature = load_feature (reader); - feature->plugin_name = g_strdup (plugin->desc.name); - if (feature) { + feature->plugin_name = g_strdup (plugin->desc.name); *feature_list = g_list_prepend (*feature_list, feature); } } else { |
From: <ms...@fr...> - 2005-12-01 23:57:22
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Dec 01 2005 15:57:19 PST Log message: * gst/gst.c: Escape a % to make gtkdoc happier; bug 322958. Modified files: . : ChangeLog gst : gst.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2085&r2=1.2086 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gst.c.diff?r1=1.190&r2=1.191 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2085 retrieving revision 1.2086 diff -u -d -r1.2085 -r1.2086 --- ChangeLog 1 Dec 2005 19:11:56 -0000 1.2085 +++ ChangeLog 1 Dec 2005 23:57:06 -0000 1.2086 @@ -1,3 +1,8 @@ +2005-12-02 Michael Smith <ms...@fl...> + + * gst/gst.c: + Escape a % to make gtkdoc happier; bug 322958. === release 0.9.7 === 2005-12-01 <thomas (at) apestaart (dot) org> Index: gst.c RCS file: /cvs/gstreamer/gstreamer/gst/gst.c,v retrieving revision 1.190 retrieving revision 1.191 diff -u -d -r1.190 -r1.191 --- gst.c 30 Nov 2005 19:01:52 -0000 1.190 +++ gst.c 1 Dec 2005 23:57:07 -0000 1.191 @@ -81,7 +81,7 @@ * g_option_context_add_main_entries (ctx, options, GETTEXT_PACKAGE); * g_option_context_add_group (ctx, gst_init_get_option_group ()); * if (!g_option_context_parse (ctx, &argc, &argv, &err)) { - * g_print ("Error initializing: %s\n", GST_STR_NULL (err->message)); + * g_print ("Error initializing: %s\n", GST_STR_NULL (err->message)); * exit (1); * } * g_option_context_free (ctx); |
From: <ms...@ke...> - 2006-03-02 11:05:12
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Mar 02 2006 11:05:10 UTC Log message: * gst/gstregistryxml.c: (load_feature): Asserting on a failure to read part of the registry is Not Cool. Just log a warning and return NULL (which is already handled) Modified files: . : ChangeLog gst : gstregistryxml.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2308&r2=1.2309 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistryxml.c.diff?r1=1.19&r2=1.20 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2308 retrieving revision 1.2309 diff -u -d -r1.2308 -r1.2309 --- ChangeLog 28 Feb 2006 20:57:09 -0000 1.2308 +++ ChangeLog 2 Mar 2006 11:04:57 -0000 1.2309 @@ -1,3 +1,9 @@ +2006-03-02 Michael Smith <ms...@fl...> + + * gst/gstregistryxml.c: (load_feature): + Asserting on a failure to read part of the registry is Not Cool. + Just log a warning and return NULL (which is already handled) 2006-02-28 Sebastien Moutte <seb...@mo...> * win32/common/libgstbase.def: Index: gstregistryxml.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistryxml.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- gstregistryxml.c 16 Dec 2005 19:24:24 -0000 1.19 +++ gstregistryxml.c 2 Mar 2006 11:04:58 -0000 1.20 @@ -338,7 +338,7 @@ } } - g_assert_not_reached (); + GST_WARNING ("Error reading feature from registry: registry corrupt?"); return NULL; } |
From: <ms...@ke...> - 2006-03-06 14:51:49
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Mon Mar 06 2006 14:51:48 UTC Log message: * gst/gstmessage.c: (_gst_message_copy): When copying a message, set the parent_refcount of the enclosed structure to point at the copy, not the original message. Modified files: . : ChangeLog gst : gstmessage.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2320&r2=1.2321 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstmessage.c.diff?r1=1.51&r2=1.52 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2320 retrieving revision 1.2321 diff -u -d -r1.2320 -r1.2321 --- ChangeLog 6 Mar 2006 14:46:31 -0000 1.2320 +++ ChangeLog 6 Mar 2006 14:51:36 -0000 1.2321 @@ -1,3 +1,9 @@ +2006-03-06 Michael Smith <ms...@fl...> + + * gst/gstmessage.c: (_gst_message_copy): + When copying a message, set the parent_refcount of the enclosed + structure to point at the copy, not the original message. 2006-03-06 Tim-Philipp Müller <tim at centricular dot net> * gst/gstutils.h: Index: gstmessage.c RCS file: /cvs/gstreamer/gstreamer/gst/gstmessage.c,v retrieving revision 1.51 retrieving revision 1.52 diff -u -d -r1.51 -r1.52 --- gstmessage.c 6 Jan 2006 17:16:40 -0000 1.51 +++ gstmessage.c 6 Mar 2006 14:51:36 -0000 1.52 @@ -250,7 +250,7 @@ if (message->structure) { copy->structure = gst_structure_copy (message->structure); gst_structure_set_parent_refcount (copy->structure, - &message->mini_object.refcount); + ©->mini_object.refcount); } return copy; |
From: <ms...@ke...> - 2006-03-08 12:57:52
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Wed Mar 08 2006 12:57:49 UTC Log message: * gst/gstregistry.h: * gst/gstregistryxml.c: (gst_registry_save), (gst_registry_save_escaped), (gst_registry_xml_save_caps), (gst_registry_xml_save_pad_template), (gst_registry_xml_save_feature), (gst_registry_xml_save_plugin), (gst_registry_xml_write_cache): Rewrite registry-saving to avoid race conditions and check for failed writes. Modified files: . : ChangeLog gst : gstregistry.h gstregistryxml.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2333&r2=1.2334 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.h.diff?r1=1.31&r2=1.32 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistryxml.c.diff?r1=1.20&r2=1.21 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2333 retrieving revision 1.2334 diff -u -d -r1.2333 -r1.2334 --- ChangeLog 8 Mar 2006 10:17:40 -0000 1.2333 +++ ChangeLog 8 Mar 2006 12:57:37 -0000 1.2334 @@ -1,3 +1,14 @@ +2006-03-08 Michael Smith <ms...@fl...> + + * gst/gstregistry.h: + * gst/gstregistryxml.c: (gst_registry_save), + (gst_registry_save_escaped), (gst_registry_xml_save_caps), + (gst_registry_xml_save_pad_template), + (gst_registry_xml_save_feature), (gst_registry_xml_save_plugin), + (gst_registry_xml_write_cache): + Rewrite registry-saving to avoid race conditions and check for + failed writes. 2006-03-08 Wim Taymans <wi...@fl...> * libs/gst/base/gstbasetransform.c: Index: gstregistry.h RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.h,v retrieving revision 1.31 retrieving revision 1.32 diff -u -d -r1.31 -r1.32 --- gstregistry.h 2 Dec 2005 12:34:47 -0000 1.31 +++ gstregistry.h 8 Mar 2006 12:57:37 -0000 1.32 @@ -54,8 +54,8 @@ GList *paths; - /* FIXME move elsewhere */ - FILE *cache_file; + /* FIXME move these elsewhere */ + int cache_file; /*< private >*/ gpointer _gst_reserved[GST_PADDING]; Index: gstregistryxml.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistryxml.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- gstregistryxml.c 2 Mar 2006 11:04:58 -0000 1.20 +++ gstregistryxml.c 8 Mar 2006 12:57:37 -0000 1.21 @@ -56,17 +56,32 @@ #define CLASS(registry) GST_XML_REGISTRY_CLASS (G_OBJECT_GET_CLASS (registry)) static gboolean -gst_registry_xml_save (GstRegistry * registry, gchar * format, ...) +gst_registry_save (GstRegistry * registry, gchar * format, ...) { va_list var_args; + size_t written, len; + gboolean ret; + char *str; va_start (var_args, format); + str = g_strdup_vprintf (format, var_args); + va_end (var_args); - vfprintf (registry->cache_file, format, var_args); + len = strlen (str); - va_end (var_args); + written = write (registry->cache_file, str, len); - return TRUE; + if (len == written) + ret = TRUE; + else { + ret = FALSE; + GST_ERROR ("Failed to write registry to temporary file: %s", + g_strerror (errno)); + } + g_free (str); + return ret; } static void @@ -527,15 +542,21 @@ /* * Save */ -#define PUT_ESCAPED(prefix,tag,value) \ -G_STMT_START{ \ - const gchar *toconv = value; \ - if (toconv) { \ - gchar *v = g_markup_escape_text (toconv, strlen (toconv)); \ - gst_registry_xml_save (registry, prefix "<%s>%s</%s>\n", tag, v, tag); \ - g_free (v); \ - } \ -}G_STMT_END +static gboolean +gst_registry_save_escaped (GstRegistry * registry, char *prefix, char *tag, + char *value) +{ + gboolean ret = TRUE; + if (value) { + gchar *v = g_markup_escape_text (value, strlen (value)); + ret = gst_registry_save (registry, "%s<%s>%s</%s>\n", prefix, tag, v, tag); + g_free (v); +} @@ -545,14 +566,15 @@ * faster when loading them later on */ char *s; GstCaps *copy = gst_caps_copy (caps); gst_caps_do_simplify (copy); s = gst_caps_to_string (copy); gst_caps_unref (copy); - PUT_ESCAPED (" ", "caps", s); + ret = gst_registry_save_escaped (registry, " ", "caps", s); g_free (s); @@ -561,9 +583,14 @@ gchar *presence; - PUT_ESCAPED (" ", "nametemplate", template->name_template); - gst_registry_xml_save (registry, " <direction>%s</direction>\n", - (template->direction == GST_PAD_SINK ? "sink" : "src")); + if (!gst_registry_save_escaped (registry, " ", "nametemplate", + template->name_template)) + return FALSE; + if (!gst_registry_save (registry, + " <direction>%s</direction>\n", + (template->direction == GST_PAD_SINK ? "sink" : "src"))) switch (template->presence) { case GST_PAD_ALWAYS: @@ -579,11 +606,13 @@ presence = "unknown"; break; } - gst_registry_xml_save (registry, " <presence>%s</presence>\n", presence); + if (!gst_registry_save (registry, " <presence>%s</presence>\n", presence)) if (template->static_caps.string) { - gst_registry_xml_save (registry, " <caps>%s</caps>\n", - template->static_caps.string); + if (!gst_registry_save (registry, " <caps>%s</caps>\n", + template->static_caps.string)) + return FALSE; return TRUE; @@ -592,50 +621,68 @@ gst_registry_xml_save_feature (GstRegistry * registry, GstPluginFeature * feature) - PUT_ESCAPED (" ", "name", feature->name); + if (!gst_registry_save_escaped (registry, " ", "name", feature->name)) if (feature->rank > 0) { gint rank = feature->rank; - gst_registry_xml_save (registry, " <rank>%d</rank>\n", rank); + if (!gst_registry_save (registry, " <rank>%d</rank>\n", rank)) if (GST_IS_ELEMENT_FACTORY (feature)) { GstElementFactory *factory = GST_ELEMENT_FACTORY (feature); GList *walk; - PUT_ESCAPED (" ", "longname", factory->details.longname); - PUT_ESCAPED (" ", "class", factory->details.klass); - PUT_ESCAPED (" ", "description", factory->details.description); - PUT_ESCAPED (" ", "author", factory->details.author); + if (!gst_registry_save_escaped (registry, " ", "longname", + factory->details.longname)) + if (!gst_registry_save_escaped (registry, " ", "class", + factory->details.klass)) + if (!gst_registry_save_escaped (registry, " ", "description", + factory->details.description)) + if (!gst_registry_save_escaped (registry, " ", "author", + factory->details.author)) walk = factory->staticpadtemplates; while (walk) { GstStaticPadTemplate *template = walk->data; - gst_registry_xml_save (registry, " <padtemplate>\n"); - gst_registry_xml_save_pad_template (registry, template); - gst_registry_xml_save (registry, " </padtemplate>\n"); + if (!gst_registry_save (registry, " <padtemplate>\n")) + return FALSE; + if (!gst_registry_xml_save_pad_template (registry, template)) + if (!gst_registry_save (registry, " </padtemplate>\n")) walk = g_list_next (walk); } walk = factory->interfaces; - PUT_ESCAPED (" ", "interface", (gchar *) walk->data); + if (!gst_registry_save_escaped (registry, " ", "interface", + (gchar *) walk->data)) if (GST_URI_TYPE_IS_VALID (factory->uri_type)) { gchar **protocol; - PUT_ESCAPED (" ", "uri_type", - factory->uri_type == GST_URI_SINK ? "sink" : "source"); + if (!gst_registry_save_escaped (registry, " ", "uri_type", + factory->uri_type == GST_URI_SINK ? "sink" : "source")) g_assert (factory->uri_protocols); protocol = factory->uri_protocols; while (*protocol) { - PUT_ESCAPED (" ", "uri_protocol", *protocol); + if (!gst_registry_save_escaped (registry, " ", "uri_protocol", + *protocol)) + return FALSE; protocol++; } @@ -644,16 +691,21 @@ gint i = 0; if (factory->caps) { - gst_registry_xml_save_caps (registry, factory->caps); + if (!gst_registry_xml_save_caps (registry, factory->caps)) if (factory->extensions) { while (factory->extensions[i]) { - PUT_ESCAPED (" ", "extension", factory->extensions[i]); + if (!gst_registry_save_escaped (registry, " ", "extension", + factory->extensions[i])) i++; } else if (GST_IS_INDEX_FACTORY (feature)) { - PUT_ESCAPED (" ", "longdesc", GST_INDEX_FACTORY (feature)->longdesc); + if (!gst_registry_save_escaped (registry, " ", "longdesc", + GST_INDEX_FACTORY (feature)->longdesc)) @@ -665,33 +717,58 @@ GList *walk; char s[100]; - PUT_ESCAPED (" ", "name", plugin->desc.name); - PUT_ESCAPED (" ", "description", plugin->desc.description); - PUT_ESCAPED (" ", "filename", plugin->filename); + if (!gst_registry_save_escaped (registry, " ", "name", plugin->desc.name)) + if (!gst_registry_save_escaped (registry, " ", "description", + plugin->desc.description)) + if (!gst_registry_save_escaped (registry, " ", "filename", plugin->filename)) sprintf (s, "%d", (int) plugin->file_size); - PUT_ESCAPED (" ", "size", s); + if (!gst_registry_save_escaped (registry, " ", "size", s)) sprintf (s, "%d", (int) plugin->file_mtime); - PUT_ESCAPED (" ", "m32p", s); - PUT_ESCAPED (" ", "version", plugin->desc.version); - PUT_ESCAPED (" ", "license", plugin->desc.license); - PUT_ESCAPED (" ", "source", plugin->desc.source); - PUT_ESCAPED (" ", "package", plugin->desc.package); - PUT_ESCAPED (" ", "origin", plugin->desc.origin); + if (!gst_registry_save_escaped (registry, " ", "m32p", s)) + if (!gst_registry_save_escaped (registry, " ", "version", + plugin->desc.version)) + if (!gst_registry_save_escaped (registry, " ", "license", + plugin->desc.license)) + if (!gst_registry_save_escaped (registry, " ", "source", plugin->desc.source)) + if (!gst_registry_save_escaped (registry, " ", "package", + plugin->desc.package)) + if (!gst_registry_save_escaped (registry, " ", "origin", plugin->desc.origin)) list = gst_registry_get_feature_list_by_plugin (registry, plugin->desc.name); for (walk = list; walk; walk = g_list_next (walk)) { GstPluginFeature *feature = GST_PLUGIN_FEATURE (walk->data); - gst_registry_xml_save (registry, " <feature typename=\"%s\">\n", - g_type_name (G_OBJECT_TYPE (feature))); - gst_registry_xml_save_feature (registry, feature); - gst_registry_xml_save (registry, " </feature>\n"); + if (!gst_registry_save (registry, + " <feature typename=\"%s\">\n", + g_type_name (G_OBJECT_TYPE (feature)))) + goto fail; + if (!gst_registry_xml_save_feature (registry, feature)) + if (!gst_registry_save (registry, " </feature>\n")) gst_plugin_feature_list_free (list); - +fail: + gst_plugin_feature_list_free (list); + return FALSE; /** @@ -712,9 +789,9 @@ g_return_val_if_fail (GST_IS_REGISTRY (registry), FALSE); - tmp_location = g_strconcat (location, ".tmp", NULL); - registry->cache_file = fopen (tmp_location, "w"); - if (registry->cache_file == NULL) { + tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL); + registry->cache_file = g_mkstemp (tmp_location); + if (registry->cache_file == -1) { char *dir; /* oops, I bet the directory doesn't exist */ @@ -722,14 +799,17 @@ g_mkdir_with_parents (dir, 0777); g_free (dir); - registry->cache_file = fopen (tmp_location, "w"); + registry->cache_file = g_mkstemp (tmp_location); + g_free (tmp_location); return FALSE; - gst_registry_xml_save (registry, "<?xml version=\"1.0\"?>\n"); - gst_registry_xml_save (registry, "<GST-PluginRegistry>\n"); + if (!gst_registry_save (registry, "<?xml version=\"1.0\"?>\n")) + goto fail; + if (!gst_registry_save (registry, "<GST-PluginRegistry>\n")) for (walk = g_list_last (registry->plugins); walk; @@ -752,13 +832,17 @@ - gst_registry_xml_save (registry, "<plugin>\n"); - gst_registry_xml_save_plugin (registry, plugin); - gst_registry_xml_save (registry, "</plugin>\n"); + if (!gst_registry_save (registry, "<plugin>\n")) + if (!gst_registry_xml_save_plugin (registry, plugin)) + if (!gst_registry_save (registry, "</plugin>\n")) - gst_registry_xml_save (registry, "</GST-PluginRegistry>\n"); + if (!gst_registry_save (registry, "</GST-PluginRegistry>\n")) - fclose (registry->cache_file); + close (registry->cache_file); if (g_file_test (tmp_location, G_FILE_TEST_EXISTS)) { #ifdef WIN32 @@ -766,7 +850,14 @@ #endif rename (tmp_location, location); g_free (tmp_location); + g_free (tmp_location); |
From: <ms...@ke...> - 2006-04-05 13:18:45
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Wed Apr 05 2006 13:18:41 UTC Log message: * gst/gstquery.c: (gst_query_set_formats), (gst_query_set_formatsv): Fix leaking GValues in queries, as shown by valgrind/testsuite. Modified files: . : ChangeLog gst : gstquery.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2416&r2=1.2417 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstquery.c.diff?r1=1.29&r2=1.30 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2416 retrieving revision 1.2417 diff -u -d -r1.2416 -r1.2417 --- ChangeLog 5 Apr 2006 12:11:20 -0000 1.2416 +++ ChangeLog 5 Apr 2006 13:18:29 -0000 1.2417 @@ -1,5 +1,11 @@ 2006-04-05 Michael Smith <ms...@fl...> + * gst/gstquery.c: (gst_query_set_formats), + (gst_query_set_formatsv): + Fix leaking GValues in queries, as shown by valgrind/testsuite. + +2006-04-05 Michael Smith <ms...@fl...> * tests/check/generic/sinks.c: (GST_START_TEST): Fix a variety of memleaks in sinks check, which are only sometimes shown by running the tests under valgrind (weird?). Index: gstquery.c RCS file: /cvs/gstreamer/gstreamer/gst/gstquery.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- gstquery.c 14 Feb 2006 13:07:09 -0000 1.29 +++ gstquery.c 5 Apr 2006 13:18:29 -0000 1.30 @@ -884,6 +884,9 @@ structure = gst_query_get_structure (query); gst_structure_set_value (structure, "formats", &list); + g_value_unset (&list); } /** @@ -912,6 +915,8 @@ } |
From: <ms...@ke...> - 2006-04-05 15:46:20
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Wed Apr 05 2006 15:46:12 UTC Log message: * gst/gstpipeline.c: (gst_pipeline_init): When we create a pipeline bus, initially create it in flushing mode. Fixes leaks in at least one test, and makes a new pipeline work the same as one that has gone to READY and then back to NULL. * gst/gstelement.c: Typo fix in docs. Modified files: . : ChangeLog gst : gstelement.c gstpipeline.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2418&r2=1.2419 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstelement.c.diff?r1=1.427&r2=1.428 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpipeline.c.diff?r1=1.132&r2=1.133 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2418 retrieving revision 1.2419 diff -u -d -r1.2418 -r1.2419 --- ChangeLog 5 Apr 2006 15:12:39 -0000 1.2418 +++ ChangeLog 5 Apr 2006 15:45:59 -0000 1.2419 @@ -1,5 +1,15 @@ 2006-04-05 Michael Smith <ms...@fl...> + * gst/gstpipeline.c: (gst_pipeline_init): + When we create a pipeline bus, initially create it in flushing mode. + Fixes leaks in at least one test, and makes a new pipeline work the + same as one that has gone to READY and then back to NULL. + + * gst/gstelement.c: + Typo fix in docs. +2006-04-05 Michael Smith <ms...@fl...> * tests/check/gst/gstghostpad.c: (GST_START_TEST): Unref a pad we reffed. * tests/check/gst/gstutils.c: (GST_START_TEST): Index: gstelement.c RCS file: /cvs/gstreamer/gstreamer/gst/gstelement.c,v retrieving revision 1.427 retrieving revision 1.428 diff -u -d -r1.427 -r1.428 --- gstelement.c 24 Mar 2006 10:44:17 -0000 1.427 +++ gstelement.c 5 Apr 2006 15:46:00 -0000 1.428 @@ -472,7 +472,7 @@ * * Returns the base time of the element. The base time is the * absolute time of the clock when this element was last put to - * PLAYING. Substracting the base time from the clock time gives + * PLAYING. Subtracting the base time from the clock time gives * the stream time of the element. * Returns: the base time of the element. Index: gstpipeline.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpipeline.c,v retrieving revision 1.132 retrieving revision 1.133 diff -u -d -r1.132 -r1.133 --- gstpipeline.c 21 Mar 2006 14:14:49 -0000 1.132 +++ gstpipeline.c 5 Apr 2006 15:46:00 -0000 1.133 @@ -248,6 +248,10 @@ /* create and set a default bus */ bus = gst_bus_new (); + /* Start our bus in flushing if appropriate */ + if (pipeline->priv->auto_flush_bus) + gst_bus_set_flushing (bus, TRUE); gst_element_set_bus (GST_ELEMENT_CAST (pipeline), bus); GST_DEBUG_OBJECT (pipeline, "set bus %" GST_PTR_FORMAT " on pipeline", bus); gst_object_unref (bus); |
From: <ms...@ke...> - 2006-04-06 15:07:34
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Apr 06 2006 15:07:24 UTC Log message: * gst/gstpad.c: (gst_pad_set_property): Use g_value_get_object() instead of g_value_dup_gst_object(), to avoid double-reffing the pad template (which we then sink, so this worked previously if (and only if) the pad template was floating. * gst/gstpadtemplate.c: (gst_pad_template_init), (gst_pad_template_pad_created): Never return floating references to pad templates, create them as initially-sunken. Document an extra function (and make this stop sinking our pad template, since that is now guaranteed to do nothing, since we created it sunken). * gst/gstghostpad.c: Fix docs typo. Modified files: . : ChangeLog gst : gstghostpad.c gstpad.c gstpadtemplate.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2421&r2=1.2422 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstghostpad.c.diff?r1=1.34&r2=1.35 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpad.c.diff?r1=1.504&r2=1.505 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpadtemplate.c.diff?r1=1.7&r2=1.8 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2421 retrieving revision 1.2422 diff -u -d -r1.2421 -r1.2422 --- ChangeLog 6 Apr 2006 11:27:24 -0000 1.2421 +++ ChangeLog 6 Apr 2006 15:07:12 -0000 1.2422 @@ -1,3 +1,23 @@ +2006-04-06 Michael Smith <ms...@fl...> + + * gst/gstpad.c: (gst_pad_set_property): + Use g_value_get_object() instead of g_value_dup_gst_object(), + to avoid double-reffing the pad template (which we then sink, + so this worked previously if (and only if) the pad template + was floating. + * gst/gstpadtemplate.c: (gst_pad_template_init), + (gst_pad_template_pad_created): + Never return floating references to pad templates, create + them as initially-sunken. + Document an extra function (and make this stop sinking our + pad template, since that is now guaranteed to do nothing, + since we created it sunken). + * gst/gstghostpad.c: + Fix docs typo. 2006-04-06 Tim-Philipp Müller <tim at centricular dot net> * gst/gstinfo.c: (__gst_in_valgrind): Index: gstghostpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstghostpad.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- gstghostpad.c 21 Mar 2006 14:14:49 -0000 1.34 +++ gstghostpad.c 6 Apr 2006 15:07:12 -0000 1.35 @@ -36,7 +36,7 @@ * If the target pad is known at creation time, gst_ghost_pad_new() is the * function to use to get a ghost-pad. Otherwise one can use gst_ghost_pad_new_no_target() * to create the ghost-pad and use gst_ghost_pad_set_target() to establish the - * accociation later on. + * association later on. * * Last reviewed on 2005-11-18 (0.9.5) */ Index: gstpad.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpad.c,v retrieving revision 1.504 retrieving revision 1.505 diff -u -d -r1.504 -r1.505 --- gstpad.c 5 Apr 2006 10:26:29 -0000 1.504 +++ gstpad.c 6 Apr 2006 15:07:12 -0000 1.505 @@ -421,7 +421,7 @@ break; case PAD_PROP_TEMPLATE: gst_pad_set_pad_template (GST_PAD_CAST (object), - (GstPadTemplate *) g_value_dup_gst_object (value)); + (GstPadTemplate *) g_value_get_object (value)); default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); Index: gstpadtemplate.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpadtemplate.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gstpadtemplate.c 14 Feb 2006 18:26:19 -0000 1.7 +++ gstpadtemplate.c 6 Apr 2006 15:07:12 -0000 1.8 @@ -119,7 +119,8 @@ static guint gst_pad_template_signals[LAST_SIGNAL] = { 0 }; static void gst_pad_template_class_init (GstPadTemplateClass * klass); -static void gst_pad_template_init (GstPadTemplate * templ); +static void gst_pad_template_init (GstPadTemplate * templ, + GstPadTemplateClass * klass); static void gst_pad_template_dispose (GObject * object); GType @@ -172,8 +173,19 @@ } static void -gst_pad_template_init (GstPadTemplate * templ) +gst_pad_template_init (GstPadTemplate * templ, GstPadTemplateClass * klass) { + /* We ensure that the pad template we're creating has a sunken reference. + * Inconsistencies in pad templates being floating or sunken has caused + * problems in the past with leaks, etc. + * + * For consistency, then, we only produce them with sunken references + * owned by the creator of the object + */ + if (GST_OBJECT_IS_FLOATING (templ)) { + gst_object_ref (templ); + gst_object_sink (templ); + } @@ -346,10 +358,16 @@ return GST_PAD_TEMPLATE_CAPS (templ); +/** + * gst_pad_template_pad_created: + * @templ: a #GstPadTemplate that has been created + * @pad: the #GstPad that created it + * + * Emit the pad-created signal for this template when created by this pad. + */ void gst_pad_template_pad_created (GstPadTemplate * templ, GstPad * pad) - gst_object_sink (GST_OBJECT (templ)); g_signal_emit (G_OBJECT (templ), gst_pad_template_signals[TEMPL_PAD_CREATED], 0, pad); |
From: <ms...@ke...> - 2006-04-28 13:51:16
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Fri Apr 28 2006 13:51:12 UTC Log message: * gst/gstvalue.c: (gst_value_serialize_flags): Avoid NULL dereference when trying to serialize flags containing invalid values. Modified files: . : ChangeLog gst : gstvalue.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2450&r2=1.2451 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstvalue.c.diff?r1=1.113&r2=1.114 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2450 retrieving revision 1.2451 diff -u -d -r1.2450 -r1.2451 --- ChangeLog 28 Apr 2006 13:43:03 -0000 1.2450 +++ ChangeLog 28 Apr 2006 13:50:59 -0000 1.2451 @@ -1,5 +1,11 @@ 2006-04-28 Michael Smith <ms...@fl...> + * gst/gstvalue.c: (gst_value_serialize_flags): + Avoid NULL dereference when trying to serialize flags containing + invalid values. + +2006-04-28 Michael Smith <ms...@fl...> * plugins/elements/gsttypefindelement.c: (gst_type_find_element_handle_event): If we get EOS before any data is accumulated, don't use Index: gstvalue.c RCS file: /cvs/gstreamer/gstreamer/gst/gstvalue.c,v retrieving revision 1.113 retrieving revision 1.114 diff -u -d -r1.113 -r1.114 --- gstvalue.c 28 Apr 2006 13:13:23 -0000 1.113 +++ gstvalue.c 28 Apr 2006 13:51:00 -0000 1.114 @@ -1928,9 +1928,10 @@ g_free (result); result = tmp; first = FALSE; + /* clear flag */ + flags &= ~fl->value; } - /* clear flag */ - flags &= ~fl->value; } g_type_class_unref (klass); |
From: <ms...@ke...> - 2006-05-12 09:28:37
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Fri May 12 2006 09:28:34 UTC Log message: * gst/gstplugin.c: (gst_plugin_load_file): If an so file has no plugin entry point, unload the module. Modified files: . : ChangeLog gst : gstplugin.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2512&r2=1.2513 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstplugin.c.diff?r1=1.164&r2=1.165 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2512 retrieving revision 1.2513 diff -u -d -r1.2512 -r1.2513 --- ChangeLog 11 May 2006 19:07:48 -0000 1.2512 +++ ChangeLog 12 May 2006 09:28:22 -0000 1.2513 @@ -1,3 +1,8 @@ +2006-05-12 Michael Smith <ms...@fl...> + + * gst/gstplugin.c: (gst_plugin_load_file): + If an so file has no plugin entry point, unload the module. 2006-05-11 Wim Taymans <wi...@fl...> * plugins/elements/gstqueue.c: (gst_queue_chain), (gst_queue_loop), Index: gstplugin.c RCS file: /cvs/gstreamer/gstreamer/gst/gstplugin.c,v retrieving revision 1.164 retrieving revision 1.165 diff -u -d -r1.164 -r1.165 --- gstplugin.c 4 Apr 2006 18:02:07 -0000 1.164 +++ gstplugin.c 12 May 2006 09:28:22 -0000 1.165 @@ -428,6 +428,7 @@ GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, "File \"%s\" is not a GStreamer plugin", filename); + g_module_close (module); goto return_error; } plugin->orig_desc = (GstPluginDesc *) ptr; |
From: <ms...@ke...> - 2006-06-06 13:11:21
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Tue Jun 06 2006 13:11:15 UTC Log message: * gst/gstsegment.h: Don't use c++-style comments, fixes #343929 Modified files: . : ChangeLog gst : gstsegment.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2571&r2=1.2572 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstsegment.h.diff?r1=1.6&r2=1.7 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2571 retrieving revision 1.2572 diff -u -d -r1.2571 -r1.2572 --- ChangeLog 5 Jun 2006 13:05:37 -0000 1.2571 +++ ChangeLog 6 Jun 2006 13:11:03 -0000 1.2572 @@ -1,3 +1,8 @@ +2006-06-06 Michael Smith <ms...@fl...> + + * gst/gstsegment.h: + Don't use c++-style comments, fixes #343929 2006-06-05 Edward Hervey <ed...@fl...> * gst/gst.c: Index: gstsegment.h RCS file: /cvs/gstreamer/gstreamer/gst/gstsegment.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- gstsegment.h 8 May 2006 09:52:33 -0000 1.6 +++ gstsegment.h 6 Jun 2006 13:11:03 -0000 1.7 @@ -67,7 +67,7 @@ gdouble applied_rate; /*< private >*/ - //gpointer _gst_reserved[GST_PADDING-2]; + /*gpointer _gst_reserved[GST_PADDING-2];*/ guint8 _gst_reserved[(sizeof (gpointer) * GST_PADDING) - sizeof (gdouble)]; }; |
From: <ms...@ke...> - 2006-08-31 17:13:47
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Aug 31 2006 17:13:46 UTC Log message: * gst/gstutils.c: (gst_element_link_pads), (gst_element_link_pads_filtered): Ensure that we set a capsfilter to NULL if we failed to link it when doing filtered linking, to avoid criticals. No need to check for unreffing srcpad, which is explicly NULLed above (a trivial code cleanup). Modified files: . : ChangeLog gst : gstutils.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.2785&r2=1.2786 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstutils.c.diff?r1=1.148&r2=1.149 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.2785 retrieving revision 1.2786 diff -u -d -r1.2785 -r1.2786 --- ChangeLog 31 Aug 2006 15:19:44 -0000 1.2785 +++ ChangeLog 31 Aug 2006 17:13:34 -0000 1.2786 @@ -1,3 +1,13 @@ +2006-08-31 Michael Smith <ms...@fl...> + + * gst/gstutils.c: (gst_element_link_pads), + (gst_element_link_pads_filtered): + Ensure that we set a capsfilter to NULL if we failed to link it + when doing filtered linking, to avoid criticals. + No need to check for unreffing srcpad, which is explicly NULLed + above (a trivial code cleanup). 2006-08-31 Wim Taymans <wi...@fl...> * docs/design/part-gstghostpad.txt: Index: gstutils.c RCS file: /cvs/gstreamer/gstreamer/gst/gstutils.c,v retrieving revision 1.148 retrieving revision 1.149 diff -u -d -r1.148 -r1.149 --- gstutils.c 23 Aug 2006 10:59:47 -0000 1.148 +++ gstutils.c 31 Aug 2006 17:13:34 -0000 1.149 @@ -1482,13 +1482,8 @@ GST_CAT_DEBUG (GST_CAT_ELEMENT_PADS, "no link possible from %s to %s:%s", GST_ELEMENT_NAME (src), GST_DEBUG_PAD_NAME (destpad)); gst_object_unref (destpad); - if (srcpad) - gst_object_unref (srcpad); return FALSE; } else { - srcpad = NULL; if (destpad) gst_object_unref (destpad); destpad = NULL; @@ -1598,8 +1593,9 @@ return TRUE; } else { GST_INFO ("Could not link elements"); + gst_element_set_state (capsfilter, GST_STATE_NULL); + /* this will unlink and unref as appropriate */ gst_bin_remove (GST_BIN (GST_OBJECT_PARENT (capsfilter)), capsfilter); - /* will unref and unlink as appropriate */ return FALSE; } |
From: <ms...@ke...> - 2007-05-11 10:57:07
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Fri May 11 2007 10:57:00 UTC Log message: * gst/gstplugin.c: (gst_plugin_load_file): * gst/gstregistry.c: (gst_registry_scan_path_level): Don't print a g_warning for any failure to load a shared object. Instead, push this down into gstplugin.c, and warn _only_ if we failed to open the module (i.e. failure to link). Avoids warnings on normal, working, non-plugin .so files. Modified files: . : ChangeLog gst : gstplugin.c gstregistry.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3198&r2=1.3199 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstplugin.c.diff?r1=1.171&r2=1.172 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.c.diff?r1=1.71&r2=1.72 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3198 retrieving revision 1.3199 diff -u -d -r1.3198 -r1.3199 --- ChangeLog 11 May 2007 08:29:10 -0000 1.3198 +++ ChangeLog 11 May 2007 10:56:48 -0000 1.3199 @@ -1,3 +1,12 @@ +2007-05-11 Michael Smith <ms...@fl...> + + * gst/gstplugin.c: (gst_plugin_load_file): + * gst/gstregistry.c: (gst_registry_scan_path_level): + Don't print a g_warning for any failure to load a shared object. + Instead, push this down into gstplugin.c, and warn _only_ if we + failed to open the module (i.e. failure to link). + Avoids warnings on normal, working, non-plugin .so files. 2007-05-11 Stefan Kost <en...@us...> * gst/gstplugin.c (gst_plugin_load_file): Index: gstplugin.c RCS file: /cvs/gstreamer/gstreamer/gst/gstplugin.c,v retrieving revision 1.171 retrieving revision 1.172 diff -u -d -r1.171 -r1.172 --- gstplugin.c 11 May 2007 08:29:10 -0000 1.171 +++ gstplugin.c 11 May 2007 10:56:48 -0000 1.172 @@ -415,6 +415,10 @@ g_set_error (error, GST_PLUGIN_ERROR, GST_PLUGIN_ERROR_MODULE, "Opening module failed: %s", g_module_error ()); + /* If we failed to open the shared object, then it's probably because a + * plugin is linked against the wrong libraries. Print out an easy-to-see + * message in this case. */ + g_warning ("Failed to load plugin: %s", g_module_error ()); goto return_error; } Index: gstregistry.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -d -r1.71 -r1.72 --- gstregistry.c 11 May 2007 08:29:10 -0000 1.71 +++ gstregistry.c 11 May 2007 10:56:48 -0000 1.72 @@ -803,7 +803,6 @@ GstPlugin *plugin; GstPlugin *newplugin; gboolean changed = FALSE; - GError *err = NULL; dir = g_dir_open (path, 0, NULL); if (!dir) @@ -882,19 +881,15 @@ G_GINT64_FORMAT, plugin->file_mtime, file_status.st_mtime, (gint64) plugin->file_size, (gint64) file_status.st_size); gst_registry_remove_plugin (gst_registry_get_default (), plugin); - newplugin = gst_plugin_load_file (filename, &err); + /* We don't use a GError here because a failure to load some shared + * objects as plugins is normal (particularly in the uninstalled case) + */ + newplugin = gst_plugin_load_file (filename, NULL); if (newplugin) { GST_DEBUG_OBJECT (registry, "marking new plugin %p as registered", newplugin); newplugin->registered = TRUE; gst_object_unref (newplugin); - } else { - if (err) { - /* Report error to user, and free error */ - g_warning ("Failed to load plugin: %s", err->message); - g_error_free (err); - err = NULL; - } } changed = TRUE; } @@ -902,18 +897,11 @@ } else { GST_DEBUG_OBJECT (registry, "file %s not yet in registry", filename); - newplugin = gst_plugin_load_file (filename, &err); + newplugin = gst_plugin_load_file (filename, NULL); if (newplugin) { newplugin->registered = TRUE; gst_object_unref (newplugin); - } else { - if (err) { - /* Report error to user, and free error */ - g_warning ("Failed to load plugin: %s", err->message); - g_error_free (err); - err = NULL; - } } |
From: <ms...@ke...> - 2007-08-10 14:40:54
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Fri Aug 10 2007 14:40:40 UTC Log message: * gst/gstregistry.h: Add gst_registry_add_path, which was missing from this header. Modified files: . : ChangeLog gst : gstregistry.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3363&r2=1.3364 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.h.diff?r1=1.39&r2=1.40 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3363 retrieving revision 1.3364 diff -u -d -r1.3363 -r1.3364 --- ChangeLog 10 Aug 2007 10:30:22 -0000 1.3363 +++ ChangeLog 10 Aug 2007 14:40:26 -0000 1.3364 @@ -1,3 +1,8 @@ +2007-08-10 Michael Smith <ms...@fl...> + + * gst/gstregistry.h: + Add gst_registry_add_path, which was missing from this header. 2007-08-10 Tim-Philipp Müller <tim at centricular dot net> * libs/gst/controller/gstlfocontrolsource.c: Index: gstregistry.h RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.h,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- gstregistry.h 23 Jul 2007 11:42:12 -0000 1.39 +++ gstregistry.h 10 Aug 2007 14:40:26 -0000 1.40 @@ -83,6 +83,7 @@ GstRegistry * gst_registry_get_default (void); gboolean gst_registry_scan_path (GstRegistry *registry, const gchar *path); +void gst_registry_add_path (GstRegistry * registry, const gchar * path); GList* gst_registry_get_path_list (GstRegistry *registry); gboolean gst_registry_add_plugin (GstRegistry *registry, GstPlugin *plugin); |
From: <ms...@ke...> - 2007-09-26 17:00:35
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Wed Sep 26 2007 17:00:36 UTC Log message: * gst/gstbuffer.c: (gst_buffer_finalize): Make it once again possible to free GstBuffers in the default build. The poisoning scribbles on parts of the miniobject we need in order to free it. Fixes #480341 Modified files: . : ChangeLog gst : gstbuffer.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3435&r2=1.3436 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstbuffer.c.diff?r1=1.137&r2=1.138 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3435 retrieving revision 1.3436 diff -u -d -r1.3435 -r1.3436 --- ChangeLog 25 Sep 2007 18:35:37 -0000 1.3435 +++ ChangeLog 26 Sep 2007 17:00:20 -0000 1.3436 @@ -1,3 +1,12 @@ +2007-09-26 Michael Smith <ms...@fl...> + + * gst/gstbuffer.c: (gst_buffer_finalize): + Make it once again possible to free GstBuffers in the default + build. + The poisoning scribbles on parts of the miniobject we need in + order to free it. + Fixes #480341 2007-09-25 Tim-Philipp Müller <tim at centricular dot net> * docs/gst/gstreamer-sections.txt: Index: gstbuffer.c RCS file: /cvs/gstreamer/gstreamer/gst/gstbuffer.c,v retrieving revision 1.137 retrieving revision 1.138 diff -u -d -r1.137 -r1.138 --- gstbuffer.c 13 Sep 2007 08:42:55 -0000 1.137 +++ gstbuffer.c 26 Sep 2007 17:00:22 -0000 1.138 @@ -192,10 +192,6 @@ g_free (buffer->malloc_data); gst_caps_replace (&GST_BUFFER_CAPS (buffer), NULL); - -#ifdef USE_POISONING - memset (buffer, 0xff, sizeof (GstBuffer)); -#endif } /** |
From: <ms...@ke...> - 2008-07-15 22:53:04
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Tue Jul 15 2008 22:53:14 UTC Log message: * gst/gstplugin.c: * gst/gstregistry.c: GstRegistryPool doesn't exist; don't refer to it in docs. Don't refer to functions that don't exist in docs, it's unhelpful. Modified files: . : ChangeLog gst : gstplugin.c gstregistry.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3971&r2=1.3972 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstplugin.c.diff?r1=1.185&r2=1.186 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistry.c.diff?r1=1.83&r2=1.84 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3971 retrieving revision 1.3972 diff -u -d -r1.3971 -r1.3972 --- ChangeLog 12 Jul 2008 17:51:14 -0000 1.3971 +++ ChangeLog 15 Jul 2008 22:52:57 -0000 1.3972 @@ -1,3 +1,11 @@ +2008-07-15 Michael Smith <ms...@so...> + + * gst/gstplugin.c: + * gst/gstregistry.c: + GstRegistryPool doesn't exist; don't refer to it in docs. + Don't refer to functions that don't exist in docs, it's + unhelpful. 2008-07-12 Sebastian Dröge <seb...@co...> * gst/gst.c: Index: gstplugin.c RCS file: /cvs/gstreamer/gstreamer/gst/gstplugin.c,v retrieving revision 1.185 retrieving revision 1.186 diff -u -d -r1.185 -r1.186 --- gstplugin.c 2 Jul 2008 14:43:39 -0000 1.185 +++ gstplugin.c 15 Jul 2008 22:52:59 -0000 1.186 @@ -36,12 +36,9 @@ * #GstPluginInitFunc function that was provided in the * <symbol>gst_plugin_desc</symbol>. * - * Once you have a handle to a #GstPlugin (e.g. from the #GstRegistryPool), you + * Once you have a handle to a #GstPlugin (e.g. from the #GstRegistry), you * can add any object that subclasses #GstPluginFeature. - * Use gst_plugin_find_feature() and gst_plugin_get_feature_list() to find - * features in a plugin. - * * Usually plugins are always automaticlly loaded so you don't need to call * gst_plugin_load() explicitly to bring it into memory. There are options to * statically link plugins to an app or even use GStreamer without a plugin Index: gstregistry.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.c,v retrieving revision 1.83 retrieving revision 1.84 diff -u -d -r1.83 -r1.84 --- gstregistry.c 30 May 2008 07:36:17 -0000 1.83 +++ gstregistry.c 15 Jul 2008 22:53:00 -0000 1.84 @@ -27,7 +27,6 @@ * @see_also: #GstPlugin, #GstPluginFeature * One registry holds the metadata of a set of plugins. - * All registries build the #GstRegistryPool. * <emphasis role="bold">Design:</emphasis> |
From: <ms...@ke...> - 2008-07-22 18:12:58
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Tue Jul 22 2008 18:13:08 UTC Log message: * configure.ac: Remove AC_ISC_POSIX macro; it's broken on some platforms and not needed. Add check (taken from -base) for winsock, adds WIN32_LIBS * gst/Makefile.am: Add WIN32_LIBS to LIBADD for libgstreamer. Needed now that gstpoll uses winsock. Define GST_EXPORTS when building libgstreamer (only used on win32) * gst/gst_private.h: * gst/gstinfo.h: Use GST_EXPORT instead of locally-defined (and incorrect IMPORT_SYMBOL) for symbols that we need to export in both these files. * gst/gstpoll.c: Include gst_private.h higher up to avoid some compile problems on win32. Modified files: . : ChangeLog configure.ac gst : Makefile.am gst_private.h gstinfo.h gstpoll.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3976&r2=1.3977 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/configure.ac.diff?r1=1.554&r2=1.555 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/Makefile.am.diff?r1=1.231&r2=1.232 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gst_private.h.diff?r1=1.40&r2=1.41 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstinfo.h.diff?r1=1.111&r2=1.112 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstpoll.c.diff?r1=1.8&r2=1.9 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3976 retrieving revision 1.3977 diff -u -d -r1.3976 -r1.3977 --- ChangeLog 22 Jul 2008 09:24:34 -0000 1.3976 +++ ChangeLog 22 Jul 2008 18:12:51 -0000 1.3977 @@ -1,3 +1,19 @@ +2008-07-22 Michael Smith <ms...@so...> + + * configure.ac: + Remove AC_ISC_POSIX macro; it's broken on some platforms and not needed. + Add check (taken from -base) for winsock, adds WIN32_LIBS + * gst/Makefile.am: + Add WIN32_LIBS to LIBADD for libgstreamer. Needed now that gstpoll uses + winsock. + Define GST_EXPORTS when building libgstreamer (only used on win32) + * gst/gst_private.h: + * gst/gstinfo.h: + Use GST_EXPORT instead of locally-defined (and incorrect IMPORT_SYMBOL) + for symbols that we need to export in both these files. + * gst/gstpoll.c: + Include gst_private.h higher up to avoid some compile problems on win32. 2008-07-22 Sebastian Dröge <seb...@co...> * gst/gstvalue.c: Index: configure.ac RCS file: /cvs/gstreamer/gstreamer/configure.ac,v retrieving revision 1.554 retrieving revision 1.555 diff -u -d -r1.554 -r1.555 --- configure.ac 10 Jul 2008 00:30:02 -0000 1.554 +++ configure.ac 22 Jul 2008 18:12:52 -0000 1.555 @@ -287,10 +287,6 @@ dnl *** checks for libraries *** -dnl For interactive UNIX (a Sun thing) -dnl FIXME: this adds -lcposix to LIBS, but I doubt we use LIBS -AC_ISC_POSIX - dnl check for libm, for sin() AC_CHECK_LIBM AC_SUBST(LIBM) @@ -326,6 +322,13 @@ dnl the dev package AC_CHECK_HEADERS([valgrind/valgrind.h], HAVE_VALGRIND_H=yes) +dnl used in gst/gstpoll.c +AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes) +if test "x$HAVE_WINSOCK2_H" = "xyes"; then + WIN32_LIBS="-lws2_32" + AC_SUBST(WIN32_LIBS) +fi dnl *** checks for types/defines *** dnl *** checks for structures *** Index: Makefile.am RCS file: /cvs/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.231 retrieving revision 1.232 diff -u -d -r1.231 -r1.232 --- Makefile.am 27 May 2008 15:11:34 -0000 1.231 +++ Makefile.am 22 Jul 2008 18:12:53 -0000 1.232 @@ -138,6 +138,7 @@ libgstreamer_@GST_MAJORMINOR@_la_CFLAGS = \ -D_GNU_SOURCE \ + -DGST_EXPORTS \ -DG_LOG_DOMAIN=g_log_domain_gstreamer \ -DGST_MAJORMINOR=\""$(GST_MAJORMINOR)"\" \ -DGST_DISABLE_DEPRECATED \ @@ -147,6 +148,7 @@ libgstreamer_@GST_MAJORMINOR@_la_LIBADD = \ $(GST_PARSE_LA) \ $(GST_ALL_LIBS) \ + $(WIN32_LIBS) \ $(XML_LIBS) libgstreamer_@GST_MAJORMINOR@_la_LDFLAGS = \ Index: gst_private.h RCS file: /cvs/gstreamer/gstreamer/gst/gst_private.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- gst_private.h 24 May 2008 15:33:45 -0000 1.40 +++ gst_private.h 22 Jul 2008 18:12:53 -0000 1.41 @@ -93,47 +93,37 @@ #ifndef GST_DISABLE_GST_DEBUG -#ifndef _MSC_VER -#define IMPORT_SYMBOL -#else /* _MSC_VER */ -#ifndef LIBGSTREAMER_EXPORTS -#define IMPORT_SYMBOL __declspec(dllimport) -#else -#define IMPORT_SYMBOL -#endif #include <gst/gstinfo.h> -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_GST_INIT; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_AUTOPLUG; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_AUTOPLUG_ATTEMPT; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PARENTAGE; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_STATES; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_SCHEDULING; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_BUFFER; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_BUS; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_CAPS; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_CLOCK; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_ELEMENT_PADS; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PADS; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PIPELINE; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PLUGIN_LOADING; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PLUGIN_INFO; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PROPERTIES; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_XML; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_NEGOTIATION; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_REFCOUNTING; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_ERROR_SYSTEM; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_EVENT; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_MESSAGE; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PARAMS; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_CALL_TRACE; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_SIGNAL; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_PROBE; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_REGISTRY; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_QOS; -extern IMPORT_SYMBOL GstDebugCategory *GST_CAT_TYPES; /* FIXME 0.11: remove? */ +GST_EXPORT GstDebugCategory *GST_CAT_GST_INIT; +GST_EXPORT GstDebugCategory *GST_CAT_AUTOPLUG; +GST_EXPORT GstDebugCategory *GST_CAT_AUTOPLUG_ATTEMPT; +GST_EXPORT GstDebugCategory *GST_CAT_PARENTAGE; +GST_EXPORT GstDebugCategory *GST_CAT_STATES; +GST_EXPORT GstDebugCategory *GST_CAT_SCHEDULING; +GST_EXPORT GstDebugCategory *GST_CAT_BUFFER; +GST_EXPORT GstDebugCategory *GST_CAT_BUS; +GST_EXPORT GstDebugCategory *GST_CAT_CAPS; +GST_EXPORT GstDebugCategory *GST_CAT_CLOCK; +GST_EXPORT GstDebugCategory *GST_CAT_ELEMENT_PADS; +GST_EXPORT GstDebugCategory *GST_CAT_PADS; +GST_EXPORT GstDebugCategory *GST_CAT_PIPELINE; +GST_EXPORT GstDebugCategory *GST_CAT_PLUGIN_LOADING; +GST_EXPORT GstDebugCategory *GST_CAT_PLUGIN_INFO; +GST_EXPORT GstDebugCategory *GST_CAT_PROPERTIES; +GST_EXPORT GstDebugCategory *GST_CAT_XML; +GST_EXPORT GstDebugCategory *GST_CAT_NEGOTIATION; +GST_EXPORT GstDebugCategory *GST_CAT_REFCOUNTING; +GST_EXPORT GstDebugCategory *GST_CAT_ERROR_SYSTEM; +GST_EXPORT GstDebugCategory *GST_CAT_EVENT; +GST_EXPORT GstDebugCategory *GST_CAT_MESSAGE; +GST_EXPORT GstDebugCategory *GST_CAT_PARAMS; +GST_EXPORT GstDebugCategory *GST_CAT_CALL_TRACE; +GST_EXPORT GstDebugCategory *GST_CAT_SIGNAL; +GST_EXPORT GstDebugCategory *GST_CAT_PROBE; +GST_EXPORT GstDebugCategory *GST_CAT_REGISTRY; +GST_EXPORT GstDebugCategory *GST_CAT_QOS; +GST_EXPORT GstDebugCategory *GST_CAT_TYPES; /* FIXME 0.11: remove? */ #else Index: gstinfo.h RCS file: /cvs/gstreamer/gstreamer/gst/gstinfo.h,v retrieving revision 1.111 retrieving revision 1.112 diff -u -d -r1.111 -r1.112 --- gstinfo.h 8 May 2008 14:23:16 -0000 1.111 +++ gstinfo.h 22 Jul 2008 18:12:53 -0000 1.112 @@ -28,17 +28,6 @@ #include <glib-object.h> #include <gst/gstconfig.h> #ifndef M_PI #define M_PI 3.14159265358979323846 #endif @@ -422,7 +411,7 @@ /* since 0.10.7, the min debug level, used for quickly discarding debug * messages that fall under the threshold. */ -extern IMPORT_SYMBOL GstDebugLevel __gst_debug_min; +GST_EXPORT GstDebugLevel __gst_debug_min; /** * GST_CAT_LEVEL_LOG: Index: gstpoll.c RCS file: /cvs/gstreamer/gstreamer/gst/gstpoll.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- gstpoll.c 6 Jul 2008 12:49:43 -0000 1.8 +++ gstpoll.c 22 Jul 2008 18:12:54 -0000 1.9 @@ -56,6 +56,8 @@ #include "config.h" +#include "gst_private.h" #include <sys/types.h> #ifdef HAVE_UNISTD_H @@ -80,8 +82,6 @@ /* OS/X needs this because of bad headers */ #include <string.h> -#include "gst_private.h" #include "gstpoll.h" #ifndef G_OS_WIN32 |
From: <ms...@ke...> - 2008-07-31 17:16:54
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Jul 31 2008 17:17:04 UTC Log message: * gst/gsturi.c: Be more liberal in what URIs we accept. Do not unescape bits of the URI for no apparent reason before passing to the element. Fixes #545352. Modified files: . : ChangeLog gst : gsturi.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.3997&r2=1.3998 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gsturi.c.diff?r1=1.46&r2=1.47 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.3997 retrieving revision 1.3998 diff -u -d -r1.3997 -r1.3998 --- ChangeLog 31 Jul 2008 15:24:18 -0000 1.3997 +++ ChangeLog 31 Jul 2008 17:16:48 -0000 1.3998 @@ -1,3 +1,10 @@ +2008-07-31 Michael Smith <ms...@so...> + + * gst/gsturi.c: + Be more liberal in what URIs we accept. + Do not unescape bits of the URI for no apparent reason before passing to + the element. Fixes #545352. 2008-07-31 Sebastian Dröge <seb...@co...> Patch by: Robert Schwebel <r.s...@pe...> Index: gsturi.c RCS file: /cvs/gstreamer/gstreamer/gst/gsturi.c,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- gsturi.c 20 Apr 2008 16:32:03 -0000 1.46 +++ gsturi.c 31 Jul 2008 17:16:50 -0000 1.47 @@ -336,7 +336,7 @@ * @uri: A URI string * * Tests if the given string is a valid URI identifier. URIs start with a valid - * protocol followed by "://" and maybe a string identifying the location. + * scheme followed by ":" and maybe a string identifying the location. * Returns: TRUE if the string is a valid URI */ @@ -349,7 +349,7 @@ gst_uri_protocol_check_internal (uri, &endptr); - return (*endptr == ':' && *(endptr + 1) == '/' && *(endptr + 2) == '/'); + return *endptr == ':'; } /** @@ -369,7 +369,7 @@ g_return_val_if_fail (uri != NULL, NULL); g_return_val_if_fail (gst_uri_is_valid (uri), NULL); - colon = strstr (uri, "://"); + colon = strstr (uri, ":"); return g_ascii_strdown (uri, colon - uri); @@ -394,7 +394,7 @@ g_return_val_if_fail (protocol != NULL, FALSE); g_return_val_if_fail (gst_uri_is_valid (uri), FALSE); if (colon == NULL) return FALSE; @@ -721,7 +721,7 @@ { GstURIHandlerInterface *iface; gboolean ret; - gchar *new_uri, *protocol, *location; + gchar *new_uri, *protocol, *location, *colon; g_return_val_if_fail (GST_IS_URI_HANDLER (handler), FALSE); @@ -731,8 +731,11 @@ g_return_val_if_fail (iface->set_uri != NULL, FALSE); protocol = gst_uri_get_protocol (uri); - location = gst_uri_get_location (uri); - new_uri = g_strdup_printf ("%s://%s", protocol, location); + location = g_strdup (colon); + new_uri = g_strdup_printf ("%s%s", protocol, location); ret = iface->set_uri (handler, uri); |
From: <ms...@ke...> - 2008-08-11 19:04:16
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Mon Aug 11 2008 19:04:19 UTC Log message: * gst/gstregistrybinary.c: Don't use g_mkstmp() on win32, it's unsafe if glib is using a different libc. Fixes #544776. Modified files: . : ChangeLog gst : gstregistrybinary.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.4017&r2=1.4018 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistrybinary.c.diff?r1=1.35&r2=1.36 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.4017 retrieving revision 1.4018 diff -u -d -r1.4017 -r1.4018 --- ChangeLog 11 Aug 2008 15:14:26 -0000 1.4017 +++ ChangeLog 11 Aug 2008 19:04:02 -0000 1.4018 @@ -1,3 +1,10 @@ +2008-08-11 Michael Smith <ms...@so...> + + * gst/gstregistrybinary.c: + Don't use g_mkstmp() on win32, it's unsafe if glib is using a different + libc. + Fixes #544776. 2008-08-11 Edward Hervey <edw...@co...> * libs/gst/base/gstbasetransform.c: Index: gstregistrybinary.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistrybinary.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- gstregistrybinary.c 31 Jul 2008 15:20:30 -0000 1.35 +++ gstregistrybinary.c 11 Aug 2008 19:04:04 -0000 1.36 @@ -215,15 +215,169 @@ /* Registry saving */ +#ifdef G_OS_WIN32 +/* On win32, we can't use g_mkstmp(), because of cross-DLL file I/O problems. + * So, we just create the entire binary registry in memory, then write it out + * with g_file_set_contents(), which creates a temporary file internally + */ +typedef struct BinaryRegistryCache +{ + const char *location; + guint8 *mem; + gssize len; +} BinaryRegistryCache; +static BinaryRegistryCache * +gst_registry_binary_cache_init (GstRegistry * registry, const char *location) + BinaryRegistryCache *cache = g_new0 (BinaryRegistryCache, 1); + cache->location = location; + return cache; +} +static int +gst_registry_binary_cache_write (GstRegistry * registry, + BinaryRegistryCache * cache, unsigned long offset, + const void *data, int length) + cache->len = MAX (offset + length, cache->len); + cache->mem = g_realloc (cache->mem, cache->len); + memcpy (cache->mem + offset, data, length); + return length; +static gboolean +gst_registry_binary_cache_finish (GstRegistry * registry, + BinaryRegistryCache * cache, gboolean success) + gboolean ret = TRUE; + GError *error = NULL; + if (!g_file_set_contents (cache->location, (const gchar *) cache->mem, + cache->len, &error)) { + GST_ERROR ("Failed to write to cache file: %s", error->message); + g_error_free (error); + ret = FALSE; + } + g_free (cache->mem); + g_free (cache); + return ret; +#else + char *tmp_location; + unsigned long currentoffset; + cache->tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL); + registry->cache_file = g_mkstemp (cache->tmp_location); + if (registry->cache_file == -1) { + gchar *dir; + /* oops, I bet the directory doesn't exist */ + dir = g_path_get_dirname (location); + g_mkdir_with_parents (dir, 0777); + g_free (dir); + /* the previous g_mkstemp call overwrote the XXXXXX placeholder ... */ + g_free (cache->tmp_location); + cache->tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL); + registry->cache_file = g_mkstemp (cache->tmp_location); + if (registry->cache_file == -1) { + GST_DEBUG ("g_mkstemp() failed: %s", g_strerror (errno)); + g_free (cache->tmp_location); + g_free (cache); + return NULL; + } + long written; + if (offset != cache->currentoffset) { + if (lseek (registry->cache_file, offset, SEEK_SET) != 0) { + GST_ERROR ("Seeking to new offset failed"); + return FALSE; + cache->currentoffset = offset; + written = write (registry->cache_file, data, length); + if (written != length) { + GST_ERROR ("Failed to write to cache file"); + cache->currentoffset += written; + return written; + if (close (registry->cache_file) < 0) + goto close_failed; + if (success) { + /* Only do the rename if we wrote the entire file successfully */ + if (g_rename (cache->tmp_location, cache->location) < 0) + goto rename_failed; + g_free (cache->tmp_location); + GST_INFO ("Wrote binary registry cache"); + return TRUE; +fail_after_close: + { + g_remove (cache->tmp_location); + g_free (cache); + return FALSE; +close_failed: + GST_ERROR ("close() failed: %s", g_strerror (errno)); + goto fail_after_close; +rename_failed: + GST_ERROR ("g_rename() failed: %s", g_strerror (errno)); +#endif /* - * gst_registry_binary_write: + * gst_registry_binary_write_chunk: * * Write from a memory location to the registry cache file * Returns: %TRUE for success */ inline static gboolean -gst_registry_binary_write (GstRegistry * registry, const void *mem, +gst_registry_binary_write_chunk (GstRegistry * registry, + BinaryRegistryCache * cache, const void *mem, const gssize size, unsigned long *file_position, gboolean align, guint32 * crc32) { @@ -233,23 +387,26 @@ /* Padding to insert the struct that requiere word alignment */ if ((align) && (alignment (*file_position) != 0)) { padsize = ALIGNMENT - alignment (*file_position); - if (write (registry->cache_file, padder, padsize) != padsize) { + if (gst_registry_binary_cache_write (registry, cache, *file_position, + padder, padsize) != padsize) { GST_ERROR ("Failed to write binary registry padder"); return FALSE; } if (padsize > 0) *crc32 = _gst_crc32 (*crc32, padder, padsize); - *file_position = *file_position + padsize; + *file_position += padsize; } - if (write (registry->cache_file, mem, size) != size) { + if (gst_registry_binary_cache_write (registry, cache, *file_position, + mem, size) != size) { GST_ERROR ("Failed to write binary registry element"); return FALSE; if (size > 0) *crc32 = _gst_crc32 (*crc32, mem, size); - *file_position = *file_position + size; + *file_position += size; return TRUE; } @@ -575,7 +732,6 @@ return FALSE; - /** * gst_registry_binary_write_cache: * @registry: a #GstRegistry @@ -589,35 +745,14 @@ gst_registry_binary_write_cache (GstRegistry * registry, const char *location) GList *walk; - gchar *tmp_location; GstBinaryRegistryMagic magic; GList *to_write = NULL; unsigned long file_position = 0; + BinaryRegistryCache *cache; GST_INFO ("Building binary registry cache image"); g_return_val_if_fail (GST_IS_REGISTRY (registry), FALSE); - tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL); - registry->cache_file = g_mkstemp (tmp_location); - if (registry->cache_file == -1) { - gchar *dir; - /* oops, I bet the directory doesn't exist */ - dir = g_path_get_dirname (location); - g_mkdir_with_parents (dir, 0777); - g_free (dir); - /* the previous g_mkstemp call overwrote the XXXXXX placeholder ... */ - g_free (tmp_location); - tmp_location = g_strconcat (location, ".tmpXXXXXX", NULL); - registry->cache_file = g_mkstemp (tmp_location); - if (registry->cache_file == -1) { - GST_DEBUG ("g_mkstemp() failed: %s", g_strerror (errno)); - g_free (tmp_location); - return FALSE; - } - } if (!gst_registry_binary_initialize_magic (&magic)) goto fail; @@ -648,9 +783,14 @@ GST_INFO ("Writing binary registry cache"); + cache = gst_registry_binary_cache_init (registry, location); + if (!cache) + goto fail_free_list; /* write magic */ - if (write (registry->cache_file, &magic, - sizeof (GstBinaryRegistryMagic)) != sizeof (GstBinaryRegistryMagic)) { + if (gst_registry_binary_cache_write (registry, cache, file_position, + &magic, sizeof (GstBinaryRegistryMagic)) != + sizeof (GstBinaryRegistryMagic)) { GST_ERROR ("Failed to write binary registry magic"); goto fail_free_list; @@ -660,7 +800,7 @@ for (walk = to_write; walk; walk = g_list_next (walk)) { GstBinaryChunk *cur = walk->data; - if (!gst_registry_binary_write (registry, cur->data, cur->size, + if (!gst_registry_binary_write_chunk (registry, cache, cur->data, cur->size, &file_position, cur->align, &magic.crc32)) { if (!(cur->flags & GST_BINARY_REGISTRY_FLAG_CONST)) g_free (cur->data); @@ -675,29 +815,15 @@ g_list_free (to_write); - if (lseek (registry->cache_file, 0, SEEK_SET) != 0) { - GST_ERROR ("Seeking to rewrite the binary registry CRC32 failed"); - } else { - if (write (registry->cache_file, &magic, - sizeof (GstBinaryRegistryMagic)) != sizeof (GstBinaryRegistryMagic)) - GST_ERROR ("Failed to rewrite binary registry magic"); + if (gst_registry_binary_cache_write (registry, cache, 0, &magic, + sizeof (GstBinaryRegistryMagic)) != sizeof (GstBinaryRegistryMagic)) { + GST_ERROR ("Failed to rewrite binary registry magic"); - if (close (registry->cache_file) < 0) - goto close_failed; - if (g_file_test (tmp_location, G_FILE_TEST_EXISTS)) { -#ifdef WIN32 - g_remove (location); -#endif - if (g_rename (tmp_location, location) < 0) - goto rename_failed; - /* FIXME: shouldn't we return FALSE here? */ + if (!gst_registry_binary_cache_finish (registry, cache, TRUE)) - g_free (tmp_location); - GST_INFO ("Wrote binary registry cache"); /* Errors */ @@ -711,29 +837,14 @@ g_free (cur); g_list_free (to_write); + (void) gst_registry_binary_cache_finish (registry, cache, FALSE); /* fall through */ fail: { - (void) close (registry->cache_file); - /* fall through */ -fail_after_close: - { - g_remove (tmp_location); -close_failed: - GST_ERROR ("close() failed: %s", g_strerror (errno)); - goto fail_after_close; -rename_failed: - GST_ERROR ("g_rename() failed: %s", g_strerror (errno)); |
From: <ms...@ke...> - 2008-11-20 20:45:16
|
CVS Root: /cvs/gstreamer Module: gstreamer Changes by: msmith Date: Thu Nov 20 2008 20:45:11 UTC Log message: * gst/gstregistrybinary.c: In win32 codepath, if we fail to write the registry, create the directory for it and try again, matching the behaviour in non-win32 codepaths. Modified files: . : ChangeLog gst : gstregistrybinary.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/ChangeLog.diff?r1=1.4165&r2=1.4166 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gstreamer/gst/gstregistrybinary.c.diff?r1=1.41&r2=1.42 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gstreamer/ChangeLog,v retrieving revision 1.4165 retrieving revision 1.4166 diff -u -d -r1.4165 -r1.4166 --- ChangeLog 20 Nov 2008 14:23:03 -0000 1.4165 +++ ChangeLog 20 Nov 2008 20:44:54 -0000 1.4166 @@ -1,3 +1,10 @@ +2008-11-20 Michael Smith <ms...@so...> + + * gst/gstregistrybinary.c: + In win32 codepath, if we fail to write the registry, create the + directory for it and try again, matching the behaviour in non-win32 + codepaths. 2008-11-20 Wim Taymans <wim...@co...> * libs/gst/base/gstbasesink.c: (gst_base_sink_set_render_delay): Index: gstregistrybinary.c RCS file: /cvs/gstreamer/gstreamer/gst/gstregistrybinary.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- gstregistrybinary.c 12 Nov 2008 10:39:25 -0000 1.41 +++ gstregistrybinary.c 20 Nov 2008 20:44:56 -0000 1.42 @@ -134,9 +134,21 @@ GError *error = NULL; if (!g_file_set_contents (cache->location, (const gchar *) cache->mem, cache->len, &error)) { - GST_ERROR ("Failed to write to cache file: %s", error->message); + /* Probably the directory didn't exist; create it */ + gchar *dir; + dir = g_path_get_dirname (cache->location); + g_mkdir_with_parents (dir, 0777); + g_free (dir); g_error_free (error); - ret = FALSE; + error = NULL; + if (!g_file_set_contents (cache->location, (const gchar *) cache->mem, + cache->len, &error)) { + GST_ERROR ("Failed to write to cache file: %s", error->message); + g_error_free (error); + ret = FALSE; + } } g_free (cache->mem); |