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

Reply via email to