get rid of internal Close() method

This commit is contained in:
ohyzha
2024-11-13 10:24:34 +02:00
parent d88addd858
commit 656615e5a7
3 changed files with 10 additions and 24 deletions

View File

@@ -21,8 +21,14 @@ namespace OpenVulkano
void MemMappedFile::Close()
{
m_internal->Close();
if (m_internal.use_count() == 1)
{
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_size = 0;
}

View File

@@ -90,20 +90,11 @@ namespace OpenVulkano
}
}
void MemMappedFileInternal::Close()
MemMappedFileInternal::~MemMappedFileInternal()
{
UnmapViewOfFile(address);
CloseHandle(fileMappingHandle);
CloseHandle(fileHandle);
closed = true;
}
MemMappedFileInternal::~MemMappedFileInternal()
{
if (!closed)
{
Close();
}
}
#else
MemMappedFileInternal::MemMappedFileInternal(const char* file, MemMappedFile::FileMode fileMode)
@@ -123,19 +114,10 @@ namespace OpenVulkano
size = fileStat.st_size;
}
void MemMappedFileInternal::Close()
MemMappedFileInternal::~MemMappedFileInternal()
{
munmap(address, fileStat.st_size);
close(fileHandle);
closed = true;
}
MemMappedFileInternal::~MemMappedFileInternal()
{
if (!closed)
{
Close();
}
}
#endif

View File

@@ -34,12 +34,10 @@ namespace OpenVulkano
#else
[[nodiscard]] bool InvalidHandle() const { return fileHandle == -1; }
#endif
void Close();
private:
void* address = nullptr;
size_t size = 0;
bool closed = false;
#ifdef _MSC_VER
HANDLE fileHandle;