mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-20 06:08:14 +00:00
validate-reporter: add gst_validate_reporter_get_report.
+ Add locking.
This commit is contained in:
parent
1cc89414f1
commit
fb90aa2ead
2 changed files with 34 additions and 3 deletions
|
@ -36,6 +36,7 @@ typedef struct _GstValidateReporterPrivate
|
||||||
GHashTable *reports;
|
GHashTable *reports;
|
||||||
char *name;
|
char *name;
|
||||||
guint log_handler_id;
|
guint log_handler_id;
|
||||||
|
GMutex reports_lock;
|
||||||
} GstValidateReporterPrivate;
|
} GstValidateReporterPrivate;
|
||||||
|
|
||||||
static GstValidateReporterPrivate *g_log_handler = NULL;
|
static GstValidateReporterPrivate *g_log_handler = NULL;
|
||||||
|
@ -63,6 +64,7 @@ _free_priv (GstValidateReporterPrivate * priv)
|
||||||
|
|
||||||
g_hash_table_unref (priv->reports);
|
g_hash_table_unref (priv->reports);
|
||||||
g_free (priv->name);
|
g_free (priv->name);
|
||||||
|
g_mutex_clear (&priv->reports_lock);
|
||||||
g_slice_free (GstValidateReporterPrivate, priv);
|
g_slice_free (GstValidateReporterPrivate, priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,6 +80,7 @@ gst_validate_reporter_get_priv (GstValidateReporter * reporter)
|
||||||
priv->reports = g_hash_table_new_full (g_direct_hash,
|
priv->reports = g_hash_table_new_full (g_direct_hash,
|
||||||
g_direct_equal, NULL, (GDestroyNotify) gst_validate_report_unref);
|
g_direct_equal, NULL, (GDestroyNotify) gst_validate_report_unref);
|
||||||
|
|
||||||
|
g_mutex_init (&priv->reports_lock);
|
||||||
g_object_set_data_full (G_OBJECT (reporter), REPORTER_PRIVATE, priv,
|
g_object_set_data_full (G_OBJECT (reporter), REPORTER_PRIVATE, priv,
|
||||||
(GDestroyNotify) _free_priv);
|
(GDestroyNotify) _free_priv);
|
||||||
}
|
}
|
||||||
|
@ -85,6 +88,16 @@ gst_validate_reporter_get_priv (GstValidateReporter * reporter)
|
||||||
return priv;
|
return priv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define GST_VALIDATE_REPORTER_REPORTS_LOCK(r) \
|
||||||
|
G_STMT_START { \
|
||||||
|
(g_mutex_lock (&gst_validate_reporter_get_priv(GST_VALIDATE_REPORTER_CAST(r))->reports_lock)); \
|
||||||
|
} G_STMT_END
|
||||||
|
|
||||||
|
#define GST_VALIDATE_REPORTER_REPORTS_UNLOCK(r) \
|
||||||
|
G_STMT_START { \
|
||||||
|
(g_mutex_unlock (&gst_validate_reporter_get_priv(GST_VALIDATE_REPORTER_CAST(r))->reports_lock)); \
|
||||||
|
} G_STMT_END
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_validate_reporter_intercept_report (GstValidateReporter * reporter,
|
gst_validate_reporter_intercept_report (GstValidateReporter * reporter,
|
||||||
GstValidateReport * report)
|
GstValidateReport * report)
|
||||||
|
@ -97,6 +110,19 @@ gst_validate_reporter_intercept_report (GstValidateReporter * reporter,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GstValidateReport *
|
||||||
|
gst_validate_reporter_get_report (GstValidateReporter *reporter,
|
||||||
|
GstValidateIssueId issue_id) {
|
||||||
|
GstValidateReport *report;
|
||||||
|
GstValidateReporterPrivate *priv = gst_validate_reporter_get_priv (reporter);
|
||||||
|
|
||||||
|
GST_VALIDATE_REPORTER_REPORTS_LOCK (reporter);
|
||||||
|
report = g_hash_table_lookup (priv->reports, (gconstpointer) issue_id);
|
||||||
|
GST_VALIDATE_REPORTER_REPORTS_UNLOCK (reporter);
|
||||||
|
|
||||||
|
return report;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gst_validate_report_valist (GstValidateReporter * reporter,
|
gst_validate_report_valist (GstValidateReporter * reporter,
|
||||||
GstValidateIssueId issue_id, const gchar * format, va_list var_args)
|
GstValidateIssueId issue_id, const gchar * format, va_list var_args)
|
||||||
|
@ -126,10 +152,13 @@ gst_validate_report_valist (GstValidateReporter * reporter,
|
||||||
gst_validate_report_unref (report);
|
gst_validate_report_unref (report);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_hash_table_insert (priv->reports, (gpointer) issue_id,
|
|
||||||
gst_validate_report_ref (report));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GST_VALIDATE_REPORTER_REPORTS_LOCK (reporter);
|
||||||
|
g_hash_table_insert (priv->reports, (gpointer) issue_id,
|
||||||
|
gst_validate_report_ref (report));
|
||||||
|
GST_VALIDATE_REPORTER_REPORTS_UNLOCK (reporter);
|
||||||
|
|
||||||
#ifndef GST_DISABLE_GST_DEBUG
|
#ifndef GST_DISABLE_GST_DEBUG
|
||||||
combo =
|
combo =
|
||||||
g_strdup_printf ("<%s> %" GST_VALIDATE_ISSUE_FORMAT " : %s", priv->name,
|
g_strdup_printf ("<%s> %" GST_VALIDATE_ISSUE_FORMAT " : %s", priv->name,
|
||||||
|
|
|
@ -79,6 +79,8 @@ void gst_validate_report_valist (GstValidateReporter * reporter,
|
||||||
|
|
||||||
void gst_validate_reporter_set_runner (GstValidateReporter * reporter, GstValidateRunner *runner);
|
void gst_validate_reporter_set_runner (GstValidateReporter * reporter, GstValidateRunner *runner);
|
||||||
void gst_validate_reporter_set_handle_g_logs (GstValidateReporter * reporter);
|
void gst_validate_reporter_set_handle_g_logs (GstValidateReporter * reporter);
|
||||||
|
GstValidateReport * gst_validate_reporter_get_report (GstValidateReporter *reporter,
|
||||||
|
GstValidateIssueId issue_id);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
#endif /* _GST_VALIDATE_REPORTER_ */
|
#endif /* _GST_VALIDATE_REPORTER_ */
|
||||||
|
|
Loading…
Reference in a new issue