mciavi: Do not stub unsupported recording or editing functions.
Native does not announce CAN SAVE / RECORD / LOCK capabilities either.
diff --git a/dlls/mciavi32/mciavi.c b/dlls/mciavi32/mciavi.c
index 8613bff..cb24d6e 100644
--- a/dlls/mciavi32/mciavi.c
+++ b/dlls/mciavi32/mciavi.c
@@ -563,28 +563,6 @@
}
/***************************************************************************
- * MCIAVI_mciRecord [internal]
- */
-static DWORD MCIAVI_mciRecord(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECORD_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08X, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- EnterCriticalSection(&wma->cs);
- wma->dwStatus = MCI_MODE_RECORD;
- LeaveCriticalSection(&wma->cs);
- return 0;
-}
-
-/***************************************************************************
* MCIAVI_mciStop [internal]
*/
static DWORD MCIAVI_mciStop(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
@@ -751,44 +729,6 @@
}
/******************************************************************************
- * MCIAVI_mciSave [internal]
- */
-static DWORD MCIAVI_mciSave(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SAVE_PARMSW lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciFreeze [internal]
- */
-static DWORD MCIAVI_mciFreeze(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
* MCIAVI_mciRealize [internal]
*/
static DWORD MCIAVI_mciRealize(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
@@ -808,25 +748,6 @@
}
/******************************************************************************
- * MCIAVI_mciUnFreeze [internal]
- */
-static DWORD MCIAVI_mciUnFreeze(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RECT_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
* MCIAVI_mciUpdate [internal]
*/
static DWORD MCIAVI_mciUpdate(UINT wDevID, DWORD dwFlags, LPMCI_DGV_UPDATE_PARMS lpParms)
@@ -870,82 +791,6 @@
}
/******************************************************************************
- * MCIAVI_mciCopy [internal]
- */
-static DWORD MCIAVI_mciCopy(UINT wDevID, DWORD dwFlags, LPMCI_DGV_COPY_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciCut [internal]
- */
-static DWORD MCIAVI_mciCut(UINT wDevID, DWORD dwFlags, LPMCI_DGV_CUT_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciDelete [internal]
- */
-static DWORD MCIAVI_mciDelete(UINT wDevID, DWORD dwFlags, LPMCI_DGV_DELETE_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciPaste [internal]
- */
-static DWORD MCIAVI_mciPaste(UINT wDevID, DWORD dwFlags, LPMCI_DGV_PASTE_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
* MCIAVI_mciCue [internal]
*/
static DWORD MCIAVI_mciCue(UINT wDevID, DWORD dwFlags, LPMCI_DGV_CUE_PARMS lpParms)
@@ -965,63 +810,6 @@
}
/******************************************************************************
- * MCIAVI_mciCapture [internal]
- */
-static DWORD MCIAVI_mciCapture(UINT wDevID, DWORD dwFlags, LPMCI_DGV_CAPTURE_PARMSW lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciMonitor [internal]
- */
-static DWORD MCIAVI_mciMonitor(UINT wDevID, DWORD dwFlags, LPMCI_DGV_MONITOR_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciReserve [internal]
- */
-static DWORD MCIAVI_mciReserve(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RESERVE_PARMSW lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
* MCIAVI_mciSetAudio [internal]
*/
static DWORD MCIAVI_mciSetAudio(UINT wDevID, DWORD dwFlags, LPMCI_DGV_SETAUDIO_PARMSW lpParms)
@@ -1079,63 +867,6 @@
}
/******************************************************************************
- * MCIAVI_mciQuality [internal]
- */
-static DWORD MCIAVI_mciQuality(UINT wDevID, DWORD dwFlags, LPMCI_DGV_QUALITY_PARMSW lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciList [internal]
- */
-static DWORD MCIAVI_mciList(UINT wDevID, DWORD dwFlags, LPMCI_DGV_LIST_PARMSW lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
- * MCIAVI_mciUndo [internal]
- */
-static DWORD MCIAVI_mciUndo(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
-/******************************************************************************
* MCIAVI_mciConfigure [internal]
*/
static DWORD MCIAVI_mciConfigure(UINT wDevID, DWORD dwFlags, LPMCI_GENERIC_PARMS lpParms)
@@ -1154,25 +885,6 @@
return 0;
}
-/******************************************************************************
- * MCIAVI_mciRestore [internal]
- */
-static DWORD MCIAVI_mciRestore(UINT wDevID, DWORD dwFlags, LPMCI_DGV_RESTORE_PARMSW lpParms)
-{
- WINE_MCIAVI *wma;
-
- FIXME("(%04x, %08x, %p) : stub\n", wDevID, dwFlags, lpParms);
-
- MCIAVI_mciStop(wDevID, MCI_WAIT, NULL);
-
- if (lpParms == NULL) return MCIERR_NULL_PARAMETER_BLOCK;
-
- wma = MCIAVI_mciGetOpenDev(wDevID);
- if (wma == NULL) return MCIERR_INVALID_DEVICE_ID;
-
- return 0;
-}
-
/*======================================================================*
* MCI AVI entry points *
*======================================================================*/
@@ -1206,7 +918,6 @@
case MCI_OPEN_DRIVER: return MCIAVI_mciOpen (dwDevID, dwParam1, (LPMCI_DGV_OPEN_PARMSW) dwParam2);
case MCI_CLOSE_DRIVER: return MCIAVI_mciClose (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2);
case MCI_PLAY: return MCIAVI_mciPlay (dwDevID, dwParam1, (LPMCI_PLAY_PARMS) dwParam2);
- case MCI_RECORD: return MCIAVI_mciRecord (dwDevID, dwParam1, (LPMCI_DGV_RECORD_PARMS) dwParam2);
case MCI_STOP: return MCIAVI_mciStop (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2);
case MCI_SET: return MCIAVI_mciSet (dwDevID, dwParam1, (LPMCI_DGV_SET_PARMS) dwParam2);
case MCI_PAUSE: return MCIAVI_mciPause (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2);
@@ -1218,34 +929,38 @@
case MCI_PUT: return MCIAVI_mciPut (dwDevID, dwParam1, (LPMCI_DGV_PUT_PARMS) dwParam2);
case MCI_WINDOW: return MCIAVI_mciWindow (dwDevID, dwParam1, (LPMCI_DGV_WINDOW_PARMSW) dwParam2);
case MCI_LOAD: return MCIAVI_mciLoad (dwDevID, dwParam1, (LPMCI_DGV_LOAD_PARMSW) dwParam2);
- case MCI_SAVE: return MCIAVI_mciSave (dwDevID, dwParam1, (LPMCI_DGV_SAVE_PARMSW) dwParam2);
- case MCI_FREEZE: return MCIAVI_mciFreeze (dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS) dwParam2);
case MCI_REALIZE: return MCIAVI_mciRealize (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2);
- case MCI_UNFREEZE: return MCIAVI_mciUnFreeze (dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS) dwParam2);
case MCI_UPDATE: return MCIAVI_mciUpdate (dwDevID, dwParam1, (LPMCI_DGV_UPDATE_PARMS) dwParam2);
case MCI_WHERE: return MCIAVI_mciWhere (dwDevID, dwParam1, (LPMCI_DGV_RECT_PARMS) dwParam2);
case MCI_STEP: return MCIAVI_mciStep (dwDevID, dwParam1, (LPMCI_DGV_STEP_PARMS) dwParam2);
- case MCI_COPY: return MCIAVI_mciCopy (dwDevID, dwParam1, (LPMCI_DGV_COPY_PARMS) dwParam2);
- case MCI_CUT: return MCIAVI_mciCut (dwDevID, dwParam1, (LPMCI_DGV_CUT_PARMS) dwParam2);
- case MCI_DELETE: return MCIAVI_mciDelete (dwDevID, dwParam1, (LPMCI_DGV_DELETE_PARMS) dwParam2);
- case MCI_PASTE: return MCIAVI_mciPaste (dwDevID, dwParam1, (LPMCI_DGV_PASTE_PARMS) dwParam2);
case MCI_CUE: return MCIAVI_mciCue (dwDevID, dwParam1, (LPMCI_DGV_CUE_PARMS) dwParam2);
/* Digital Video specific */
- case MCI_CAPTURE: return MCIAVI_mciCapture (dwDevID, dwParam1, (LPMCI_DGV_CAPTURE_PARMSW) dwParam2);
- case MCI_MONITOR: return MCIAVI_mciMonitor (dwDevID, dwParam1, (LPMCI_DGV_MONITOR_PARMS) dwParam2);
- case MCI_RESERVE: return MCIAVI_mciReserve (dwDevID, dwParam1, (LPMCI_DGV_RESERVE_PARMSW) dwParam2);
case MCI_SETAUDIO: return MCIAVI_mciSetAudio (dwDevID, dwParam1, (LPMCI_DGV_SETAUDIO_PARMSW) dwParam2);
case MCI_SIGNAL: return MCIAVI_mciSignal (dwDevID, dwParam1, (LPMCI_DGV_SIGNAL_PARMS) dwParam2);
case MCI_SETVIDEO: return MCIAVI_mciSetVideo (dwDevID, dwParam1, (LPMCI_DGV_SETVIDEO_PARMSW) dwParam2);
- case MCI_QUALITY: return MCIAVI_mciQuality (dwDevID, dwParam1, (LPMCI_DGV_QUALITY_PARMSW) dwParam2);
- case MCI_LIST: return MCIAVI_mciList (dwDevID, dwParam1, (LPMCI_DGV_LIST_PARMSW) dwParam2);
- case MCI_UNDO: return MCIAVI_mciUndo (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2);
case MCI_CONFIGURE: return MCIAVI_mciConfigure (dwDevID, dwParam1, (LPMCI_GENERIC_PARMS) dwParam2);
- case MCI_RESTORE: return MCIAVI_mciRestore (dwDevID, dwParam1, (LPMCI_DGV_RESTORE_PARMSW) dwParam2);
+ /* no editing, recording, saving, locking without inputs */
+ case MCI_CAPTURE:
+ case MCI_COPY:
+ case MCI_CUT:
+ case MCI_DELETE:
+ case MCI_FREEZE:
+ case MCI_LIST:
+ case MCI_MONITOR:
+ case MCI_PASTE:
+ case MCI_QUALITY:
+ case MCI_RECORD:
+ case MCI_RESERVE:
+ case MCI_RESTORE:
+ case MCI_SAVE:
+ case MCI_UNDO:
+ case MCI_UNFREEZE:
+ TRACE("Unsupported function [0x%x] flags=%08x\n", wMsg, (DWORD)dwParam1);
+ return MCIERR_UNSUPPORTED_FUNCTION;
case MCI_SPIN:
case MCI_ESCAPE:
- WARN("Unsupported command [%u]\n", wMsg);
+ WARN("Unsupported command [0x%x] %08x\n", wMsg, (DWORD)dwParam1);
break;
case MCI_OPEN:
case MCI_CLOSE: