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)