Commit fa971ac3 authored by Karoly Lorentey's avatar Karoly Lorentey
Browse files

Got rid of the rif (window-based redisplay interface) global variable.

src/dispextern.h (PRODUCE_GLYPHS): Use the rif in IT->f, not the global rif.
(rif): Removed.

src/dispnew.c (rif): Removed.
(direct_output_for_insert, direct_output_forward_char, update_frame)
(redraw_overlapped_rows, redraw_overlapping_rows, update_window)
(update_marginal_area, update_text_area, update_window_line)
(set_window_cursor_after_update, scrolling_window): Use the rif of the
current frame, not the global rif.

src/fontset.c: #include termhooks.h, for FRAME_RIF.
(Finternal_char_font): Use the rif of the current frame.

src/frame.c (x_set_frame_parameters): Use the rif of the current frame.

src/keyboard.c (detect_input_pending_run_timers): Use the rif of the
current frame.

src/minibuf.c: #include termhooks.h, for FRAME_RIF.
(read_minibuf): Use the rif of the current frame.

src/term.c (update_begin): Removed rif update hack.

src/termhooks.h (FRAME_RIF): New macro.

src/xdisp.c (init_iterator, expose_frame): Removed rif update hack.
(echo_area_display, x_cursor_to, draw_fringe_bitmap)
(try_window_reusing_current_matrix, try_window_id)
(get_glyph_face_and_encoding, x_get_glyph_overhangs)
(get_char_face_and_encoding, compute_overhangs_and_x, draw_glyphs)
(x_produce_glyphs, x_insert_glyphs, x_clear_end_of_line)
(erase_phys_cursor, display_and_set_cursor, show_mouse_face)
(define_frame_cursor1, x_draw_vertical_border): Use the rif of the
current frame.

src/xfns.c (Fx_create_frame): Removed rif update hack.
src/xterm.c (frame_highlight, frame_unhighlight): Ditto.


git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-32
parent 7b00d185
......@@ -127,9 +127,8 @@ See arch logs.
THINGS TO DO
------------
** Fix rif issue with X-tty combo sessions. IMHO the best thing to do
is to get rid of that global variable (and use the value value in
display_method, which is guaranteed to be correct).
** Something with (maybe) multi-keyboard support broke function keys
and arrows on ttys during X+tty combo sessions. Debug this.
** Fix faces on tty frames during X-tty combo sessions.
......@@ -430,4 +429,11 @@ DIARY OF CHANGES
added a kboard member to tty_display_info, and initialized the
frame's kboard from there.)
-- Fix rif issue with X-tty combo sessions. IMHO the best thing to do
is to get rid of that global variable (and use the value value in
display_method, which is guaranteed to be correct).
(Done, did exactly that. Core dumps during combo sessions became
much rarer. In fact, I have not yet met a single one.)
;;; arch-tag: 8da1619e-2e79-41a8-9ac9-a0485daad17d
......@@ -1076,7 +1076,7 @@ frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
blockinput.h systty.h atimer.h systime.h buffer.h charset.h fontset.h \
msdos.h dosfns.h dispextern.h $(config_h)
fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h charset.h frame.h \
keyboard.h $(config_h)
keyboard.h termhooks.h $(config_h)
getloadavg.o: getloadavg.c $(config_h)
indent.o: indent.c frame.h window.h systty.h indent.h buffer.h $(config_h) termchar.h \
termopts.h disptab.h region-cache.h charset.h composite.h dispextern.h \
......@@ -1099,7 +1099,7 @@ vm-limit.o: vm-limit.c mem-limits.h $(config_h)
marker.o: marker.c buffer.h charset.h $(config_h)
md5.o: md5.c md5.h $(config_h)
minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \
buffer.h commands.h charset.h msdos.h $(config_h)
buffer.h commands.h charset.h msdos.h termhooks.h $(config_h)
mktime.o: mktime.c $(config_h)
msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
termopts.h termchar.h charset.h coding.h ccl.h disptab.h window.h \
......
......@@ -2011,16 +2011,16 @@ struct it
/* Call produce_glyphs or produce_glyphs_hook, if set. Shortcut to
avoid the function call overhead. */
#define PRODUCE_GLYPHS(IT) \
do { \
extern int inhibit_free_realized_faces; \
if (rif != NULL) \
rif->produce_glyphs ((IT)); \
else \
produce_glyphs ((IT)); \
if ((IT)->glyph_row != NULL) \
inhibit_free_realized_faces = 1; \
} while (0)
#define PRODUCE_GLYPHS(IT) \
do { \
extern int inhibit_free_realized_faces; \
if (FRAME_RIF ((IT)->f) != NULL) \
FRAME_RIF ((IT)->f)->produce_glyphs ((IT)); \
else \
produce_glyphs ((IT)); \
if ((IT)->glyph_row != NULL) \
inhibit_free_realized_faces = 1; \
} while (0)
/* Bit-flags indicating what operation move_it_to should perform. */
......@@ -2189,10 +2189,6 @@ struct redisplay_interface
#endif /* HAVE_WINDOW_SYSTEM */
};
/* The current interface for window-based redisplay. */
extern struct redisplay_interface *rif;
/***********************************************************************
Images
......
......@@ -297,13 +297,6 @@ int glyph_pool_count;
static struct frame *frame_matrix_frame;
/* Current interface for window-based redisplay. Set from
update_begin. A null value means we are not using window-based
redisplay. */
/* XXX this variable causes frequent coredumps */
struct redisplay_interface *rif;
/* Non-zero means that fonts have been loaded since the last glyph
matrix adjustments. Redisplay must stop, and glyph matrices must
be adjusted when this flag becomes non-zero during display. The
......@@ -3610,17 +3603,17 @@ direct_output_for_insert (g)
updated_row = glyph_row;
updated_area = TEXT_AREA;
update_begin (f);
if (rif)
if (FRAME_RIF (f))
{
rif->update_window_begin_hook (w);
FRAME_RIF (f)->update_window_begin_hook (w);
if (glyphs == end - n
/* In front of a space added by append_space. */
|| (glyphs == end - n - 1
&& (end - n)->charpos <= 0))
rif->write_glyphs (glyphs, n);
FRAME_RIF (f)->write_glyphs (glyphs, n);
else
rif->insert_glyphs (glyphs, n);
FRAME_RIF (f)->insert_glyphs (glyphs, n);
}
else
{
......@@ -3640,8 +3633,8 @@ direct_output_for_insert (g)
a frame matrix is used, cursor_to expects frame coordinates,
and the X and Y parameters are not used. */
if (window_redisplay_p)
rif->cursor_to (w->cursor.vpos, w->cursor.hpos,
w->cursor.y, w->cursor.x);
FRAME_RIF (f)->cursor_to (w->cursor.vpos, w->cursor.hpos,
w->cursor.y, w->cursor.x);
else
{
int x, y;
......@@ -3653,8 +3646,8 @@ direct_output_for_insert (g)
cursor_to (y, x);
}
if (rif)
rif->update_window_end_hook (w, 1, 0);
if (FRAME_RIF (f))
FRAME_RIF (f)->update_window_end_hook (w, 1, 0);
update_end (f);
updated_row = NULL;
if (FRAME_TERMCAP_P (f))
......@@ -3736,8 +3729,8 @@ direct_output_forward_char (n)
&& w->cursor.hpos < w->desired_matrix->matrix_w);
if (FRAME_WINDOW_P (f))
rif->cursor_to (w->cursor.vpos, w->cursor.hpos,
w->cursor.y, w->cursor.x);
FRAME_RIF (f)->cursor_to (w->cursor.vpos, w->cursor.hpos,
w->cursor.y, w->cursor.x);
else
{
int x, y;
......@@ -3824,7 +3817,7 @@ update_frame (f, force_p, inhibit_hairy_id_p)
#if 0 /* This flush is a performance bottleneck under X,
and it doesn't seem to be necessary anyway. */
rif->flush_display (f);
FRAME_RIF (f)->flush_display (f);
#endif
}
else
......@@ -3926,7 +3919,8 @@ redraw_overlapped_rows (w, yb)
int yb;
{
int i;
struct frame *f = XFRAME (WINDOW_FRAME (w));
/* If rows overlapping others have been changed, the rows being
overlapped have to be redrawn. This won't draw lines that have
already been drawn in update_window_line because overlapped_p in
......@@ -3949,10 +3943,12 @@ redraw_overlapped_rows (w, yb)
{
updated_row = row;
updated_area = area;
rif->cursor_to (i, 0, row->y, area == TEXT_AREA ? row->x : 0);
FRAME_RIF (f)->cursor_to (i, 0, row->y,
area == TEXT_AREA ? row->x : 0);
if (row->used[area])
rif->write_glyphs (row->glyphs[area], row->used[area]);
rif->clear_end_of_line (-1);
FRAME_RIF (f)->write_glyphs (row->glyphs[area],
row->used[area]);
FRAME_RIF (f)->clear_end_of_line (-1);
}
row->overlapped_p = 0;
......@@ -3974,7 +3970,8 @@ redraw_overlapping_rows (w, yb)
{
int i, bottom_y;
struct glyph_row *row;
struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
for (i = 0; i < w->current_matrix->nrows; ++i)
{
row = w->current_matrix->rows + i;
......@@ -4054,6 +4051,7 @@ update_window (w, force_p)
#if GLYPH_DEBUG
struct frame *f = XFRAME (WINDOW_FRAME (w));
#endif
struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
/* Check that W's frame doesn't have glyph matrices. */
xassert (FRAME_WINDOW_P (f));
......@@ -4221,6 +4219,7 @@ update_marginal_area (w, area, vpos)
int area, vpos;
{
struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
/* Let functions in xterm.c know what area subsequent X positions
will be relative to. */
......@@ -4246,6 +4245,7 @@ update_text_area (w, vpos)
{
struct glyph_row *current_row = MATRIX_ROW (w->current_matrix, vpos);
struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
int changed_p = 0;
/* Let functions in xterm.c know what area subsequent X positions
......@@ -4467,6 +4467,7 @@ update_window_line (w, vpos, mouse_face_overwritten_p)
{
struct glyph_row *current_row = MATRIX_ROW (w->current_matrix, vpos);
struct glyph_row *desired_row = MATRIX_ROW (w->desired_matrix, vpos);
struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
int changed_p = 0;
/* Set the row being updated. This is important to let xterm.c
......@@ -4537,6 +4538,7 @@ set_window_cursor_after_update (w)
struct window *w;
{
struct frame *f = XFRAME (w->frame);
struct redisplay_interface *rif = FRAME_RIF (f);
int cx, cy, vpos, hpos;
/* Not intended for frame matrix updates. */
......@@ -4760,6 +4762,7 @@ scrolling_window (w, header_line_p)
int i, j, first_old, first_new, last_old, last_new;
int nruns, nbytes, n, run_idx;
struct row_entry *entry;
struct redisplay_interface *rif = FRAME_RIF (XFRAME (WINDOW_FRAME (w)));
/* Skip over rows equal at the start. */
for (i = header_line_p ? 1 : 0; i < current_matrix->nrows - 1; ++i)
......
......@@ -45,6 +45,7 @@ Boston, MA 02111-1307, USA. */
#ifdef MAC_OS
#include "macterm.h"
#endif
#include "termhooks.h"
#ifdef FONTSET_DEBUG
#undef xassert
......@@ -1279,7 +1280,7 @@ DEFUN ("internal-char-font", Finternal_char_font, Sinternal_char_font, 1, 2, 0,
STORE_XCHAR2B (&char2b, c1, c2);
else
STORE_XCHAR2B (&char2b, 0, c1);
rif->encode_char (c, &char2b, fontp, NULL);
FRAME_RIF (f)->encode_char (c, &char2b, fontp, NULL);
code = (XCHAR2B_BYTE1 (&char2b) << 8) | XCHAR2B_BYTE2 (&char2b);
}
return Fcons (build_string (face->font_name), make_number (code));
......
......@@ -2807,8 +2807,8 @@ x_set_frame_parameters (f, alist)
if (NATNUMP (param_index)
&& (XFASTINT (param_index)
< sizeof (frame_parms)/sizeof (frame_parms[0]))
&& rif->frame_parm_handlers[XINT (param_index)])
(*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
&& FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])
(*(FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
}
}
}
......@@ -2851,8 +2851,8 @@ x_set_frame_parameters (f, alist)
if (NATNUMP (param_index)
&& (XFASTINT (param_index)
< sizeof (frame_parms)/sizeof (frame_parms[0]))
&& rif->frame_parm_handlers[XINT (param_index)])
(*(rif->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
&& FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])
(*(FRAME_RIF (f)->frame_parm_handlers[XINT (param_index)])) (f, val, old_value);
}
}
......
......@@ -9874,8 +9874,12 @@ detect_input_pending_run_timers (do_display)
from an idle timer function. The symptom of the bug is that
the cursor sometimes doesn't become visible until the next X
event is processed. --gerd. */
if (rif)
rif->flush_display (NULL);
{
Lisp_Object tail, frame;
FOR_EACH_FRAME (tail, frame)
if (FRAME_RIF (XFRAME (frame)))
FRAME_RIF (XFRAME (frame))->flush_display (XFRAME (frame));
}
}
return input_pending;
......
......@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA. */
#include "syntax.h"
#include "intervals.h"
#include "keymap.h"
#include "termhooks.h"
extern int quit_char;
......@@ -692,8 +693,12 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
XWINDOW (minibuf_window)->cursor.x = 0;
XWINDOW (minibuf_window)->must_be_updated_p = 1;
update_frame (XFRAME (selected_frame), 1, 1);
if (rif && rif->flush_display)
rif->flush_display (XFRAME (XWINDOW (minibuf_window)->frame));
{
struct frame *f = XFRAME (XWINDOW (minibuf_window)->frame);
struct redisplay_interface *rif = FRAME_RIF (f);
if (rif && rif->flush_display)
rif->flush_display (f);
}
}
/* Make minibuffer contents into a string. */
......
......@@ -374,8 +374,6 @@ update_begin (f)
struct frame *f;
{
updating_frame = f;
/* XXX rif hack */
rif = f->display_method->rif;
if (!FRAME_TERMCAP_P (f))
update_begin_hook (f);
}
......
......@@ -71,6 +71,8 @@ struct display_method
#define FRAME_SCROLL_REGION_COST(f) ((f)->display_method->scroll_region_cost)
#define FRAME_MEMORY_BELOW_FRAME(f) ((f)->display_method->memory_below_frame)
#define FRAME_RIF(f) ((f)->display_method->rif)
/* Text display hooks. */
extern void (*cursor_to_hook) P_ ((int vpos, int hpos));
......
......@@ -2009,9 +2009,6 @@ init_iterator (it, w, charpos, bytepos, row, base_face_id)
it->w = w;
it->f = XFRAME (w->frame);
/* XXX rif hack: Make sure the redisplay interface is correctly set. */
rif = it->f->display_method->rif;
/* Extra space between lines (on window systems only). */
if (base_face_id == DEFAULT_FACE_ID
&& FRAME_WINDOW_P (it->f))
......@@ -7674,7 +7671,7 @@ echo_area_display (update_frame_p)
Can do with a display update of the echo area,
unless we displayed some mode lines. */
update_single_window (w, 1);
rif->flush_display (f);
FRAME_RIF (f)->flush_display (f);
}
else
update_frame (f, 1, 1);
......@@ -8135,8 +8132,8 @@ x_cursor_to (vpos, hpos, y, x)
{
BLOCK_INPUT;
display_and_set_cursor (w, 1, hpos, vpos, x, y);
if (rif->flush_display_optional)
rif->flush_display_optional (SELECTED_FRAME ());
if (FRAME_RIF (SELECTED_FRAME ())->flush_display_optional)
FRAME_RIF (SELECTED_FRAME ())->flush_display_optional (SELECTED_FRAME ());
UNBLOCK_INPUT;
}
}
......@@ -9029,7 +9026,7 @@ draw_fringe_bitmap (w, row, which, left_p)
/* Adjust y to the offset in the row to start drawing the bitmap. */
p.y += (row->height - p.h) / 2;
rif->draw_fringe_bitmap (w, row, &p);
FRAME_RIF (f)->draw_fringe_bitmap (w, row, &p);
}
/* Draw fringe bitmaps for glyph row ROW on window W. Call this
......@@ -12303,10 +12300,10 @@ try_window_reusing_current_matrix (w)
if (run.height > 0 && run.current_y != run.desired_y)
{
update_begin (f);
rif->update_window_begin_hook (w);
rif->clear_window_mouse_face (w);
rif->scroll_run_hook (w, &run);
rif->update_window_end_hook (w, 0, 0);
FRAME_RIF (f)->update_window_begin_hook (w);
FRAME_RIF (f)->clear_window_mouse_face (w);
FRAME_RIF (f)->scroll_run_hook (w, &run);
FRAME_RIF (f)->update_window_end_hook (w, 0, 0);
update_end (f);
}
......@@ -12476,10 +12473,10 @@ try_window_reusing_current_matrix (w)
{
struct frame *f = XFRAME (WINDOW_FRAME (w));
update_begin (f);
rif->update_window_begin_hook (w);
rif->clear_window_mouse_face (w);
rif->scroll_run_hook (w, &run);
rif->update_window_end_hook (w, 0, 0);
FRAME_RIF (f)->update_window_begin_hook (w);
FRAME_RIF (f)->clear_window_mouse_face (w);
FRAME_RIF (f)->scroll_run_hook (w, &run);
FRAME_RIF (f)->update_window_end_hook (w, 0, 0);
update_end (f);
}
......@@ -13310,10 +13307,10 @@ try_window_id (w)
if (FRAME_WINDOW_P (f))
{
rif->update_window_begin_hook (w);
rif->clear_window_mouse_face (w);
rif->scroll_run_hook (w, &run);
rif->update_window_end_hook (w, 0, 0);
FRAME_RIF (f)->update_window_begin_hook (w);
FRAME_RIF (f)->clear_window_mouse_face (w);
FRAME_RIF (f)->scroll_run_hook (w, &run);
FRAME_RIF (f)->update_window_end_hook (w, 0, 0);
}
else
{
......@@ -16818,7 +16815,7 @@ get_glyph_face_and_encoding (f, glyph, char2b, two_byte_p)
= FONT_INFO_FROM_ID (f, face->font_info_id);
if (font_info)
glyph->font_type
= rif->encode_char (glyph->u.ch, char2b, font_info, two_byte_p);
= FRAME_RIF (f)->encode_char (glyph->u.ch, char2b, font_info, two_byte_p);
}
}
......@@ -17048,7 +17045,7 @@ x_get_glyph_overhangs (glyph, f, left, right)
font = face->font;
font_info = FONT_INFO_FROM_ID (f, face->font_info_id);
if (font /* ++KFS: Should this be font_info ? */
&& (pcm = rif->per_char_metric (font, &char2b, glyph->font_type)))
&& (pcm = FRAME_RIF (f)->per_char_metric (font, &char2b, glyph->font_type)))
{
if (pcm->rbearing > pcm->width)
*right = pcm->rbearing - pcm->width;
......@@ -17216,7 +17213,7 @@ get_char_face_and_encoding (f, c, face_id, char2b, multibyte_p, display_p)
struct font_info *font_info
= FONT_INFO_FROM_ID (f, face->font_info_id);
if (font_info)
rif->encode_char (c, char2b, font_info, 0);
FRAME_RIF (f)->encode_char (c, char2b, font_info, 0);
}
}
......@@ -17283,8 +17280,8 @@ compute_overhangs_and_x (s, x, backward_p)
{
while (s)
{
if (rif->compute_glyph_string_overhangs)
rif->compute_glyph_string_overhangs (s);
if (FRAME_RIF (s->f)->compute_glyph_string_overhangs)
FRAME_RIF (s->f)->compute_glyph_string_overhangs (s);
x -= s->width;
s->x = x;
s = s->prev;
......@@ -17294,8 +17291,8 @@ compute_overhangs_and_x (s, x, backward_p)
{
while (s)
{
if (rif->compute_glyph_string_overhangs)
rif->compute_glyph_string_overhangs (s);
if (FRAME_RIF (s->f)->compute_glyph_string_overhangs)
FRAME_RIF (s->f)->compute_glyph_string_overhangs (s);
s->x = x;
x += s->width;
s = s->next;
......@@ -17576,9 +17573,9 @@ draw_glyphs (w, x, row, area, start, end, hl, overlaps_p)
struct glyph_string *h, *t;
/* Compute overhangs for all glyph strings. */
if (rif->compute_glyph_string_overhangs)
if (FRAME_RIF (f)->compute_glyph_string_overhangs)
for (s = head; s; s = s->next)
rif->compute_glyph_string_overhangs (s);
FRAME_RIF (f)->compute_glyph_string_overhangs (s);
/* Prepend glyph strings for glyphs in front of the first glyph
string that are overwritten because of the first glyph
......@@ -17646,7 +17643,7 @@ draw_glyphs (w, x, row, area, start, end, hl, overlaps_p)
/* Draw all strings. */
for (s = head; s; s = s->next)
rif->draw_glyph_string (s);
FRAME_RIF (f)->draw_glyph_string (s);
if (area == TEXT_AREA
&& !row->full_width_p
......@@ -18334,8 +18331,8 @@ x_produce_glyphs (it)
it->nglyphs = 1;
pcm = rif->per_char_metric (font, &char2b,
FONT_TYPE_FOR_UNIBYTE (font, it->char_to_display));
pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
FONT_TYPE_FOR_UNIBYTE (font, it->char_to_display));
it->ascent = FONT_BASE (font) + boff;
it->descent = FONT_DESCENT (font) - boff;
......@@ -18459,8 +18456,8 @@ x_produce_glyphs (it)
from the charset width; this is what old redisplay code
did. */
pcm = rif->per_char_metric (font, &char2b,
FONT_TYPE_FOR_MULTIBYTE (font, it->c));
pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
FONT_TYPE_FOR_MULTIBYTE (font, it->c));
if (font_not_found_p || !pcm)
{
......@@ -18591,8 +18588,8 @@ x_produce_glyphs (it)
/* Initialize the bounding box. */
if (font_info
&& (pcm = rif->per_char_metric (font, &char2b,
FONT_TYPE_FOR_MULTIBYTE (font, it->c))))
&& (pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
FONT_TYPE_FOR_MULTIBYTE (font, it->c))))
{
width = pcm->width;
ascent = pcm->ascent;
......@@ -18650,8 +18647,8 @@ x_produce_glyphs (it)
}
if (font_info
&& (pcm = rif->per_char_metric (font, &char2b,
FONT_TYPE_FOR_MULTIBYTE (font, ch))))
&& (pcm = FRAME_RIF (it->f)->per_char_metric (font, &char2b,
FONT_TYPE_FOR_MULTIBYTE (font, ch))))
{
width = pcm->width;
ascent = pcm->ascent;
......@@ -18886,8 +18883,8 @@ x_insert_glyphs (start, len)
frame_x = window_box_left (w, updated_area) + output_cursor.x;
frame_y = WINDOW_TO_FRAME_PIXEL_Y (w, output_cursor.y);
rif->shift_glyphs_for_insert (f, frame_x, frame_y, shifted_region_width,
line_height, shift_by_width);
FRAME_RIF (f)->shift_glyphs_for_insert (f, frame_x, frame_y, shifted_region_width,
line_height, shift_by_width);
/* Write the glyphs. */
hpos = start - row->glyphs[updated_area];
......@@ -18969,8 +18966,8 @@ x_clear_end_of_line (to_x)
if (to_x > from_x && to_y > from_y)
{
BLOCK_INPUT;
rif->clear_frame_area (f, from_x, from_y,
to_x - from_x, to_y - from_y);
FRAME_RIF (f)->clear_frame_area (f, from_x, from_y,
to_x - from_x, to_y - from_y);
UNBLOCK_INPUT;
}
}
......@@ -19407,8 +19404,8 @@ erase_phys_cursor (w)
x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
y = WINDOW_TO_FRAME_PIXEL_Y (w, max (header_line_height, cursor_row->y));
rif->clear_frame_area (f, x, y,
cursor_glyph->pixel_width, cursor_row->visible_height);
FRAME_RIF (f)->clear_frame_area (f, x, y,
cursor_glyph->pixel_width, cursor_row->visible_height);
}
/* Erase the cursor by redrawing the character underneath it. */
......@@ -19504,9 +19501,9 @@ display_and_set_cursor (w, on, hpos, vpos, x, y)
w->phys_cursor.vpos = vpos;
}
rif->draw_window_cursor (w, glyph_row, x, y,
new_cursor_type, new_cursor_width,
on, active_cursor);
FRAME_RIF (f)->draw_window_cursor (w, glyph_row, x, y,
new_cursor_type, new_cursor_width,
on, active_cursor);
}
......@@ -19651,11 +19648,11 @@ show_mouse_face (dpyinfo, draw)
/* Change the mouse cursor. */
if (draw == DRAW_NORMAL_TEXT)
rif->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor);
FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor);
else if (draw == DRAW_MOUSE_FACE)
rif->define_frame_cursor (f, FRAME_X_OUTPUT (f)->hand_cursor);
FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->hand_cursor);
else
rif->define_frame_cursor (f, FRAME_X_OUTPUT (f)->nontext_cursor);
FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->nontext_cursor);
}
/* EXPORT:
......@@ -20152,7 +20149,7 @@ define_frame_cursor1 (f, cursor, pointer)
#else
if (bcmp (&cursor, &No_Cursor, sizeof (Cursor)))
#endif
rif->define_frame_cursor (f, cursor);
FRAME_RIF (f)->define_frame_cursor (f, cursor);
}
/* Take proper action when mouse has moved to the mode or header line
......@@ -20987,6 +20984,8 @@ void
x_draw_vertical_border (w)
struct window *w;
{
struct frame *f = XFRAME (WINDOW_FRAME (w));
/* We could do better, if we knew what type of scroll-bar the adjacent
windows (on either side) have... But we don't :-(
However, I think this works ok. ++KFS 2003-04-25 */
......@@ -21003,7 +21002,7 @@ x_draw_vertical_border (w)
window_box_edges (w, -1, &x0, &y0, &x1, &y1);
y1 -= 1;
rif->draw_vertical_window_border (w, x1, y0, y1);
FRAME_RIF (f)->draw_vertical_window_border (w, x1, y0, y1);
}
else if (!WINDOW_LEFTMOST_P (w)
&& !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w))
......@@ -21013,7 +21012,7 @@ x_draw_vertical_border (w)
window_box_edges (w, -1, &x0, &y0, &x1, &y1);
y1 -= 1;
rif->draw_vertical_window_border (w, x0, y0, y1);
FRAME_RIF (f)->draw_vertical_window_border (w, x0, y0, y1);
}
}
......@@ -21197,9 +21196,6 @@ expose_frame (f, x, y, w, h)
TRACE ((stderr, "expose_frame "));
/* XXX rif hack: Make sure redisplay interface is updated. */
rif = f->display_method->rif;
/* No need to redraw if frame will be redrawn soon. */
if (FRAME_GARBAGED_P (f))
{
......
......@@ -3191,9 +3191,6 @@ This function is an internal primitive--use `make-frame' instead. */)
check_x ();
/* XXX rif hack:Make sure rif is set to the right value. */
rif = x_display_method.rif;
/* Use this general default value to start with
until we know if this frame has a specified name. */
Vx_resource_name = Vinvocation_name;
......
......@@ -3062,9 +3062,6 @@ static void
frame_highlight (f)
struct frame *f;
{
/* XXX hack: make sure rif is right. */
rif = f->display_method->rif;
/* We used to only do this if Vx_no_window_manager was non-nil, but
the ICCCM (section 4.1.6) says that the window's border pixmap