Maarten Lankhorst : winealsa: Increase performance of wavein
getposition.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jul 30 08:55:41 CDT 2007
Module: wine
Branch: master
Commit: f45128c2a6bc5c304244c258ead1378a855b6aba
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f45128c2a6bc5c304244c258ead1378a855b6aba
Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Thu Jul 5 00:41:59 2007 +0200
winealsa: Increase performance of wavein getposition.
---
dlls/winealsa.drv/wavein.c | 12 +++---------
1 files changed, 3 insertions(+), 9 deletions(-)
diff --git a/dlls/winealsa.drv/wavein.c b/dlls/winealsa.drv/wavein.c
index 5d731eb..412edd2 100644
--- a/dlls/winealsa.drv/wavein.c
+++ b/dlls/winealsa.drv/wavein.c
@@ -154,7 +154,7 @@ static DWORD CALLBACK widRecorder(LPVOID pmt)
DWORD frames_per_period;
wwi->state = WINE_WS_STOPPED;
- wwi->dwTotalRecorded = 0;
+ InterlockedExchange((LONG*)&wwi->dwTotalRecorded, 0);
wwi->lpQueuePtr = NULL;
SetEvent(wwi->hStartUpEvent);
@@ -198,7 +198,7 @@ static DWORD CALLBACK widRecorder(LPVOID pmt)
{
/* update number of bytes recorded in current buffer and by this device */
lpWaveHdr->dwBytesRecorded += bytesRead;
- wwi->dwTotalRecorded += bytesRead;
+ InterlockedExchangeAdd((LONG*)&wwi->dwTotalRecorded, bytesRead);
/* buffer is full. notify client */
if (lpWaveHdr->dwBytesRecorded == lpWaveHdr->dwBufferLength)
@@ -247,7 +247,7 @@ static DWORD CALLBACK widRecorder(LPVOID pmt)
/* update number of bytes recorded in current buffer and by this device */
lpWaveHdr->dwBytesRecorded += dwToCopy;
- wwi->dwTotalRecorded += dwToCopy;
+ InterlockedExchangeAdd((LONG*)&wwi->dwTotalRecorded, dwToCopy);
bytesRead -= dwToCopy;
pOffset += dwToCopy;
@@ -385,10 +385,6 @@ static DWORD CALLBACK widRecorder(LPVOID pmt)
HeapFree(GetProcessHeap(), 0, buffer);
ExitThread(0);
/* shouldn't go here */
- case WINE_WM_UPDATE:
- SetEvent(ev);
- break;
-
default:
FIXME("unknown message %d\n", msg);
break;
@@ -784,8 +780,6 @@ static DWORD widGetPosition(WORD wDevID, LPMMTIME lpTime, DWORD uSize)
}
wwi = &WInDev[wDevID];
- ALSA_AddRingMessage(&wwi->msgRing, WINE_WM_UPDATE, 0, TRUE);
-
return ALSA_bytes_to_mmtime(lpTime, wwi->dwTotalRecorded, &wwi->format);
}
More information about the wine-cvs
mailing list