[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:7199] r4033
- X-ml-count: 7235
- Subject: Re: [MD:7199] r4033
- From: Kyotaro HORIGUCHI <horiguti@xxxxxxxxxxx>
- Date: Wed, 01 Mar 2006 02:24:33 +0900 (JST)
- User-agent: Mew version 4.2.54 on Emacs 22.0 / Mule 5.0 (榊) / Meadow-3.00-dev (菊)
> > 今朝方、家を出る直前に落ちてしまいました。時間が無かったので、そ
> > のままサスペンドしてありますので、細かいレポートは後日。
> #0 fill_glyph_string (s=0x110f73a8, face_id=554362, start=9, end=38, overlaps=0) at xdisp.c:18569
うーん. 私の環境ではまったく発現しないので, すみませんがとりあえず
以下のパッチをあてて様子を見てもらえませんか? しらいさん.
これは x-show-tip 以外の部分で clear_glyph_matrix の上流で
GET/RELEASE_FRAME_HDC がかかっていなかったところを閉めてみたもので
す. x-show-tip の中でclear_glyph_matrix をやっているところではまだ
ウィンドウが表示されていない(=WM_PAINTは飛んでこない..と思ってる^^;)
ので外しています.
# また ifdef MEAODW が増えていく?
--
ほりぐちきょうたろう
Index: dispnew.c
===================================================================
--- dispnew.c (revision 4043)
+++ dispnew.c (working copy)
@@ -1019,6 +1019,9 @@
clear_current_matrices (f)
register struct frame *f;
{
+#ifdef MEADOW
+ GET_FRAME_HDC (f);
+#endif
/* Clear frame current matrix, if we have one. */
if (f->current_matrix)
clear_glyph_matrix (f->current_matrix);
@@ -1036,6 +1039,9 @@
/* Clear current window matrices. */
xassert (WINDOWP (FRAME_ROOT_WINDOW (f)));
clear_window_matrices (XWINDOW (FRAME_ROOT_WINDOW (f)), 0);
+#ifdef MEADOW
+ RELEASE_FRAME_HDC (f);
+#endif
}
@@ -1045,6 +1051,9 @@
clear_desired_matrices (f)
register struct frame *f;
{
+#ifdef MEADOW
+ GET_FRAME_HDC (f);
+#endif
if (f->desired_matrix)
clear_glyph_matrix (f->desired_matrix);
@@ -1057,6 +1066,9 @@
/* Do it for window matrices. */
xassert (WINDOWP (FRAME_ROOT_WINDOW (f)));
clear_window_matrices (XWINDOW (FRAME_ROOT_WINDOW (f)), 1);
+#ifdef MEADOW
+ RELEASE_FRAME_HDC (f);
+#endif
}
Index: xdisp.c
===================================================================
--- xdisp.c (revision 4043)
+++ xdisp.c (working copy)
@@ -8007,7 +8007,13 @@
SET_TEXT_POS_FROM_MARKER (start, w->start);
/* Display. */
+#ifdef MEADOW
+ GET_FRAME_HDC (WINDOW_XFRAME (w));
+#endif
clear_glyph_matrix (w->desired_matrix);
+#ifdef MEADOW
+ RELEASE_FRAME_HDC (WINDOW_XFRAME (w));
+#endif
XSETWINDOW (window, w);
try_window (window, start, 0);
@@ -9667,7 +9673,13 @@
int old_height = WINDOW_TOTAL_LINES (w);
XSETFRAME (frame, f);
+#ifdef MEADOW
+ GET_FRAME_HDC (f);
+#endif
clear_glyph_matrix (w->desired_matrix);
+#ifdef MEADOW
+ RELEASE_FRAME_HDC (f);
+#endif
Fmodify_frame_parameters (frame,
Fcons (Fcons (Qtool_bar_lines,
make_number (nlines)),
@@ -11472,8 +11484,14 @@
redisplay_window_0 (window)
Lisp_Object window;
{
+#ifdef MEADOW
+ GET_FRAME_HDC (WINDOW_XFRAME (XWINDOW (window)));
+#endif
if (displayed_buffer->display_error_modiff < BUF_MODIFF (displayed_buffer))
redisplay_window (window, 0);
+#ifdef MEADOW
+ RELEASE_FRAME_HDC (WINDOW_XFRAME (XWINDOW (window)));
+#endif
return Qnil;
}
=====