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
This commit is contained in:
Stefan Csomor 2012-01-31 17:39:39 +00:00
parent 8c7fb50829
commit 7dc941e3c5
3 changed files with 20 additions and 1 deletions

View File

@ -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;

View File

@ -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

View File

@ -2099,6 +2099,11 @@ bool wxWindowMac::MacDoRedraw( long time )
}
m_updateRegion = formerUpdateRgn;
wxNonOwnedWindow* top = MacGetTopLevelWindow();
if (top)
top->WindowWasPainted() ;
return handled;
}