forked from enlightenment/efl
parent
df0c6f847c
commit
f3e4e0d7ed
|
@ -995,7 +995,12 @@ AC_CHECK_HEADER(pthread.h,
|
||||||
AC_CHECK_HEADER(sched.h,
|
AC_CHECK_HEADER(sched.h,
|
||||||
[
|
[
|
||||||
AC_CHECK_LIB(pthread, pthread_attr_setaffinity_np,
|
AC_CHECK_LIB(pthread, pthread_attr_setaffinity_np,
|
||||||
[ build_pthreads="yes" ],
|
[
|
||||||
|
AC_CHECK_LIB(pthread, pthread_barrier_wait,
|
||||||
|
[ build_pthreads="yes" ],
|
||||||
|
[ build_pthreads="no" ]
|
||||||
|
)
|
||||||
|
],
|
||||||
[ build_pthreads="no" ]
|
[ build_pthreads="no" ]
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
@ -1006,7 +1011,7 @@ AC_CHECK_HEADER(pthread.h,
|
||||||
)
|
)
|
||||||
### disable pthreads by default for now - some wierd deadlock issue with
|
### disable pthreads by default for now - some wierd deadlock issue with
|
||||||
# barriers (makes no sense)
|
# barriers (makes no sense)
|
||||||
build_pthreads="no"
|
#build_pthreads="no"
|
||||||
AC_MSG_CHECKING(whether to build pthread code)
|
AC_MSG_CHECKING(whether to build pthread code)
|
||||||
AC_ARG_ENABLE(pthreads,
|
AC_ARG_ENABLE(pthreads,
|
||||||
[ --enable-pthreads enable threaded rendering], [
|
[ --enable-pthreads enable threaded rendering], [
|
||||||
|
|
|
@ -132,6 +132,7 @@ evas_common_pipe_begin(RGBA_Image *im)
|
||||||
thread_num = cpunum;
|
thread_num = cpunum;
|
||||||
if (thread_num == 1) return;
|
if (thread_num == 1) return;
|
||||||
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
|
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
|
||||||
|
pthread_barrier_init(&(thbarrier[1]), NULL, thread_num + 1);
|
||||||
for (i = 0; i < thread_num; i++)
|
for (i = 0; i < thread_num; i++)
|
||||||
{
|
{
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
|
@ -179,9 +180,9 @@ evas_common_pipe_begin(RGBA_Image *im)
|
||||||
// printf("START %i\n", i);
|
// printf("START %i\n", i);
|
||||||
}
|
}
|
||||||
/* tell worker threads to start */
|
/* tell worker threads to start */
|
||||||
pthread_barrier_init(&(thbarrier[1]), NULL, thread_num + 1);
|
// pthread_barrier_init(&(thbarrier[1]), NULL, thread_num + 1);
|
||||||
pthread_barrier_wait(&(thbarrier[0]));
|
pthread_barrier_wait(&(thbarrier[0]));
|
||||||
pthread_barrier_destroy(&(thbarrier[0]));
|
// pthread_barrier_destroy(&(thbarrier[0]));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,9 +198,9 @@ evas_common_pipe_flush(RGBA_Image *im)
|
||||||
if (thread_num > 1)
|
if (thread_num > 1)
|
||||||
{
|
{
|
||||||
/* sync worker threads */
|
/* sync worker threads */
|
||||||
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
|
// pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
|
||||||
pthread_barrier_wait(&(thbarrier[1]));
|
pthread_barrier_wait(&(thbarrier[1]));
|
||||||
pthread_barrier_destroy(&(thbarrier[1]));
|
// pthread_barrier_destroy(&(thbarrier[1]));
|
||||||
// printf("DONE\n");
|
// printf("DONE\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue