diff --git a/dlls/msacm32/internal.c b/dlls/msacm32/internal.c index 84898ea4f92..cfc4708fe46 100644 --- a/dlls/msacm32/internal.c +++ b/dlls/msacm32/internal.c @@ -711,6 +711,35 @@ void MSACM_WriteCurrentPriorities(void) RegCloseKey(hPriorityKey); } +static PWINE_ACMLOCALDRIVER MSACM_pFirstACMLocalDriver; +static PWINE_ACMLOCALDRIVER MSACM_pLastACMLocalDriver; + +static PWINE_ACMLOCALDRIVER MSACM_UnregisterLocalDriver(PWINE_ACMLOCALDRIVER paldrv) +{ + PWINE_ACMLOCALDRIVER pNextACMLocalDriver; + + if (paldrv->pACMInstList) { + ERR("local driver instances still present after closing all drivers - memory leak\n"); + return NULL; + } + + if (paldrv == MSACM_pFirstACMLocalDriver) + MSACM_pFirstACMLocalDriver = paldrv->pNextACMLocalDrv; + if (paldrv == MSACM_pLastACMLocalDriver) + MSACM_pLastACMLocalDriver = paldrv->pPrevACMLocalDrv; + + if (paldrv->pPrevACMLocalDrv) + paldrv->pPrevACMLocalDrv->pNextACMLocalDrv = paldrv->pNextACMLocalDrv; + if (paldrv->pNextACMLocalDrv) + paldrv->pNextACMLocalDrv->pPrevACMLocalDrv = paldrv->pPrevACMLocalDrv; + + pNextACMLocalDriver = paldrv->pNextACMLocalDrv; + + HeapFree(MSACM_hHeap, 0, paldrv); + + return pNextACMLocalDriver; +} + /*********************************************************************** * MSACM_UnregisterDriver() */ @@ -824,9 +853,6 @@ MMRESULT MSACM_Message(HACMDRIVER had, UINT uMsg, LPARAM lParam1, LPARAM lParam2 return MMSYSERR_INVALHANDLE; } -static PWINE_ACMLOCALDRIVER MSACM_pFirstACMLocalDriver; -static PWINE_ACMLOCALDRIVER MSACM_pLastACMLocalDriver; - PWINE_ACMLOCALDRIVER MSACM_RegisterLocalDriver(HMODULE hModule, DRIVERPROC lpDriverProc) { PWINE_ACMLOCALDRIVER paldrv; @@ -1040,29 +1066,3 @@ LRESULT MSACM_CloseLocalDriver(PWINE_ACMLOCALDRIVERINST paldrv) ERR("unable to close driver instance\n"); return FALSE; } - -PWINE_ACMLOCALDRIVER MSACM_UnregisterLocalDriver(PWINE_ACMLOCALDRIVER paldrv) -{ - PWINE_ACMLOCALDRIVER pNextACMLocalDriver; - - if (paldrv->pACMInstList) { - ERR("local driver instances still present after closing all drivers - memory leak\n"); - return NULL; - } - - if (paldrv == MSACM_pFirstACMLocalDriver) - MSACM_pFirstACMLocalDriver = paldrv->pNextACMLocalDrv; - if (paldrv == MSACM_pLastACMLocalDriver) - MSACM_pLastACMLocalDriver = paldrv->pPrevACMLocalDrv; - - if (paldrv->pPrevACMLocalDrv) - paldrv->pPrevACMLocalDrv->pNextACMLocalDrv = paldrv->pNextACMLocalDrv; - if (paldrv->pNextACMLocalDrv) - paldrv->pNextACMLocalDrv->pPrevACMLocalDrv = paldrv->pPrevACMLocalDrv; - - pNextACMLocalDriver = paldrv->pNextACMLocalDrv; - - HeapFree(MSACM_hHeap, 0, paldrv); - - return pNextACMLocalDriver; -} diff --git a/dlls/msacm32/wineacm.h b/dlls/msacm32/wineacm.h index fc034012a6d..3c18a57b95a 100644 --- a/dlls/msacm32/wineacm.h +++ b/dlls/msacm32/wineacm.h @@ -397,7 +397,6 @@ extern PWINE_ACMDRIVERID MSACM_RegisterDriverFromRegistry(LPCWSTR pszRegEntry); extern PWINE_ACMLOCALDRIVER MSACM_RegisterLocalDriver(HMODULE hModule, DRIVERPROC lpDriverProc); extern PWINE_ACMLOCALDRIVERINST MSACM_OpenLocalDriver(PWINE_ACMLOCALDRIVER, LPARAM); extern LRESULT MSACM_CloseLocalDriver(PWINE_ACMLOCALDRIVERINST); -extern PWINE_ACMLOCALDRIVER MSACM_UnregisterLocalDriver(PWINE_ACMLOCALDRIVER); /* extern PWINE_ACMLOCALDRIVER MSACM_GetLocalDriver(HACMDRIVER hDriver); */