From 83fb1d46b142c98a7f837b96f8f376359d2e2dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sun, 26 Feb 2006 17:55:33 +0000 Subject: [PATCH] limit the rate at which windows are moved to 50 fps, the various clients have now more time to redraw stuff git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16516 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/WindowLayer.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/servers/app/WindowLayer.cpp b/src/servers/app/WindowLayer.cpp index 63db26d7de..07d9ff14c8 100644 --- a/src/servers/app/WindowLayer.cpp +++ b/src/servers/app/WindowLayer.cpp @@ -101,6 +101,9 @@ WindowLayer::WindowLayer(const BRect& frame, const char *name, fDrawingEngine(drawingEngine), fDesktop(window->Desktop()), + fLastMousePosition(0.0, 0.0), + fLastMoveTime(0), + fCurrentUpdateSession(), fPendingUpdateSession(), fUpdateRequested(false), @@ -916,6 +919,18 @@ WindowLayer::MouseMoved(BMessage *msg, BPoint where, int32* _viewToken, if (!isLatestMouseMoved) return; + // limit the rate at which "mouse moved" events + // are handled that move or resize the window + if (fIsDragging || fIsResizing) { + bigtime_t now = system_time(); + if (now - fLastMoveTime < 20000) { + // TODO: add a "timed event" to query for + // the then current mouse position + return; + } + fLastMoveTime = now; + } + if (fDecorator) { BRegion visibleBorder; GetBorderRegion(&visibleBorder); @@ -976,8 +991,10 @@ WindowLayer::MouseMoved(BMessage *msg, BPoint where, int32* _viewToken, // change focus in FFM mode DesktopSettings desktopSettings(fDesktop); - if (desktopSettings.MouseMode() != B_NORMAL_MOUSE && !IsFocus() && !(Flags() & B_AVOID_FOCUS)) + if (desktopSettings.MouseMode() != B_NORMAL_MOUSE + && !IsFocus() && !(Flags() & B_AVOID_FOCUS)) { fDesktop->SetFocusWindow(this); + } // mouse cursor