]> git.sesse.net Git - vlc/commitdiff
msw: remove unneeded code and useless "shaking" of window
authorErwan Tulou <erwan10@videolan.org>
Thu, 10 Jun 2010 19:04:49 +0000 (21:04 +0200)
committerErwan Tulou <erwan10@videolan.org>
Thu, 10 Jun 2010 20:40:53 +0000 (22:40 +0200)
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.

modules/video_output/msw/common.c

index 890417928c0a5e9e12b40445f2f079937832fe9e..9d607c9000f01f1dfc445884d7c1e9b832ece5cc 100644 (file)
@@ -161,6 +161,7 @@ void CommonManage(vout_display_t *vd)
         RECT rect_parent;
         POINT point;
 
+        /* Check if the parent window has resized or moved */
         GetClientRect(sys->hparent, &rect_parent);
         point.x = point.y = 0;
         ClientToScreen(sys->hparent, &point);
@@ -169,30 +170,25 @@ void CommonManage(vout_display_t *vd)
         if (!EqualRect(&rect_parent, &sys->rect_parent)) {
             sys->rect_parent = rect_parent;
 
-            /* FIXME I find such #ifdef quite weirds. Are they really needed ? */
-
-#if defined(MODULE_NAME_IS_direct3d) || defined(MODULE_NAME_IS_wingdi) || defined(MODULE_NAME_IS_wingapi)
+            /* This code deals with both resize and move
+             *
+             * 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,
                          rect_parent.right - rect_parent.left,
                          rect_parent.bottom - rect_parent.top,
                          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))
         UpdateRects(vd, NULL, NULL, false);