From 833619b4441915c7c55085d44b3221eaef0d9800 Mon Sep 17 00:00:00 2001 From: tsepez Date: Wed, 7 Dec 2016 09:21:17 -0800 Subject: Refcount all the IFX_ stream classes all the time. We can remove a lot of "bOwnsStream" logic in the process. Always pass these by const reference, in case the called method wants to hang on to the stream (one exception is where we stick a raw pointer into a void* slot in a context from another layer). Review-Url: https://codereview.chromium.org/2451493002 --- core/fxcrt/fx_extension.cpp | 72 +++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 49 deletions(-) (limited to 'core/fxcrt/fx_extension.cpp') diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp index 1bb9a3a5f6..cbbb86f26b 100644 --- a/core/fxcrt/fx_extension.cpp +++ b/core/fxcrt/fx_extension.cpp @@ -32,7 +32,7 @@ class CFX_CRTFileAccess : public IFX_FileAccess { void Release() override; IFX_FileAccess* Retain() override; void GetPath(CFX_WideString& wsPath) override; - IFX_SeekableStream* CreateFileStream(uint32_t dwModes) override; + CFX_RetainPtr CreateFileStream(uint32_t dwModes) override; bool Init(const CFX_WideStringC& wsPath); @@ -59,7 +59,8 @@ void CFX_CRTFileAccess::GetPath(CFX_WideString& wsPath) { wsPath = m_path; } -IFX_SeekableStream* CFX_CRTFileAccess::CreateFileStream(uint32_t dwModes) { +CFX_RetainPtr CFX_CRTFileAccess::CreateFileStream( + uint32_t dwModes) { return IFX_SeekableStream::CreateFromFilename(m_path.c_str(), dwModes); } @@ -77,8 +78,6 @@ class CFX_CRTFileStream final : public IFX_SeekableStream { ~CFX_CRTFileStream() override; // IFX_SeekableStream: - IFX_SeekableStream* Retain() override; - void Release() override; FX_FILESIZE GetSize() override; bool IsEOF() override; FX_FILESIZE GetPosition() override; @@ -89,23 +88,12 @@ class CFX_CRTFileStream final : public IFX_SeekableStream { private: std::unique_ptr m_pFile; - uint32_t m_dwCount; }; CFX_CRTFileStream::CFX_CRTFileStream(std::unique_ptr pFA) - : m_pFile(std::move(pFA)), m_dwCount(1) {} + : m_pFile(std::move(pFA)) {} CFX_CRTFileStream::~CFX_CRTFileStream() {} -IFX_SeekableStream* CFX_CRTFileStream::Retain() { - m_dwCount++; - return this; -} - -void CFX_CRTFileStream::Release() { - uint32_t nCount = --m_dwCount; - if (!nCount) - delete this; -} FX_FILESIZE CFX_CRTFileStream::GetSize() { return m_pFile->GetSize(); @@ -150,8 +138,6 @@ class CFX_MemoryStream final : public IFX_MemoryStream { ~CFX_MemoryStream() override; // IFX_MemoryStream - IFX_SeekableStream* Retain() override; - void Release() override; FX_FILESIZE GetSize() override; bool IsEOF() override; FX_FILESIZE GetPosition() override; @@ -168,19 +154,18 @@ class CFX_MemoryStream final : public IFX_MemoryStream { void DetachBuffer() override; private: + bool ExpandBlocks(size_t size); + CFX_ArrayTemplate m_Blocks; - uint32_t m_dwCount; size_t m_nTotalSize; size_t m_nCurSize; size_t m_nCurPos; size_t m_nGrowSize; uint32_t m_dwFlags; - bool ExpandBlocks(size_t size); }; CFX_MemoryStream::CFX_MemoryStream(bool bConsecutive) - : m_dwCount(1), - m_nTotalSize(0), + : m_nTotalSize(0), m_nCurSize(0), m_nCurPos(0), m_nGrowSize(FX_MEMSTREAM_BlockSize) { @@ -191,8 +176,7 @@ CFX_MemoryStream::CFX_MemoryStream(bool bConsecutive) CFX_MemoryStream::CFX_MemoryStream(uint8_t* pBuffer, size_t nSize, bool bTakeOver) - : m_dwCount(1), - m_nTotalSize(nSize), + : m_nTotalSize(nSize), m_nCurSize(nSize), m_nCurPos(0), m_nGrowSize(FX_MEMSTREAM_BlockSize) { @@ -210,19 +194,6 @@ CFX_MemoryStream::~CFX_MemoryStream() { m_Blocks.RemoveAll(); } -IFX_SeekableStream* CFX_MemoryStream::Retain() { - m_dwCount++; - return this; -} - -void CFX_MemoryStream::Release() { - uint32_t nCount = --m_dwCount; - if (nCount) { - return; - } - delete this; -} - FX_FILESIZE CFX_MemoryStream::GetSize() { return (FX_FILESIZE)m_nCurSize; } @@ -419,41 +390,44 @@ IFX_FileAccess* IFX_FileAccess::CreateDefault(const CFX_WideStringC& wsPath) { #endif // PDF_ENABLE_XFA // static -IFX_SeekableStream* IFX_SeekableStream::CreateFromFilename( +CFX_RetainPtr IFX_SeekableStream::CreateFromFilename( const FX_CHAR* filename, uint32_t dwModes) { std::unique_ptr pFA(IFXCRT_FileAccess::Create()); if (!pFA->Open(filename, dwModes)) return nullptr; - return new CFX_CRTFileStream(std::move(pFA)); + return CFX_RetainPtr( + new CFX_CRTFileStream(std::move(pFA))); } // static -IFX_SeekableStream* IFX_SeekableStream::CreateFromFilename( +CFX_RetainPtr IFX_SeekableStream::CreateFromFilename( const FX_WCHAR* filename, uint32_t dwModes) { std::unique_ptr pFA(IFXCRT_FileAccess::Create()); if (!pFA->Open(filename, dwModes)) return nullptr; - return new CFX_CRTFileStream(std::move(pFA)); + return CFX_RetainPtr( + new CFX_CRTFileStream(std::move(pFA))); } // static -IFX_SeekableReadStream* IFX_SeekableReadStream::CreateFromFilename( - const FX_CHAR* filename) { +CFX_RetainPtr +IFX_SeekableReadStream::CreateFromFilename(const FX_CHAR* filename) { return IFX_SeekableStream::CreateFromFilename(filename, FX_FILEMODE_ReadOnly); } // static -IFX_MemoryStream* IFX_MemoryStream::Create(uint8_t* pBuffer, - size_t dwSize, - bool bTakeOver) { - return new CFX_MemoryStream(pBuffer, dwSize, bTakeOver); +CFX_RetainPtr IFX_MemoryStream::Create(uint8_t* pBuffer, + size_t dwSize, + bool bTakeOver) { + return CFX_RetainPtr( + new CFX_MemoryStream(pBuffer, dwSize, bTakeOver)); } // static -IFX_MemoryStream* IFX_MemoryStream::Create(bool bConsecutive) { - return new CFX_MemoryStream(bConsecutive); +CFX_RetainPtr IFX_MemoryStream::Create(bool bConsecutive) { + return CFX_RetainPtr(new CFX_MemoryStream(bConsecutive)); } FX_FLOAT FXSYS_tan(FX_FLOAT a) { -- cgit v1.2.3