diff options
author | Tom Sepez <tsepez@chromium.org> | 2017-03-28 09:31:32 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-03-28 16:42:55 +0000 |
commit | f0799fe84df4d86f25d342b03525f3016d674f86 (patch) | |
tree | d6839802a68b7b6ad6fb166179ede779c3560c75 /core/fxge/dib/fx_dib_composite.cpp | |
parent | 31b08d4cdaa17d7a03f35e087096a77036af98ec (diff) | |
download | pdfium-f0799fe84df4d86f25d342b03525f3016d674f86.tar.xz |
Revert "Revert "Refcount all CFX_DIBSources (and subclasses) all the time.""
This reverts commit 31b08d4cdaa17d7a03f35e087096a77036af98ec.
Re-landing the patch after fixing skia build issue.
Change-Id: Ie7039890088b803a6ec5ce365d70f57277459b48
Reviewed-on: https://pdfium-review.googlesource.com/3245
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fxge/dib/fx_dib_composite.cpp')
-rw-r--r-- | core/fxge/dib/fx_dib_composite.cpp | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/core/fxge/dib/fx_dib_composite.cpp b/core/fxge/dib/fx_dib_composite.cpp index 435a1ad9b6..fb00cb855b 100644 --- a/core/fxge/dib/fx_dib_composite.cpp +++ b/core/fxge/dib/fx_dib_composite.cpp @@ -3914,17 +3914,18 @@ void CFX_ScanlineCompositor::CompositeBitMaskLine(uint8_t* dest_scan, } } -bool CFX_DIBitmap::CompositeBitmap(int dest_left, - int dest_top, - int width, - int height, - const CFX_DIBSource* pSrcBitmap, - int src_left, - int src_top, - int blend_type, - const CFX_ClipRgn* pClipRgn, - bool bRgbByteOrder, - void* pIccTransform) { +bool CFX_DIBitmap::CompositeBitmap( + int dest_left, + int dest_top, + int width, + int height, + const CFX_RetainPtr<CFX_DIBSource>& pSrcBitmap, + int src_left, + int src_top, + int blend_type, + const CFX_ClipRgn* pClipRgn, + bool bRgbByteOrder, + void* pIccTransform) { if (!m_pBuffer) { return false; } @@ -3938,11 +3939,11 @@ bool CFX_DIBitmap::CompositeBitmap(int dest_left, if (width == 0 || height == 0) { return true; } - const CFX_DIBitmap* pClipMask = nullptr; + CFX_RetainPtr<CFX_DIBitmap> pClipMask; FX_RECT clip_box; if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); - pClipMask = pClipRgn->GetMask().GetObject(); + pClipMask = pClipRgn->GetMask(); clip_box = pClipRgn->GetBox(); } CFX_ScanlineCompositor compositor; @@ -3954,7 +3955,7 @@ bool CFX_DIBitmap::CompositeBitmap(int dest_left, int dest_Bpp = m_bpp / 8; int src_Bpp = pSrcBitmap->GetBPP() / 8; bool bRgb = src_Bpp > 1 && !pSrcBitmap->IsCmykImage(); - CFX_DIBitmap* pSrcAlphaMask = pSrcBitmap->m_pAlphaMask; + CFX_RetainPtr<CFX_DIBitmap> pSrcAlphaMask = pSrcBitmap->m_pAlphaMask; for (int row = 0; row < height; row++) { uint8_t* dest_scan = m_pBuffer + (dest_top + row) * m_Pitch + dest_left * dest_Bpp; @@ -3990,7 +3991,7 @@ bool CFX_DIBitmap::CompositeMask(int dest_left, int dest_top, int width, int height, - const CFX_DIBSource* pMask, + const CFX_RetainPtr<CFX_DIBSource>& pMask, uint32_t color, int src_left, int src_top, @@ -4017,11 +4018,11 @@ bool CFX_DIBitmap::CompositeMask(int dest_left, if (src_alpha == 0) { return true; } - const CFX_DIBitmap* pClipMask = nullptr; + CFX_RetainPtr<CFX_DIBitmap> pClipMask; FX_RECT clip_box; if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { ASSERT(pClipRgn->GetType() == CFX_ClipRgn::MaskF); - pClipMask = pClipRgn->GetMask().GetObject(); + pClipMask = pClipRgn->GetMask(); clip_box = pClipRgn->GetBox(); } int src_bpp = pMask->GetBPP(); @@ -4282,7 +4283,7 @@ CFX_BitmapComposer::~CFX_BitmapComposer() { FX_Free(m_pAddClipScan); } -void CFX_BitmapComposer::Compose(CFX_DIBitmap* pDest, +void CFX_BitmapComposer::Compose(const CFX_RetainPtr<CFX_DIBitmap>& pDest, const CFX_ClipRgn* pClipRgn, int bitmap_alpha, uint32_t mask_color, @@ -4303,9 +4304,8 @@ void CFX_BitmapComposer::Compose(CFX_DIBitmap* pDest, m_BitmapAlpha = bitmap_alpha; m_MaskColor = mask_color; m_pClipMask = nullptr; - if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) { - m_pClipMask = pClipRgn->GetMask().GetObject(); - } + if (pClipRgn && pClipRgn->GetType() != CFX_ClipRgn::RectI) + m_pClipMask = pClipRgn->GetMask(); m_bVertical = bVertical; m_bFlipX = bFlipX; m_bFlipY = bFlipY; |