From: Robert Roebling Date: Thu, 7 Sep 2000 11:17:46 +0000 (+0000) Subject: There was no need to create the buffer in OnIdle(). X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b85cfb6fd421b021de0eedf41e189dbf6b8b4de5?ds=sidebyside There was no need to create the buffer in OnIdle(). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/contrib/src/canvas/canvas.cpp b/contrib/src/canvas/canvas.cpp index 14bdeb0fe4..332e891550 100644 --- a/contrib/src/canvas/canvas.cpp +++ b/contrib/src/canvas/canvas.cpp @@ -902,6 +902,8 @@ void wxCanvas::OnPaint(wxPaintEvent &event) PrepareDC( dc ); if (!m_buffer.Ok()) return; + + if (m_frozen) return; m_needUpdate = TRUE; @@ -1103,27 +1105,30 @@ void wxCanvas::OnMouse(wxMouseEvent &event) void wxCanvas::OnSize(wxSizeEvent &event) { - m_requestNewBuffer = TRUE; - Freeze(); + int w,h; + GetClientSize( &w, &h ); + m_buffer = wxImage( w, h ); + + CalcUnscrolledPosition( 0, 0, &m_bufferX, &m_bufferY ); + + wxNode *node = m_updateRects.First(); + while (node) + { + wxRect *rect = (wxRect*) node->Data(); + delete rect; + m_updateRects.DeleteNode( node ); + node = m_updateRects.First(); + } + + m_frozen = FALSE; + + Update( m_bufferX, m_bufferY, m_buffer.GetWidth(), m_buffer.GetHeight(), FALSE ); event.Skip(); } void wxCanvas::OnIdle(wxIdleEvent &event) { - if (m_requestNewBuffer) - { - m_requestNewBuffer = FALSE; - - int w,h; - GetClientSize( &w, &h ); - m_buffer = wxImage( w, h ); - - CalcUnscrolledPosition( 0, 0, &m_bufferX, &m_bufferY ); - - Thaw(); - } - UpdateNow(); event.Skip(); }