diff options
author | Marc-Andre Lureau <marcandre.lureau@gmail.com> | 2007-04-18 12:34:51 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2007-04-18 12:34:51 +0000 |
commit | 7a3a27d0c15b7597c84c03eea32e7c973b036a53 (patch) | |
tree | 72e5811856d1055707f9d752645b545093ea8907 /gst/gstparse.c | |
parent | fdbd97497ffa19fc01cf043ec50432cf60e24950 (diff) |
gst/parse/: Make the parser reentrant and recursively callable. This requires flex >= 2.5.31, for older versions preg...
Original commit message from CVS:
Patch by: Marc-Andre Lureau <marcandre dot lureau at gmail dot com>
* gst/parse/Makefile.am:
* gst/parse/grammar.y:
* gst/parse/parse.l:
Make the parser reentrant and recursively callable. This requires flex
>= 2.5.31, for older versions pregenerated sources are used as we
can't bump the build dependency. Finally fixes #349180.
* gst/gstparse.c: (gst_parse_launch):
Drop the HAVE_MT_SAVE_FLEX #ifdefs as we always use a new enough flex
now anyway.
* docs/gst/Makefile.am:
* docs/gst/Makefile.am:
* gst/parse/grammar.tab.pre.c: (__gst_parse_strdup),
(__gst_parse_strfree), (__gst_parse_link_new),
(__gst_parse_link_free), (__gst_parse_chain_new),
(__gst_parse_chain_free), (SET_ERROR), (YYPRINTF),
(gst_parse_element_set), (gst_parse_free_link),
(gst_parse_found_pad), (gst_parse_perform_delayed_link),
(gst_parse_perform_link), (yytnamerr), (yysyntax_error), (yyerror),
(_gst_parse_launch):
* gst/parse/grammar.tab.pre.h:
* gst/parse/lex._gst_parse_yy.pre.c: (PRINT), (yy_get_next_buffer),
(yy_get_previous_state), (yy_try_NUL_trans), (input),
(_gst_parse_yyrestart), (_gst_parse_yy_switch_to_buffer),
(_gst_parse_yy_load_buffer_state), (_gst_parse_yy_create_buffer),
(_gst_parse_yy_delete_buffer), (_gst_parse_yy_init_buffer),
(_gst_parse_yy_flush_buffer), (_gst_parse_yypush_buffer_state),
(_gst_parse_yypop_buffer_state),
(_gst_parse_yyensure_buffer_stack), (_gst_parse_yy_scan_buffer),
(_gst_parse_yy_scan_string), (_gst_parse_yy_scan_bytes),
(yy_fatal_error), (_gst_parse_yyget_extra),
(_gst_parse_yyget_lineno), (_gst_parse_yyget_column),
(_gst_parse_yyget_in), (_gst_parse_yyget_out),
(_gst_parse_yyget_leng), (_gst_parse_yyget_text),
(_gst_parse_yyset_extra), (_gst_parse_yyset_lineno),
(_gst_parse_yyset_column), (_gst_parse_yyset_in),
(_gst_parse_yyset_out), (_gst_parse_yyget_debug),
(_gst_parse_yyset_debug), (_gst_parse_yyget_lval),
(_gst_parse_yyset_lval), (_gst_parse_yylex_init),
(yy_init_globals), (_gst_parse_yylex_destroy), (yy_flex_strncpy),
(yy_flex_strlen), (_gst_parse_yyalloc), (_gst_parse_yyrealloc),
(_gst_parse_yyfree):
If the installed flex version is too old use pre-generated parser
sources. These pre-generated parser sources are always updated when
the actual flex/bison sources change but require everybody who wants
to change something in the parser to have flex >= 2.5.31 installed.
Diffstat (limited to 'gst/gstparse.c')
-rw-r--r-- | gst/gstparse.c | 27 |
1 files changed, 0 insertions, 27 deletions
diff --git a/gst/gstparse.c b/gst/gstparse.c index 705e6806d..8bcb5260c 100644 --- a/gst/gstparse.c +++ b/gst/gstparse.c @@ -36,12 +36,6 @@ #include "gstparse.h" #include "gstinfo.h" -#ifndef HAVE_MT_SAVE_FLEX -/* the need for the mutex will go away with flex 2.5.6 */ -static gboolean flex_busy = FALSE; -static GStaticRecMutex flex_lock = G_STATIC_REC_MUTEX_INIT; -#endif - extern GstElement *_gst_parse_launch (const gchar *, GError **); /** @@ -149,30 +143,9 @@ gst_parse_launch (const gchar * pipeline_description, GError ** error) GST_CAT_INFO (GST_CAT_PIPELINE, "parsing pipeline description %s", pipeline_description); -#ifndef HAVE_MT_SAVE_FLEX - g_static_rec_mutex_lock (&flex_lock); - if (flex_busy) - goto recursive_call; - flex_busy = TRUE; -#endif - element = _gst_parse_launch (pipeline_description, error); -#ifndef HAVE_MT_SAVE_FLEX - flex_busy = FALSE; - g_static_rec_mutex_unlock (&flex_lock); -#endif - return element; /* ERRORS */ -#ifndef HAVE_MT_SAVE_FLEX -recursive_call: - { - GST_WARNING ("calls to gst_parse_launch() cannot be nested"); - g_static_rec_mutex_unlock (&flex_lock); - g_warning ("calls to gst_parse_launch() cannot be nested"); - return NULL; - } -#endif } |