Don't query system option in every DrawBitmap() call under MSW.
Doing this had noticeable (and bad) performance implications so cache the value of the option during the first call. This doesn't allow changing its value during the program execution so we may want to provide some way to update its value later if really needed. Closes #11172. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61967 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
0f08aa4432
commit
7b8d24ad99
@ -1214,13 +1214,20 @@ void wxMSWDCImpl::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool
|
|||||||
#ifdef __WIN32__
|
#ifdef __WIN32__
|
||||||
// use MaskBlt() with ROP which doesn't do anything to dst in the mask
|
// use MaskBlt() with ROP which doesn't do anything to dst in the mask
|
||||||
// points
|
// points
|
||||||
|
bool ok = false;
|
||||||
|
|
||||||
|
#if wxUSE_SYSTEM_OPTIONS
|
||||||
// On some systems, MaskBlt succeeds yet is much much slower
|
// On some systems, MaskBlt succeeds yet is much much slower
|
||||||
// than the wxWidgets fall-back implementation. So we need
|
// than the wxWidgets fall-back implementation. So we need
|
||||||
// to be able to switch this on and off at runtime.
|
// to be able to switch this on and off at runtime.
|
||||||
bool ok = false;
|
//
|
||||||
#if wxUSE_SYSTEM_OPTIONS
|
// NB: don't query the value of the option every time but do it only
|
||||||
if (wxSystemOptions::GetOptionInt(wxT("no-maskblt")) == 0)
|
// once as otherwise it can have real (and bad) performance
|
||||||
#endif
|
// implications (see #11172)
|
||||||
|
static bool
|
||||||
|
s_maskBltAllowed = wxSystemOptions::GetOptionInt("no-maskblt") == 0;
|
||||||
|
if ( s_maskBltAllowed )
|
||||||
|
#endif // wxUSE_SYSTEM_OPTIONS
|
||||||
{
|
{
|
||||||
HDC cdc = GetHdc();
|
HDC cdc = GetHdc();
|
||||||
HDC hdcMem = ::CreateCompatibleDC(GetHdc());
|
HDC hdcMem = ::CreateCompatibleDC(GetHdc());
|
||||||
|
Loading…
Reference in New Issue
Block a user