Re: [AD] get_audio_stream_buffer

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


Evert Glebbeek wrote:
I don't have Allegro installed here to check against, but I suspect it has to do
with not being able to read from disk in a timer context in DOS.

I'm trying to look through the source and understand why, but it doesn't seem to be a swap/disk read issue (since all the data is locked). The problem is that not all platforms are able to lock the data, and the timer method is unknown to the user/programmer. What I can gather from thinking is this:

Threaded systems should be fine, though the time between getting the buffer and freeing it must be kept to an absolute minimum (as it is now). Signal/interrupt systems are not since your interrupt can itself be interrupted, even between retrieving and freeing the data stream, causing delay problems.

Though even on systems where threads are available, it doesn't mean Allegro's timers are using a thread.

Calling from a different thread is the same as calling from a timer, by
the way, since timers are implemented using threads on platforms other than DOS
and UNIX SIGALARM.

I wouldn't really say that. While it's true that the majority of platforms use a thread for timers, they use just that.. a single thread to run every timer that's installed. A timer behaves completely different from a thread.


But basically, in conclusion:
If you start the thread yourself, and keep the audio stream contained wholey in that thread, it should be alright. Using an Allegro timer to do the threading for you is bad, since you can't gaurantee the method the timer is using.

- Kitty Cat




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/