SCREEN_PTR selected_screen;
+/* A screen which is not just a minibuffer, or 0 if there are no such
+ screens. This is usually the most recent such screen that was
+ selected. In a single-screen version, this variable always remains 0. */
+SCREEN_PTR last_nonminibuf_screen;
+
/* In a single-screen version, the information that would otherwise
- exist inside a `struct screen' lives in the following variables instead. */
+ exist inside screen objects lives in the following structure instead. */
#ifndef MULTI_SCREEN
-
-/* Desired terminal cursor position (to show position of point),
- origin zero */
-
-int cursX, cursY;
-
-/* Description of current screen contents */
-
-struct screen_glyphs *current_glyphs;
-
-/* Description of desired screen contents */
-
-struct screen_glyphs *desired_glyphs;
-
-#endif /* not MULTI_SCREEN */
+struct screen the_only_screen;
+#endif
/* This is a vector, made larger whenever it isn't large enough,
which is used inside `update_screen' to hold the old contents
int in_display; /* 1 if in redisplay: can't handle SIGWINCH now. */
int delayed_size_change; /* 1 means SIGWINCH happened when not safe. */
-int delayed_screen_height; /* Remembered new screen height. */
-int delayed_screen_width; /* Remembered new screen width. */
\f
#ifdef MULTI_SCREEN
struct window *w;
{
register int vpos;
- register SCREEN_PTR screen = XSCREEN (w->screen);
- register struct screen_glyphs *desired_glyphs = screen->desired_glyphs;
+ register struct screen_glyphs *desired_glyphs =
+ SCREEN_DESIRED_GLYPHS (XSCREEN (w->screen));
register int start = XFASTINT (w->left);
register int bot = XFASTINT (w->top) + XFASTINT (w->height);
#endif /* HAVE_X_WINDOWS */
}
+#ifdef HAVE_X_WINDOWS
if (SCREEN_IS_X (s))
downto += LINE_HEIGHT(s, i);
+#endif
}
pause = (i < SCREEN_HEIGHT (s) - 1) ? i : 0;
{
Lisp_Object tail;
+ SCREEN_PTR s;
- for (tail = Vscreen_list; CONSP (tail); tail = XCONS (tail)->cdr)
+ FOR_EACH_SCREEN (tail, s)
{
- SCREEN_PTR s = XSCREEN (XCONS (tail)->car);
-
if (SCREEN_IS_TERMCAP (s))
{
++in_display;
while (delayed_size_change)
{
Lisp_Object tail;
+ SCREEN_PTR s;
delayed_size_change = 0;
- for (tail = Vscreen_list; CONSP (tail); tail = XCONS (tail)->cdr)
+ FOR_EACH_SCREEN (tail, s)
{
- SCREEN_PTR s = XSCREEN (XCONS (tail)->car);
int height = SCREEN_NEW_HEIGHT (s);
int width = SCREEN_NEW_WIDTH (s);