diff options
Diffstat (limited to 'source/modules/asura-utils/io')
-rw-r--r-- | source/modules/asura-utils/io/compressor.h | 2 | ||||
-rw-r--r-- | source/modules/asura-utils/io/data_buffer.h | 16 | ||||
-rw-r--r-- | source/modules/asura-utils/io/file_data.cpp | 9 | ||||
-rw-r--r-- | source/modules/asura-utils/io/io_task.cpp | 6 | ||||
-rw-r--r-- | source/modules/asura-utils/io/io_task.h | 7 |
5 files changed, 25 insertions, 15 deletions
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ַݵij /// @@ -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<IOTask> + : public AEScripting::Portable<IOTask, AEThreading::Task> { public: @@ -46,8 +45,8 @@ namespace AsuraEngine std::string mPath; IOTaskType mType; - asura_ref DataBuffer* mBuffer; - Luax::LuaxMemberRef mBufferRef; + DataBuffer* mBuffer; + Luax::LuaxMemberRef mBufferRef; }; |