/** * g_async_queue_push_sorted: * @queue: a #GAsyncQueue * @data: the @data to push into the @queue * @func: the #GCompareDataFunc is used to sort @queue. This function * is passed two elements of the @queue. The function should return * 0 if they are equal, a negative value if the first element * should be higher in the @queue or a positive value if the first * element should be lower in the @queue than the second element. * @user_data: user data passed to @func. * * Inserts @data into @queue using @func to determine the new * position. * * This function requires that the @queue is sorted before pushing on * new elements. * * This function will lock @queue before it sorts the queue and unlock * it when it is finished. * * For an example of @func see g_async_queue_sort(). * * Since: 2.10 **/ void g_async_queue_push_sorted (GAsyncQueue *queue, gpointer data, GCompareDataFunc func, gpointer user_data) { g_return_if_fail (queue != NULL); g_mutex_lock (queue->mutex); g_async_queue_push_sorted_unlocked (queue, data, func, user_data); g_mutex_unlock (queue->mutex); }
static void g_thread_pool_queue_push_unlocked (GRealThreadPool *pool, gpointer data) { if (pool->sort_func) g_async_queue_push_sorted_unlocked (pool->queue, data, pool->sort_func, pool->sort_user_data); else g_async_queue_push_unlocked (pool->queue, data); }