get rid of internal Close() method
This commit is contained in:
@@ -21,8 +21,14 @@ namespace OpenVulkano
|
|||||||
|
|
||||||
void MemMappedFile::Close()
|
void MemMappedFile::Close()
|
||||||
{
|
{
|
||||||
m_internal->Close();
|
if (m_internal.use_count() == 1)
|
||||||
|
{
|
||||||
m_internal = nullptr;
|
m_internal = nullptr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger::APP->warn("Can't close memory mapped file since it's being shared among {} instances", m_internal.use_count());
|
||||||
|
}
|
||||||
m_data = nullptr;
|
m_data = nullptr;
|
||||||
m_size = 0;
|
m_size = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,20 +90,11 @@ namespace OpenVulkano
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemMappedFileInternal::Close()
|
MemMappedFileInternal::~MemMappedFileInternal()
|
||||||
{
|
{
|
||||||
UnmapViewOfFile(address);
|
UnmapViewOfFile(address);
|
||||||
CloseHandle(fileMappingHandle);
|
CloseHandle(fileMappingHandle);
|
||||||
CloseHandle(fileHandle);
|
CloseHandle(fileHandle);
|
||||||
closed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
MemMappedFileInternal::~MemMappedFileInternal()
|
|
||||||
{
|
|
||||||
if (!closed)
|
|
||||||
{
|
|
||||||
Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
MemMappedFileInternal::MemMappedFileInternal(const char* file, MemMappedFile::FileMode fileMode)
|
MemMappedFileInternal::MemMappedFileInternal(const char* file, MemMappedFile::FileMode fileMode)
|
||||||
@@ -123,19 +114,10 @@ namespace OpenVulkano
|
|||||||
size = fileStat.st_size;
|
size = fileStat.st_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MemMappedFileInternal::Close()
|
MemMappedFileInternal::~MemMappedFileInternal()
|
||||||
{
|
{
|
||||||
munmap(address, fileStat.st_size);
|
munmap(address, fileStat.st_size);
|
||||||
close(fileHandle);
|
close(fileHandle);
|
||||||
closed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
MemMappedFileInternal::~MemMappedFileInternal()
|
|
||||||
{
|
|
||||||
if (!closed)
|
|
||||||
{
|
|
||||||
Close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -34,12 +34,10 @@ namespace OpenVulkano
|
|||||||
#else
|
#else
|
||||||
[[nodiscard]] bool InvalidHandle() const { return fileHandle == -1; }
|
[[nodiscard]] bool InvalidHandle() const { return fileHandle == -1; }
|
||||||
#endif
|
#endif
|
||||||
void Close();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void* address = nullptr;
|
void* address = nullptr;
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
bool closed = false;
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
HANDLE fileHandle;
|
HANDLE fileHandle;
|
||||||
|
|||||||
Reference in New Issue
Block a user