aboutsummaryrefslogtreecommitdiffstats
path: root/epan/register.c
diff options
context:
space:
mode:
authorAnders Broman <a.broman58@gmail.com>2018-04-10 02:24:46 +0000
committerAnders Broman <a.broman58@gmail.com>2018-04-10 03:40:49 +0000
commit18f2b9fd2a9d18f43de4e78ba462ed7d8ed0961d (patch)
tree24bd28f5544ba635def635224a838a47b674d60c /epan/register.c
parent9d49b1258f423194017bc33c772cf720dfa1a354 (diff)
Revert "Don't use static GMutexes."
This reverts commit ba3f29b62fcb362b5385b7e35691f0c466d811fd. Our minimum Glib level now supports this. Change-Id: I55a783b7aaa1ebfce8f2870d0c24768029ced39e Reviewed-on: https://code.wireshark.org/review/26838 Petri-Dish: Anders Broman <a.broman58@gmail.com> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/register.c')
-rw-r--r--epan/register.c28
1 files changed, 7 insertions, 21 deletions
diff --git a/epan/register.c b/epan/register.c
index 8e54c8c76c..a4f0e09046 100644
--- a/epan/register.c
+++ b/epan/register.c
@@ -18,15 +18,15 @@
static const char *cur_cb_name = NULL;
// We could use g_atomic_pointer_set/get instead of a mutex, but that's
// currently (early 2018) invisible to TSAN.
-static GMutex *cur_cb_name_mtx;
+static GMutex cur_cb_name_mtx;
static GAsyncQueue *register_cb_done_q;
#define CB_WAIT_TIME (150 * 1000) // microseconds
static void set_cb_name(const char *proto) {
- g_mutex_lock(cur_cb_name_mtx);
+ g_mutex_lock(&cur_cb_name_mtx);
cur_cb_name = proto;
- g_mutex_unlock(cur_cb_name_mtx);
+ g_mutex_unlock(&cur_cb_name_mtx);
}
static void *
@@ -49,18 +49,11 @@ register_all_protocols(register_cb cb, gpointer cb_data)
gboolean called_back = FALSE;
GThread *rapw_thread;
-#if GLIB_CHECK_VERSION(2,32,0)
- cur_cb_name_mtx = (GMutex *)g_malloc(sizeof(GMutex));
- g_mutex_init(cur_cb_name_mtx);
-#else
- cur_cb_name_mtx = g_mutex_new();
-#endif
-
rapw_thread = g_thread_new("register_all_protocols_worker", &register_all_protocols_worker, NULL);
while (!g_async_queue_timeout_pop(register_cb_done_q, CB_WAIT_TIME)) {
- g_mutex_lock(cur_cb_name_mtx);
+ g_mutex_lock(&cur_cb_name_mtx);
cb_name = cur_cb_name;
- g_mutex_unlock(cur_cb_name_mtx);
+ g_mutex_unlock(&cur_cb_name_mtx);
if (cb && cb_name) {
cb(RA_REGISTER, cb_name, cb_data);
called_back = TRUE;
@@ -94,9 +87,9 @@ register_all_protocol_handoffs(register_cb cb, gpointer cb_data)
raphw_thread = g_thread_new("register_all_protocol_handoffs_worker", &register_all_protocol_handoffs_worker, NULL);
while (!g_async_queue_timeout_pop(register_cb_done_q, CB_WAIT_TIME)) {
- g_mutex_lock(cur_cb_name_mtx);
+ g_mutex_lock(&cur_cb_name_mtx);
cb_name = cur_cb_name;
- g_mutex_unlock(cur_cb_name_mtx);
+ g_mutex_unlock(&cur_cb_name_mtx);
if (cb && cb_name) {
cb(RA_HANDOFF, cb_name, cb_data);
called_back = TRUE;
@@ -107,13 +100,6 @@ register_all_protocol_handoffs(register_cb cb, gpointer cb_data)
cb(RA_HANDOFF, "finished", cb_data);
}
g_async_queue_unref(register_cb_done_q);
-
-#if GLIB_CHECK_VERSION(2,32,0)
- g_free(cur_cb_name_mtx);
-#else
- g_mutex_free(cur_cb_name_mtx);
-#endif
- cur_cb_name_mtx = NULL;
}
gulong register_count(void)