summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2015-03-19 14:04:28 +0100
committerSebastian Dröge <sebastian@centricular.com>2015-03-19 14:04:28 +0100
commit82b73713cb397e374721440d1941c970d7b71719 (patch)
tree265ece65c081fbb95b7073faf528fa906d588708
parent602b1ca3d273e679476d8ee32083c1678e7be211 (diff)
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.
-rw-r--r--ext/dtls/gstdtlsconnection.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/dtls/gstdtlsconnection.c b/ext/dtls/gstdtlsconnection.c
index 3d3f3d5f0..0d6d8270f 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 {