[PATCH 2/5] winmm: Preserve fractions in microseconds to compensate rounding errors.
Andrew Eikum
aeikum at codeweavers.com
Mon Jul 9 09:42:20 CDT 2018
Sorry, didn't mean to sign-off on this, I pushed the wrong button in
my mail client...
On Mon, Jul 09, 2018 at 09:39:56AM -0500, Andrew Eikum wrote:
> > @@ -1178,8 +1181,11 @@ start_header:
> >
> > /* do we have to wait ? */
> > if (me->dwDeltaTime) {
> > + DWORD delta;
> > EnterCriticalSection(&lpMidiStrm->lock);
> > - lpMidiStrm->dwPositionMS += MMSYSTEM_MidiStream_Convert(lpMidiStrm, me->dwDeltaTime);
> > + delta = lpMidiStrm->remainder + MMSYSTEM_MidiStream_Convert(lpMidiStrm, me->dwDeltaTime);
> > + lpMidiStrm->dwPositionMS += delta / 1000;
> > + lpMidiStrm->remainder = delta % 1000;
> > lpMidiStrm->dwPulses += me->dwDeltaTime;
> > LeaveCriticalSection(&lpMidiStrm->lock);
Instead of storing the remainder in a separate variable, does it make
sense to change the units of dwPositionMS to microseconds?
Andrew
More information about the wine-devel
mailing list