comparison src/alloc.c @ 72342:428ee64b35d5

* alloc.c (UNBLOCK_INPUT_ALLOC, BLOCK_INPUT_ALLOC): Use in_sighandler to check if mutex should be locked or not.
author Jan Dj?rv <jan.h.d@swipnet.se>
date Thu, 10 Aug 2006 06:09:30 +0000
parents 94e8cc9b752d
children 07b45e10e844 7f3f771c85fa
comparison
equal deleted inserted replaced
72341:111c88ecd861 72342:428ee64b35d5
128 static pthread_mutex_t alloc_mutex; 128 static pthread_mutex_t alloc_mutex;
129 129
130 #define BLOCK_INPUT_ALLOC \ 130 #define BLOCK_INPUT_ALLOC \
131 do \ 131 do \
132 { \ 132 { \
133 pthread_mutex_lock (&alloc_mutex); \ 133 if (!in_sighandler) \
134 if (pthread_self () == main_thread) \ 134 { \
135 BLOCK_INPUT; \ 135 pthread_mutex_lock (&alloc_mutex); \
136 if (pthread_self () == main_thread) \
137 BLOCK_INPUT; \
138 else \
139 sigblock (sigmask (SIGIO)); \
140 } \
136 } \ 141 } \
137 while (0) 142 while (0)
138 #define UNBLOCK_INPUT_ALLOC \ 143 #define UNBLOCK_INPUT_ALLOC \
139 do \ 144 do \
140 { \ 145 { \
141 if (pthread_self () == main_thread) \ 146 if (!in_sighandler) \
142 UNBLOCK_INPUT; \ 147 { \
143 pthread_mutex_unlock (&alloc_mutex); \ 148 pthread_mutex_unlock (&alloc_mutex); \
149 if (pthread_self () == main_thread) \
150 UNBLOCK_INPUT; \
151 else \
152 sigunblock (sigmask (SIGIO)); \
153 } \
144 } \ 154 } \
145 while (0) 155 while (0)
146 156
147 #else /* SYSTEM_MALLOC || not HAVE_GTK_AND_PTHREAD */ 157 #else /* SYSTEM_MALLOC || not HAVE_GTK_AND_PTHREAD */
148 158