Multimedia "session instance" session for drivers [2/3]
Eric Pouech
eric.pouech at wanadoo.fr
Fri May 10 16:08:45 CDT 2002
see previous patch
A+
-------------- next part --------------
Name: msacm2load
ChangeLog: moved session instance loading to winmm
License: X11
GenDate: 2002/05/10 20:49:48 UTC
ModifiedFiles: dlls/msacm/driver.c
AddedFiles:
===================================================================
RCS file: /home/cvs/cvsroot/wine/wine/dlls/msacm/driver.c,v
retrieving revision 1.15
diff -u -u -r1.15 driver.c
--- dlls/msacm/driver.c 9 Mar 2002 23:39:08 -0000 1.15
+++ dlls/msacm/driver.c 23 Apr 2002 19:11:40 -0000
@@ -240,70 +240,13 @@
return MMSYSERR_INVALPARAM;
}
-static MMRESULT MSACM_DriverOpenHelper(PWINE_ACMDRIVER* ppad, PWINE_ACMDRIVERID padid, DWORD fdwOpen, BOOL useDesc)
-{
- MMRESULT ret = MMSYSERR_ERROR;
- PWINE_ACMDRIVER pad;
-
- *ppad = NULL;
-
- pad = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER));
- if (!pad) return MMSYSERR_NOMEM;
-
- pad->obj.dwType = WINE_ACMOBJ_DRIVER;
- pad->obj.pACMDriverID = padid;
-
- if (!(pad->hDrvr = padid->hInstModule)) {
- /* this is not an externally added driver... need to load it */
- if (!padid->pszDriverAlias) goto gotError;
-
- if (useDesc) {
- ACMDRVOPENDESCW adod;
- int len;
-
- adod.cbStruct = sizeof(adod);
- adod.fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
- adod.fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
- adod.dwVersion = acmGetVersion();
- adod.dwFlags = fdwOpen;
- adod.dwError = 0;
- len = strlen("Drivers32") + 1;
- adod.pszSectionName = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, "Drivers32", -1, (LPWSTR)adod.pszSectionName, len);
- len = strlen(padid->pszDriverAlias) + 1;
- adod.pszAliasName = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR));
- MultiByteToWideChar(CP_ACP, 0, padid->pszDriverAlias, -1, (LPWSTR)adod.pszAliasName, len);
- adod.dnDevNode = 0;
-
- pad->hDrvr = OpenDriverA(padid->pszDriverAlias, NULL, (DWORD)&adod);
-
- HeapFree(MSACM_hHeap, 0, (LPWSTR)adod.pszSectionName);
- HeapFree(MSACM_hHeap, 0, (LPWSTR)adod.pszAliasName);
- if (!pad->hDrvr) {
- ret = adod.dwError;
- goto gotError;
- }
- } else {
- if (!(pad->hDrvr = OpenDriverA(padid->pszDriverAlias, 0L, 0L))) {
- ret = MMSYSERR_ERROR;
- goto gotError;
- }
- }
- }
- *ppad = pad;
- return MMSYSERR_NOERROR;
- gotError:
- HeapFree(MSACM_hHeap, 0, pad);
- return ret;
-}
-
/***********************************************************************
* acmDriverOpen (MSACM32.@)
*/
MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen)
{
PWINE_ACMDRIVERID padid;
- PWINE_ACMDRIVER pad = NULL, first_pad = NULL;
+ PWINE_ACMDRIVER pad = NULL;
MMRESULT ret;
TRACE("(%p, %x, %08lu)\n", phad, hadid, fdwOpen);
@@ -318,22 +261,48 @@
if (!padid)
return MMSYSERR_INVALHANDLE;
- /* first driver to be loaded ? */
- if (!padid->pACMDriverList && !padid->hInstModule) {
- ret = MSACM_DriverOpenHelper(&first_pad, padid, fdwOpen, FALSE);
- if (ret) goto gotError;
-
-
- /* insert new pad at beg of list */
- first_pad->pNextACMDriver = NULL;
- padid->pACMDriverList = first_pad;
- }
-
- ret = MSACM_DriverOpenHelper(&pad, padid, fdwOpen, TRUE);
- if (ret) {
- if (first_pad)
- acmDriverClose((HACMDRIVER)first_pad, 0L);
- goto gotError;
+ pad = HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER));
+ if (!pad)
+ return MMSYSERR_NOMEM;
+
+ pad->obj.dwType = WINE_ACMOBJ_DRIVER;
+ pad->obj.pACMDriverID = padid;
+
+ if (!(pad->hDrvr = padid->hInstModule))
+ {
+ ACMDRVOPENDESCW adod;
+ int len;
+
+ /* this is not an externally added driver... need to actually load it */
+ if (!padid->pszDriverAlias)
+ {
+ ret = MMSYSERR_ERROR;
+ goto gotError;
+ }
+
+ adod.cbStruct = sizeof(adod);
+ adod.fccType = ACMDRIVERDETAILS_FCCTYPE_AUDIOCODEC;
+ adod.fccComp = ACMDRIVERDETAILS_FCCCOMP_UNDEFINED;
+ adod.dwVersion = acmGetVersion();
+ adod.dwFlags = fdwOpen;
+ adod.dwError = 0;
+ len = strlen("Drivers32") + 1;
+ adod.pszSectionName = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, "Drivers32", -1, (LPWSTR)adod.pszSectionName, len);
+ len = strlen(padid->pszDriverAlias) + 1;
+ adod.pszAliasName = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR));
+ MultiByteToWideChar(CP_ACP, 0, padid->pszDriverAlias, -1, (LPWSTR)adod.pszAliasName, len);
+ adod.dnDevNode = 0;
+
+ pad->hDrvr = OpenDriverA(padid->pszDriverAlias, NULL, (DWORD)&adod);
+
+ HeapFree(MSACM_hHeap, 0, (LPWSTR)adod.pszSectionName);
+ HeapFree(MSACM_hHeap, 0, (LPWSTR)adod.pszAliasName);
+ if (!pad->hDrvr)
+ {
+ ret = adod.dwError;
+ goto gotError;
+ }
}
/* insert new pad at beg of list */
More information about the wine-patches
mailing list