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, &param)) {
+	    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