mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 03:01:03 +00:00
info: fix performance issue with registering categories after gst_init()
When registering a new debug category after gst_init(), simply check the existing patterns against that new category. No need to iterate over all categories and recheck them all against the existing patterns. Also, no need to re-parse the existing pattern string set via GST_DEBUG and add the same set of match patterns all over again to the existing list of match patterns every time we register a new debug category. Combined with iterating all debug categories on a change this would make adding debug categories after gst_init() very very very slow.
This commit is contained in:
parent
4bb5da9c28
commit
67e9d13950
1 changed files with 13 additions and 1 deletions
|
@ -1692,6 +1692,18 @@ gst_debug_unset_threshold_for_name (const gchar * name)
|
|||
gst_debug_reset_all_thresholds ();
|
||||
}
|
||||
|
||||
static void
|
||||
gst_debug_apply_patterns_to_category (GstDebugCategory * cat)
|
||||
{
|
||||
GSList *l;
|
||||
|
||||
g_mutex_lock (&__level_name_mutex);
|
||||
for (l = __level_name; l != NULL; l = l->next) {
|
||||
for_each_threshold_by_entry (cat, (LevelNameEntry *) l->data);
|
||||
}
|
||||
g_mutex_unlock (&__level_name_mutex);
|
||||
}
|
||||
|
||||
GstDebugCategory *
|
||||
_gst_debug_category_new (const gchar * name, guint color,
|
||||
const gchar * description)
|
||||
|
@ -1726,7 +1738,7 @@ _gst_debug_category_new (const gchar * name, guint color,
|
|||
|
||||
/* ensure the filter is applied to categories registered after _debug_init */
|
||||
if (_gst_debug_filter) {
|
||||
gst_debug_set_threshold_from_string (_gst_debug_filter, FALSE);
|
||||
gst_debug_apply_patterns_to_category (cat);
|
||||
}
|
||||
|
||||
return cat;
|
||||
|
|
Loading…
Reference in a new issue