[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