static void
_ecore_thread_worker_free(Ecore_Pthread_Worker *worker)
{
+ LKD(worker->cancel_mutex);
+ CDD(worker->cond);
+ LKD(worker->mutex);
+
if (_ecore_thread_worker_count > (_ecore_thread_count_max + 1) * 16)
{
free(worker);
if (work->u.feedback_run.direct_worker)
_ecore_thread_worker_free(work->u.feedback_run.direct_worker);
}
- CDD(work->cond);
- LKD(work->mutex);
if (work->hash)
eina_hash_free(work->hash);
_ecore_thread_worker_free(work);
work->no_queue = EINA_FALSE;
work->kill = EINA_FALSE;
work->hash = NULL;
- LKI(work->cancel_mutex);
LKI(work->mutex);
CDI(work->cond, work->mutex);
work->kill = EINA_FALSE;
work->no_queue = EINA_FALSE;
work->hash = NULL;
- LKI(work->cancel_mutex);
- LKI(work->mutex);
- CDI(work->cond, work->mutex);
ecore_main_loop_thread_safe_call_async(_ecore_thread_handler, work);
if (!result) result = malloc(sizeof (Ecore_Pthread_Worker));
else _ecore_thread_worker_count--;
+ LKI(result->cancel_mutex);
+ LKI(result->mutex);
+ CDI(result->cond, result->mutex);
+
return result;
#else
return malloc(sizeof (Ecore_Pthread_Worker));
work->data = data;
#ifdef EFL_HAVE_THREADS
- LKI(work->cancel_mutex);
-
work->self = 0;
work->hash = NULL;
- LKI(work->mutex);
- CDI(work->cond, work->mutex);
LKL(_ecore_pending_job_threads_mutex);
_ecore_pending_job_threads = eina_list_append(_ecore_pending_job_threads, work);
worker->u.feedback_run.func_heavy = func_heavy;
worker->u.feedback_run.func_notify = func_notify;
worker->hash = NULL;
- LKI(worker->mutex);
- CDI(worker->cond, worker->mutex);
worker->func_cancel = func_cancel;
worker->func_end = func_end;
worker->data = data;
- LKI(worker->cancel_mutex);
worker->cancel = EINA_FALSE;
worker->message_run = EINA_FALSE;
worker->feedback_run = EINA_TRUE;
worker->func_cancel = func_cancel;
worker->func_end = func_end;
worker->hash = NULL;
- LKI(worker->mutex);
- CDI(worker->cond, worker->mutex);
worker->data = data;
- LKI(worker->cancel_mutex);
worker->cancel = EINA_FALSE;
worker->message_run = EINA_TRUE;
worker->feedback_run = EINA_FALSE;