From 91ae97e558103cc34d1dd19ea663677a8627b090 Mon Sep 17 00:00:00 2001 From: Ben Vanik Date: Wed, 15 Jul 2015 22:07:46 -0700 Subject: [PATCH] Fixing lock type in VFS. --- src/xenia/vfs/device.cc | 2 +- src/xenia/vfs/device.h | 4 ++-- src/xenia/vfs/devices/host_path_file.h | 2 -- src/xenia/vfs/entry.cc | 8 ++++---- 4 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/xenia/vfs/device.cc b/src/xenia/vfs/device.cc index e2b216387..09625213b 100644 --- a/src/xenia/vfs/device.cc +++ b/src/xenia/vfs/device.cc @@ -19,7 +19,7 @@ Device::Device(const std::string& mount_path) : mount_path_(mount_path) {} Device::~Device() = default; void Device::Dump(StringBuffer* string_buffer) { - std::lock_guard lock(mutex_); + std::lock_guard lock(mutex_); root_entry_->Dump(string_buffer, 0); } diff --git a/src/xenia/vfs/device.h b/src/xenia/vfs/device.h index 0ee8b1a4e..f96cfb993 100644 --- a/src/xenia/vfs/device.h +++ b/src/xenia/vfs/device.h @@ -28,7 +28,7 @@ class Device { virtual bool Initialize() = 0; void Dump(StringBuffer* string_buffer); - xe::mutex& mutex() { return mutex_; } + xe::recursive_mutex& mutex() { return mutex_; } const std::string& mount_path() const { return mount_path_; } virtual bool is_read_only() const { return true; } @@ -41,7 +41,7 @@ class Device { virtual uint32_t bytes_per_sector() const = 0; protected: - xe::mutex mutex_; + xe::recursive_mutex mutex_; std::string mount_path_; std::unique_ptr root_entry_; }; diff --git a/src/xenia/vfs/devices/host_path_file.h b/src/xenia/vfs/devices/host_path_file.h index 8a13169f8..b6dc26648 100644 --- a/src/xenia/vfs/devices/host_path_file.h +++ b/src/xenia/vfs/devices/host_path_file.h @@ -15,8 +15,6 @@ #include "xenia/base/filesystem.h" #include "xenia/kernel/objects/xfile.h" -typedef void* HANDLE; - namespace xe { namespace vfs { diff --git a/src/xenia/vfs/entry.cc b/src/xenia/vfs/entry.cc index 2aa2122dd..9673b21cb 100644 --- a/src/xenia/vfs/entry.cc +++ b/src/xenia/vfs/entry.cc @@ -47,7 +47,7 @@ void Entry::Dump(xe::StringBuffer* string_buffer, int indent) { bool Entry::is_read_only() const { return device_->is_read_only(); } Entry* Entry::GetChild(std::string name) { - std::lock_guard lock(device_->mutex()); + std::lock_guard lock(device_->mutex()); // TODO(benvanik): a faster search for (auto& child : children_) { if (strcasecmp(child->name().c_str(), name.c_str()) == 0) { @@ -59,7 +59,7 @@ Entry* Entry::GetChild(std::string name) { Entry* Entry::IterateChildren(const xe::filesystem::WildcardEngine& engine, size_t* current_index) { - std::lock_guard lock(device_->mutex()); + std::lock_guard lock(device_->mutex()); while (*current_index < children_.size()) { auto& child = children_[*current_index]; *current_index = *current_index + 1; @@ -74,7 +74,7 @@ Entry* Entry::CreateEntry(std::string name, uint32_t attributes) { if (is_read_only()) { return nullptr; } - std::lock_guard lock(device_->mutex()); + std::lock_guard lock(device_->mutex()); if (GetChild(name)) { // Already exists. return nullptr; @@ -93,7 +93,7 @@ bool Entry::Delete(Entry* entry) { if (is_read_only()) { return false; } - std::lock_guard lock(device_->mutex()); + std::lock_guard lock(device_->mutex()); if (entry->parent() != this) { return false; }