Don't crash if user has a keyboard key configured for a control that doesn't exist
Fix vinyl input toggling not working correctly
Change EngineWorker so that EngineWorkerScheduler marks jobs as active and the EngineWorker marks itself as inactive. Should fix race-condition related to reading on slower hardware.
Use QAtomicInt and atomic primitives for testing if a seek is queued. This prevents memory write re-orderings that could lead us to seeking to an invalid location. Use alignment attributes for m_dQueuedPosition to make sure it is 8-byte aligned.
Use QAtomicInt and atomic primitives for testing if a seek is queued. This prevents memory write re-orderings that could lead us to seeking to an invalid location. Use alignment attributes for m_dQueuedPosition to make sure it is 8-byte aligned.
0-length reads are no longer a problem for RAMAN. Remove the early-exit so that a 0-length read (i.e. maybe a read failed or maybe we are past a loop triggerboundary) will end up hitting the logic that takes the loop.
Use LoopingControl::process to determine whether to take a loop in ReadAheadManager instead of copying the logic (incorrectly).
Get rid of seeking based on the result of EngineControl::process at the end of EngineBuffer::process. This is fully taken care of by the RAMAN now.
Delete unused variable.
Create EngineBufferScaleDummy.
Fix issue in EngineBufferScaleLinear that can cause loops to go out of sync. Fixes Bug #1025007.

* Prepended samples from pre-existing buffer were not represented as part of read-sample count.
* RAMAN was not called multiple times so reads across loop boundaries will only get the pre-loop samples.
* Samples not read were not zero'd.
* m_fPrevSample assignment ignored pre-existing buffer samples that were copied.
Minor cleanups.