w = XWINDOW (mini_window);
f = XFRAME (WINDOW_FRAME (w));
- /* Don't display if frame is invisible or not yet initialized. */
- if (!FRAME_REDISPLAY_P (f) || !f->glyphs_initialized_p)
+ /* Don't display if frame is invisible or not yet initialized or
+ if redisplay is inhibited. */
+ if (!FRAME_REDISPLAY_P (f) || !f->glyphs_initialized_p
+ || !NILP (Vinhibit_redisplay))
return;
#ifdef HAVE_WINDOW_SYSTEM
/* This can be NULL (e.g., in batch mode). */
if (oldface)
{
+ /* In some cases, realize_face below can call Lisp, which could
+ trigger redisplay. But we are in the process of realizing
+ the default face, and therefore are not ready to do display. */
+ specpdl_ref count = SPECPDL_INDEX ();
+ specbind (Qinhibit_redisplay, Qt);
+
/* Ensure that the face vector is fully specified by merging
the previously-cached vector. */
memcpy (attrs, oldface->lface, sizeof attrs);
gvec[LFACE_BACKGROUND_INDEX]);
Fmodify_frame_parameters (frame, arg);
}
+
+ unbind_to (count, Qnil);
}
}
eassert (lface_fully_specified_p (XVECTOR (lface)->contents));
check_lface (lface);
memcpy (attrs, xvector_contents (lface), sizeof attrs);
+ /* In some cases, realize_face below can call Lisp, which could
+ trigger redisplay. But we are in the process of realizing
+ the default face, and therefore are not ready to do display. */
+ specpdl_ref count = SPECPDL_INDEX ();
+ specbind (Qinhibit_redisplay, Qt);
struct face *face = realize_face (c, attrs, DEFAULT_FACE_ID);
+ unbind_to (count, Qnil);
#ifndef HAVE_WINDOW_SYSTEM
(void) face;