Mercurial > emacs
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 |
