emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: Re: redisplay]


From: YAMAMOTO Mitsuharu
Subject: Re: address@hidden: Re: redisplay]
Date: Tue, 24 Apr 2007 10:10:09 +0900
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/22.0.98 (sparc-sun-solaris2.8) MULE/5.0 (SAKAKI)

>>>>> On Tue, 24 Apr 2007 07:50:17 +0900 (JST), YAMAMOTO Mitsuharu 
>>>>> <address@hidden> said:

> To make things work, expose_frame must correctly draw the contents
> most of the time.  But with the experiment of compositing windows, I
> observe that is not always the case even if !FRAME_GARBARGED_P(f) &&
> updated_window != NULL.

Sorry, I meant "if !FRAME_GARBAGED_P (f) && updated_window == NULL".

> I guess the problem with redrawing frames under dialog are related
> with the above issue and only GTK+-build users notice this because
> it clears the exposed area before calling expose_frame (compositing
> window on Mac also does so automatically).

Stephen, could try the following patch?  I don't think this is a right
fix, but at least we can check if we are sharing the same issue.

                                     YAMAMOTO Mitsuharu
                                address@hidden

Index: src/xdisp.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xdisp.c,v
retrieving revision 1.1148
diff -c -p -r1.1148 xdisp.c
*** src/xdisp.c 16 Apr 2007 15:12:24 -0000      1.1148
--- src/xdisp.c 24 Apr 2007 00:54:59 -0000
*************** expose_window (w, fr)
*** 23531,23542 ****
        /* Update lines intersecting rectangle R.  */
        first_overlapping_row = last_overlapping_row = NULL;
        for (row = w->current_matrix->rows;
!          row->enabled_p;
           ++row)
        {
          int y0 = row->y;
          int y1 = MATRIX_ROW_BOTTOM_Y (row);
  
          if ((y0 >= r.y && y0 < r.y + r.height)
              || (y1 > r.y && y1 < r.y + r.height)
              || (r.y >= y0 && r.y < y1)
--- 23531,23545 ----
        /* Update lines intersecting rectangle R.  */
        first_overlapping_row = last_overlapping_row = NULL;
        for (row = w->current_matrix->rows;
!          row < w->current_matrix->rows + w->current_matrix->nrows;
           ++row)
        {
          int y0 = row->y;
          int y1 = MATRIX_ROW_BOTTOM_Y (row);
  
+         if (!row->enabled_p)
+           continue;
+ 
          if ((y0 >= r.y && y0 < r.y + r.height)
              || (y1 > r.y && y1 < r.y + r.height)
              || (r.y >= y0 && r.y < y1)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]