For reference, from the man himself: -------- Original Message -------- Subject: Re: Mixxx question: ControlObject::queueFromThread() From: Tue Haste Andersen <[email protected]> To: Sean M. Pappalardo <[email protected]>
It's been quite some time since I wrote that piece of code, so I don't know if the following explanation is useful to you or acurate anymore. Anyway: The problem is that each control value is represented by a ControlObject. The value can be changed from different threads, the Enigine thread (callbacks from the audio driver), midi thread gui thread and so forth. The problem is to keep a control value in sync between all these threads. I don't remeber which threads are calling which functions, but the main issue is to keep the engine thread in sync with the rest of the system. Instead of just mutex locking every call to the ControlObject (that would be very slow and basically wouldn't work with the engine thread), value changes are kept in a vector and only once in a while syncronized with the engine. For each sound buffer that is synthesized by the engine, syncronization of control objects is done by calling sync on the relevant controlobjects, that was in the past done in enginemaster or similar but seems to have moved to somewhere else now. <<--------------------------------------------------------------------------------->> This E-Mail message has been scanned for viruses and cleared by >>SmartMail<< from Smarter Technology, Inc. <<--------------------------------------------------------------------------------->> ------------------------------------------------------------------------------ Check out the new SourceForge.net Marketplace. It is the best place to buy or sell services for just about anything Open Source. http://p.sf.net/sfu/Xq1LFB _______________________________________________ Mixxx-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mixxx-devel
