winmm init
Eric Pouech
eric.pouech at wanadoo.fr
Thu Oct 10 14:57:33 CDT 2002
this patch removes instance data from winmm (a reminder of before
address space separation)
A+
-------------- next part --------------
Name: mm_init
ChangeLog: removed no longer needed list of instance data
License: X11
GenDate: 2002/10/10 19:55:41 UTC
ModifiedFiles: dlls/winmm/winemm.h dlls/winmm/winmm.c
AddedFiles:
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/winemm.h,v
retrieving revision 1.22
diff -u -u -r1.22 winemm.h
--- dlls/winmm/winemm.h 10 Oct 2002 03:43:53 -0000 1.22
+++ dlls/winmm/winemm.h 10 Oct 2002 19:22:39 -0000
@@ -166,9 +166,6 @@
} WINE_PLAYSOUND, *LPWINE_PLAYSOUND;
typedef struct tagWINE_MM_IDATA {
- /* iData reference */
- DWORD dwThisProcess;
- struct tagWINE_MM_IDATA* lpNextIData;
/* winmm part */
HANDLE hWinMM32Instance;
HANDLE hWinMM16Instance;
Index: dlls/winmm/winmm.c
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/winmm/winmm.c,v
retrieving revision 1.1
diff -u -u -r1.1 winmm.c
--- dlls/winmm/winmm.c 10 Oct 2002 03:43:53 -0000 1.1
+++ dlls/winmm/winmm.c 10 Oct 2002 19:16:05 -0000
@@ -72,33 +72,19 @@
* G L O B A L S E T T I N G S
* ========================================================================*/
-static LPWINE_MM_IDATA lpFirstIData = NULL;
-
-static LPWINE_MM_IDATA MULTIMEDIA_GetIDataNoCheck(void)
-{
- DWORD pid = GetCurrentProcessId();
- LPWINE_MM_IDATA iData;
-
- for (iData = lpFirstIData; iData; iData = iData->lpNextIData) {
- if (iData->dwThisProcess == pid)
- break;
- }
- return iData;
-}
+static LPWINE_MM_IDATA S_IData = NULL;
/**************************************************************************
* MULTIMEDIA_GetIData [internal]
*/
LPWINE_MM_IDATA MULTIMEDIA_GetIData(void)
{
- LPWINE_MM_IDATA iData = MULTIMEDIA_GetIDataNoCheck();
-
- if (!iData) {
+ if (!S_IData) {
ERR("IData not found for pid=%08lx. Suicide !!!\n", GetCurrentProcessId());
DbgBreakPoint();
ExitProcess(0);
}
- return iData;
+ return S_IData;
}
/**************************************************************************
@@ -106,21 +92,16 @@
*/
static BOOL MULTIMEDIA_CreateIData(HINSTANCE hInstDLL)
{
- LPWINE_MM_IDATA iData;
+ S_IData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MM_IDATA));
- iData = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(WINE_MM_IDATA));
-
- if (!iData)
+ if (!S_IData)
return FALSE;
- iData->hWinMM32Instance = hInstDLL;
- iData->dwThisProcess = GetCurrentProcessId();
- iData->lpNextIData = lpFirstIData;
- lpFirstIData = iData;
- InitializeCriticalSection(&iData->cs);
- iData->cs.DebugInfo = (void*)__FILE__ ": WinMM";
- iData->psStopEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
- iData->psLastEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
- TRACE("Created IData (%p) for pid %08lx\n", iData, iData->dwThisProcess);
+ S_IData->hWinMM32Instance = hInstDLL;
+ InitializeCriticalSection(&S_IData->cs);
+ S_IData->cs.DebugInfo = (void*)__FILE__ ": WinMM";
+ S_IData->psStopEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
+ S_IData->psLastEvent = CreateEventA(NULL, TRUE, FALSE, NULL);
+ TRACE("Created IData (%p)\n", S_IData);
return TRUE;
}
@@ -129,24 +110,16 @@
*/
static void MULTIMEDIA_DeleteIData(void)
{
- LPWINE_MM_IDATA iData = MULTIMEDIA_GetIDataNoCheck();
- LPWINE_MM_IDATA* ppid;
-
- if (iData) {
+ if (S_IData) {
TIME_MMTimeStop();
- for (ppid = &lpFirstIData; *ppid; ppid = &(*ppid)->lpNextIData) {
- if (*ppid == iData) {
- *ppid = iData->lpNextIData;
- break;
- }
- }
/* FIXME: should also free content and resources allocated
- * inside iData */
- CloseHandle(iData->psStopEvent);
- CloseHandle(iData->psLastEvent);
- DeleteCriticalSection(&iData->cs);
- HeapFree(GetProcessHeap(), 0, iData);
+ * inside S_IData */
+ CloseHandle(S_IData->psStopEvent);
+ CloseHandle(S_IData->psLastEvent);
+ DeleteCriticalSection(&S_IData->cs);
+ HeapFree(GetProcessHeap(), 0, S_IData);
+ S_IData = NULL;
}
}
More information about the wine-patches
mailing list