]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/frame.h (SET_FRAME_VISIBLE): Keep frame_garbaged up to date.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 20 Mar 2014 14:09:37 +0000 (10:09 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 20 Mar 2014 14:09:37 +0000 (10:09 -0400)
* src/xterm.c (handle_one_xevent) <MapNotify>: Don't garbage the frame.
* src/frame.c (frame_garbaged): Make "docstring" more precise.

src/ChangeLog
src/alloc.c
src/frame.c
src/frame.h
src/term.c
src/xdisp.c
src/xterm.c

index 3256a92e37a392b4daba5d0b8213fb02cd1f9349..93d1ba247b1c45cc773d974c916659165798b6de 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-20  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * frame.h (SET_FRAME_VISIBLE): Keep frame_garbaged up to date.
+       * xterm.c (handle_one_xevent) <MapNotify>: Don't garbage the frame.
+       * frame.c (frame_garbaged): Make "docstring" more precise.
+
 2014-03-20  Glenn Morris  <rgm@gnu.org>
 
        * charset.c (init_charset): When we cannot find the charsets directory,
@@ -74,8 +80,8 @@
        we eventually back up the iterator to the wrap point.  This avoids
        delusional behavior of move_it_to, whereby it proceeds to the next
        display line, but sets current_x to zero for all the glyphs that
-       without word-wrap would fit on the previous display line.  One
-       result was that visual-order cursor movement behaved erratically
+       without word-wrap would fit on the previous display line.
+       One result was that visual-order cursor movement behaved erratically
        under word-wrap.
        (Fmove_point_visually): Add code to find the x coordinate of the
        last character before wrap point, under word-wrap on a TTY.
        SSDATA (Vx_resource_name), which may be changed from Lisp.
        (xim_close_display): For XUnregisterIMInstantiateCallback,
        always eassert return value and pass exactly the same values
-       as were used for XRegisterIMInstantiateCallback.  Otherwise
-       XUnregisterIMInstantiateCallback will always fail.  See Xlib
+       as were used for XRegisterIMInstantiateCallback.
+       Otherwise XUnregisterIMInstantiateCallback will always fail.  See Xlib
        sources to check why if you are interested.
 
 2014-03-05  Martin Rudalics  <rudalics@gmx.at>
index 7c671e25cfcff94351f2db8cc357b1811d405df0..62c3beec1d2a37ab80dc01efe53a7eaa444f8535 100644 (file)
@@ -1138,8 +1138,8 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
     }
 
   abase = ABLOCK_ABASE (free_ablock);
-  ABLOCKS_BUSY (abase) =
-    (struct ablocks *) (2 + (intptr_t) ABLOCKS_BUSY (abase));
+  ABLOCKS_BUSY (abase)
+    (struct ablocks *) (2 + (intptr_t) ABLOCKS_BUSY (abase));
   val = free_ablock;
   free_ablock = free_ablock->x.next_free;
 
index 3d0c9d057c6b5612e652ef682094106ec463842c..055ce36ff4fb89eddbfb04a97cc5f3e9929bec5a 100644 (file)
@@ -125,8 +125,7 @@ Lisp_Object selected_frame;
 
 static struct frame *last_nonminibuf_frame;
 
-/* Nonzero means there is at least one garbaged frame.  */
-
+/* False means there are no visible garbaged frames.  */
 bool frame_garbaged;
 
 #ifdef HAVE_WINDOW_SYSTEM
@@ -621,7 +620,7 @@ make_terminal_frame (struct terminal *terminal)
   FRAME_MENU_BAR_LINES (f) = NILP (Vmenu_bar_mode) ? 0 : 1;
   FRAME_MENU_BAR_HEIGHT (f) = FRAME_MENU_BAR_LINES (f) * FRAME_LINE_HEIGHT (f);
 
-  /* Set the top frame to the newly created frame. */
+  /* Set the top frame to the newly created frame.  */
   if (FRAMEP (FRAME_TTY (f)->top_frame)
       && FRAME_LIVE_P (XFRAME (FRAME_TTY (f)->top_frame)))
     SET_FRAME_VISIBLE (XFRAME (FRAME_TTY (f)->top_frame), 2); /* obscured */
index 1230e97f04dea9621bed117c841bcc75d515bca2..62dc33511b55121dd1fa812c542fe0ab4dc296c8 100644 (file)
@@ -439,7 +439,7 @@ struct frame
   /* The baud rate that was used to calculate costs for this frame.  */
   int cost_calculation_baud_rate;
 
-  /* frame opacity
+  /* Frame opacity
      alpha[0]: alpha transparency of the active frame
      alpha[1]: alpha transparency of inactive frames
      Negative values mean not to change alpha.  */
@@ -453,7 +453,7 @@ struct frame
   /* Additional space to put between text lines on this frame.  */
   int extra_line_spacing;
 
-  /* All display backends seem to need these two pixel values. */
+  /* All display backends seem to need these two pixel values.  */
   unsigned long background_pixel;
   unsigned long foreground_pixel;
 };
@@ -946,6 +946,9 @@ default_pixels_per_inch_y (void)
       }                                                                \
   } while (false)
 
+/* False means there are no visible garbaged frames.  */
+extern bool frame_garbaged;
+
 /* Set visibility of frame F.
    We call redisplay_other_windows to make sure the frame gets redisplayed
    if some changes were applied to it while it wasn't visible (and hence
@@ -955,8 +958,13 @@ INLINE void
 SET_FRAME_VISIBLE (struct frame *f, int v)
 {
   eassert (0 <= v && v <= 2);
-  if (v == 1 && f->visible != 1)
-    redisplay_other_windows ();
+  if (v)
+    {
+      if (v == 1 && f->visible != 1)
+       redisplay_other_windows ();
+      if (FRAME_GARBAGED_P (f))
+       frame_garbaged = true;
+    }
   f->visible = v;
 }
 
@@ -972,9 +980,6 @@ extern Lisp_Object Qtty_color_mode;
 extern Lisp_Object Qterminal;
 extern Lisp_Object Qnoelisp;
 
-/* True means there is at least one garbaged frame.  */
-extern bool frame_garbaged;
-
 extern void set_menu_bar_lines (struct frame *, Lisp_Object, Lisp_Object);
 extern struct frame *decode_window_system_frame (Lisp_Object);
 extern struct frame *decode_live_frame (Lisp_Object);
index 61a8d39d971833f167483f137342c3d609385970..773e85faabcce14975eadcba901ad3c5ea6b5b3f 100644 (file)
@@ -3054,7 +3054,7 @@ free_saved_screen (struct glyph_matrix *saved)
   int i;
 
   if (!saved)
-    return;    /* already freed */
+    return;    /* Already freed!  */
 
   for (i = 0; i < saved->nrows; ++i)
     {
@@ -3170,7 +3170,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
   int statecount, x, y, i;
   bool leave, onepane;
   int result IF_LINT (= 0);
-  int title_faces[4];          /* face to display the menu title */
+  int title_faces[4];          /* Face to display the menu title.  */
   int faces[4], buffers_num_deleted = 0;
   struct frame *sf = SELECTED_FRAME ();
   struct tty_display_info *tty = FRAME_TTY (sf);
@@ -3332,7 +3332,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
                       have been opened.  That does not include an open and
                       active submenu.  */
                    if (i != statecount - 2
-                       || state[i].menu->submenu[dy] != state[i+1].menu)
+                       || state[i].menu->submenu[dy] != state[i + 1].menu)
                      while (i != statecount - 1)
                        {
                          statecount--;
@@ -3383,7 +3383,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
   screen_update (sf, state[0].screen_behind);
   while (statecount--)
     free_saved_screen (state[statecount].screen_behind);
-  tty_show_cursor (tty);       /* turn cursor back on */
+  tty_show_cursor (tty);       /* Turn cursor back on.  */
   fflush (tty->output);
 
 /* Clean up any mouse events that are waiting inside Emacs event queue.
@@ -3474,7 +3474,7 @@ tty_menu_last_menubar_item (struct frame *f)
            break;
          i += 4;
        }
-      i -= 4;  /* went one too far */
+      i -= 4;  /* Went one too far!  */
     }
   return i;
 }
@@ -3519,7 +3519,7 @@ tty_menu_new_item_coords (struct frame *f, int which, int *x, int *y)
                  if (i < last_i)
                    *x = XINT (AREF (items, i + 4 + 3));
                  else
-                   *x = 0;     /* wrap around to the first item */
+                   *x = 0;     /* Wrap around to the first item.  */
                }
              else if (prev_x < 0)
                {
@@ -3647,7 +3647,7 @@ tty_menu_show (struct frame *f, int x, int y, bool for_click, bool keymaps,
 
          if (!NILP (descrip))
            {
-             /* if alloca is fast, use that to make the space,
+             /* If alloca is fast, use that to make the space,
                 to reduce gc needs.  */
              item_data = (char *) alloca (maxwidth + SBYTES (descrip) + 1);
              memcpy (item_data, SSDATA (item_name), SBYTES (item_name));
@@ -3694,7 +3694,7 @@ tty_menu_show (struct frame *f, int x, int y, bool for_click, bool keymaps,
       uly = dispheight - height;
     }
 
-  if (FRAME_HAS_MINIBUF_P (f) && uly+height > dispheight - 2)
+  if (FRAME_HAS_MINIBUF_P (f) && uly + height > dispheight - 2)
     {
       /* Move the menu away of the echo area, to avoid overwriting the
         menu with help echo messages or vice versa.  */
@@ -3723,8 +3723,8 @@ tty_menu_show (struct frame *f, int x, int y, bool for_click, bool keymaps,
       /* If position was not given by a mouse click, adjust so upper left
          corner of the menu as a whole ends up at given coordinates.  This
          is what x-popup-menu says in its documentation.  */
-      x += width/2;
-      y += 1.5*height/(maxlines+2);
+      x += width / 2;
+      y += 1.5 * height / (maxlines + 2);
     }
 #endif
 
index b7821eb50487e10bd97cd19688a4877c66804fc8..6f39324d2f0b771dd8e683d7b81396b0780c8f2a 100644 (file)
@@ -27253,7 +27253,7 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
   if (/* If window is in the process of being destroyed, don't bother
         to do anything.  */
       w->current_matrix != NULL
-      /* Don't update mouse highlight if hidden */
+      /* Don't update mouse highlight if hidden */
       && (draw != DRAW_MOUSE_FACE || !hlinfo->mouse_face_hidden)
       /* Recognize when we are called to operate on rows that don't exist
         anymore.  This can happen when a window is split.  */
index 8ae26344f95b230ce5b7c97090273153c1f1820b..1136b67182236e051d30a4fa03a7d93eecb78c13 100644 (file)
@@ -5667,7 +5667,7 @@ static struct input_event *current_hold_quit;
 
 /* This is the filter function invoked by the GTK event loop.
    It is invoked before the XEvent is translated to a GdkEvent,
-   so we have a chance to act on the event before GTK. */
+   so we have a chance to act on the event before GTK.  */
 static GdkFilterReturn
 event_handler_gdk (GdkXEvent *gxev, GdkEvent *ev, gpointer data)
 {
@@ -5696,9 +5696,9 @@ event_handler_gdk (GdkXEvent *gxev, GdkEvent *ev, gpointer data)
       if (! dpyinfo)
         current_finish = X_EVENT_NORMAL;
       else
-       current_count +=
-         handle_one_xevent (dpyinfo, xev, &current_finish,
-                            current_hold_quit);
+       current_count
+         += handle_one_xevent (dpyinfo, xev, &current_finish,
+                               current_hold_quit);
     }
   else
     current_finish = x_dispatch_event (xev, xev->xany.display);
@@ -6142,14 +6142,6 @@ handle_one_xevent (struct x_display_info *dpyinfo,
       if (f)
         {
          bool iconified = FRAME_ICONIFIED_P (f);
-          /* wait_reading_process_output will notice this and update
-             the frame's display structures.
-             If we where iconified, we should not set garbaged,
-             because that stops redrawing on Expose events.  This looks
-             bad if we are called from a recursive event loop
-             (x_dispatch_event), for example when a dialog is up.  */
-          if (!iconified)
-            SET_FRAME_GARBAGED (f);
 
           /* Check if fullscreen was specified before we where mapped the
              first time, i.e. from the command line.  */
@@ -6700,7 +6692,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 
 #ifdef USE_GTK
           /* GTK creates windows but doesn't map them.
-             Only get real positions when mapped. */
+             Only get real positions when mapped.  */
           if (FRAME_GTK_OUTER_WIDGET (f)
               && gtk_widget_get_mapped (FRAME_GTK_OUTER_WIDGET (f)))
 #endif