Refactor|Audio|Client: Reassigned responsibility for refreshing audio::Sound buffers
Logically speaking, refreshing sound data buffers is contractually mandated by audio::Sound; thus it follows that whomever implements this interface should be take responsibility for doing so.
Audio drivers are now responsible for refreshing the data buffer of any audio::Sounds they create. This means that each audio driver now uses it's own background thread to do so.
Now that refresh duties are no longer the responsibility of the audio system itself (previous delegated to the channel map), the channel map is now a "dumb" organizational structure (thereby simplifying the high-level audio architecture in the process).
Todo for later: Extract common functionality from the audio drivers and move such code into a support "library".
Todo for later: Reinstate the animated '!' refresh indicator in the audio (channel) debug visualization.
Refactor|Audio|Client: Reassigned responsibility for refreshing audio::Sound buffers
Logically speaking, refreshing sound data buffers is contractually
mandated by audio::Sound; thus it follows that whomever implements
this interface should be take responsibility for doing so.
Audio drivers are now responsible for refreshing the data buffer of
any audio::Sounds they create. This means that each audio driver now
uses it's own background thread to do so.
Now that refresh duties are no longer the responsibility of the audio
system itself (previous delegated to the channel map), the channel
map is now a "dumb" organizational structure (thereby simplifying the
high-level audio architecture in the process).
Todo for later: Extract common functionality from the audio drivers
and move such code into a support "library".
Todo for later: Reinstate the animated '!' refresh indicator in the
audio (channel) debug visualization.