don't blit more than necessary in wxBufferedDC::UnMask() (patch 1943622) [should have been part of r53565]

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2008-05-17 22:13:22 +00:00
parent f99af6c052
commit 4581c9136b

View File

@ -128,8 +128,21 @@ void wxBufferedDC::UnMask()
if ( m_style & wxBUFFER_CLIENT_AREA )
GetDeviceOrigin(&x, &y);
m_dc->Blit(0, 0, m_buffer->GetWidth(), m_buffer->GetHeight(),
this, -x, -y );
// avoid blitting too much: if we were created for a bigger bitmap (and
// reused for a smaller one later) we should only blit the real bitmap area
// and not the full allocated back buffer
int widthDC,
heightDC;
m_dc->GetSize(&widthDC, &heightDC);
int widthBuf = m_buffer->GetWidth(),
heightBuf = m_buffer->GetHeight();
m_dc->Blit(0, 0,
wxMin(widthDC, widthBuf), wxMin(heightDC, heightBuf),
this,
-x, -y);
m_dc = NULL;
if ( m_style & wxBUFFER_USES_SHARED_BUFFER )