Next: , Up: The Redisplay Mechanism   [Contents][Index]


22.1 Critical Redisplay Sections

Within this section, we are defenseless and assume that the following cannot happen:

  1. garbage collection
  2. Lisp code evaluation
  3. frame size changes

We ensure (3) by calling hold_frame_size_changes(), which will cause any pending frame size changes to get put on hold till after the end of the critical section. (1) follows automatically if (2) is met. #### Unfortunately, there are some places where Lisp code can be called within this section. We need to remove them.

If Fsignal() is called during this critical section, we will abort().

If garbage collection is called during this critical section, we simply return. #### We should abort instead.

#### If a frame-size change does occur we should probably actually be preempting redisplay.