show-text: simple text display app (default or Hershey fonts)

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: C_INTEROBJECT_BLACK visual debugging aid (disabled)

Handy developer debugging aid; No functional change.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: olRender(0) means no FPS limiting

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: eliminate first_frame_full, but do generate dummy frames as needed

Allows rendering of a single static frame, i.e. just one call to olRender()
instead of an olRender()-loop.

Allows for olRender() of empty frames containing no objects.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
libol: fix static display frames ("duplicate" frames)

Improve the handling of "duplicate" frames to allow them to be used
intentionally as successive static display frames, i.e. with arbitrary
asynchronous calls to olRender() instead of an olRender()-loop.

Before this change, each duplicate/static frame included an undesirable
laser-off traversal back to the last-rendered point of the previous frame,
since that traversal gets pre-rendered into the first object.  This change
fixes the undesirable traversal.

Implementation notes:

 - Keep track of the first "real" point and the first "wait" point of the
   first object in each frame (i.e. not including the laser-off traversal
   from the previous frame's last-rendered point).

 - Whenever the process() callback notes that no new frame is available and
   is therefore about to re-output a "duplicate" frame, it now:

     - Computes and outputs a new laser-off traversal from last output
       point to the recorded first real or wait point of the frame (taking
       into account whether a wait is still needed).

     - Skips past (does not output) the old pre-rendered laser-off traversal.

     - disables the audio-passthrough channel output for the duplicate frame.

Signed-off-by: Kamal Mostafa <kamal@whence.com>
test-static-frames: test app with no olRender() loop

Signed-off-by: Kamal Mostafa <kamal@whence.com>