CVS: winex/dlls/winmm mmio.c,1.10,1.11

[email protected] 31 Jul 2007 17:44:40 -0000
Newsgroups gmane.comp.emulators.winex.cvs
Message-ID <[email protected]>
Subject: winex/dlls/winmm mmio.c,1.10,1.11Update of /var/lib/cvsd/cvsroot/winex/dlls/winmm
In directory agravaine:/tmp/cvs-serv23204/dlls/winmm

Modified Files:
	mmio.c 
Log Message:

- better fix to mmioSetInfo() for ensuring dirty buffers get flushed


Index: mmio.c
===================================================================
RCS file: /var/lib/cvsd/cvsroot/winex/dlls/winmm/mmio.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- mmio.c	31 Jul 2007 17:44:33 -0000	1.10
+++ mmio.c	31 Jul 2007 17:44:38 -0000	1.11
@@ -1203,6 +1203,8 @@
     wm->info.pchNext     = wm->info.pchBuffer + (lpmmioinfo->pchNext     - lpmmioinfo->pchBuffer);
     wm->info.pchEndRead  = wm->info.pchBuffer + (lpmmioinfo->pchEndRead  - lpmmioinfo->pchBuffer);
     wm->info.pchEndWrite = wm->info.pchBuffer + (lpmmioinfo->pchEndWrite - lpmmioinfo->pchBuffer);
+    if (lpmmioinfo->dwFlags & MMIO_DIRTY)
+        wm->info.dwFlags |= MMIO_DIRTY;
 
     return MMSYSERR_NOERROR;
 }
@@ -1230,23 +1232,8 @@
 
     wm->info.pchNext = lpmmioinfo->pchNext;
     wm->info.pchEndRead = lpmmioinfo->pchEndRead;
-
-    /* We set this to 1 for internal use; if 0, user called us, and we need to flush
-       out any data that's outstanding */
-    if (uFlags == 0)
-    {
-        if (((wm->info.dwFlags & MMIO_RWMODE) != MMIO_READ) &&
-            (lpmmioinfo->dwFlags & MMIO_DIRTY))
-        {
-            MMIO_SendMessage(wm, MMIOM_SEEK, lpmmioinfo->lBufOffset, SEEK_SET, MMIO_PROC_32A);
-            MMIO_SendMessage(wm, MMIOM_WRITE, (LPARAM)lpmmioinfo->pchBuffer,
-                             lpmmioinfo->pchNext - lpmmioinfo->pchBuffer, MMIO_PROC_32A);
-        }
-        if (MMIO_Flush(wm, 0) != MMSYSERR_NOERROR)
-            return MMIOERR_CANNOTWRITE;
-        wm->dwFileSize = max(wm->dwFileSize,
-                             lpmmioinfo->lBufOffset + (lpmmioinfo->pchNext - lpmmioinfo->pchBuffer));
-    }
+    if (lpmmioinfo->dwFlags & MMIO_DIRTY)
+        wm->info.dwFlags |= MMIO_DIRTY;
 
     return MMSYSERR_NOERROR;
 }
@@ -1317,7 +1304,7 @@
 
     TRACE("hmmio=%04X, lpmmioinfo=%p, uFlags=%04X\n", hmmio, lpmmioinfo, uFlags);
 
-    if (lpmmioinfo && (ret = mmioSetInfo(hmmio, lpmmioinfo, 1)) != MMSYSERR_NOERROR)
+    if (lpmmioinfo && (ret = mmioSetInfo(hmmio, lpmmioinfo, 0)) != MMSYSERR_NOERROR)
         return ret;
 
     if ((wm = MMIO_Get(NULL, hmmio)) == NULL)