emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/xdisp.c


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/src/xdisp.c
Date: Thu, 29 Aug 2002 10:41:09 -0400

Index: emacs/src/xdisp.c
diff -c emacs/src/xdisp.c:1.778 emacs/src/xdisp.c:1.779
*** emacs/src/xdisp.c:1.778     Mon Aug 26 20:59:55 2002
--- emacs/src/xdisp.c   Thu Aug 29 10:41:09 2002
***************
*** 706,714 ****
  
  int redisplaying_p;
  
! /* Non-zero while redisplay is updating the display.  */
  
! int redisplay_updating_p;
  
  
  /* Function prototypes.  */
--- 706,717 ----
  
  int redisplaying_p;
  
! /* Non-zero means don't free realized faces.  Bound while freeing
!    realized faces is dangerous because glyph matrices might still
!    reference them.  */
  
! int inhibit_free_realized_faces;
! Lisp_Object Qinhibit_free_realized_faces;
  
  
  /* Function prototypes.  */
***************
*** 1524,1530 ****
       free realized faces now because they depend on face definitions
       that might have changed.  Don't free faces while there might be 
       desired matrices pending which reference these faces.  */
!   if (face_change_count && !redisplay_updating_p)
      {
        face_change_count = 0;
        free_all_realized_faces (Qnil);
--- 1527,1533 ----
       free realized faces now because they depend on face definitions
       that might have changed.  Don't free faces while there might be 
       desired matrices pending which reference these faces.  */
!   if (face_change_count && !inhibit_free_realized_faces)
      {
        face_change_count = 0;
        free_all_realized_faces (Qnil);
***************
*** 8522,8532 ****
    count = SPECPDL_INDEX ();
    record_unwind_protect (unwind_redisplay, make_number (redisplaying_p));
    ++redisplaying_p;
  
   retry:
    pause = 0;
    reconsider_clip_changes (w, current_buffer);
-   redisplay_updating_p = 0;
  
    /* If new fonts have been loaded that make a glyph matrix adjustment
       necessary, do it.  */
--- 8525,8535 ----
    count = SPECPDL_INDEX ();
    record_unwind_protect (unwind_redisplay, make_number (redisplaying_p));
    ++redisplaying_p;
+   specbind (Qinhibit_free_realized_faces, Qnil);
  
   retry:
    pause = 0;
    reconsider_clip_changes (w, current_buffer);
  
    /* If new fonts have been loaded that make a glyph matrix adjustment
       necessary, do it.  */
***************
*** 9014,9022 ****
                                 redisplay_window_error);
  
        /* Compare desired and current matrices, perform output.  */
-     update:
-       redisplay_updating_p = 1;
        
        /* If fonts changed, display again.  */
        if (fonts_changed_p)
        goto retry;
--- 9017,9024 ----
                                 redisplay_window_error);
  
        /* Compare desired and current matrices, perform output.  */
        
+     update:
        /* If fonts changed, display again.  */
        if (fonts_changed_p)
        goto retry;
***************
*** 9142,9148 ****
      goto retry;
  
   end_of_redisplay:
-   redisplay_updating_p = 0;
    unbind_to (count, Qnil);
  }
  
--- 9144,9149 ----
***************
*** 9180,9193 ****
  /* Function registered with record_unwind_protect in
     redisplay_internal.  Reset redisplaying_p to the value it had
     before redisplay_internal was called, and clear
!    redisplay_updating_p.  */
  
  static Lisp_Object
  unwind_redisplay (old_redisplaying_p)
       Lisp_Object old_redisplaying_p;
  {
    redisplaying_p = XFASTINT (old_redisplaying_p);
-   redisplay_updating_p = 0;
    return Qnil;
  }
  
--- 9181,9193 ----
  /* Function registered with record_unwind_protect in
     redisplay_internal.  Reset redisplaying_p to the value it had
     before redisplay_internal was called, and clear
!    prevent_freeing_realized_faces_p.  */
  
  static Lisp_Object
  unwind_redisplay (old_redisplaying_p)
       Lisp_Object old_redisplaying_p;
  {
    redisplaying_p = XFASTINT (old_redisplaying_p);
    return Qnil;
  }
  
***************
*** 15307,15312 ****
--- 15307,15314 ----
    staticpro (&Qobject);
    Qrisky_local_variable = intern ("risky-local-variable");
    staticpro (&Qrisky_local_variable);
+   Qinhibit_free_realized_faces = intern ("inhibit-free-realized-faces");
+   staticpro (&Qinhibit_free_realized_faces);
  
    list_of_error = Fcons (intern ("error"), Qnil);
    staticpro (&list_of_error);
***************
*** 15568,15573 ****
--- 15570,15579 ----
    DEFVAR_BOOL ("inhibit-eval-during-redisplay", 
&inhibit_eval_during_redisplay,
      doc: /* Non-nil means don't eval Lisp during redisplay.  */);
    inhibit_eval_during_redisplay = 0;
+ 
+   DEFVAR_BOOL ("inhibit-free-realized-faces", &inhibit_free_realized_faces,
+     doc: /* Non-nil means don't free realized faces.  Internal use only.  */);
+   inhibit_free_realized_faces = 0;
  
  #if GLYPH_DEBUG
    DEFVAR_BOOL ("inhibit-try-window-id", &inhibit_try_window_id,




reply via email to

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