Looks good to me. At least on llvmpipe rasterizer threads we don't want to handle any signal, and I agree it will be so in the general case.
Jose ----- Original Message ----- > From: Dave Airlie <airl...@redhat.com> > > I'm hard pressed to think of any reason a gallium thread would want > to > receive a signal, especially considering its probably loaded as a > library > and you don't want the threads interfering with the main threads > signal > handling. > > This solves a problem loading llvmpipe into the X server for AIGLX, > where the X server relies on the SIGIO signal going to the main > thread, > but once llvmpipe loads the SIGIO can end up in any of its threads. > > Signed-off-by: Dave Airlie <airl...@redhat.com> > --- > src/gallium/auxiliary/os/os_thread.h | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/src/gallium/auxiliary/os/os_thread.h > b/src/gallium/auxiliary/os/os_thread.h > index 8173d4c..6b4281a 100644 > --- a/src/gallium/auxiliary/os/os_thread.h > +++ b/src/gallium/auxiliary/os/os_thread.h > @@ -56,7 +56,14 @@ typedef pthread_t pipe_thread; > static INLINE pipe_thread pipe_thread_create( void *(* routine)( > void *), void *param ) > { > pipe_thread thread; > - if (pthread_create( &thread, NULL, routine, param )) > + sigset_t saved_set, new_set; > + int ret; > + > + sigfillset(&new_set); > + pthread_sigmask(SIG_SETMASK, &new_set, &saved_set); > + ret = pthread_create( &thread, NULL, routine, param ); > + pthread_sigmask(SIG_SETMASK, &saved_set, NULL); > + if (ret) > return 0; > return thread; > } > -- > 1.7.4.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev