=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: mciwave: Always reach an end position expressed in milliseconds.

Alexandre Julliard julliard at winehq.org
Tue Jan 31 14:06:19 CST 2012


Module: wine
Branch: master
Commit: bdf757838988148a10f98e660b9ccede5f5e7d09
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bdf757838988148a10f98e660b9ccede5f5e7d09

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Tue Jan 31 09:33:19 2012 +0100

mciwave: Always reach an end position expressed in milliseconds.

---

 dlls/mciwave/mciwave.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/dlls/mciwave/mciwave.c b/dlls/mciwave/mciwave.c
index effecf4..723b5fe 100644
--- a/dlls/mciwave/mciwave.c
+++ b/dlls/mciwave/mciwave.c
@@ -225,7 +225,7 @@ static void WAVE_mciNotify(DWORD_PTR hWndCallBack, WINE_MCIWAVE* wmw, UINT wStat
 /**************************************************************************
  * 				WAVE_ConvertByteToTimeFormat	[internal]
  */
-static	DWORD 	WAVE_ConvertByteToTimeFormat(WINE_MCIWAVE* wmw, DWORD val, LPDWORD lpRet)
+static	DWORD 	WAVE_ConvertByteToTimeFormat(WINE_MCIWAVE* wmw, DWORD val)
 {
     DWORD	   ret = 0;
 
@@ -243,7 +243,6 @@ static	DWORD 	WAVE_ConvertByteToTimeFormat(WINE_MCIWAVE* wmw, DWORD val, LPDWORD
 	WARN("Bad time format %u!\n", wmw->dwMciTimeFormat);
     }
     TRACE("val=%u=0x%08x [tf=%u] => ret=%u\n", val, val, wmw->dwMciTimeFormat, ret);
-    *lpRet = 0;
     return ret;
 }
 
@@ -257,6 +256,9 @@ static	DWORD 	WAVE_ConvertTimeFormatToByte(WINE_MCIWAVE* wmw, DWORD val)
     switch (wmw->dwMciTimeFormat) {
     case MCI_FORMAT_MILLISECONDS:
 	ret = MulDiv(val,wmw->lpWaveFormat->nAvgBytesPerSec,1000);
+	if (ret > wmw->ckWaveData.cksize &&
+	    val == WAVE_ConvertByteToTimeFormat(wmw, wmw->ckWaveData.cksize))
+	    ret = wmw->ckWaveData.cksize;
 	break;
     case MCI_FORMAT_BYTES:
 	ret = val;
@@ -1484,7 +1486,7 @@ static DWORD WAVE_mciStatus(MCIDEVICEID wDevID, DWORD dwFlags, LPMCI_STATUS_PARM
 		return MCIERR_UNSUPPORTED_FUNCTION;
 	    }
 	    /* only one track in file is currently handled, so don't take care of MCI_TRACK flag */
-	    lpParms->dwReturn = WAVE_ConvertByteToTimeFormat(wmw, wmw->ckWaveData.cksize, &ret);
+	    lpParms->dwReturn = WAVE_ConvertByteToTimeFormat(wmw, wmw->ckWaveData.cksize);
             TRACE("MCI_STATUS_LENGTH => %lu\n", lpParms->dwReturn);
 	    break;
 	case MCI_STATUS_MODE:
@@ -1509,8 +1511,7 @@ static DWORD WAVE_mciStatus(MCIDEVICEID wDevID, DWORD dwFlags, LPMCI_STATUS_PARM
 	    }
 	    /* only one track in file is currently handled, so don't take care of MCI_TRACK flag */
 	    lpParms->dwReturn = WAVE_ConvertByteToTimeFormat(wmw,
-							     (dwFlags & MCI_STATUS_START) ? 0 : wmw->dwPosition,
-							     &ret);
+							     (dwFlags & MCI_STATUS_START) ? 0 : wmw->dwPosition);
             TRACE("MCI_STATUS_POSITION %s => %lu\n",
 		  (dwFlags & MCI_STATUS_START) ? "start" : "current", lpParms->dwReturn);
 	    break;




More information about the wine-cvs mailing list