[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:2988] Meadow 1.99a1 - Access violation.
- X-ml-count: 2988
- Subject: [MD:2988] Meadow 1.99a1 - Access violation.
- From: Kyotaro HORIGUCHI <horiguchi.kyotaro@xxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 26 Feb 2002 15:58:05 +0900 (JST)
- User-agent: Mew version 3.0.50 on Emacs 20.7 / Mule 4.1 (葵) / Meadow-1.15pre1 (SHOUBU:63)
とりあえず(自分がやったことに関しては)何がおきているのかはわかり
ました.
自分に投げたメッセージ(WM_MULE_IMM...CONVERSION_WINDOW)を
mw32WndProc が拾う前に自分で拾って捨ててしまっていました;_;
そのせいで本当に待っているメッセージがこなくて固まっていました.
# この辺りの処理ではWindowsのメッセージの仕組みを使うのをやめたほ
# うが平和じゃないでしょうか. いらないメッセージを捨てるときにま
# ずいものを捨ててる可能性も出てくるし...
> 同じ(Windowsの)ウインドウに対して多重にこのPostMessageをやると固
> まるようなんですが, どうやってそれを防ぐかは私にはもっとちゃんと
自分自身のアクティブウィンドウにメッセージを投げそうになったとき
は直接関数を呼び出すようにしてみたらとりあえず動いています.
今までの修正は全部破棄して, これを当ててみたらどうなるか試してみ
てもらえないでしょうか.
Index: mw32term.c
===================================================================
RCS file: /usr/local/Meadow/cvsroot/Meadow/src/mw32term.c,v
retrieving revision 1.29
diff -u -r1.29 mw32term.c
--- mw32term.c 2002/02/20 16:18:24 1.29
+++ mw32term.c 2002/02/26 06:54:38
@@ -9187,12 +9187,25 @@
&& (XWINDOW (selected_window) == w)
&& (FRAME_MW32_DISPLAY_INFO (f)->mw32_highlight_frame == f))
{
- /* Maybe, we're in critsec, so use POST_INFORM_MESSAGE. */
- PostMessage (FRAME_MW32_WINDOW (f),
- WM_MULE_IMM_SET_CONVERSION_WINDOW,
- (WPARAM) WINDOW_TEXT_TO_FRAME_PIXEL_X (w, x),
- (LPARAM) WINDOW_TO_FRAME_PIXEL_Y (w, y));
+ if(GetActiveWindow() != FRAME_MW32_WINDOW (f))
+ {
+ MSG msg;
+
+ /* Maybe, we're in critsec, so use POST_INFORM_MESSAGE. */
+ PostMessage (FRAME_MW32_WINDOW (f),
+ WM_MULE_IMM_SET_CONVERSION_WINDOW,
+ (WPARAM) WINDOW_TEXT_TO_FRAME_PIXEL_X (w, x),
+ (LPARAM) WINDOW_TO_FRAME_PIXEL_Y (w, y));
+ WAIT_REPLY_MESSAGE (&msg, WM_MULE_IMM_SET_CONVERSION_WINDOW_REPLY);
+ }
+ else
+ {
+ mw32_set_ime_conv_window(FRAME_MW32_WINDOW (f),
+ WINDOW_TEXT_TO_FRAME_PIXEL_X (w, x),
+ WINDOW_TO_FRAME_PIXEL_Y (w, y));
+ }
}
+
#endif
}
--
ほりぐちきょうたろう