[PATCH 4/5] mciqtz32: Add support for mciPut
Maarten Lankhorst
m.b.lankhorst at gmail.com
Fri May 21 15:14:55 CDT 2010
---
dlls/mciqtz32/mciqtz.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 59 insertions(+), 0 deletions(-)
diff --git a/dlls/mciqtz32/mciqtz.c b/dlls/mciqtz32/mciqtz.c
index 598b375..af2e5dd 100644
--- a/dlls/mciqtz32/mciqtz.c
+++ b/dlls/mciqtz32/mciqtz.c
@@ -826,6 +826,64 @@ static DWORD MCIQTZ_mciWindow(UINT wDevID, DWORD dwFlags, LPMCI_DGV_WINDOW_PARMS
return 0;
}
+static DWORD MCIQTZ_mciPut(UINT wDevID, DWORD dwFlags, LPMCI_DGV_PUT_PARMS lpParms)
+{
+ WINE_MCIQTZ *wma = MCIQTZ_mciGetOpenDev(wDevID);
+ IVideoWindow *vidwin;
+ IBasicVideo *vidbasic;
+ RECT rc;
+ TRACE("(%04x, %08X, %p)\n", wDevID, dwFlags, lpParms);
+
+ if (!lpParms)
+ return MCIERR_NULL_PARAMETER_BLOCK;
+ if (!wma)
+ return MCIERR_INVALID_DEVICE_ID;
+ if (dwFlags & MCI_TEST)
+ return 0;
+
+ if (dwFlags & MCI_DGV_PUT_CLIENT) {
+ FIXME("PUT_CLIENT %s\n", wine_dbgstr_rect(&rc));
+ return MCIERR_UNRECOGNIZED_COMMAND;
+ }
+ if (dwFlags & MCI_DGV_PUT_FRAME) {
+ FIXME("PUT_FRAME %s\n", wine_dbgstr_rect(&rc));
+ return MCIERR_UNRECOGNIZED_COMMAND;
+ }
+ if (dwFlags & MCI_DGV_PUT_VIDEO) {
+ FIXME("PUT_VIDEO %s\n", wine_dbgstr_rect(&rc));
+ return MCIERR_UNRECOGNIZED_COMMAND;
+ }
+
+ IFilterGraph2_QueryInterface(wma->pgraph, &IID_IVideoWindow, (void**)&vidwin);
+ if (!vidwin)
+ return 0;
+ IFilterGraph2_QueryInterface(wma->pgraph, &IID_IBasicVideo, (void**)&vidbasic);
+
+ if (dwFlags & MCI_DGV_RECT) {
+ rc.left = lpParms->rc.left;
+ rc.top = lpParms->rc.top;
+ rc.right = lpParms->rc.left + lpParms->rc.right;
+ rc.bottom = lpParms->rc.top + lpParms->rc.bottom;
+ } else
+ IBasicVideo_GetDestinationPosition(vidbasic, &rc.left, &rc.top, &rc.right, &rc.bottom);
+
+ if (dwFlags & MCI_DGV_PUT_DESTINATION) {
+ TRACE("PUT_DESTINATION %s\n", wine_dbgstr_rect(&rc));
+ IBasicVideo_SetDestinationPosition(vidbasic, rc.left, rc.top, rc.right, rc.bottom);
+ }
+ if (dwFlags & MCI_DGV_PUT_SOURCE) {
+ TRACE("PUT_SOURCE %s\n", wine_dbgstr_rect(&rc));
+ IBasicVideo_SetSourcePosition(vidbasic, rc.left, rc.top, rc.right, rc.bottom);
+ }
+ if (dwFlags & MCI_DGV_PUT_WINDOW) {
+ TRACE("PUT_WINDOW %s\n", wine_dbgstr_rect(&rc));
+ IVideoWindow_SetWindowPosition(vidwin, rc.left, rc.top, rc.right, rc.bottom);
+ }
+ IVideoWindow_Release(vidwin);
+ IBasicVideo_Release(vidbasic);
+ return 0;
+}
+
/******************************************************************************
* MCIAVI_mciUpdate [internal]
*/
@@ -968,6 +1026,7 @@ LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
case MCI_WINDOW:
return MCIQTZ_mciWindow(dwDevID, dwParam1, (LPMCI_DGV_WINDOW_PARMSW)dwParam2);
case MCI_PUT:
+ return MCIQTZ_mciPut(dwDevID, dwParam1, (LPMCI_DGV_PUT_PARMS)dwParam2);
case MCI_RECORD:
case MCI_RESUME:
case MCI_INFO:
--
1.7.0.4
More information about the wine-patches
mailing list