From 7dc941e3c5c7be146a1bd92b97605c15c5ce6ee9 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Tue, 31 Jan 2012 17:39:39 +0000 Subject: [PATCH] guarding Update() on OSX not to be issued faster than 1/30 later than the last redraw git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70488 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/nonownedwnd.h | 4 ++++ src/osx/nonownedwnd_osx.cpp | 12 +++++++++++- src/osx/window_osx.cpp | 5 +++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/include/wx/osx/nonownedwnd.h b/include/wx/osx/nonownedwnd.h index 85c0eb1..a972612 100644 --- a/include/wx/osx/nonownedwnd.h +++ b/include/wx/osx/nonownedwnd.h @@ -114,6 +114,8 @@ public: virtual void HandleResized( double timestampsec ); virtual void HandleMoved( double timestampsec ); virtual void HandleResizing( double timestampsec, wxRect* rect ); + + void WindowWasPainted(); virtual bool Destroy(); @@ -145,6 +147,8 @@ protected: static wxNonOwnedWindow *s_macDeactivateWindow; private : + static clock_t s_lastFlush; + wxRegion m_shape; #if wxUSE_GRAPHICS_CONTEXT wxGraphicsPath m_shapePath; diff --git a/src/osx/nonownedwnd_osx.cpp b/src/osx/nonownedwnd_osx.cpp index 1d643a0..feea6b5 100644 --- a/src/osx/nonownedwnd_osx.cpp +++ b/src/osx/nonownedwnd_osx.cpp @@ -39,6 +39,8 @@ wxWindow* g_MacLastWindow = NULL ; +clock_t wxNonOwnedWindow::s_lastFlush = 0; + // unified title and toolbar constant - not in Tiger headers, so we duplicate it here #define kWindowUnifiedTitleAndToolbarAttribute (1 << 7) @@ -483,10 +485,18 @@ void wxNonOwnedWindow::DoGetClientSize( int *width, int *height ) const *height = h ; } +void wxNonOwnedWindow::WindowWasPainted() +{ + s_lastFlush = clock(); +} void wxNonOwnedWindow::Update() { - m_nowpeer->Update(); + if ( clock() - s_lastFlush > CLOCKS_PER_SEC / 30 ) + { + s_lastFlush = clock(); + m_nowpeer->Update(); + } } WXWindow wxNonOwnedWindow::GetWXWindow() const diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index 012deb9..2c13ea8 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -2099,6 +2099,11 @@ bool wxWindowMac::MacDoRedraw( long time ) } m_updateRegion = formerUpdateRgn; + + wxNonOwnedWindow* top = MacGetTopLevelWindow(); + if (top) + top->WindowWasPainted() ; + return handled; } -- 2.7.4