Module: wine Branch: master Commit: 63a6b308e91232dd55dd107595a6181c70180dd4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=63a6b308e91232dd55dd10759...
Author: Zebediah Figura z.figura12@gmail.com Date: Thu Nov 28 17:35:40 2019 -0600
quartz/dsoundrender: Delegate IReferenceClock to the system clock.
For several reasons.
Firstly, the reference clock should still function when the filter is not running.
Secondly, IDirectSoundBuffer::GetPositions() in practice returns very coarse positions, both on Windows and on Wine. On my hardware, the resolution is about 10ms, which, while suitable for the DirectSound renderer and probably also any video renderers, is nevertheless actually coarser than GetTickCount().
Thirdly, testing supports that the native DirectSound renderer returns a timestamp from IReferenceClock::GetTime() that is more accurate than IDirectSoundBuffer::GetPositions(). In fact, after dumping a large number of different clock sources, I came to the conclusion that it is probably using timeGetTime() as a source. On Wine that's identical to GetTickCount(), so we may as well just delegate directly to the system clock.
Signed-off-by: Zebediah Figura z.figura12@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/quartz/dsoundrender.c | 301 +++------------------------------------------ 1 file changed, 14 insertions(+), 287 deletions(-)
Diff: https://source.winehq.org/git/wine.git/?a=commitdiff;h=63a6b308e91232dd55dd1...