From 01d521e5afc39dfcfc1487f60102afe0e58337b8 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Sat, 4 Jan 2020 16:44:16 +0100 Subject: [PATCH] dmime: IDirectMusicSegment8 SetLoopPoints support zero start/end. Both end and start set to zero loop the whole segement. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=25728 Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Michael Stefaniuc Signed-off-by: Alexandre Julliard --- dlls/dmime/segment.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c index b6357b6f5f3..0455b6c5ddf 100644 --- a/dlls/dmime/segment.c +++ b/dlls/dmime/segment.c @@ -445,17 +445,20 @@ static HRESULT WINAPI IDirectMusicSegment8Impl_GetStartPoint(IDirectMusicSegment } static HRESULT WINAPI IDirectMusicSegment8Impl_SetLoopPoints(IDirectMusicSegment8 *iface, - MUSIC_TIME mtStart, MUSIC_TIME mtEnd) + MUSIC_TIME start, MUSIC_TIME end) { - IDirectMusicSegment8Impl *This = impl_from_IDirectMusicSegment8(iface); + IDirectMusicSegment8Impl *This = impl_from_IDirectMusicSegment8(iface); - TRACE("(%p, %d, %d)\n", This, mtStart, mtEnd); - if (mtStart >= This->header.mtLength || mtEnd > This->header.mtLength || mtStart > mtEnd) { - return DMUS_E_OUT_OF_RANGE; - } - This->header.mtLoopStart = mtStart; - This->header.mtLoopEnd = mtEnd; - return S_OK; + TRACE("(%p, %d, %d)\n", This, start, end); + + if ((end || start) && + (start >= This->header.mtLength || end > This->header.mtLength || start > end)) + return DMUS_E_OUT_OF_RANGE; + + This->header.mtLoopStart = start; + This->header.mtLoopEnd = end; + + return S_OK; } static HRESULT WINAPI IDirectMusicSegment8Impl_GetLoopPoints(IDirectMusicSegment8 *iface,