From 82b73713cb397e374721440d1941c970d7b71719 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Thu, 19 Mar 2015 14:04:28 +0100 Subject: [PATCH] dtls: Pass the connection instance as data to the thread pool No need to ref/unref the connection every time we push something on the pool. However we have to provide non-NULL data to the pool, so let's just give it some coffee. --- ext/dtls/gstdtlsconnection.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ext/dtls/gstdtlsconnection.c b/ext/dtls/gstdtlsconnection.c index 3d3f3d5..0d6d827 100644 --- a/ext/dtls/gstdtlsconnection.c +++ b/ext/dtls/gstdtlsconnection.c @@ -186,7 +186,7 @@ gst_dtls_connection_init (GstDtlsConnection * self) /* Thread pool for handling timeouts, we only need one thread for that * really and share threads with all other thread pools around there as * this is not going to happen very often */ - priv->thread_pool = g_thread_pool_new (handle_timeout, NULL, 1, FALSE, NULL); + priv->thread_pool = g_thread_pool_new (handle_timeout, self, 1, FALSE, NULL); g_assert (priv->thread_pool); priv->timeout_pending = FALSE; } @@ -294,7 +294,7 @@ gst_dtls_connection_start (GstDtlsConnection * self, gboolean is_client) static void handle_timeout (gpointer data, gpointer user_data) { - GstDtlsConnection *self = data; + GstDtlsConnection *self = user_data; GstDtlsConnectionPrivate *priv; gint ret; @@ -317,7 +317,6 @@ handle_timeout (gpointer data, gpointer user_data) } } g_mutex_unlock (&priv->mutex); - g_object_unref (self); } static gboolean @@ -331,7 +330,8 @@ schedule_timeout_handling (GstClock * clock, GstClockTime time, GstClockID id, self->priv->timeout_pending = TRUE; GST_TRACE_OBJECT (self, "Schedule timeout now"); - g_thread_pool_push (self->priv->thread_pool, g_object_ref (self), NULL); + g_thread_pool_push (self->priv->thread_pool, GINT_TO_POINTER (0xc0ffee), + NULL); } g_mutex_unlock (&self->priv->mutex); @@ -370,7 +370,8 @@ gst_dtls_connection_check_timeout_locked (GstDtlsConnection * self) self->priv->timeout_pending = TRUE; GST_TRACE_OBJECT (self, "Schedule timeout now"); - g_thread_pool_push (self->priv->thread_pool, g_object_ref (self), NULL); + g_thread_pool_push (self->priv->thread_pool, GINT_TO_POINTER (0xc0ffee), + NULL); } } } else { -- 2.7.4