wodPlayer patch
Huw D M Davies
h.davies1 at physics.ox.ac.uk
Tue May 29 09:54:22 CDT 2001
Huw D M Davies <hdavies at codeweavers.com>
Attempt to write fragments and check whether we can notify the client
after every message.
-------------- next part --------------
Index: dlls/winmm/wineoss/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wineoss/audio.c,v
retrieving revision 1.40
diff -u -r1.40 audio.c
--- dlls/winmm/wineoss/audio.c 2001/05/09 17:31:34 1.40
+++ dlls/winmm/wineoss/audio.c 2001/05/29 14:39:54
@@ -642,6 +642,7 @@
int msg;
DWORD param;
DWORD tc;
+ BOOL had_msg;
wwo->state = WINE_WS_STOPPED;
@@ -678,11 +679,14 @@
dwSleepTime = 0;
}
- TRACE("imhere[1]\n");
+ TRACE("imhere[1] tc = %08lx\n", GetTickCount());
if (dwSleepTime)
- WaitForSingleObject(wwo->msg_event, dwSleepTime);
- TRACE("imhere[2] (q=%p p=%p)\n", wwo->lpQueuePtr, wwo->lpPlayPtr);
+ WaitForSingleObject(wwo->msg_event, dwSleepTime);
+ TRACE("imhere[2] (q=%p p=%p) tc = %08lx\n", wwo->lpQueuePtr,
+ wwo->lpPlayPtr, GetTickCount());
+ had_msg = FALSE;
while (wodPlayer_RetrieveMessage(wwo, &msg, ¶m)) {
+ had_msg = TRUE;
switch (msg) {
case WINE_WM_PAUSING:
wodPlayer_Reset(wwo, uDevID, FALSE);
@@ -722,11 +726,19 @@
FIXME("unknown message %d\n", msg);
break;
}
+ if (wwo->state == WINE_WS_PLAYING) {
+ wodPlayer_WriteFragments(wwo);
+ }
+ wodPlayer_Notify(wwo, uDevID, FALSE);
}
- if (wwo->state == WINE_WS_PLAYING) {
- wodPlayer_WriteFragments(wwo);
+
+ if (!had_msg) { /* if we've received a msg we've just done this so we
+ won't repeat it */
+ if (wwo->state == WINE_WS_PLAYING) {
+ wodPlayer_WriteFragments(wwo);
+ }
+ wodPlayer_Notify(wwo, uDevID, FALSE);
}
- wodPlayer_Notify(wwo, uDevID, FALSE);
}
ExitThread(0);
/* just for not generating compilation warnings... should never be executed */
More information about the wine-patches
mailing list