fix Windows problem with draw-bitmap-section and non-monochrome masks (PR 8543)
svn: r5688
This commit is contained in:
parent
4c901b1f8b
commit
e60ba79f61
|
@ -148,6 +148,7 @@ class wxBitmap: public wxObject
|
||||||
wxDC *selectedInto; // So bitmap knows whether it's been selected into
|
wxDC *selectedInto; // So bitmap knows whether it's been selected into
|
||||||
// a device context (for error checking)
|
// a device context (for error checking)
|
||||||
wxMemoryDC *mask_cache; // the cached mask
|
wxMemoryDC *mask_cache; // the cached mask
|
||||||
|
int cache_xsrc1, cache_ysrc1, cache_iw, cache_ih;
|
||||||
Bool selectedIntoDC;
|
Bool selectedIntoDC;
|
||||||
wxGLConfig *gl_cfg;
|
wxGLConfig *gl_cfg;
|
||||||
|
|
||||||
|
|
|
@ -2535,6 +2535,10 @@ Bool wxDC::Blit(double xdest, double ydest, double width, double height,
|
||||||
|
|
||||||
if (mask->mask_cache
|
if (mask->mask_cache
|
||||||
&& (mask->mask_cache == source->mask_cache)
|
&& (mask->mask_cache == source->mask_cache)
|
||||||
|
&& (mask->cache_xsrc1 == xsrc1)
|
||||||
|
&& (mask->cache_ysrc1 == ysrc1)
|
||||||
|
&& (mask->cache_iw == iw)
|
||||||
|
&& (mask->cache_ih == ih)
|
||||||
&& (mask != selected_bitmap)
|
&& (mask != selected_bitmap)
|
||||||
&& (source != selected_bitmap)
|
&& (source != selected_bitmap)
|
||||||
&& (source->mask_cache->selected_bitmap)) {
|
&& (source->mask_cache->selected_bitmap)) {
|
||||||
|
@ -2648,10 +2652,21 @@ Bool wxDC::Blit(double xdest, double ydest, double width, double height,
|
||||||
source->ReleaseCachedMask();
|
source->ReleaseCachedMask();
|
||||||
orig_mask->mask_cache = invented_memdc;
|
orig_mask->mask_cache = invented_memdc;
|
||||||
source->mask_cache = invented_memdc;
|
source->mask_cache = invented_memdc;
|
||||||
|
|
||||||
|
orig_mask->cache_xsrc1 = xsrc1;
|
||||||
|
orig_mask->cache_ysrc1 = ysrc1;
|
||||||
|
orig_mask->cache_iw = iw;
|
||||||
|
orig_mask->cache_ih = ih;
|
||||||
|
source->cache_xsrc1 = xsrc1;
|
||||||
|
source->cache_ysrc1 = ysrc1;
|
||||||
|
source->cache_iw = iw;
|
||||||
|
source->cache_ih = ih;
|
||||||
|
|
||||||
if (source == orig_mask)
|
if (source == orig_mask)
|
||||||
invented_memdc->refcount = 1;
|
invented_memdc->refcount = 1;
|
||||||
else
|
else
|
||||||
invented_memdc->refcount = 2;
|
invented_memdc->refcount = 2;
|
||||||
|
|
||||||
invented = NULL; /* indicates that we cached invented */
|
invented = NULL; /* indicates that we cached invented */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user