Commit graph

115 commits

Author SHA1 Message Date
Руслан Ижбулатов
b1d57a8b05 registry: Import _priv_gst_dll_handle into gstregistry.c
Fixes bug #601668.
2009-11-12 13:00:07 +01:00
Sebastian Dröge
039ef83523 registry: API: Add gst_{default,}_registry_get_feature_list_cookie()
This returns the internal feature list cookie, which changes every
time a feature is added or removed. This can be used by elements
to check if they should update their cached feature lists.
2009-11-10 18:17:26 +01:00
Edward Hervey
27284628e4 optimisation : Use g_object_newv where possible.
This avoids:
* triple-checking for the GType when type-checking is enabled (see #597260)
* Avoids going through an expensive no-argument checking which landed in
  glib-2.22
* Avoids going through 2 extrac functions (g_object_new -> g_object_new_valist)
2009-10-28 09:31:17 +01:00
Tim-Philipp Müller
daecaf0e8a Remove GST_DEBUG_FUNCPTR where they're pointless
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a tenth of a polar bear.
2009-10-28 00:44:24 +00:00
Sebastian Dröge
b04f7489bf registry: private is a C++ keyword, don't use it
...otherwise C++ compilers will complain when including gstregistry.h
2009-10-24 11:58:25 +02:00
Edward Hervey
5067664c09 typefind: Keep typefind factories sorted in the registry. Fixes #599147
This avoids having to do the sorting everytime we use typefind

The behaviour of gst_type_find_factory_get_list has subtlely changed
in the sense that the order was previously undefined, whereas now
it returns them sorted by rank and then by name.
2009-10-24 10:44:09 +02:00
Edward Hervey
c79ed99bab registry: Cache element and typefind factories. Fixes 598896
This avoids unneeded list/filtering if the registry hasn't changed
2009-10-24 10:44:04 +02:00
Edward Hervey
9e792ee5b8 gstregistry: Add a cookie for detecting feature list changes
We also create a private structure, since we will need to add more
data there in following patches.
2009-10-24 10:39:13 +02:00
Edward Hervey
4b13520b61 gstregistry: Use hash table when finding a feature. Fixes #598895 2009-10-22 11:13:47 +02:00
Wim Taymans
368b7899c0 registry: hash the plugin basename
Maintain a hashtable of the plugin basename. We can then use this
hashtable to speedup the search for an existing plugin and avoid
a whole lot of strcmp calls.
2009-10-20 23:28:54 -04:00
Wim Taymans
50b9a3ecc3 registry: name is never NULL
When looking up a feature by name, we never call this internal
function with NULL so we don't have to check for it.
2009-10-20 21:43:58 -04:00
Wim Taymans
d722d16155 registry: refactor plugin lookup
We keep lookup plugins by their basename. Avoid creating a basename
from a filename if we can.
2009-10-20 21:39:11 -04:00
Wim Taymans
1be3d5cd83 registry: do quick check for . files
Do a quick check for . files before calling the strcmp functions
2009-10-20 21:15:56 -04:00
Jan Schmidt
f514ef0efc registry: Fix error handling in the registry loader
When the plugin-scanner load fails (because the helper can't be
spawned), make sure to load the plugin that failed in-process, so
that all plugins do get loaded.
2009-10-08 10:36:56 +01:00
Tim-Philipp Müller
53c9c9d975 registry: improve plugin loader failure message for uninstalled setups
Everyone running an uninstalled git setup is going to wonder about
this failure next time they update, so let's mention the solution
in the error message.
2009-10-07 14:39:03 +01:00
Jan Schmidt
6eee943b36 Remove checking for and mentions of fork where possible.
We no longer use fork() directly, instead using glib's spawn
functionality, so don't check for it, and don't use it in the
documentation notes.
2009-10-06 19:51:44 +01:00
Jan Schmidt
82aeddbc61 Only load the registry cache once per process.
When updating the registry, we don't need to re-read the registry cache
and waste time replacing all our existing, hopefully identical, plugins
and features that we're about to re-scan anyway.
2009-10-06 19:51:43 +01:00
Jan Schmidt
c7922fb838 Add some more debug the registry.
Add the full set of debug about why it's decided that a given plugin is
stale or not, and include the plugin name when finalizing it.
2009-10-06 19:51:43 +01:00
Jan Schmidt
38083fb0c8 Plugin loader phase 2
phase 2 - make the plugin loader receive the list of plugins to load and
send back the results asynchronously, so we don't context switch back
and forth so much.
2009-10-06 19:51:42 +01:00
Jan Schmidt
51675e0c2a registry: Add registry helper phase 1
Phase 1 of adding the registry scan helper
2009-10-06 19:51:42 +01:00
Jan Schmidt
1f4e477033 registry: Rearrange some things.
Prepare to land the external plugin helper process
2009-10-06 19:51:41 +01:00
Sebastian Dröge
5f6bfb816b registry: Use g_build_filename() instead of g_strjoin() with /
This makes sure that the generated filenames use the platform
specific directory separator instead of /.

Fixes bug #587973.
2009-07-08 15:12:07 +02:00
Edward Hervey
3c21f2d86c Spread branch prediction macros.
These are based on profiling several playback scenarios using playbin2.
2009-06-30 16:29:58 +02:00
Tim-Philipp Müller
26b201273a docs: a few small API doc fixes and additions 2009-06-10 09:39:12 +01:00
Stefan Kost
612387da25 registry: fix comment formatting 2009-05-31 22:39:05 +03:00
Wim Taymans
761b0e39c1 Avoid unneeded type checks 2009-05-11 22:35:09 +02:00
Wim Taymans
ceb74fe2cf registry: avoid calling _get_name() too much
Avoid calling gst_plugin_get_name() too many times but instead cache
the value.
2009-05-11 22:35:09 +02:00
Wim Taymans
84c5db2635 Use new _ref_sink when we can 2009-05-11 22:35:09 +02:00
Tim-Philipp Müller
ea554b1d62 registry: ignore .git directory when recursively scanning plugin paths for plugins
Saves some cycles/pandas for those of us who run uninstalled setups.
2009-03-26 14:52:00 +00:00
Tim-Philipp Müller
2ae03ba72f Add API for making a GStreamer plugin 'dependent' on external files, directories or environment variables, so that GS...
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt::
* gst/gst_private.h: (GstPluginDep), (_GstPluginPrivate):
* gst/gstplugin.c: (gst_plugin_init), (gst_plugin_finalize),
(gst_plugin_class_init), (gst_plugin_list_free),
(gst_plugin_ext_dep_get_env_vars_hash),
(_priv_plugin_deps_env_vars_changed),
(gst_plugin_ext_dep_extract_env_vars_paths),
(gst_plugin_ext_dep_get_hash_from_stat_entry),
(gst_plugin_ext_dep_direntry_matches),
(gst_plugin_ext_dep_scan_dir_and_match_names),
(gst_plugin_ext_dep_scan_path_with_filenames),
(gst_plugin_ext_dep_get_stat_hash),
(_priv_plugin_deps_files_changed), (gst_plugin_ext_dep_free),
(gst_plugin_ext_dep_strv_equal), (gst_plugin_ext_dep_equals),
(gst_plugin_add_dependency), (gst_plugin_add_dependency_simple):
* gst/gstplugin.h: (GstPluginPrivate), (GstPluginFlags),
(GST_PLUGIN_DEPENDENCY_FLAG_NONE),
(GST_PLUGIN_DEPENDENCY_FLAG_RECURSE),
(GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY),
(GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX),
(GstPluginDependencyFlags), (GstPluginFilter):
* gst/gstregistry.c: (gst_registry_scan_path_level):
* gst/gstregistrybinary.c: (gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin_dep),
(gst_registry_binary_save_plugin),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin_dep_strv),
(gst_registry_binary_load_plugin_dep),
(gst_registry_binary_load_plugin):
* gst/gstregistrybinary.h: (GST_MAGIC_BINARY_VERSION_STR),
(GstBinaryPluginElement), (_GstBinaryDep), (GstBinaryDep):
* gst/gstregistryxml.c: (gst_registry_xml_save_plugin):
Add API for making a GStreamer plugin 'dependent' on external files,
directories or environment variables, so that GStreamer knows when
it needs to re-load GStreamer plugins that wrap other plugin systems.
Fixes bug #350477.
API: add gst_plugin_add_dependency()
API: add gst_plugin_add_dependency_simple()
2009-01-06 17:58:59 +00:00
Simon Holm Thøgersen
9c15d8efec gst/gstregistry.c: Reduce the number of stat() calls for every file from three times to one time. Fixes bug #560360.
Original commit message from CVS:
Patch by: Simon Holm Thøgersen <odie at cs dot aau dot dk>
* gst/gstregistry.c: (gst_registry_scan_path_level):
Reduce the number of stat() calls for every file from three times
to one time. Fixes bug #560360.
2008-11-24 09:59:07 +00:00
Michael Smith
72e0b732f6 gst/: GstRegistryPool doesn't exist; don't refer to it in docs.
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.
2008-07-15 22:53:00 +00:00
Rob Bradford
9f9422bcb3 gst/gstregistry.c: Don't recurse into .debug directories as some distros install the debugging symbols next to the pl...
Original commit message from CVS:
Patch by: Rob Bradford <rob at robster dot org dot uk>
* gst/gstregistry.c: (gst_registry_scan_path_level):
Don't recurse into .debug directories as some distros install
the debugging symbols next to the plugins in .debug directories
and dlopen() crashes on them sometimes. Fixes bug #508070.
Add FIXME for 0.11 to not recurse into directories at all because
it's very inconsistent to the behaviour of other PATH environment
variables.
2008-05-30 07:36:17 +00:00
Tim-Philipp Müller
31e43e26f0 gst/gstregistry.c: Only print one log message per non-plugin file.
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_scan_path_level):
Only print one log message per non-plugin file.
2008-05-03 19:13:47 +00:00
Tim-Philipp Müller
2d8bbf7127 gst/gstregistry.c: Run g_str_has_suffix() only on the file name, not the entire file path.
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_scan_path_level):
Run g_str_has_suffix() only on the file name, not the
entire file path.
2008-05-01 13:03:51 +00:00
Stefan Kost
31d6cc27cc gst/gstregistry.c: Tell the *truth* when improving the documentation.
Original commit message from CVS:
* gst/gstregistry.c:
Tell the *truth* when improving the documentation.
2008-04-24 06:46:54 +00:00
Stefan Kost
4b87b40779 gst/gstregistry.c: Improve the documentation.
Original commit message from CVS:
* gst/gstregistry.c:
Improve the documentation.
2008-04-23 13:55:01 +00:00
Julien Moutte
224b878ff7 Mac OS X love...
Original commit message from CVS:
2008-04-11  Julien Moutte  <julien@fluendo.com>

Mac OS X love...
* configure.ac: Merge platform specific defines, introduce a new
define on OS X to remember that forking when updating registry is
unsafe.
* docs/faq/gst-uninstalled: Updated to include gst-libs in the bad
module.
* gst/gst.c: Don't fork when updating registry if GST_HAVE_UNSAFE_FORK
is defined.
* gst/gstregistry.c: (gst_registry_scan_path_level): Fixed a bogus
condition that leads to absolutely no plugins being registered on
OS X.
2008-04-11 09:27:44 +00:00
Stefan Kost
b4c170a205 MacOS has plugins under .so or under .dylib. Add detection for MacOS and handle this case.
Original commit message from CVS:
* configure.ac:
* gst/gstregistry.c:
MacOS has plugins under .so or under .dylib. Add detection for MacOS
and handle this case.
* gst/gst.c:
Add a comment here describing, why we stat each plugin and not try to
be smart.
2008-03-31 13:47:22 +00:00
Stefan Kost
e2f65711ee gst/gst.c: Fix type in log message and add one to ease seeing how long registry cache verification takes.
Original commit message from CVS:
* gst/gst.c:
Fix type in log message and add one to ease seeing how long registry
cache verification takes.
* gst/gstregistry.c:
Only test plugin filenames against G_MODULE_SUFFIX.
2008-03-31 08:32:26 +00:00
Jan Schmidt
0bc0a5a622 gst/gstregistry.c: When replacing an existing feature in the registry, make sure to continue holding a reference unti...
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_add_feature):
When replacing an existing feature in the registry, make sure to
continue holding a reference until we've replaced the name string
within our feature hash table. Make sure to use g_hash_table_replace
instead of g_hash_table_insert to ensure the new name string is used
as a key instead of the old one that we're about to free.
Fixes: #462085
2007-07-31 11:51:38 +00:00
Stefan Kost
a6b990938e gst/gstregistry.*: Speed up gst_registry_lookup_feature_locked() by using a hashmap.
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_init), (gst_registry_finalize),
(gst_registry_remove_features_for_plugin_unlocked),
(gst_registry_add_feature), (gst_registry_remove_feature),
(gst_registry_lookup_feature_locked):
* gst/gstregistry.h:
Speed up gst_registry_lookup_feature_locked() by using a hashmap.
Fixes #459501.
2007-07-23 11:42:12 +00:00
Stefan Kost
1756e6aa87 gst/: Remove empty instance_init() functions to save relocs and lessen the noise. Remove some of the function prototy...
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.
2007-06-27 10:12:14 +00:00
Michael Smith
05181a07da gst/: Don't print a g_warning for any failure to load a shared object.
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.
2007-05-11 10:56:48 +00:00
Stefan Kost
a8571d4655 gst/gstplugin.c (gst_plugin_load_file): gst/gstregistry.c (GST_CAT_DEFAULT, gst_registry_lookup_feature_locked, gst_r...
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.
2007-05-11 08:29:10 +00:00
Andy Wingo
d2c619762c gst/gstregistryxml.c (load_feature, load_plugin): Drop some normal-case logs down to LOG, raise errors to WARNING.
Original commit message from CVS:
2007-02-09  Andy Wingo  <wingo@pobox.com>

* gst/gstregistryxml.c (load_feature, load_plugin): Drop some
normal-case logs down to LOG, raise errors to WARNING.
(gst_registry_xml_read_cache): Don't log before calling a function
that logs.

* gst/gstregistry.c (gst_registry_finalize): Less debug on program
exit (registry finalize).
(gst_registry_add_plugin, gst_registry_add_feature): No need for a
DEBUG log when we emit signals that people don't even have the
chance to connect to.
(gst_registry_scan_path_level): Less logging in the normal case.
2007-02-09 13:41:24 +00:00
Tim-Philipp Müller
636e022fed Document registry signals and make gtk-doc pick them up (#401381).
Original commit message from CVS:
* docs/gst/gstreamer.types.in:
* gst/gstregistry.c: (gst_registry_class_init):
Document registry signals and make gtk-doc pick them up (#401381).
2007-01-27 18:44:11 +00:00
Stefan Kost
ebf0c9d353 commit binary registry (disabled by default, see #359653)
Original commit message from CVS:
* configure.ac:
* docs/gst/gstreamer-sections.txt:
* gst/Makefile.am:
* gst/gstregistry.c: (gst_registry_lookup_feature_locked),
(gst_registry_lookup_locked):
* gst/gstregistry.h:
* gst/gstregistrybinary.c: (gst_registry_binary_write),
(gst_registry_binary_initialize_magic),
(gst_registry_binary_save_string),
(gst_registry_binary_save_pad_template),
(gst_registry_binary_save_feature),
(gst_registry_binary_save_plugin),
(gst_registry_binary_write_cache),
(gst_registry_binary_check_magic),
(gst_registry_binary_load_pad_template),
(gst_registry_binary_load_feature),
(gst_registry_binary_load_plugin),
(gst_registry_binary_read_cache):
* gst/gstregistrybinary.h:
* gst/gstregistryxml.c: (load_feature),
(gst_registry_xml_read_cache):
commit binary registry (disabled by default, see #359653)
2007-01-11 13:45:51 +00:00
Tim-Philipp Müller
2991d5cd33 gst/gstregistry.c: Plugin extension on HP-UX is .sl, add that to the list of approved plugin extensions (see #393796).
Original commit message from CVS:
* gst/gstregistry.c: (gst_registry_scan_path_level):
Plugin extension on HP-UX is .sl, add that to the list of approved
plugin extensions (see #393796).
* tests/check/gst/gstpad.c: (GST_START_TEST):
ulong => gulong. Fixes compilation with HP-UX compiler.
* tests/check/pipelines/parse-launch.c: (GST_START_TEST):
Fix compilation if valgrind headers are not available.
2007-01-08 16:23:03 +00:00
Jan Schmidt
0a5e6e1132 gst/gst.c: Ignore EINTR when reading from the child registry pipe.
Original commit message from CVS:
* gst/gst.c: (ensure_current_registry_forking):
Ignore EINTR when reading from the child registry pipe.
Explicitly ignore the return value from close, since it makes no
difference.
* gst/gstminiobject.c: (gst_mini_object_ref),
(gst_mini_object_unref):
When debugging refcounts, check GST_IS_MINI_OBJECT and warn.
* gst/gstregistry.c: (_priv_gst_registry_remove_cache_plugins):
When removing cached plugins, remove their features too, so they're
not visible after they've disappeared.
* gst/gstutils.c: (prepare_link_maybe_ghosting):
In the unlikely case that we are linking pads with no parents, don't
crash trying to get the non-existent parent bin.
* gst/parse/grammar.y:
Output debug in the PIPELINE category
2006-12-09 18:48:57 +00:00