On Thu, Sep 19, 2002 at 12:25:30AM +0930, Alex Angas wrote:
> Or just tell the note playback thread to switch to a different song 
> iterator containing a different song?

Exactly!  That's where I'm going, but until iterators are done, it can't
happen.  The actual song loop would work like this:

while(run) {
        current_song->nextnote()
        current_song->sleep()
} 

With the exception of a few fringe cases like DISPOSE_HANDLE, we can
simply update current_song to point to whatever we wish to be playing.

> Yes that's right. If we start using song iterators this should be able 
> to be fixed.

That's good news.

> Sierra would surely have realised this. Maybe they thought the 
> synchronisation overhead for computers of that time would be too high?

Technically, they were only single-threaded, but had a timer interrupt
kick in to make the soundserver do stuff.   Otherwise the main VM was
always in charge.  Race conditions existed with heap modifications
still, but generally, the 'signal' fields were read-only as far as the
VM was concerned, and if a signal was missed, it could wait until the
next tick.

 - Pizza
-- 
Solomon Peachy                                   pizza@f*cktheusers.org
I'm not broke, but I'm badly bent.                         ICQ #1318344
Patience comes to those who wait.                         Melbourne, FL
               Quidquid latine dictum sit, altum viditur

-- Attached file included as plaintext by Listar --

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE9iL/9PuLgii2759ARAsqrAKCy2uROwKgxYy90g6OMJP8NnUWbrgCgzVup
W1CluE/IlecB2AVU+UEA+i0=
=GVaG
-----END PGP SIGNATURE-----



Reply via email to