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

Re: [MD:7199] r4033



> > 今朝方、家を出る直前に落ちてしまいました。時間が無かったので、そ
> > のままサスペンドしてありますので、細かいレポートは後日。

> #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;
 }
=====