I think I've gotten a bit confused with Filler, FillSegments,
FillProducers, and so forth. Perhaps I'm overgeneralizing; what we
need to do to fill with short movies is quite different from filling
with a still-image slide show. 

* Shorts are time-bound and should keep playing. Slides can run
indefinitely and can be interrupted. 

* Shorts supply their own sound. Slides don't. 

* Shorts use Xine. Slides probably won't.

One of the problems is that I've got "Random Still Frame" doing my
slide show, and I should instead have something like "Slideshow",
which plays a bunch of still frames in a single segment. Sort of a
micro-form of the filler. Right now "Random Still Frame" gets called a
bunch of times, rather than being a single segment. It still works OK,
though, so I'll leave it for now. Actually, I think that fits with the
design.

Let's use the current system and see what we come up with.

The overall current system:

We define _fill segments_ at initialization time.

-------------------------------------------

(Note: actually, the system was OK.)

-------------------------------------------

Big refactorings:

Collapse the ScheduleTable tree. There is and ever will be only a
single ScheduleTable type: the database.

Collapse Listable and Movie somehow.

Reduce to a single session, the Scheduler, and have the rest be
objects called by it. A session is essentially a thread. (Or perhaps
Scheduler and Player.)

Add interface subclasses to Player. Possibly have some kind of
subdivision by type (Player::AVI, Player::Still, Player::Music) and by
'vendor' (Player::Xine, Player::Imlib). Overall goal: make it easier
to experiment with GStreamer.


