Zebediah Figura : quartz/dsoundrender: Delegate IReferenceClock to the system clock.

Alexandre Julliard julliard at winehq.org
Fri Nov 29 13:17:28 CST 2019


Module: wine
Branch: master
Commit: 63a6b308e91232dd55dd107595a6181c70180dd4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=63a6b308e91232dd55dd107595a6181c70180dd4

Author: Zebediah Figura <z.figura12 at 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 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at 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=63a6b308e91232dd55dd107595a6181c70180dd4



More information about the wine-cvs mailing list