diff options
author | dsinclair <dsinclair@chromium.org> | 2017-03-28 15:47:47 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-03-28 15:48:01 +0000 |
commit | 31b08d4cdaa17d7a03f35e087096a77036af98ec (patch) | |
tree | 40234b81f2972c857a33a86cb4b59868e56bb86b /xfa/fxfa/cxfa_widgetacc.cpp | |
parent | a3e9bf66c3483db926602aa62b0bd1ff8d1357a1 (diff) | |
download | pdfium-31b08d4cdaa17d7a03f35e087096a77036af98ec.tar.xz |
Revert "Refcount all CFX_DIBSources (and subclasses) all the time."
This reverts commit 0004f29bf6ee3c6060a272c79f14993e92e053c7.
Reason for revert: Breaks build with skia_paths enabled (which will break the chrome roll).
../../third_party/pdfium/core/fxge/skia/fx_skia_device.cpp:1858:38: error: no member named 'get' in 'CFX_RetainPtr<CFX_DIBitmap>'
../../third_party/pdfium/core/fxge/skia/fx_skia_device.cpp:1861:42: error: no member named 'get' in 'CFX_RetainPtr<CFX_DIBitmap>'
../../third_party/pdfium/core/fxge/skia/fx_skia_device.cpp:2987:15: error: no viable overloaded '='
../../third_party/pdfium/core/fxge/skia/fx_skia_device.cpp:2991:18: error: no viable overloaded '='
../../third_party/pdfium/core/fxge/skia/fx_skia_device.cpp:2999:17: error: no viable overloaded '='
../../third_party/pdfium/core/fxge/skia/fx_skia_device.cpp:3001:43: error: no member named 'GetObject' in 'CFX_RetainPtr<CFX_DIBitmap>'
Original change's description:
> Refcount all CFX_DIBSources (and subclasses) all the time.
>
> There are currently several ownership models for these objects,
> including ad-hoc logic for sharing and deletion, and the
> now-redundant CFX_DIBitmapRef externally-counted handle to the DIBs.
>
> Replace them all with the internal refcount scheme.
>
> Change-Id: I2db399dfc19219eda384f94cc989353b78ce2872
> Reviewed-on: https://pdfium-review.googlesource.com/3166
> Reviewed-by: dsinclair <dsinclair@chromium.org>
> Commit-Queue: dsinclair <dsinclair@chromium.org>
>
TBR=thestig@chromium.org,tsepez@chromium.org,dsinclair@chromium.org,pdfium-reviews@googlegroups.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I678b1fbc5e666cf7a19372ebaff3270fb115ba5e
Reviewed-on: https://pdfium-review.googlesource.com/3243
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/cxfa_widgetacc.cpp')
-rw-r--r-- | xfa/fxfa/cxfa_widgetacc.cpp | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/xfa/fxfa/cxfa_widgetacc.cpp b/xfa/fxfa/cxfa_widgetacc.cpp index 6e76119115..4c8e37291a 100644 --- a/xfa/fxfa/cxfa_widgetacc.cpp +++ b/xfa/fxfa/cxfa_widgetacc.cpp @@ -67,9 +67,15 @@ class CXFA_TextLayoutData : public CXFA_WidgetLayoutData { class CXFA_ImageLayoutData : public CXFA_WidgetLayoutData { public: CXFA_ImageLayoutData() - : m_bNamedImage(false), m_iImageXDpi(0), m_iImageYDpi(0) {} + : m_pDIBitmap(nullptr), + m_bNamedImage(false), + m_iImageXDpi(0), + m_iImageYDpi(0) {} - ~CXFA_ImageLayoutData() override {} + ~CXFA_ImageLayoutData() override { + if (m_pDIBitmap && !m_bNamedImage) + delete m_pDIBitmap; + } bool LoadImageData(CXFA_WidgetAcc* pAcc) { if (m_pDIBitmap) @@ -89,7 +95,7 @@ class CXFA_ImageLayoutData : public CXFA_WidgetLayoutData { return !!m_pDIBitmap; } - CFX_RetainPtr<CFX_DIBitmap> m_pDIBitmap; + CFX_DIBitmap* m_pDIBitmap; bool m_bNamedImage; int32_t m_iImageXDpi; int32_t m_iImageYDpi; @@ -126,9 +132,15 @@ class CXFA_TextEditData : public CXFA_FieldLayoutData { class CXFA_ImageEditData : public CXFA_FieldLayoutData { public: CXFA_ImageEditData() - : m_bNamedImage(false), m_iImageXDpi(0), m_iImageYDpi(0) {} + : m_pDIBitmap(nullptr), + m_bNamedImage(false), + m_iImageXDpi(0), + m_iImageYDpi(0) {} - ~CXFA_ImageEditData() override {} + ~CXFA_ImageEditData() override { + if (m_pDIBitmap && !m_bNamedImage) + delete m_pDIBitmap; + } bool LoadImageData(CXFA_WidgetAcc* pAcc) { if (m_pDIBitmap) @@ -145,7 +157,7 @@ class CXFA_ImageEditData : public CXFA_FieldLayoutData { return !!m_pDIBitmap; } - CFX_RetainPtr<CFX_DIBitmap> m_pDIBitmap; + CFX_DIBitmap* m_pDIBitmap; bool m_bNamedImage; int32_t m_iImageXDpi; int32_t m_iImageYDpi; @@ -917,8 +929,7 @@ bool CXFA_WidgetAcc::CalculateImageAutoSize(CFX_SizeF& size) { LoadImageImage(); size.clear(); - CFX_RetainPtr<CFX_DIBitmap> pBitmap = GetImageImage(); - if (pBitmap) { + if (CFX_DIBitmap* pBitmap = GetImageImage()) { int32_t iImageXDpi = 0; int32_t iImageYDpi = 0; GetImageDpi(iImageXDpi, iImageYDpi); @@ -947,8 +958,7 @@ bool CXFA_WidgetAcc::CalculateImageEditAutoSize(CFX_SizeF& size) { LoadImageEditImage(); size.clear(); - CFX_RetainPtr<CFX_DIBitmap> pBitmap = GetImageEditImage(); - if (pBitmap) { + if (CFX_DIBitmap* pBitmap = GetImageEditImage()) { int32_t iImageXDpi = 0; int32_t iImageYDpi = 0; GetImageEditDpi(iImageXDpi, iImageYDpi); @@ -1457,34 +1467,42 @@ CXFA_TextLayout* CXFA_WidgetAcc::GetTextLayout() { : nullptr; } -CFX_RetainPtr<CFX_DIBitmap> CXFA_WidgetAcc::GetImageImage() { +CFX_DIBitmap* CXFA_WidgetAcc::GetImageImage() { return m_pLayoutData ? static_cast<CXFA_ImageLayoutData*>(m_pLayoutData.get()) ->m_pDIBitmap : nullptr; } -CFX_RetainPtr<CFX_DIBitmap> CXFA_WidgetAcc::GetImageEditImage() { +CFX_DIBitmap* CXFA_WidgetAcc::GetImageEditImage() { return m_pLayoutData ? static_cast<CXFA_ImageEditData*>(m_pLayoutData.get()) ->m_pDIBitmap : nullptr; } -void CXFA_WidgetAcc::SetImageImage( - const CFX_RetainPtr<CFX_DIBitmap>& newImage) { +void CXFA_WidgetAcc::SetImageImage(CFX_DIBitmap* newImage) { CXFA_ImageLayoutData* pData = static_cast<CXFA_ImageLayoutData*>(m_pLayoutData.get()); - if (pData->m_pDIBitmap != newImage) - pData->m_pDIBitmap = newImage; + if (pData->m_pDIBitmap == newImage) + return; + + if (pData->m_pDIBitmap && !pData->m_bNamedImage) + delete pData->m_pDIBitmap; + + pData->m_pDIBitmap = newImage; } -void CXFA_WidgetAcc::SetImageEditImage( - const CFX_RetainPtr<CFX_DIBitmap>& newImage) { +void CXFA_WidgetAcc::SetImageEditImage(CFX_DIBitmap* newImage) { CXFA_ImageEditData* pData = static_cast<CXFA_ImageEditData*>(m_pLayoutData.get()); - if (pData->m_pDIBitmap != newImage) - pData->m_pDIBitmap = newImage; + if (pData->m_pDIBitmap == newImage) + return; + + if (pData->m_pDIBitmap && !pData->m_bNamedImage) + delete pData->m_pDIBitmap; + + pData->m_pDIBitmap = newImage; } CXFA_WidgetLayoutData* CXFA_WidgetAcc::GetWidgetLayoutData() { |