[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:7046] MW32_update_begin でデッドロック



やっぱり W32_BLOCK_INPUTですね. W32_BLOCK_SELF_INPUT_P が効かない
のか.. それとも第三のスレッドが W32_BLOCK_INPUTしてるのか..

 以下のパッチも試してみてもらえませんか? (W32_BLOCK_INPUT NOP化で
す.)

# すみません. 手元でなかなか固まらないもんで. その代わり描画がされ
# なくなることがある. hdc_refcount が正しく戻らないときがあるらし
# い.

Index: mw32sync.h
===================================================================
--- mw32sync.h	(revision 3987)
+++ mw32sync.h	(working copy)
@@ -8,19 +8,23 @@
 extern HANDLE keyboard_handle;
 extern HANDLE interrupt_handle;
 
-#define W32_BLOCK_INPUT				\
-do {						\
-  EnterCriticalSection(&critsec_message);	\
-  block_input_ownthread = GetCurrentThreadId ();\
-} while (0);
-#define W32_UNBLOCK_INPUT			\
-do {						\
-  block_input_ownthread = 0;			\
-  LeaveCriticalSection(&critsec_message);	\
-} while (0);
-#define W32_SELF_INPUT_BLOCKED_P \
-(block_input_ownthread == GetCurrentThreadId ())
+#define W32_BLOCK_INPUT
+#define W32_UNBLOCK_INPUT
+#define W32_SELF_INPUT_BLOCKED_P FALSE
 
+//#define W32_BLOCK_INPUT				\
+//do {						\
+//  EnterCriticalSection(&critsec_message);	\
+//  block_input_ownthread = GetCurrentThreadId ();\
+//} while (0);
+//#define W32_UNBLOCK_INPUT			\
+//do {						\
+//  block_input_ownthread = 0;			\
+//  LeaveCriticalSection(&critsec_message);	\
+//} while (0);
+//#define W32_SELF_INPUT_BLOCKED_P \
+//(block_input_ownthread == GetCurrentThreadId ())
+
 #define W32_BLOCK_EVENT EnterCriticalSection(&critsec_access_event)
 #define W32_UNBLOCK_EVENT LeaveCriticalSection(&critsec_access_event)
 
-- 
ほりぐちきょうたろう