const BufferInfo& dstBufferInfo = dstLock.GetBufferInfo();
{
- if (!this->__useStableRenderer && srcBufferInfo.bitsPerPixel == 32)
+ if (!this->__useStableRenderer && srcBufferInfo.bitsPerPixel == 32 && GetCompositeMode() != COMPOSITE_MODE_SRC_OVER)
{
_Util::Pixmap srcImage(srcBufferInfo.width, srcBufferInfo.height, srcBufferInfo.bitsPerPixel, srcBufferInfo.pPixels, srcBufferInfo.pitch);
_ApplySrcBitmapAttrib(srcImage, bitmap, bitmap.__isOpaqueAllOver);
}
- if (!pass)
+ if (!pass && alphaConstant >= 255)
{
_Util::Pixmap srcImage(srcBufferInfo.width, srcBufferInfo.height, srcBufferInfo.bitsPerPixel, srcBufferInfo.pPixels, srcBufferInfo.pitch);
_ApplySrcBitmapAttrib(srcImage, bitmap, bitmap.__isOpaqueAllOver);
}
}
{
- bool isPixmanSupported = (!this->__useStableRenderer);
+ bool isPixmanSupported = (!this->__useStableRenderer && GetCompositeMode() != COMPOSITE_MODE_SRC_OVER);
if (isPixmanSupported)
{
const BufferInfo& dstBufferInfo = dstLock.GetBufferInfo();
{
- if (!this->__useStableRenderer && srcBufferInfo.bitsPerPixel == 32)
+ if (!this->__useStableRenderer && srcBufferInfo.bitsPerPixel == 32 && GetCompositeMode() != COMPOSITE_MODE_SRC_OVER)
{
_Util::Rectangle<int> srcBounds =
{
}
}
- if (!pass)
+ if (!pass && alphaConstant >= 255)
{
unsigned char* pPixels = (unsigned char*) srcBufferInfo.pPixels + srcRect.y * srcBufferInfo.pitch + srcRect.x * (srcBufferInfo.bitsPerPixel / 8);
const BufferInfo& dstBufferInfo = dstLock.GetBufferInfo();
{
- if (srcBufferInfo.bitsPerPixel == 32)
+ if (srcBufferInfo.bitsPerPixel == 32 && GetCompositeMode() != COMPOSITE_MODE_SRC_OVER)
{
_Util::Rectangle<int> outRect = { 0, 0, -1, -1 };
_Util::Rectangle<int> dstRect = { destRect.x, destRect.y, destRect.width, destRect.height };
#endif
}
- if (!pass)
+ if (!pass && alphaConstant >= 255)
{
unsigned char* pPixels = (unsigned char*) srcBufferInfo.pPixels + srcRect.y * srcBufferInfo.pitch + srcRect.x * (srcBufferInfo.bitsPerPixel / 8);