[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:7279] チケット #237
- X-ml-count: 7288
- Subject: Re: [MD:7279] チケット #237
- From: yamazaki-k@xxxxxxxxxxxxxxxxx
- Date: Mon, 24 Apr 2006 23:52:56 +0900 (JST)
- X-mailer: Mew version 5.0.50 on Emacs 22.0.50 (i386-mingw-nt5.1.2600) / Mule 5.0 (賢木) / Meadow 3.00-dev (菊)
やまざきです。
Date: Mon, 24 Apr 2006 18:48:03 +0900 (JST)
From: Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxx>
Subject: Re: [MD:7279] チケット #237
>
> 白井です。
>
> やまざきさん、解説ありがとうございます。
> 藤井さんもサンキューです。
>
> ところで、今気付いたのですが、exclusion-01.patch に三箇所ほどある
>
> 『#ifdef MEAODW』
>
> は "MEADOW" ですよね :-)
はい、そうです。
# かなり、なさけないです。orz
一応その3箇所の影響ですが、
- free_glyphs ()の2箇所は、
* 呼び元のFdelete_frame ()の方で排他がかかっているので、問題ないと思います。
* もうひとつのcheck_glyph_memory ()の方も、emacs終了時にだけ呼ばれるようなので
多分影響がないと思います。
- free_window_matrices ()の1箇所は、排他をかけたまま解除しない状態に
なっていて、前のメールで書いたwindow.cのad-hocな対処の原因と思います。
これを直せば、window.cへのパッチは必要なくなると思いますが、
逆に言うと、これによって排他区間が長くなっていたため、問題が
発生しなくなっていた可能性があるので、もう少しテストする必要が
あるのかもしれません。
> って、よくよく見たら dispnew.c にもとから "MEAODW" があったん
> だ。。。うーーむ。なんてこったい。
もとからあったadjust_glyphsの方のifdefを有効にすると、
手元では起動時にadjust_glyphsのGET_FRAME_HDCで落ちてしまいます。
redisplay_internal@xxxxxxxに、adjust_glyphs (NULL);と
引数をNULLで呼び出す場合があり、このとき、GET_FRAME_HDC内の
FRAME_MW32_PでNULLアクセスして落ちているようです。
adjust_glyphsではなく、adjust_frame_glyphsの方で排他をかけるのかなと。
一応この部分のパッチです。
Index: dispnew.c
===================================================================
--- dispnew.c (revision 4060)
+++ dispnew.c (working copy)
@@ -2093,9 +2087,7 @@
/* Block input so that expose events and other events that access
glyph matrices are not processed while we are changing them. */
BLOCK_INPUT;
-#ifdef MEAODW
- GET_FRAME_HDC (f);
-#endif
+
if (f)
adjust_frame_glyphs (f);
else
@@ -2106,9 +2098,6 @@
adjust_frame_glyphs (XFRAME (lisp_frame));
}
-#ifdef MEAODW
- RELEASE_FRAME_HDC (f);
-#endif
UNBLOCK_INPUT;
}
@@ -2155,6 +2144,10 @@
adjust_frame_glyphs (f)
struct frame *f;
{
+#ifdef MEADOW
+ GET_FRAME_HDC (f);
+#endif
+
if (FRAME_WINDOW_P (f))
adjust_frame_glyphs_for_window_redisplay (f);
else
@@ -2166,6 +2159,10 @@
adjust_decode_mode_spec_buffer (f);
f->glyphs_initialized_p = 1;
+
+#ifdef MEADOW
+ RELEASE_FRAME_HDC (f);
+#endif
}
> 特に反対意見が無ければ、将来的にどうするかは別として、現状めちゃ
> くちゃ不安定な環境がありうるので、上記の MEAODW を直して実験した
> 後、コミットしちゃおうと思うのですが、どうでしょうか。
>
> --
> 白井秀行 (mailto:shirai@xxxxxxxxxxx)
--
yamazaki-k(at)mwe.biglobe.ne.jp