From e13616b5c40f912853be99f0603f0e4c97b22062 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 3 Apr 2019 21:56:51 +0800 Subject: *misc --- source/modules/asura-utils/io/compressor.h | 2 -- source/modules/asura-utils/io/data_buffer.h | 16 ++++++++-------- source/modules/asura-utils/io/file_data.cpp | 9 ++++++++- source/modules/asura-utils/io/io_task.cpp | 6 ++++++ source/modules/asura-utils/io/io_task.h | 7 +++---- 5 files changed, 25 insertions(+), 15 deletions(-) (limited to 'source/modules/asura-utils/io') diff --git a/source/modules/asura-utils/io/compressor.h b/source/modules/asura-utils/io/compressor.h index 30a074c..65fd88a 100644 --- a/source/modules/asura-utils/io/compressor.h +++ b/source/modules/asura-utils/io/compressor.h @@ -20,8 +20,6 @@ namespace AsuraEngine LUAX_DECL_METHOD(_Compress); LUAX_DECL_METHOD(_Decompress); - - }; } diff --git a/source/modules/asura-utils/io/data_buffer.h b/source/modules/asura-utils/io/data_buffer.h index 61d158b..c60444e 100644 --- a/source/modules/asura-utils/io/data_buffer.h +++ b/source/modules/asura-utils/io/data_buffer.h @@ -56,6 +56,14 @@ namespace AsuraEngine private: + LUAX_DECL_METHOD(_New); + LUAX_DECL_METHOD(_GetData); + LUAX_DECL_METHOD(_GetSize); + LUAX_DECL_METHOD(_GetCapacity); + LUAX_DECL_METHOD(_Refactor); + LUAX_DECL_METHOD(_Load); + LUAX_DECL_METHOD(_Clear); + /// /// Buffer首地址和里面数据的长度 /// @@ -69,14 +77,6 @@ namespace AsuraEngine AEThreading::Mutex mMutex; - LUAX_DECL_METHOD(_New); - LUAX_DECL_METHOD(_GetData); - LUAX_DECL_METHOD(_GetSize); - LUAX_DECL_METHOD(_GetCapacity); - LUAX_DECL_METHOD(_Refactor); - LUAX_DECL_METHOD(_Load); - LUAX_DECL_METHOD(_Clear); - }; } diff --git a/source/modules/asura-utils/io/file_data.cpp b/source/modules/asura-utils/io/file_data.cpp index 92333cf..ad58db9 100644 --- a/source/modules/asura-utils/io/file_data.cpp +++ b/source/modules/asura-utils/io/file_data.cpp @@ -21,6 +21,8 @@ namespace AsuraEngine FileData::~FileData() { + if (mData) + mData->Release(); } const std::string& FileData::GetFileName() @@ -40,7 +42,12 @@ namespace AsuraEngine void FileData::BindData(ASURA_MOVE DataBuffer* buffer) { + if (!buffer) + return; + if (mData) + mData->Release(); mData = buffer; + mData->Retain(); } DataBuffer* FileData::GetDataBuffer() @@ -49,4 +56,4 @@ namespace AsuraEngine } } -} +} \ No newline at end of file diff --git a/source/modules/asura-utils/io/io_task.cpp b/source/modules/asura-utils/io/io_task.cpp index 5f0e1c8..ca03b09 100644 --- a/source/modules/asura-utils/io/io_task.cpp +++ b/source/modules/asura-utils/io/io_task.cpp @@ -15,10 +15,14 @@ namespace AsuraEngine : mPath(path) , mBuffer(buffer) { + if (buffer) + buffer->Retain(); } IOTask::~IOTask() { + if (mBuffer) + mBuffer->Release(); } bool IOTask::Execute() @@ -31,6 +35,8 @@ namespace AsuraEngine // 从path读取内容保存在mBuffer中 else if (mType == IOTASK_TYPE_READ) { + if (!mBuffer) + return false; file.Open(File::FILE_MODE_READ); file.ReadAll(mBuffer); file.Close(); diff --git a/source/modules/asura-utils/io/io_task.h b/source/modules/asura-utils/io/io_task.h index 09c8798..0cf5023 100644 --- a/source/modules/asura-utils/io/io_task.h +++ b/source/modules/asura-utils/io/io_task.h @@ -24,8 +24,7 @@ namespace AsuraEngine /// 读取文件任务。 /// class IOTask ASURA_FINAL - : public AEThreading::Task - , public AEScripting::Portable + : public AEScripting::Portable { public: @@ -46,8 +45,8 @@ namespace AsuraEngine std::string mPath; IOTaskType mType; - asura_ref DataBuffer* mBuffer; - Luax::LuaxMemberRef mBufferRef; + DataBuffer* mBuffer; + Luax::LuaxMemberRef mBufferRef; }; -- cgit v1.1-26-g67d0