Changeset 2103 for trunk/src/msacm32/driver.cpp
- Timestamp:
- Dec 18, 1999, 11:15:16 AM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/msacm32/driver.cpp
r1607 r2103 61 61 LPARAM lParam, DWORD dwPriority, DWORD fdwAdd) 62 62 { 63 FIXME("(%p, 0x%08x, %ld, %ld, %ld): stub\n",64 phadid, hinstModule, lParam, dwPriority, fdwAdd) ;63 dprintf(("(%p, 0x%08x, %ld, %ld, %ld): stub\n", 64 phadid, hinstModule, lParam, dwPriority, fdwAdd)); 65 65 66 66 SetLastError(ERROR_CALL_NOT_IMPLEMENTED); … … 73 73 MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose) 74 74 { 75 PWINE_ACMDRIVER p; 75 PWINE_ACMDRIVER p; 76 PWINE_ACMDRIVER* tp; 76 77 77 78 if (fdwClose) … … 81 82 if (!p) 82 83 return MMSYSERR_INVALHANDLE; 83 84 p->obj.pACMDriverID->pACMDriver = NULL; 85 86 if (p->hDrvr) 84 85 for (tp = &(p->obj.pACMDriverID->pACMDriverList); *tp; *tp = (*tp)->pNextACMDriver) { 86 if (*tp == p) { 87 *tp = (*tp)->pNextACMDriver; 88 break; 89 } 90 } 91 92 if (p->hDrvr && !p->obj.pACMDriverID->pACMDriverList) 87 93 CloseDriver(p->hDrvr, 0, 0); 88 94 … … 127 133 MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, DWORD fdwDetails) 128 134 { 129 PWINE_ACMDRIVERID p;135 HACMDRIVER acmDrvr; 130 136 MMRESULT mmr; 131 BOOL bOpenTemporary;132 133 p = MSACM_GetDriverID(hadid);134 if (!p)135 return MMSYSERR_INVALHANDLE;136 137 137 138 if (fdwDetails) 138 139 return MMSYSERR_INVALFLAG; 139 140 140 bOpenTemporary = !p->pACMDriver; 141 if (bOpenTemporary) { 142 bOpenTemporary = TRUE; 143 acmDriverOpen((PHACMDRIVER) &p->pACMDriver, hadid, 0); 144 } 145 146 mmr = (MMRESULT) acmDriverMessage((HACMDRIVER) p->pACMDriver, ACMDM_DRIVER_DETAILS, 147 (LPARAM) padd, 0); 148 149 if (bOpenTemporary) { 150 acmDriverClose((HACMDRIVER) p->pACMDriver, 0); 151 p->pACMDriver = NULL; 141 mmr = acmDriverOpen(&acmDrvr, hadid, 0); 142 if (mmr == 0) { 143 mmr = (MMRESULT)acmDriverMessage(acmDrvr, ACMDM_DRIVER_DETAILS, (LPARAM) padd, 0); 144 145 acmDriverClose(acmDrvr, 0); 152 146 } 153 147 … … 160 154 MMRESULT WINAPI acmDriverEnum(ACMDRIVERENUMCB fnCallback, DWORD dwInstance, DWORD fdwEnum) 161 155 { 162 PWINE_ACMDRIVERID p; 163 156 PWINE_ACMDRIVERID p; 157 DWORD fdwSupport; 158 164 159 if (!fnCallback) { 165 160 return MMSYSERR_INVALPARAM; … … 170 165 } 171 166 172 p = MSACM_pFirstACMDriverID; 173 while (p) { 174 (*fnCallback)((HACMDRIVERID) p, dwInstance, ACMDRIVERDETAILS_SUPPORTF_CODEC); 175 p = p->pNextACMDriverID; 167 for (p = MSACM_pFirstACMDriverID; p; p = p->pNextACMDriverID) { 168 fdwSupport = ACMDRIVERDETAILS_SUPPORTF_CODEC; 169 if (!p->bEnabled) { 170 if (fdwEnum & ACM_DRIVERENUMF_DISABLED) 171 fdwSupport |= ACMDRIVERDETAILS_SUPPORTF_DISABLED; 172 else 173 continue; 174 } 175 (*fnCallback)((HACMDRIVERID) p, dwInstance, fdwSupport); 176 176 } 177 177 … … 226 226 MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpen) 227 227 { 228 PWINE_ACMDRIVERID padid; 229 230 TRACE("(%p, %x, %08lu\n", phad, hadid, fdwOpen); 228 PWINE_ACMDRIVERID padid; 229 PWINE_ACMDRIVER pad; 230 231 dprintf(("(%p, %x, %08lu)\n", phad, hadid, fdwOpen)); 231 232 232 233 if (!phad) … … 240 241 return MMSYSERR_INVALFLAG; 241 242 242 if (padid->pACMDriver) { 243 /* FIXME: Is it allowed? */ 244 ERR("Can't open driver twice\n"); 243 pad = PWINE_ACMDRIVER(HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER))); 244 if (!pad) return MMSYSERR_NOMEM; 245 246 pad->obj.pACMDriverID = padid; 247 248 if (!padid->hInstModule) 249 pad->hDrvr = OpenDriverA(padid->pszDriverAlias, "drivers32", 0); 250 else 251 pad->hDrvr = padid->hInstModule; 252 253 if (!pad->hDrvr) { 254 HeapFree(MSACM_hHeap, 0, pad); 245 255 return MMSYSERR_ERROR; 246 256 } 247 257 248 padid->pACMDriver = PWINE_ACMDRIVER(HeapAlloc(MSACM_hHeap, 0, sizeof(WINE_ACMDRIVER))); 249 padid->pACMDriver->obj.pACMDriverID = padid; 250 251 if (!padid->hInstModule) 252 padid->pACMDriver->hDrvr = OpenDriverA(padid->pszDriverAlias, "drivers32", 0); 253 else 254 padid->pACMDriver->hDrvr = padid->hInstModule; 255 256 if (!padid->pACMDriver->hDrvr) { 257 HeapFree(MSACM_hHeap, 0, padid->pACMDriver); 258 padid->pACMDriver = NULL; 259 return MMSYSERR_ERROR; 260 } 261 262 /* FIXME-ICC: "FARPROC" cannot be converted to "extern "STDCALL" LRESULT(*)(DWORD,HDRVR,UINT,LPARAM,LPARAM)" */ 263 // padid->pACMDriver->pfnDriverProc = GetProcAddress(padid->pACMDriver->hDrvr, "DriverProc"); 264 258 // pad->pfnDriverProc = GetProcAddress(pad->hDrvr, "DriverProc"); 259 260 /* insert new pad at beg of list */ 261 pad->pNextACMDriver = padid->pACMDriverList; 262 padid->pACMDriverList = pad; 263 265 264 /* FIXME: Create a WINE_ACMDRIVER32 */ 266 *phad = (HACMDRIVER) padid->pACMDriver;265 *phad = (HACMDRIVER)pad; 267 266 268 267 // return MMSYSERR_NOERROR; … … 318 317 break; 319 318 320 FIXME("(0x%08x, %ld, %ld): stub (partial)\n",321 hadid, dwPriority, fdwPriority) ;319 dprintf(("(0x%08x, %ld, %ld): stub (partial)\n", 320 hadid, dwPriority, fdwPriority)); 322 321 break; 323 322 }
Note:
See TracChangeset
for help on using the changeset viewer.