>It does sound like this way of solving the problem is more nicely
>generic than the member boolean or CO methods.
I agree. I've been playing around with this design, and here's what I've come
up with so far.
First, I've modified EngineChannel to be a subclass of AudioSource, as RJ
recommended.
Because EngineMaster does all the processing on channels and sets up their
buffers, I needed to give each EngineChannel access to its corresponding buffer
after it was created by EngineMaster. This is necessary if we want to route the
EngineChannels directly to the corresponding devices in SoundManager.
Therefore, I've modified EngineChannel to include CSAMPLE* m_pASBuffer and a
setASBuffer(CSAMPLE*) function. I've also modified the ::buffer(AudioOutput
output) function inherited from AudioSource to return this buffer pointer. In
EngineMaster, when a new channel is inserted, I set the EngineChannel to point
to the channel buffer created by EngineMaster. Finally, in mixxx.cpp, I've
registered the AudioOutputs with the EngineDecks as a test, and everything
seems to be working smoothly.
I hope that wasn't too confusing. It's a bit much to take in. As always, I
welcome everyone's opinions/comments/suggestions!
mattmik
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org
Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel