changeset 19696:dc5e4b1ce93c

(FRAME_OBSCURED_P): New macro. (FRAME_SAMPLE_VISIBILITY): Distinguish between invisible and obscured.
author Geoff Voelker <voelker@cs.washington.edu>
date Wed, 03 Sep 1997 00:30:51 +0000
parents d28bbba0fcd0
children 944b7470b2a2
files src/frame.h
diffstat 1 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/frame.h	Wed Sep 03 00:30:24 1997 +0000
+++ b/src/frame.h	Wed Sep 03 00:30:51 1997 +0000
@@ -214,6 +214,14 @@
      frame becomes visible again, it must be marked as garbaged.  The
      FRAME_SAMPLE_VISIBILITY macro takes care of this.
 
+     On Windows NT/9X, to avoid wasting effort updating visible frames
+     that are actually completely obscured by other windows on the
+     display, we bend the meaning of visible slightly: if greater than
+     1, then the frame is obscured - we still consider it to be
+     "visible" as seen from lisp, but we don't bother updating it.  We
+     must take care to garbage the frame when it ceaces to be obscured
+     though.  Note that these semantics are only used on NT/9X.
+
      iconified is nonzero if the frame is currently iconified.
 
      Asynchronous input handlers should NOT change these directly;
@@ -353,6 +361,7 @@
 #define FRAME_CURSOR_X(f) (f)->cursor_x
 #define FRAME_CURSOR_Y(f) (f)->cursor_y
 #define FRAME_VISIBLE_P(f) ((f)->visible != 0)
+#define FRAME_OBSCURED_P(f) ((f)->visible > 1)
 #define FRAME_SET_VISIBLE(f,p) \
   ((f)->async_visible = (p), FRAME_SAMPLE_VISIBILITY (f))
 #define SET_FRAME_GARBAGED(f) (frame_garbaged = 1, f->garbaged = 1)
@@ -429,7 +438,8 @@
    it must be marked as garbaged, since redisplay hasn't been keeping
    up its contents.  */
 #define FRAME_SAMPLE_VISIBILITY(f) \
-  (((f)->async_visible && ! (f)->visible) ? SET_FRAME_GARBAGED (f) : 0, \
+  (((f)->async_visible && (f)->visible != (f)->async_visible) ? \
+   SET_FRAME_GARBAGED (f) : 0, \
    (f)->visible = (f)->async_visible, \
    (f)->iconified = (f)->async_iconified)