if (pthread_join(pth->thread, (void **) &p) != 0)
return ;
+ eina_threads_shutdown();
+
_ecore_active_job_threads = eina_list_remove(_ecore_active_job_threads, pth);
ecore_event_add(ECORE_THREAD_PIPE_DEL, pth->p, _ecore_thread_pipe_free, NULL);
pth->p = ecore_pipe_add(_ecore_thread_handler, NULL);
if (!pth->p) goto on_error;
+ eina_threads_init();
+
if (pthread_create(&pth->thread, NULL, (void *) _ecore_thread_worker, pth) == 0)
return (Ecore_Thread *) work;
+ eina_threads_shutdown();
+
on_error:
if (pth)
{
work->func_cancel((void *) work->data);
free(work);
+ eina_threads_shutdown();
+
return EINA_TRUE;
}
}
work->func_cancel((void *) work->data);
free(work);
+ eina_threads_shutdown();
+
return EINA_TRUE;
}
}
pth->p = ecore_pipe_add(_ecore_thread_handler, NULL);
if (!pth->p) goto on_error;
+ eina_threads_init();
+
if (pthread_create(&pth->thread, NULL, (void *) _ecore_thread_worker, pth) == 0)
return (Ecore_Thread *) worker;
+ eina_threads_shutdown();
+
on_error:
if (pth)
{