The first time one calls gst_element_factory_make(), gst recreates the plugin
feature and the element factory. As a side effect we ref the class to fill
in detail we already have filled from the registry cache. This patch changes
the behaviour to just update the existing entries. The factory is now attached
to the type and set in gst_element_base_class_init().
Original commit message from CVS:
* 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.
Original commit message from CVS:
* gst/gstplugin.c: (CHECK_PLUGIN_DESC_FIELD), (gst_plugin_load_file):
Print error debug message if plugin description fields that should
be set are NULL.
* gst/gstregistrybinary.c: (gst_registry_binary_save_const_string):
Don't crash if the string to serialise is NULL (it really should
not be, but apparently this used to work with the xml registry ...).
Original commit message from CVS:
* gst/gstplugin.c: (_gst_plugin_initialize):
Fix old-style static plugins via GST_PLUGIN_DEFINE_STATIC
again, which I broke two commits ago when changing the API
of gst_plugin_register_static(): the g_list_foreach() in
_gst_plugin_register_static still assumed the old function
signature and would therefore fail (re-fixes #510187).
* gst/gstplugin.c: (_num_static_plugins), (_static_plugins),
(_gst_plugin_register_static), (gst_plugin_register_static):
Revert the (technically correct) change to call g_thread_init() from
the pre-main() constructor. This will break programs which call
g_thread_init() without an if (!g_thread_supported()) guard in their
main function. We could just blame it on GLib or the application, but
it's probably best to just avoid this altogether and simply not use
any GLib functions here and use plain old malloc() with a simple
array to store the plugins to register later when gst_init() is
finally called (re-fixes #510187).
* tests/check/gst/gstplugin.c: (GST_GNUC_CONSTRUCTOR_DEFINED),
(GST_GNUC_CONSTRUCTOR_DEFINED), (plugin_init_counter),
(plugin1_init), (plugin2_init), (plugin3_init), (GST_START_TEST),
(GST_START_TEST), (gst_plugin_suite):
Dumb unit test to make sure the old GST_PLUGIN_DEFINE_STATIC still
works.
Original commit message from CVS:
* gst/gst.c: (init_post):
* gst/gstplugin.c: (_gst_plugin_register_static),
(gst_plugin_register_static), (_gst_plugin_initialize):
* gst/gstplugin.h: (GstPluginFilter):
Change API of gst_plugin_register_static() to not take
a GstPluginDesc, but rather just take all the arguments
in a GstPluginDesc directly. This is more intuitive and
avoids certain mistakes when porting code from
GST_PLUGIN_DEFINE_STATIC to gst_plugin_register_static().
Fixes#510187.
* tests/check/gst/gstplugin.c:
Fix up for changed API.
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gst.c: (init_post):
* gst/gstplugin.c: (_gst_plugin_register_static),
(gst_plugin_register_static), (_gst_plugin_initialize),
(gst_plugin_register_func):
* gst/gstplugin.h: (GST_PLUGIN_DEFINE_STATIC):
API: add gst_plugin_register_static() and deprecate
GST_PLUGIN_DEFINE_STATIC, since it's not portable
(#498924).
Also, in _gst_plugin_register_static(), make sure to call
g_thread_init() before calling GLib functions such as
g_list_append() if we're not initialised yet, since that
may lead to random crashes with older GSlice/GLib versions.
* tests/check/gst/gstplugin.c:
Adapt unit test to above changes.
Original commit message from CVS:
* gst/gst.c: (_gst_disable_segtrap):
Make _gst_disable_segtrap static, it's only used in gstplugin.c and
we can use gst_segtrap_is_enabled() there now that we have that API.
Move _gst_debug_dump_dot_dir into gstdebugutils.c, there's no reason
to do the getenv here (and export the variable).
* gst/gstdebugutils.c: (debug_dump_element),
(_gst_debug_bin_to_dot_file), (_gst_debug_bin_to_dot_file_with_ts):
Don't use VLAs which is a C99ism and throws off MSVC (#493983).
* gst/gstinfo.c: (_priv_gst_info_start_time), (_gst_debug_init),
(gst_debug_log_default):
Rename _gst_info_start_time to priv_gst_info_start_time so it
doesn't get exported (was never in any header).
* gst/gstplugin.c: (_gst_plugin_fault_handler_setup),
(gst_plugin_loading_mutex):
Make static mutex gst_plugin_loading_mutex really static (was never
in any header), and use gst_segtrap_is_enabled() instead of
_gst_disable_segtrap.
* gst/gsttrace.c: (_gst_trace_default):
Make local _gst_trace_default static (was never in any header).
Original commit message from CVS:
* gst/gstplugin.c:
* gst/gstplugin.h:
* gst/gstregistrybinary.c:
* gst/gstregistryxml.c:
Put more strings into the GLib quark table. No need to keep
a hundred-something copies of identical version strings,
license strings, package name strings and package origin
strings around.
Original commit message from CVS:
* gst/gstplugin.c:
Fix docs that mention 'plugin_desc' instead of 'gst_plugin_desc'.
Spotted by Josep Torra Valles <josep@fluendo.com>.
Original commit message from CVS:
* gst/gstplugin.c:
* gst/gstplugin.h:
Add the 3-clause BSD license and the MIT/X11 license to the license
list. Fixes#479784.
Original commit message from CVS:
* gst/gstindexfactory.c: (gst_index_factory_get_type):
* gst/gstplugin.c: (gst_plugin_init):
* gst/gstpluginfeature.c: (gst_plugin_feature_init):
* gst/gstquery.c: (gst_query_get_type):
* gst/gstregistry.c: (gst_registry_init):
* gst/gsturi.c: (gst_uri_handler_base_init):
Remove empty instance_init() functions to save relocs and lessen the
noise. Remove some of the function prototypes that are doubled by
G_DEFINE_TYPE.
Original commit message from CVS:
* gst/gstplugin.c: (gst_plugin_load_file):
If we fail to load a plugin because of unresolved symbols or missing
libraries and spew a warning to stderr, we may just as well mention
which plugin it was that failed to load.
Original commit message from CVS:
* gst/gstplugin.c: gst_plugin_register_func() doesn't actually
do anything with the passed "module" parameter, so remove it.
Allows removal of additional vestigal code.
Original commit message from CVS:
* gst/gstplugin.c:
Using sigaction should depend on HAVE_SIGACTION, not HAVE_WIN32.
Switch to using g_stat() because it's more portable.
Original commit message from CVS:
* 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.
Original commit message from CVS:
* gst/gstplugin.c (gst_plugin_load_file):
* gst/gstregistry.c (GST_CAT_DEFAULT,
gst_registry_lookup_feature_locked, gst_registry_scan_path_level):
Print a g_warning if there was an error when loading a plugins during
registry scan. The shuld help beginners starting with gst-plugin
template.
Original commit message from CVS:
* gst/gstplugin.c:
Restore the previous signal handler for SIGSEGV instead of
setting to default, since we may have stolen it away from
someone. (i.e., Mono)
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gst.c: (gst_segtrap_is_enabled), (gst_segtrap_set_enabled):
* gst/gst.h:
* gst/gstplugin.c: (_gst_plugin_fault_handler_restore):
Add two functions to check and change the SIGSEGV behaviour
when loading plugins.
Don't mess with the SIGSEGV handler when we were told not to.
Fixes#347794.
API: gst_segtrap_is_enabled
API: gst_segtrap_set_enabled
Original commit message from CVS:
Patch by: Paolo Borelli <pborelli at katamail dot com>
* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_class_init),
(gst_plugin_check_license):
minor clean-ups: G_DEFINE_TYPE already takes care of the
parent_class stuff, no need to do it twice. Mark array of
license strings as constant. (#337103)
Original commit message from CVS:
* gst/base/gstbasesink.c: (gst_base_sink_handle_object):
Make sure the GstFlowReturn is returned.
* gst/gstbus.c: (gst_bus_add_signal_watch_full),
(gst_bus_add_signal_watch):
* gst/gstbus.h:
add gst_bus_add_signal_watch_full.
* gst/gstplugin.c: (gst_plugin_load_file):
Small style cleanup.
Original commit message from CVS:
* gst/gstplugin.c: (gst_plugin_finalize), (gst_plugin_load_file):
* gst/gstplugin.h:
* gst/gstregistry.c: (gst_registry_lookup_locked),
(gst_registry_scan_path_level):
* gst/gstregistryxml.c: (load_plugin):
Only ever load one plugin for a given plugin basename.
This ensures correct overriding of GST_PLUGIN_PATH over
GST_PLUGIN_SYSTEM_PATH and of home dir plugins over
system installed plugins.
Original commit message from CVS:
* gst/gsterror.c: (_gst_stream_errors_init):
Add another error string used in a few existing plugins.
* gst/gstplugin.c:
* gst/gstpluginfeature.c: (gst_plugin_feature_load):
* tools/gst-inspect.c: (print_element_info):
When a feature disappears from a plugin (and the feature exists in
the cached registry file), things went horribly wrong. This isn't a
complete fix, we should actually be removing the 'missing' features
from the features list when we load the actual plugin. That's not
yet implemented.
Original commit message from CVS:
* gst/gstplugin.c: (gst_plugin_load_file): Make some error messages
more end-user friendly.
* tools/gst-inspect.c: (main): Check if command-line argument is
a file and attempt to load that file as a plugin.
Original commit message from CVS:
* docs/gst/.cvsignore:
* docs/gst/tmpl/.cvsignore:
* docs/gst/tmpl/gstpipeline.sgml:
* docs/gst/tmpl/gstplugin.sgml:
* gst/gstpipeline.c:
* gst/gstplugin.c:
* gst/gstplugin.h:
inlined the last two docs files
removed the tmpl directory from cvs (no more conflicts here!)
Original commit message from CVS:
* docs/gst/Makefile.am: Ignore a few more internal headers
* docs/gst/gstreamer-docs.sgml: Remove old sections
* docs/gst/gstreamer-sections.txt: Remove old sections
* docs/gst/tmpl/gstobject.sgml: update
* docs/gst/tmpl/gstplugin.sgml: update
* docs/gst/tmpl/gstpluginfeature.sgml: update
* docs/random/ds/0.9-suggested-changes: update.
* gst/Makefile.am: remove memchunk and trashstack, since they're
not used.
* gst/gst.c: (gst_deinit): rename gst_registry_deinit to _cleanup
* gst/gst.h: don't include some headers
* gst/gstchildproxy.c: add gstmarshal.h
* gst/gstclock.c: Don't use memchunks
* gst/gstminiobject.c: Add some docs
* gst/gstobject.c: remove DESTROYED flag, since it's redundant
* gst/gstobject.h: same
* gst/gstplugin.c: include gstmacros.h
* gst/gstplugin.h: don't include gstmacros.h, since it's private
* gst/gstquery.c: don't use memchunks
* gst/gstregistry.c: rename gst_registry_deinit()
* gst/gstregistry.h: same
Original commit message from CVS:
don't complain about my ARM .so files. Another reason why it does make sense
to have plugins follow a standard file name pattern like libgst(whatever).so
Original commit message from CVS:
* check/Makefile.am:
re-enable tests now that leaks are plugged
* check/gst/gst.c:
* check/gst/gstbin.c:
* check/gst/gstpipeline.c:
add some more tests while fixing leaks
* common/check.mak:
make sure binaries are uptodate when valgrinding/gdbing
* gst/gst.c:
* gst/gstelementfactory.c:
remove a ref too many, and add a FIXME for when we get
round to disposing of classes
* gst/gstplugin.c:
fix the refcounting when loading a plugin from a file and
the code pretends that the pointer is the same even though
of course it can change
* gst/gstpluginfeature.c:
unref plugins marked cached (a bit confusing as a name)
as the docs state should be done
various doc additions to explain refcounting
* gst/gstregistry.c:
* gst/gstregistryxml.c:
debugging
Original commit message from CVS:
* check/gst/gstplugin.c:
* gst/gstelementfactory.c:
* gst/gstplugin.c:
* gst/gstpluginfeature.c:
* gst/gstregistry.c:
Getting tired of debugging. Disabled all the unreffing of
plugins and features, which fixes the segfaults, but of
course leaks like crazy. At least playbin works.