Commit 0a231ffa authored by Erwan Tulou's avatar Erwan Tulou

msw: remove unneeded code and useless "shaking" of window

For lack of a faster detection (based on win32 api messages),
resize/move of the parent window are detected in the Manage function
on a regular basis and acted upon if need be.

Move is an issue only for directx (surface doesn't automatically follow
the associated window). Though coordinates doesn't change, an UpdateRects
is still required to update the various rectangles used by directx.

As it was coded, everything was already taken care of.
The artificial "shaking" of the window was quite useless.
parent ff58f274
...@@ -161,6 +161,7 @@ void CommonManage(vout_display_t *vd) ...@@ -161,6 +161,7 @@ void CommonManage(vout_display_t *vd)
RECT rect_parent; RECT rect_parent;
POINT point; POINT point;
/* Check if the parent window has resized or moved */
GetClientRect(sys->hparent, &rect_parent); GetClientRect(sys->hparent, &rect_parent);
point.x = point.y = 0; point.x = point.y = 0;
ClientToScreen(sys->hparent, &point); ClientToScreen(sys->hparent, &point);
...@@ -169,30 +170,25 @@ void CommonManage(vout_display_t *vd) ...@@ -169,30 +170,25 @@ void CommonManage(vout_display_t *vd)
if (!EqualRect(&rect_parent, &sys->rect_parent)) { if (!EqualRect(&rect_parent, &sys->rect_parent)) {
sys->rect_parent = rect_parent; sys->rect_parent = rect_parent;
/* FIXME I find such #ifdef quite weirds. Are they really needed ? */ /* This code deals with both resize and move
*
#if defined(MODULE_NAME_IS_direct3d) || defined(MODULE_NAME_IS_wingdi) || defined(MODULE_NAME_IS_wingapi) * For most drivers(direct3d, gdi, opengl), move is never
* an issue. The surface automatically gets moved together
* with the associated window (hvideownd)
*
* For directx, it is still important to call UpdateRects
* on a move of the parent window, even if no resize occured
*/
SetWindowPos(sys->hwnd, 0, 0, 0, SetWindowPos(sys->hwnd, 0, 0, 0,
rect_parent.right - rect_parent.left, rect_parent.right - rect_parent.left,
rect_parent.bottom - rect_parent.top, rect_parent.bottom - rect_parent.top,
SWP_NOZORDER); SWP_NOZORDER);
UpdateRects(vd, NULL, NULL, true);
#else
/* This one is to force the update even if only
* the position has changed */
SetWindowPos(sys->hwnd, 0, 1, 1,
rect_parent.right - rect_parent.left,
rect_parent.bottom - rect_parent.top, 0);
SetWindowPos(sys->hwnd, 0, 0, 0,
rect_parent.right - rect_parent.left,
rect_parent.bottom - rect_parent.top, 0);
#endif UpdateRects(vd, NULL, NULL, true);
} }
} }
/* */ /* HasMoved means here resize or move */
if (EventThreadGetAndResetHasMoved(sys->event)) if (EventThreadGetAndResetHasMoved(sys->event))
UpdateRects(vd, NULL, NULL, false); UpdateRects(vd, NULL, NULL, false);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment