bool draw_window_fringes (struct window *, bool);
bool update_window_fringes (struct window *, bool);
+void gui_init_fringe (struct redisplay_interface *);
+
#ifdef HAVE_NTGUI
-void w32_init_fringe (struct redisplay_interface *);
void w32_reset_fringes (void);
#endif
-#ifdef USE_CAIRO
-void x_cr_init_fringe (struct redisplay_interface *);
-#endif
extern unsigned row_hash (struct glyph_row *);
fringe_faces = xzalloc (max_fringe_bitmaps * sizeof *fringe_faces);
}
-#if defined (HAVE_NTGUI) || defined (USE_CAIRO)
-
void
-#ifdef HAVE_NTGUI
-w32_init_fringe (struct redisplay_interface *rif)
-#else
-x_cr_init_fringe (struct redisplay_interface *rif)
-#endif
+gui_init_fringe (struct redisplay_interface *rif)
{
int bt;
- if (!rif)
+ if (!rif || !rif->define_fringe_bitmap)
return;
+ /* Set up the standard fringe bitmaps. */
for (bt = NO_FRINGE_BITMAP + 1; bt < MAX_STANDARD_FRINGE_BITMAPS; bt++)
{
struct fringe_bitmap *fb = &standard_bitmaps[bt];
rif->define_fringe_bitmap (bt, fb->bits, fb->height, fb->width);
}
+
+ /* Set up user-defined fringe bitmaps that might have been defined
+ before the frame of this kind was initialized. This can happen
+ if Emacs is started as a daemon and the init files define fringe
+ bitmaps. */
+ for ( ; bt < max_used_fringe_bitmap; bt++)
+ {
+ struct fringe_bitmap *fb = fringe_bitmaps[bt];
+ if (fb)
+ rif->define_fringe_bitmap (bt, fb->bits, fb->height, fb->width);
+ }
}
-#endif
#ifdef HAVE_NTGUI
void
int bt;
struct redisplay_interface *rif = FRAME_RIF (SELECTED_FRAME ());
- if (!rif)
+ if (!rif || !rif->destroy_fringe_bitmap)
return;
for (bt = NO_FRINGE_BITMAP + 1; bt < max_used_fringe_bitmap; bt++)
f->output_data.w32 = xzalloc (sizeof (struct w32_output));
FRAME_FONTSET (f) = -1;
+ /* Need to finish setting up of user-defined fringe bitmaps that
+ were defined before the first GUI frame was created (e.g., while
+ in daemon mode). */
+ if (!f->terminal->reference_count)
+ gui_init_fringe (f->terminal->rif);
+
fset_icon_name (f, gui_display_get_arg (dpyinfo,
parameters,
Qicon_name,
horizontally reflected compared to how they appear on X, so we
need to bitswap and convert to unsigned shorts before creating
the bitmaps. */
- w32_init_fringe (terminal->rif);
+ gui_init_fringe (terminal->rif);
unblock_input ();