From c573f74d34c469e3c437b974be61fecd43a31f1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD=20=D0=98=D0=B6=D0=B1?= =?UTF-8?q?=D1=83=D0=BB=D0=B0=D1=82=D0=BE=D0=B2?= Date: Wed, 25 May 2011 12:47:51 +0400 Subject: [PATCH 1/8] poll: Fix WAKE_EVENT() to behave posixly on Windows --- gst/gstpoll.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gst/gstpoll.c b/gst/gstpoll.c index 76a7a30e6a..8bb282a92f 100644 --- a/gst/gstpoll.c +++ b/gst/gstpoll.c @@ -165,7 +165,7 @@ static gboolean gst_poll_add_fd_unlocked (GstPoll * set, GstPollFD * fd); #define WAKE_EVENT(s) (write ((s)->control_write_fd.fd, "W", 1) == 1) #define RELEASE_EVENT(s) (read ((s)->control_read_fd.fd, (s)->buf, 1) == 1) #else -#define WAKE_EVENT(s) (SetEvent ((s)->wakeup_event)) +#define WAKE_EVENT(s) (SetEvent ((s)->wakeup_event), errno = GetLastError () == NO_ERROR ? 0 : EACCES, errno == 0 ? 1 : 0) #define RELEASE_EVENT(s) (ResetEvent ((s)->wakeup_event)) #endif From fb6d79bc3363417fcf5bca2fd4290ee9f5b53309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A0=D1=83=D1=81=D0=BB=D0=B0=D0=BD=20=D0=98=D0=B6=D0=B1?= =?UTF-8?q?=D1=83=D0=BB=D0=B0=D1=82=D0=BE=D0=B2?= Date: Wed, 25 May 2011 13:40:30 +0400 Subject: [PATCH 2/8] systemclock: Placate gcc by defining EWOULDBLOCK to something --- gst/gstsystemclock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gst/gstsystemclock.c b/gst/gstsystemclock.c index 10ad4ed58b..c197d83b66 100644 --- a/gst/gstsystemclock.c +++ b/gst/gstsystemclock.c @@ -51,6 +51,7 @@ # define WIN32_LEAN_AND_MEAN /* prevents from including too many things */ # include /* QueryPerformance* stuff */ # undef WIN32_LEAN_AND_MEAN +# define EWOULDBLOCK EAGAIN /* This is just to placate gcc */ #endif /* G_OS_WIN32 */ #define GET_ENTRY_STATUS(e) (g_atomic_int_get(&GST_CLOCK_ENTRY_STATUS(e))) From 8121bcd18a447d55f930ddff943787a2f2237d87 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Sat, 4 Jun 2011 00:30:15 -0700 Subject: [PATCH 3/8] Work around changes in g_atomic API See #651514 for details. It's apparently impossible to write code that avoids both type punning warnings with old g_atomic headers and assertions in the new. Thus, macros and a version check. --- gst/glib-compat-private.h | 20 ++++++++++++++++++++ gst/gstatomicqueue.c | 21 +++++++++++---------- gst/gstelementfactory.c | 4 ++-- gst/gstpoll.c | 9 +++++---- gst/gstsystemclock.c | 5 +++-- gst/gstutils.c | 3 ++- plugins/elements/gstmultiqueue.c | 5 +++-- tests/benchmarks/gstclockstress.c | 3 ++- 8 files changed, 48 insertions(+), 22 deletions(-) diff --git a/gst/glib-compat-private.h b/gst/glib-compat-private.h index f653ccb96a..7b5d6cf860 100644 --- a/gst/glib-compat-private.h +++ b/gst/glib-compat-private.h @@ -26,6 +26,26 @@ typedef struct stat GStatBuf; #define GLIB_HAS_GDATETIME #endif +/* See bug #651514 */ +#if GLIB_CHECK_VERSION(2,29,5) +#define G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE(a,b,c) \ + g_atomic_pointer_compare_and_exchange ((a),(b),(c)) +#define G_ATOMIC_INT_COMPARE_AND_EXCHANGE(a,b,c) \ + g_atomic_int_compare_and_exchange ((a),(b),(c)) +#else +#define G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE(a,b,c) \ + g_atomic_pointer_compare_and_exchange ((volatile gpointer *)(a),(b),(c)) +#define G_ATOMIC_INT_COMPARE_AND_EXCHANGE(a,b,c) \ + g_atomic_int_compare_and_exchange ((volatile int *)(a),(b),(c)) +#endif + +/* See bug #651514 */ +#if GLIB_CHECK_VERSION(2,29,5) +#define G_ATOMIC_INT_ADD(a,b) g_atomic_int_add ((a),(b)) +#else +#define G_ATOMIC_INT_ADD(a,b) g_atomic_int_exchange_and_add ((a),(b)) +#endif + /* copies */ /* adaptations */ diff --git a/gst/gstatomicqueue.c b/gst/gstatomicqueue.c index 31ac77096a..5b21be63ee 100644 --- a/gst/gstatomicqueue.c +++ b/gst/gstatomicqueue.c @@ -26,6 +26,7 @@ #include #include "gstatomicqueue.h" +#include "glib-compat-private.h" /** * SECTION:gstatomicqueue @@ -112,8 +113,8 @@ add_to_free_list (GstAtomicQueue * queue, GstAQueueMem * mem) { do { mem->free = g_atomic_pointer_get (&queue->free_list); - } while (!g_atomic_pointer_compare_and_exchange ((gpointer *) & - queue->free_list, mem->free, mem)); + } while (!G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE (&queue->free_list, + mem->free, mem)); } static void @@ -126,8 +127,8 @@ clear_free_list (GstAtomicQueue * queue) free_list = g_atomic_pointer_get (&queue->free_list); if (free_list == NULL) return; - } while (!g_atomic_pointer_compare_and_exchange ((gpointer *) & - queue->free_list, free_list, NULL)); + } while (!G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE (&queue->free_list, free_list, + NULL)); while (free_list) { GstAQueueMem *next = free_list->free; @@ -247,8 +248,8 @@ gst_atomic_queue_peek (GstAtomicQueue * queue) /* now we try to move the next array as the head memory. If we fail to do that, * some other reader managed to do it first and we retry */ - if (!g_atomic_pointer_compare_and_exchange ((gpointer *) & - queue->head_mem, head_mem, next)) + if (!G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE (&queue->head_mem, head_mem, + next)) continue; /* when we managed to swing the head pointer the old head is now @@ -304,8 +305,8 @@ gst_atomic_queue_pop (GstAtomicQueue * queue) /* now we try to move the next array as the head memory. If we fail to do that, * some other reader managed to do it first and we retry */ - if (!g_atomic_pointer_compare_and_exchange ((gpointer *) & - queue->head_mem, head_mem, next)) + if (!G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE (&queue->head_mem, head_mem, + next)) continue; /* when we managed to swing the head pointer the old head is now @@ -362,8 +363,8 @@ gst_atomic_queue_push (GstAtomicQueue * queue, gpointer data) mem = new_queue_mem ((size << 1) + 1, tail); /* try to make our new array visible to other writers */ - if (!g_atomic_pointer_compare_and_exchange ((gpointer *) & - queue->tail_mem, tail_mem, mem)) { + if (!G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE (&queue->tail_mem, tail_mem, + mem)) { /* we tried to swap the new writer array but something changed. This is * because some other writer beat us to it, we free our memory and try * again */ diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c index 0c3d8aae69..3549432d8c 100644 --- a/gst/gstelementfactory.c +++ b/gst/gstelementfactory.c @@ -394,8 +394,8 @@ gst_element_factory_create (GstElementFactory * factory, const gchar * name) * an element at the same moment */ oclass = GST_ELEMENT_GET_CLASS (element); - if (!g_atomic_pointer_compare_and_exchange ( - (gpointer) & oclass->elementfactory, NULL, factory)) + if (!G_ATOMIC_POINTER_COMPARE_AND_EXCHANGE (&oclass->elementfactory, NULL, + factory)) gst_object_unref (factory); GST_DEBUG ("created element \"%s\"", GST_PLUGIN_FEATURE_NAME (factory)); diff --git a/gst/gstpoll.c b/gst/gstpoll.c index 8bb282a92f..d83705940d 100644 --- a/gst/gstpoll.c +++ b/gst/gstpoll.c @@ -57,6 +57,7 @@ #endif #include "gst_private.h" +#include "glib-compat-private.h" #include @@ -154,8 +155,8 @@ static gboolean gst_poll_add_fd_unlocked (GstPoll * set, GstPollFD * fd); #define IS_FLUSHING(s) (g_atomic_int_get(&(s)->flushing)) #define SET_FLUSHING(s,val) (g_atomic_int_set(&(s)->flushing, (val))) -#define INC_WAITING(s) (g_atomic_int_exchange_and_add(&(s)->waiting, 1)) -#define DEC_WAITING(s) (g_atomic_int_exchange_and_add(&(s)->waiting, -1)) +#define INC_WAITING(s) (G_ATOMIC_INT_ADD(&(s)->waiting, 1)) +#define DEC_WAITING(s) (G_ATOMIC_INT_ADD(&(s)->waiting, -1)) #define GET_WAITING(s) (g_atomic_int_get(&(s)->waiting)) #define TEST_REBUILD(s) (g_atomic_int_compare_and_exchange(&(s)->rebuild, 1, 0)) @@ -176,7 +177,7 @@ raise_wakeup (GstPoll * set) { gboolean result = TRUE; - if (g_atomic_int_exchange_and_add (&set->control_pending, 1) == 0) { + if (G_ATOMIC_INT_ADD (&set->control_pending, 1) == 0) { /* raise when nothing pending */ result = WAKE_EVENT (set); } @@ -214,7 +215,7 @@ release_all_wakeup (GstPoll * set) break; else /* retry again until we read it successfully */ - g_atomic_int_exchange_and_add (&set->control_pending, 1); + G_ATOMIC_INT_ADD (&set->control_pending, 1); } } return old; diff --git a/gst/gstsystemclock.c b/gst/gstsystemclock.c index c197d83b66..7ada0c952b 100644 --- a/gst/gstsystemclock.c +++ b/gst/gstsystemclock.c @@ -44,6 +44,7 @@ #include "gstenumtypes.h" #include "gstpoll.h" #include "gstutils.h" +#include "glib-compat-private.h" #include @@ -56,8 +57,8 @@ #define GET_ENTRY_STATUS(e) (g_atomic_int_get(&GST_CLOCK_ENTRY_STATUS(e))) #define SET_ENTRY_STATUS(e,val) (g_atomic_int_set(&GST_CLOCK_ENTRY_STATUS(e),(val))) -#define CAS_ENTRY_STATUS(e,old,val) (g_atomic_int_compare_and_exchange(\ - ((volatile gint *)&GST_CLOCK_ENTRY_STATUS(e)), (old), (val))) +#define CAS_ENTRY_STATUS(e,old,val) (G_ATOMIC_INT_COMPARE_AND_EXCHANGE(\ + (&GST_CLOCK_ENTRY_STATUS(e)), (old), (val))) /* Define this to get some extra debug about jitter from each clock_wait */ #undef WAIT_DEBUGGING diff --git a/gst/gstutils.c b/gst/gstutils.c index fcae66e896..06438cb20d 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -39,6 +39,7 @@ #include "gstparse.h" #include "gstvalue.h" #include "gst-i18n-lib.h" +#include "glib-compat-private.h" #include /** @@ -704,7 +705,7 @@ guint32 gst_util_seqnum_next (void) { static gint counter = 0; - return g_atomic_int_exchange_and_add (&counter, 1); + return G_ATOMIC_INT_ADD (&counter, 1); } /** diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c index b6b2d245ae..541e04235f 100644 --- a/plugins/elements/gstmultiqueue.c +++ b/plugins/elements/gstmultiqueue.c @@ -112,6 +112,7 @@ #include #include #include "gstmultiqueue.h" +#include /** * GstSingleQueue: @@ -1240,7 +1241,7 @@ gst_multi_queue_chain (GstPad * pad, GstBuffer * buffer) goto was_eos; /* Get a unique incrementing id */ - curid = g_atomic_int_exchange_and_add ((gint *) & mq->counter, 1); + curid = G_ATOMIC_INT_ADD ((gint *) & mq->counter, 1); GST_LOG_OBJECT (mq, "SingleQueue %d : about to enqueue buffer %p with id %d", sq->id, buffer, curid); @@ -1346,7 +1347,7 @@ gst_multi_queue_sink_event (GstPad * pad, GstEvent * event) goto was_eos; /* Get an unique incrementing id. */ - curid = g_atomic_int_exchange_and_add ((gint *) & mq->counter, 1); + curid = G_ATOMIC_INT_ADD ((gint *) & mq->counter, 1); item = gst_multi_queue_event_item_new ((GstMiniObject *) event, curid); diff --git a/tests/benchmarks/gstclockstress.c b/tests/benchmarks/gstclockstress.c index 6c1895cd27..b0f721b3d5 100644 --- a/tests/benchmarks/gstclockstress.c +++ b/tests/benchmarks/gstclockstress.c @@ -20,6 +20,7 @@ #include #include #include +#include #define MAX_THREADS 100 @@ -34,7 +35,7 @@ run_test (void *user_data) while (running) { gst_clock_get_time (sysclock); - prev = g_atomic_int_exchange_and_add (&count, 1); + prev = G_ATOMIC_INT_ADD (&count, 1); if (prev == G_MAXINT) g_warning ("overflow"); } From c32f58ffc8eb903916020aa50b2f53e449ba16d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 9 Jun 2011 17:13:35 +0100 Subject: [PATCH 4/8] Use "const" instead G_CONST_RETURN G_CONST_RETURN will be deprecated soon. https://bugzilla.gnome.org/show_bug.cgi?id=652211 --- gst/gstelement.h | 3 +-- gst/gstelementfactory.c | 16 ++++++++-------- gst/gstelementfactory.h | 14 +++++++------- gst/gstformat.h | 2 +- gst/gstinfo.c | 6 +++--- gst/gstinfo.h | 11 ++++------- gst/gstpad.c | 2 +- gst/gstpad.h | 10 ++++------ gst/gstplugin.c | 16 ++++++++-------- gst/gstplugin.h | 20 ++++++++++---------- gst/gstpluginfeature.c | 2 +- gst/gstpluginfeature.h | 2 +- gst/gstquery.h | 2 +- gst/gststructure.h | 8 ++++---- gst/gsttaglist.c | 2 +- gst/gsttaglist.h | 6 +++--- gst/gsttagsetter.c | 2 +- gst/gsttagsetter.h | 2 +- gst/gsttrace.h | 2 +- gst/gsturi.c | 2 +- gst/gsturi.h | 5 ++--- gst/gstutils.c | 4 ++-- gst/gstutils.h | 4 ++-- gst/gstvalue.h | 14 +++++--------- 24 files changed, 73 insertions(+), 84 deletions(-) diff --git a/gst/gstelement.h b/gst/gstelement.h index 74f05dd812..04b5ba820c 100644 --- a/gst/gstelement.h +++ b/gst/gstelement.h @@ -782,8 +782,7 @@ gboolean gst_element_seek (GstElement *element, gd GstFormat format, GstSeekFlags flags, GstSeekType cur_type, gint64 cur, GstSeekType stop_type, gint64 stop); -G_CONST_RETURN GstQueryType* - gst_element_get_query_types (GstElement *element); +const GstQueryType* gst_element_get_query_types (GstElement *element); gboolean gst_element_query (GstElement *element, GstQuery *query); /* messages */ diff --git a/gst/gstelementfactory.c b/gst/gstelementfactory.c index 3549432d8c..4c28e82805 100644 --- a/gst/gstelementfactory.c +++ b/gst/gstelementfactory.c @@ -512,7 +512,7 @@ gst_element_factory_get_element_type (GstElementFactory * factory) * * Returns: the longname */ -G_CONST_RETURN gchar * +const gchar * gst_element_factory_get_longname (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); @@ -528,7 +528,7 @@ gst_element_factory_get_longname (GstElementFactory * factory) * * Returns: the class */ -G_CONST_RETURN gchar * +const gchar * gst_element_factory_get_klass (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); @@ -544,7 +544,7 @@ gst_element_factory_get_klass (GstElementFactory * factory) * * Returns: the description */ -G_CONST_RETURN gchar * +const gchar * gst_element_factory_get_description (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); @@ -560,7 +560,7 @@ gst_element_factory_get_description (GstElementFactory * factory) * * Returns: the author */ -G_CONST_RETURN gchar * +const gchar * gst_element_factory_get_author (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); @@ -568,7 +568,7 @@ gst_element_factory_get_author (GstElementFactory * factory) return factory->details.author; } -static G_CONST_RETURN gchar * +static const gchar * gst_element_factory_get_meta_data (GstElementFactory * factory, const gchar * key) { @@ -589,7 +589,7 @@ gst_element_factory_get_meta_data (GstElementFactory * factory, * * Returns: the documentation uri */ -G_CONST_RETURN gchar * +const gchar * gst_element_factory_get_documentation_uri (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); @@ -606,7 +606,7 @@ gst_element_factory_get_documentation_uri (GstElementFactory * factory) * * Returns: the icon name */ -G_CONST_RETURN gchar * +const gchar * gst_element_factory_get_icon_name (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); @@ -659,7 +659,7 @@ __gst_element_factory_add_interface (GstElementFactory * elementfactory, * Returns: (transfer none) (element-type Gst.StaticPadTemplate): the * static pad templates */ -G_CONST_RETURN GList * +const GList * gst_element_factory_get_static_pad_templates (GstElementFactory * factory) { g_return_val_if_fail (GST_IS_ELEMENT_FACTORY (factory), NULL); diff --git a/gst/gstelementfactory.h b/gst/gstelementfactory.h index 859b232f6e..fc33982fb7 100644 --- a/gst/gstelementfactory.h +++ b/gst/gstelementfactory.h @@ -146,14 +146,14 @@ GType gst_element_factory_get_type (void); GstElementFactory * gst_element_factory_find (const gchar *name); GType gst_element_factory_get_element_type (GstElementFactory *factory); -G_CONST_RETURN gchar * gst_element_factory_get_longname (GstElementFactory *factory); -G_CONST_RETURN gchar * gst_element_factory_get_klass (GstElementFactory *factory); -G_CONST_RETURN gchar * gst_element_factory_get_description (GstElementFactory *factory); -G_CONST_RETURN gchar * gst_element_factory_get_author (GstElementFactory *factory); -G_CONST_RETURN gchar * gst_element_factory_get_documentation_uri (GstElementFactory *factory); -G_CONST_RETURN gchar * gst_element_factory_get_icon_name (GstElementFactory *factory); +const gchar * gst_element_factory_get_longname (GstElementFactory *factory); +const gchar * gst_element_factory_get_klass (GstElementFactory *factory); +const gchar * gst_element_factory_get_description (GstElementFactory *factory); +const gchar * gst_element_factory_get_author (GstElementFactory *factory); +const gchar * gst_element_factory_get_documentation_uri (GstElementFactory *factory); +const gchar * gst_element_factory_get_icon_name (GstElementFactory *factory); guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory); -G_CONST_RETURN GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory); +const GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory); gint gst_element_factory_get_uri_type (GstElementFactory *factory); gchar ** gst_element_factory_get_uri_protocols (GstElementFactory *factory); gboolean gst_element_factory_has_interface (GstElementFactory *factory, diff --git a/gst/gstformat.h b/gst/gstformat.h index 469f5554cf..9f8b362ad6 100644 --- a/gst/gstformat.h +++ b/gst/gstformat.h @@ -104,7 +104,7 @@ GstFormat gst_format_get_by_nick (const gchar *nick); gboolean gst_formats_contains (const GstFormat *formats, GstFormat format); /* query for format details */ -G_CONST_RETURN GstFormatDefinition* +const GstFormatDefinition* gst_format_get_details (GstFormat format); GstIterator* gst_format_iterate_definitions (void); diff --git a/gst/gstinfo.c b/gst/gstinfo.c index 36fe1ac988..50622395aa 100644 --- a/gst/gstinfo.c +++ b/gst/gstinfo.c @@ -1789,7 +1789,7 @@ gst_debug_log_default (GstDebugCategory * category, GstDebugLevel level, { } -G_CONST_RETURN gchar * +const gchar * gst_debug_level_get_name (GstDebugLevel level) { return "NONE"; @@ -1877,7 +1877,7 @@ gst_debug_category_get_threshold (GstDebugCategory * category) return GST_LEVEL_NONE; } -G_CONST_RETURN gchar * +const gchar * gst_debug_category_get_name (GstDebugCategory * category) { return ""; @@ -1889,7 +1889,7 @@ gst_debug_category_get_color (GstDebugCategory * category) return 0; } -G_CONST_RETURN gchar * +const gchar * gst_debug_category_get_description (GstDebugCategory * category) { return ""; diff --git a/gst/gstinfo.h b/gst/gstinfo.h index 264aefc03f..f841cd7e2b 100644 --- a/gst/gstinfo.h +++ b/gst/gstinfo.h @@ -317,7 +317,7 @@ typedef void (* GstDebugFuncPtr) (void); /* do no use these functions, use the GST_DEBUG*_FUNCPTR macros */ void _gst_debug_register_funcptr (GstDebugFuncPtr func, const gchar * ptrname); -G_CONST_RETURN gchar * +const gchar * _gst_debug_nameof_funcptr (GstDebugFuncPtr func) G_GNUC_NO_INSTRUMENT; @@ -332,8 +332,7 @@ void gst_debug_log_default (GstDebugCategory * category, GstDebugMessage * message, gpointer unused) G_GNUC_NO_INSTRUMENT; -G_CONST_RETURN gchar * - gst_debug_level_get_name (GstDebugLevel level); +const gchar * gst_debug_level_get_name (GstDebugLevel level); void gst_debug_add_log_function (GstLogFunction func, gpointer data); @@ -359,11 +358,9 @@ void gst_debug_category_set_threshold (GstDebugCategory * catego GstDebugLevel level); void gst_debug_category_reset_threshold (GstDebugCategory * category); GstDebugLevel gst_debug_category_get_threshold (GstDebugCategory * category); -G_CONST_RETURN gchar * - gst_debug_category_get_name (GstDebugCategory * category); +const gchar * gst_debug_category_get_name (GstDebugCategory * category); guint gst_debug_category_get_color (GstDebugCategory * category); -G_CONST_RETURN gchar * - gst_debug_category_get_description (GstDebugCategory * category); +const gchar * gst_debug_category_get_description (GstDebugCategory * category); GSList * gst_debug_get_all_categories (void); diff --git a/gst/gstpad.c b/gst/gstpad.c index a599d424e3..c18448540e 100644 --- a/gst/gstpad.c +++ b/gst/gstpad.c @@ -186,7 +186,7 @@ static GstFlowQuarks flow_quarks[] = { * * Returns: a static string with the name of the flow return. */ -G_CONST_RETURN gchar * +const gchar * gst_flow_get_name (GstFlowReturn ret) { gint i; diff --git a/gst/gstpad.h b/gst/gstpad.h index 10cb206bbc..19834c41d3 100644 --- a/gst/gstpad.h +++ b/gst/gstpad.h @@ -184,7 +184,7 @@ typedef enum { #define GST_FLOW_IS_SUCCESS(ret) ((ret) >= GST_FLOW_OK) #endif -G_CONST_RETURN gchar* gst_flow_get_name (GstFlowReturn ret); +const gchar* gst_flow_get_name (GstFlowReturn ret); GQuark gst_flow_to_quark (GstFlowReturn ret); /** @@ -957,7 +957,7 @@ void gst_pad_set_acceptcaps_function (GstPad *pad, GstPadAcceptCapsFunction a void gst_pad_set_fixatecaps_function (GstPad *pad, GstPadFixateCapsFunction fixatecaps); void gst_pad_set_setcaps_function (GstPad *pad, GstPadSetCapsFunction setcaps); -G_CONST_RETURN GstCaps* gst_pad_get_pad_template_caps (GstPad *pad); +const GstCaps* gst_pad_get_pad_template_caps (GstPad *pad); /* capsnego function for linked/unlinked pads */ GstCaps * gst_pad_get_caps_reffed (GstPad * pad); @@ -1011,10 +1011,8 @@ GstIterator * gst_pad_iterate_internal_links_default (GstPad * pad); /* generic query function */ void gst_pad_set_query_type_function (GstPad *pad, GstPadQueryTypeFunction type_func); -G_CONST_RETURN GstQueryType* - gst_pad_get_query_types (GstPad *pad); -G_CONST_RETURN GstQueryType* - gst_pad_get_query_types_default (GstPad *pad); +const GstQueryType* gst_pad_get_query_types (GstPad *pad); +const GstQueryType* gst_pad_get_query_types_default (GstPad *pad); gboolean gst_pad_query (GstPad *pad, GstQuery *query); gboolean gst_pad_peer_query (GstPad *pad, GstQuery *query); diff --git a/gst/gstplugin.c b/gst/gstplugin.c index b92a4f3a44..0fad4d5576 100644 --- a/gst/gstplugin.c +++ b/gst/gstplugin.c @@ -915,7 +915,7 @@ gst_plugin_get_name (GstPlugin * plugin) * * Returns: the long name of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_description (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -931,7 +931,7 @@ gst_plugin_get_description (GstPlugin * plugin) * * Returns: the filename of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_filename (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -947,7 +947,7 @@ gst_plugin_get_filename (GstPlugin * plugin) * * Returns: the version of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_version (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -963,7 +963,7 @@ gst_plugin_get_version (GstPlugin * plugin) * * Returns: the license of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_license (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -979,7 +979,7 @@ gst_plugin_get_license (GstPlugin * plugin) * * Returns: the source of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_source (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -995,7 +995,7 @@ gst_plugin_get_source (GstPlugin * plugin) * * Returns: the package of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_package (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -1011,7 +1011,7 @@ gst_plugin_get_package (GstPlugin * plugin) * * Returns: the origin of the plugin */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_get_origin (GstPlugin * plugin) { g_return_val_if_fail (plugin != NULL, NULL); @@ -1064,7 +1064,7 @@ gst_plugin_is_loaded (GstPlugin * plugin) * * Since: 0.10.24 */ -G_CONST_RETURN GstStructure * +const GstStructure * gst_plugin_get_cache_data (GstPlugin * plugin) { g_return_val_if_fail (GST_IS_PLUGIN (plugin), NULL); diff --git a/gst/gstplugin.h b/gst/gstplugin.h index c4f9c44796..81ad00a55c 100644 --- a/gst/gstplugin.h +++ b/gst/gstplugin.h @@ -371,16 +371,16 @@ gboolean gst_plugin_register_static_full (gint major_version, const gchar *origin, gpointer user_data); -G_CONST_RETURN gchar* gst_plugin_get_name (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_description (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_filename (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_version (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_license (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_source (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_package (GstPlugin *plugin); -G_CONST_RETURN gchar* gst_plugin_get_origin (GstPlugin *plugin); -G_CONST_RETURN GstStructure* gst_plugin_get_cache_data (GstPlugin * plugin); -void gst_plugin_set_cache_data (GstPlugin * plugin, GstStructure *cache_data); +const gchar* gst_plugin_get_name (GstPlugin *plugin); +const gchar* gst_plugin_get_description (GstPlugin *plugin); +const gchar* gst_plugin_get_filename (GstPlugin *plugin); +const gchar* gst_plugin_get_version (GstPlugin *plugin); +const gchar* gst_plugin_get_license (GstPlugin *plugin); +const gchar* gst_plugin_get_source (GstPlugin *plugin); +const gchar* gst_plugin_get_package (GstPlugin *plugin); +const gchar* gst_plugin_get_origin (GstPlugin *plugin); +const GstStructure* gst_plugin_get_cache_data (GstPlugin * plugin); +void gst_plugin_set_cache_data (GstPlugin * plugin, GstStructure *cache_data); GModule * gst_plugin_get_module (GstPlugin *plugin); gboolean gst_plugin_is_loaded (GstPlugin *plugin); diff --git a/gst/gstpluginfeature.c b/gst/gstpluginfeature.c index 696988c0fe..3c62b1b08e 100644 --- a/gst/gstpluginfeature.c +++ b/gst/gstpluginfeature.c @@ -200,7 +200,7 @@ gst_plugin_feature_set_name (GstPluginFeature * feature, const gchar * name) * * Returns: the name */ -G_CONST_RETURN gchar * +const gchar * gst_plugin_feature_get_name (GstPluginFeature * feature) { g_return_val_if_fail (GST_IS_PLUGIN_FEATURE (feature), NULL); diff --git a/gst/gstpluginfeature.h b/gst/gstpluginfeature.h index abfebe2541..177c8bd3a3 100644 --- a/gst/gstpluginfeature.h +++ b/gst/gstpluginfeature.h @@ -136,7 +136,7 @@ gboolean gst_plugin_feature_type_name_filter (GstPluginFeature *featu void gst_plugin_feature_set_rank (GstPluginFeature *feature, guint rank); void gst_plugin_feature_set_name (GstPluginFeature *feature, const gchar *name); guint gst_plugin_feature_get_rank (GstPluginFeature *feature); -G_CONST_RETURN gchar *gst_plugin_feature_get_name (GstPluginFeature *feature); +const gchar *gst_plugin_feature_get_name (GstPluginFeature *feature); void gst_plugin_feature_list_free (GList *list); GList *gst_plugin_feature_list_copy (GList *list); diff --git a/gst/gstquery.h b/gst/gstquery.h index 8c64841b11..f77c0c75f4 100644 --- a/gst/gstquery.h +++ b/gst/gstquery.h @@ -181,7 +181,7 @@ gboolean gst_query_types_contains (const GstQueryType *types, /* query for query details */ -G_CONST_RETURN GstQueryTypeDefinition* +const GstQueryTypeDefinition* gst_query_type_get_details (GstQueryType type); GstIterator* gst_query_type_iterate_definitions (void); diff --git a/gst/gststructure.h b/gst/gststructure.h index 48c81c4596..57e34c0f71 100644 --- a/gst/gststructure.h +++ b/gst/gststructure.h @@ -104,7 +104,7 @@ void gst_structure_set_parent_refcount (GstStructure *structure, gint *refcount); void gst_structure_free (GstStructure *structure); -G_CONST_RETURN gchar * gst_structure_get_name (const GstStructure *structure); +const gchar * gst_structure_get_name (const GstStructure *structure); GQuark gst_structure_get_name_id (const GstStructure *structure); gboolean gst_structure_has_name (const GstStructure *structure, const gchar *name); @@ -155,9 +155,9 @@ gboolean gst_structure_id_get (const GstStructure GQuark first_field_id, ...) G_GNUC_NULL_TERMINATED; -G_CONST_RETURN GValue * gst_structure_id_get_value (const GstStructure *structure, +const GValue * gst_structure_id_get_value (const GstStructure *structure, GQuark field); -G_CONST_RETURN GValue * gst_structure_get_value (const GstStructure *structure, +const GValue * gst_structure_get_value (const GstStructure *structure, const gchar *fieldname); void gst_structure_remove_field (GstStructure *structure, const gchar *fieldname); @@ -215,7 +215,7 @@ gboolean gst_structure_get_date_time (const GstStructure gboolean gst_structure_get_clock_time (const GstStructure *structure, const gchar *fieldname, GstClockTime *value); -G_CONST_RETURN gchar * gst_structure_get_string (const GstStructure *structure, +const gchar * gst_structure_get_string (const GstStructure *structure, const gchar *fieldname); gboolean gst_structure_get_enum (const GstStructure *structure, const gchar *fieldname, diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c index 6bf596eff7..7022b26ab1 100644 --- a/gst/gsttaglist.c +++ b/gst/gsttaglist.c @@ -1157,7 +1157,7 @@ gst_tag_list_foreach (const GstTagList * list, GstTagForeachFunc func, * Returns: (transfer none): The GValue for the specified entry or NULL if the * tag wasn't available or the tag doesn't have as many entries */ -G_CONST_RETURN GValue * +const GValue * gst_tag_list_get_value_index (const GstTagList * list, const gchar * tag, guint index) { diff --git a/gst/gsttaglist.h b/gst/gsttaglist.h index f9be499ebb..e40d52ab0e 100644 --- a/gst/gsttaglist.h +++ b/gst/gsttaglist.h @@ -205,8 +205,8 @@ void gst_tag_merge_strings_with_comma (GValue * dest, const GValue * src); /* basic tag support */ gboolean gst_tag_exists (const gchar * tag); GType gst_tag_get_type (const gchar * tag); -G_CONST_RETURN gchar * gst_tag_get_nick (const gchar * tag); -G_CONST_RETURN gchar * gst_tag_get_description (const gchar * tag); +const gchar * gst_tag_get_nick (const gchar * tag); +const gchar * gst_tag_get_description (const gchar * tag); GstTagFlag gst_tag_get_flag (const gchar * tag); gboolean gst_tag_is_fixed (const gchar * tag); @@ -253,7 +253,7 @@ void gst_tag_list_foreach (const GstTagList * list, GstTagForeachFunc func, gpointer user_data); -G_CONST_RETURN GValue * +const GValue * gst_tag_list_get_value_index (const GstTagList * list, const gchar * tag, guint index); diff --git a/gst/gsttagsetter.c b/gst/gsttagsetter.c index 5a5f967f48..5f15e41213 100644 --- a/gst/gsttagsetter.c +++ b/gst/gsttagsetter.c @@ -365,7 +365,7 @@ gst_tag_setter_add_tag_value (GstTagSetter * setter, * Returns: (transfer none): a current snapshot of the taglist used in the * setter or NULL if none is used. */ -G_CONST_RETURN GstTagList * +const GstTagList * gst_tag_setter_get_tag_list (GstTagSetter * setter) { g_return_val_if_fail (GST_IS_TAG_SETTER (setter), NULL); diff --git a/gst/gsttagsetter.h b/gst/gsttagsetter.h index c7b21dfcfe..44c794b52f 100644 --- a/gst/gsttagsetter.h +++ b/gst/gsttagsetter.h @@ -88,7 +88,7 @@ void gst_tag_setter_add_tag_value (GstTagSetter * setter, const gchar * tag, const GValue * value); -G_CONST_RETURN GstTagList * +const GstTagList * gst_tag_setter_get_tag_list (GstTagSetter * setter); void gst_tag_setter_set_tag_merge_mode (GstTagSetter * setter, diff --git a/gst/gsttrace.h b/gst/gsttrace.h index 285e91f55c..1de63faaeb 100644 --- a/gst/gsttrace.h +++ b/gst/gsttrace.h @@ -125,7 +125,7 @@ void gst_trace_read_tsc (gint64 *dst); extern GStaticMutex _gst_trace_mutex; gboolean gst_alloc_trace_available (void); -G_CONST_RETURN GList* gst_alloc_trace_list (void); +const GList* gst_alloc_trace_list (void); GstAllocTrace* _gst_alloc_trace_register (const gchar *name); int gst_alloc_trace_live_all (void); diff --git a/gst/gsturi.c b/gst/gsturi.c index 0f5bbbb4fa..30244e5f60 100644 --- a/gst/gsturi.c +++ b/gst/gsturi.c @@ -711,7 +711,7 @@ gst_uri_handler_get_protocols (GstURIHandler * handler) * Returns NULL if there are no URI currently handled. The * returned string must not be modified or freed. */ -G_CONST_RETURN gchar * +const gchar * gst_uri_handler_get_uri (GstURIHandler * handler) { GstURIHandlerInterface *iface; diff --git a/gst/gsturi.h b/gst/gsturi.h index 48a09c059d..00dfb912e5 100644 --- a/gst/gsturi.h +++ b/gst/gsturi.h @@ -106,7 +106,7 @@ struct _GstURIHandlerInterface { gchar ** (* get_protocols) (void); /* using the interface */ - G_CONST_RETURN gchar *(* get_uri) (GstURIHandler * handler); + const gchar * (* get_uri) (GstURIHandler * handler); gboolean (* set_uri) (GstURIHandler * handler, const gchar * uri); @@ -145,8 +145,7 @@ GType gst_uri_handler_get_type (void); guint gst_uri_handler_get_uri_type (GstURIHandler * handler); gchar ** gst_uri_handler_get_protocols (GstURIHandler * handler); -G_CONST_RETURN -gchar * gst_uri_handler_get_uri (GstURIHandler * handler); +const gchar * gst_uri_handler_get_uri (GstURIHandler * handler); gboolean gst_uri_handler_set_uri (GstURIHandler * handler, const gchar * uri); void gst_uri_handler_new_uri (GstURIHandler * handler, diff --git a/gst/gstutils.c b/gst/gstutils.c index 06438cb20d..0d0558262a 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -1222,7 +1222,7 @@ gst_element_get_compatible_pad (GstElement * element, GstPad * pad, * * Returns: (transfer none): a string with the name of the state. */ -G_CONST_RETURN gchar * +const gchar * gst_element_state_get_name (GstState state) { switch (state) { @@ -1253,7 +1253,7 @@ gst_element_state_get_name (GstState state) * * Since: 0.10.11 */ -G_CONST_RETURN gchar * +const gchar * gst_element_state_change_return_get_name (GstStateChangeReturn state_ret) { switch (state_ret) { diff --git a/gst/gstutils.h b/gst/gstutils.h index d1a9fed7e0..f8e4324190 100644 --- a/gst/gstutils.h +++ b/gst/gstutils.h @@ -1003,8 +1003,8 @@ GstPad* gst_element_get_compatible_pad (GstElement *element, Gs GstPadTemplate* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl); -G_CONST_RETURN gchar* gst_element_state_get_name (GstState state); -G_CONST_RETURN gchar * gst_element_state_change_return_get_name (GstStateChangeReturn state_ret); +const gchar* gst_element_state_get_name (GstState state); +const gchar * gst_element_state_change_return_get_name (GstStateChangeReturn state_ret); gboolean gst_element_link (GstElement *src, GstElement *dest); gboolean gst_element_link_many (GstElement *element_1, diff --git a/gst/gstvalue.h b/gst/gstvalue.h index 5de7449cd5..d9cdde678a 100644 --- a/gst/gstvalue.h +++ b/gst/gstvalue.h @@ -470,8 +470,7 @@ void gst_value_list_merge (GValue *dest, const GValue *value1, const GValue *value2); guint gst_value_list_get_size (const GValue *value); -G_CONST_RETURN GValue * - gst_value_list_get_value (const GValue *value, +const GValue * gst_value_list_get_value (const GValue *value, guint index); /* array */ @@ -480,8 +479,7 @@ void gst_value_array_append_value (GValue *value, void gst_value_array_prepend_value (GValue *value, const GValue *prepend_value); guint gst_value_array_get_size (const GValue *value); -G_CONST_RETURN GValue * - gst_value_array_get_value (const GValue *value, +const GValue * gst_value_array_get_value (const GValue *value, guint index); /* fourcc */ @@ -511,13 +509,12 @@ gdouble gst_value_get_double_range_min (const GValue *value); gdouble gst_value_get_double_range_max (const GValue *value); /* caps */ -G_CONST_RETURN GstCaps * - gst_value_get_caps (const GValue *value); +const GstCaps * gst_value_get_caps (const GValue *value); void gst_value_set_caps (GValue *value, const GstCaps *caps); /* structure */ -G_CONST_RETURN GstStructure * +const GstStructure * gst_value_get_structure (const GValue *value); void gst_value_set_structure (GValue *value, const GstStructure *structure); @@ -548,8 +545,7 @@ const GValue *gst_value_get_fraction_range_min (const GValue *value); const GValue *gst_value_get_fraction_range_max (const GValue *value); /* date */ -G_CONST_RETURN GDate * - gst_value_get_date (const GValue *value); +const GDate * gst_value_get_date (const GValue *value); void gst_value_set_date (GValue *value, const GDate *date); From 783bac2bc4d17850c7ce17759805021574d095e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Wed, 15 Jun 2011 19:15:24 +0100 Subject: [PATCH 5/8] Release 0.10.35 This is an ad-hoc release that is almost identical to 0.10.34: * work around GLib atomic ops API change * some minor win32/mingw fixes * don't use G_CONST_RETURN in public headers --- ChangeLog | 76 +++++++++++++++++++- NEWS | 12 +++- RELEASE | 18 ++--- configure.ac | 2 +- docs/plugins/inspect/plugin-coreelements.xml | 2 +- docs/plugins/inspect/plugin-coreindexers.xml | 2 +- gstreamer.doap | 11 +++ win32/common/config.h | 8 +-- win32/common/gstversion.h | 2 +- 9 files changed, 112 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index e9e08dce90..91ee387055 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,79 @@ -=== release 0.10.34 === +=== release 0.10.35 === -2011-05-14 Tim-Philipp Müller +2011-06-15 Tim-Philipp Müller * configure.ac: - releasing 0.10.34, "Misfits" + releasing 0.10.35, "Nuclear Fission" + +2011-06-09 17:13:35 +0100 Javier Jardón + + * gst/gstelement.h: + * gst/gstelementfactory.c: + * gst/gstelementfactory.h: + * gst/gstformat.h: + * gst/gstinfo.c: + * gst/gstinfo.h: + * gst/gstpad.c: + * gst/gstpad.h: + * gst/gstplugin.c: + * gst/gstplugin.h: + * gst/gstpluginfeature.c: + * gst/gstpluginfeature.h: + * gst/gstquery.h: + * gst/gststructure.h: + * gst/gsttaglist.c: + * gst/gsttaglist.h: + * gst/gsttagsetter.c: + * gst/gsttagsetter.h: + * gst/gsttrace.h: + * gst/gsturi.c: + * gst/gsturi.h: + * gst/gstutils.c: + * gst/gstutils.h: + * gst/gstvalue.h: + Use "const" instead G_CONST_RETURN + G_CONST_RETURN will be deprecated soon. + https://bugzilla.gnome.org/show_bug.cgi?id=652211 + +2011-06-04 00:30:15 -0700 David Schleef + + * gst/glib-compat-private.h: + * gst/gstatomicqueue.c: + * gst/gstelementfactory.c: + * gst/gstpoll.c: + * gst/gstsystemclock.c: + * gst/gstutils.c: + * plugins/elements/gstmultiqueue.c: + * tests/benchmarks/gstclockstress.c: + Work around changes in g_atomic API + See #651514 for details. It's apparently impossible to write code + that avoids both type punning warnings with old g_atomic headers and + assertions in the new. Thus, macros and a version check. + +2011-05-25 13:40:30 +0400 Руслан Ижбулатов + + * gst/gstsystemclock.c: + systemclock: Placate gcc by defining EWOULDBLOCK to something + +2011-05-25 12:47:51 +0400 Руслан Ижбулатов + + * gst/gstpoll.c: + poll: Fix WAKE_EVENT() to behave posixly on Windows + +=== release 0.10.34 === + +2011-05-14 01:00:23 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * configure.ac: + * docs/plugins/inspect/plugin-coreelements.xml: + * docs/plugins/inspect/plugin-coreindexers.xml: + * gstreamer.doap: + * win32/common/config.h: + * win32/common/gstversion.h: + Release 0.10.34 2011-05-04 15:31:56 +0300 Vincent Penquerc'h diff --git a/NEWS b/NEWS index 283b60e5d0..1149ebbc80 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,14 @@ -This is GStreamer 0.10.34 "Misfits" +This is GStreamer 0.10.35 "Nuclear Fission" + +Changes since 0.10.34: + + * work around GLib atomic ops API change + * some minor win32/mingw fixes + * don't use G_CONST_RETURN in public headers + +Bugs fixed since 0.10.34: + + * 652211 : Use const instead G_CONST_RETURN Changes since 0.10.33: diff --git a/RELEASE b/RELEASE index 2cad94a3ba..f08961779a 100644 --- a/RELEASE +++ b/RELEASE @@ -1,5 +1,5 @@ -Release notes for GStreamer 0.10.34 "Misfits" +Release notes for GStreamer 0.10.35 "Nuclear Fission" @@ -37,14 +37,13 @@ contains a set of less supported plug-ins that haven't passed the Features of this release - * Fix multiqueue thread-safety regression - * Don't set artificial 0-timestamp on first packet for TIME-based live sources - * Otherwise identical to the previous release (0.10.33) + * work around GLib atomic ops API change + * some minor win32/mingw fixes + * don't use G_CONST_RETURN in public headers Bugs fixed in this release - * 649369 : basesrc: do not set first buffer timestamp to 0 for live sources - * 649878 : [multiqueue] regression: gst_single_queue_new not MT-safe + * 652211 : Use const instead G_CONST_RETURN Download @@ -78,6 +77,7 @@ Let us know if you want to be added to this list. Contributors to this release - * Mark Nauwelaerts - * Vincent Penquerc'h -  + * David Schleef + * Javier Jardón + * Руслан Ижбулатов +  \ No newline at end of file diff --git a/configure.ac b/configure.ac index 4719acdd00..f625f86a62 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ(2.60) dnl initialize autoconf dnl when going to/from release please set the nano (fourth number) right ! dnl releases only do Wall, git and prerelease does Werror too -AC_INIT(GStreamer, 0.10.34, +AC_INIT(GStreamer, 0.10.35, http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer, gstreamer) AG_GST_INIT diff --git a/docs/plugins/inspect/plugin-coreelements.xml b/docs/plugins/inspect/plugin-coreelements.xml index 9464b9588e..50ea185af9 100644 --- a/docs/plugins/inspect/plugin-coreelements.xml +++ b/docs/plugins/inspect/plugin-coreelements.xml @@ -3,7 +3,7 @@ standard GStreamer elements ../../plugins/elements/.libs/libgstcoreelements.so libgstcoreelements.so - 0.10.34 + 0.10.35 LGPL gstreamer GStreamer source release diff --git a/docs/plugins/inspect/plugin-coreindexers.xml b/docs/plugins/inspect/plugin-coreindexers.xml index 7ffd8be724..b7741d07e5 100644 --- a/docs/plugins/inspect/plugin-coreindexers.xml +++ b/docs/plugins/inspect/plugin-coreindexers.xml @@ -3,7 +3,7 @@ GStreamer core indexers ../../plugins/indexers/.libs/libgstcoreindexers.so libgstcoreindexers.so - 0.10.34 + 0.10.35 LGPL gstreamer GStreamer source release diff --git a/gstreamer.doap b/gstreamer.doap index 807322b06e..d56949785a 100644 --- a/gstreamer.doap +++ b/gstreamer.doap @@ -38,6 +38,17 @@ hierarchy, and a set of media-agnostic core elements. + + + 0.10.35 + 0.10 + Nuclear Fission + 2011-06-15 + + + + + 0.10.34 diff --git a/win32/common/config.h b/win32/common/config.h index e35e70273d..28185bbcfd 100644 --- a/win32/common/config.h +++ b/win32/common/config.h @@ -65,7 +65,7 @@ #define GST_PACKAGE_ORIGIN "Unknown package origin" /* GStreamer package release date/time for plugins as YYYY-MM-DD */ -#define GST_PACKAGE_RELEASE_DATETIME "2011-05-13" +#define GST_PACKAGE_RELEASE_DATETIME "2011-06-15" /* location of the installed gst-plugin-scanner */ #define GST_PLUGIN_SCANNER_INSTALLED LIBDIR "\\gst-plugin-scanner" @@ -340,7 +340,7 @@ #define PACKAGE_NAME "GStreamer" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GStreamer 0.10.34" +#define PACKAGE_STRING "GStreamer 0.10.35" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gstreamer" @@ -349,7 +349,7 @@ #undef PACKAGE_URL /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.10.34" +#define PACKAGE_VERSION "0.10.35" /* directory where plugins are located */ #ifdef _DEBUG @@ -380,7 +380,7 @@ #undef USE_POISONING /* Version number of package */ -#define VERSION "0.10.34" +#define VERSION "0.10.35" /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ diff --git a/win32/common/gstversion.h b/win32/common/gstversion.h index ba015672c9..53d56ec772 100644 --- a/win32/common/gstversion.h +++ b/win32/common/gstversion.h @@ -57,7 +57,7 @@ G_BEGIN_DECLS * * The micro version of GStreamer at compile time: */ -#define GST_VERSION_MICRO (34) +#define GST_VERSION_MICRO (35) /** * GST_VERSION_NANO: * From 9f0e066102676bb3ce142b8f70d1609e950e457c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20J=C3=A4genstedt?= Date: Tue, 14 Jun 2011 17:57:21 +0200 Subject: [PATCH 6/8] basesink: Fix typo in documentation Fixes #652577. --- libs/gst/base/gstbasesink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/gst/base/gstbasesink.c b/libs/gst/base/gstbasesink.c index c342d3cce1..d60ba6fdfd 100644 --- a/libs/gst/base/gstbasesink.c +++ b/libs/gst/base/gstbasesink.c @@ -3236,7 +3236,7 @@ stopping: * * Queue an object for rendering. * The first prerollable object queued will complete the preroll. If the - * preroll queue if filled, we render all the objects in the queue. + * preroll queue is filled, we render all the objects in the queue. * * This function takes ownership of the object. */ From bc39ff3ea8424ed8828e28ed87e36c9201c39b44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Sat, 18 Jun 2011 14:38:53 +0100 Subject: [PATCH 7/8] Bump gobject-introspection requirement to >= 0.6.8 For --add-init-section --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 0a03ccdd9d..098b299bcd 100644 --- a/configure.ac +++ b/configure.ac @@ -254,7 +254,7 @@ AC_PATH_PROG(VALGRIND_PATH, valgrind, no) AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno") dnl check for gobject-introspection -GOBJECT_INTROSPECTION_CHECK([0.6.3]) +GOBJECT_INTROSPECTION_CHECK([0.6.8]) dnl check for documentation tools AG_GST_DOCBOOK_CHECK From 63dbb3b3833148b1dbf7db18ae76c886eb38234f Mon Sep 17 00:00:00 2001 From: Stefan Kost Date: Tue, 21 Jun 2011 15:15:44 +0200 Subject: [PATCH 8/8] images: strip images of extra text tags --- docs/manual/communication.png | Bin 30865 -> 23023 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/manual/communication.png b/docs/manual/communication.png index 035f841827594ba3d87d7ca1423647625ac1a811..2d136c6fe55d980c0513dd3050135ffef471ce41 100644 GIT binary patch literal 23023 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 literal 30865 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 PMUatD5HA-s{PMp58qt?d