quartz: Add support for fullscreen mode in video renderer.
This commit is contained in:
parent
28d355966d
commit
ab2e5c0499
|
@ -82,6 +82,7 @@ typedef struct VideoRendererImpl
|
||||||
BOOL ThreadResult;
|
BOOL ThreadResult;
|
||||||
HWND hWnd;
|
HWND hWnd;
|
||||||
HWND hWndMsgDrain;
|
HWND hWndMsgDrain;
|
||||||
|
HWND hWndOwner;
|
||||||
BOOL AutoShow;
|
BOOL AutoShow;
|
||||||
RECT SourceRect;
|
RECT SourceRect;
|
||||||
RECT DestRect;
|
RECT DestRect;
|
||||||
|
@ -555,7 +556,7 @@ HRESULT VideoRenderer_create(IUnknown * pUnkOuter, LPVOID * ppv)
|
||||||
ZeroMemory(&pVideoRenderer->SourceRect, sizeof(RECT));
|
ZeroMemory(&pVideoRenderer->SourceRect, sizeof(RECT));
|
||||||
ZeroMemory(&pVideoRenderer->DestRect, sizeof(RECT));
|
ZeroMemory(&pVideoRenderer->DestRect, sizeof(RECT));
|
||||||
ZeroMemory(&pVideoRenderer->WindowPos, sizeof(RECT));
|
ZeroMemory(&pVideoRenderer->WindowPos, sizeof(RECT));
|
||||||
pVideoRenderer->hWndMsgDrain = NULL;
|
pVideoRenderer->hWndMsgDrain = pVideoRenderer->hWndOwner = NULL;
|
||||||
pVideoRenderer->WindowStyle = WS_OVERLAPPED;
|
pVideoRenderer->WindowStyle = WS_OVERLAPPED;
|
||||||
|
|
||||||
/* construct input pin */
|
/* construct input pin */
|
||||||
|
@ -1890,7 +1891,8 @@ static HRESULT WINAPI Videowindow_put_Owner(IVideoWindow *iface,
|
||||||
|
|
||||||
TRACE("(%p/%p)->(%08x)\n", This, iface, (DWORD) Owner);
|
TRACE("(%p/%p)->(%08x)\n", This, iface, (DWORD) Owner);
|
||||||
|
|
||||||
SetParent(This->hWnd, (HWND)Owner);
|
This->hWndOwner = (HWND)Owner;
|
||||||
|
SetParent(This->hWnd, This->hWndOwner);
|
||||||
if (This->WindowStyle & WS_CHILD)
|
if (This->WindowStyle & WS_CHILD)
|
||||||
{
|
{
|
||||||
LONG old = GetWindowLongA(This->hWnd, GWL_STYLE);
|
LONG old = GetWindowLongA(This->hWnd, GWL_STYLE);
|
||||||
|
@ -1910,7 +1912,7 @@ static HRESULT WINAPI Videowindow_get_Owner(IVideoWindow *iface,
|
||||||
|
|
||||||
TRACE("(%p/%p)->(%p)\n", This, iface, Owner);
|
TRACE("(%p/%p)->(%p)\n", This, iface, Owner);
|
||||||
|
|
||||||
*(HWND*)Owner = GetParent(This->hWnd);
|
*(HWND*)Owner = This->hWndOwner;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -1970,6 +1972,22 @@ static HRESULT WINAPI Videowindow_put_FullScreenMode(IVideoWindow *iface,
|
||||||
|
|
||||||
FIXME("(%p/%p)->(%d): stub !!!\n", This, iface, FullScreenMode);
|
FIXME("(%p/%p)->(%d): stub !!!\n", This, iface, FullScreenMode);
|
||||||
|
|
||||||
|
if (FullScreenMode) {
|
||||||
|
ShowWindow(This->hWnd, SW_HIDE);
|
||||||
|
SetParent(This->hWnd, 0);
|
||||||
|
SetWindowLongA(This->hWnd, GWL_STYLE, WS_POPUP);
|
||||||
|
SetWindowPos(This->hWnd,HWND_TOP,0,0,GetSystemMetrics(SM_CXSCREEN),GetSystemMetrics(SM_CYSCREEN),SWP_SHOWWINDOW);
|
||||||
|
GetWindowRect(This->hWnd, &This->DestRect);
|
||||||
|
This->WindowPos = This->DestRect;
|
||||||
|
} else {
|
||||||
|
ShowWindow(This->hWnd, SW_HIDE);
|
||||||
|
SetParent(This->hWnd, This->hWndOwner);
|
||||||
|
SetWindowLongA(This->hWnd, GWL_STYLE, This->WindowStyle);
|
||||||
|
GetClientRect(This->hWnd, &This->DestRect);
|
||||||
|
SetWindowPos(This->hWnd,0,This->DestRect.left,This->DestRect.top,This->DestRect.right,This->DestRect.bottom,SWP_NOZORDER|SWP_SHOWWINDOW);
|
||||||
|
This->WindowPos = This->DestRect;
|
||||||
|
}
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue