mirror of
https://github.com/AxioDL/boo.git
synced 2025-12-09 13:37:48 +00:00
BooObject: Remove destructorLock()
Now that we have the fencing and atomic operations in place to ensure access to data on other threads will always occur before the use of delete, we can remove the destructor lock. This will be useful for making ObjToken's move assignment operator noexcept.
This commit is contained in:
@@ -3,14 +3,15 @@
|
||||
/* Private header for managing shader data
|
||||
* binding lifetimes through rendering cycle */
|
||||
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
#include <vector>
|
||||
#include <mutex>
|
||||
#include <cassert>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
#include <mutex>
|
||||
#include <queue>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#include "boo/graphicsdev/IGraphicsDataFactory.hpp"
|
||||
#include "boo/graphicsdev/IGraphicsCommandQueue.hpp"
|
||||
#include "../Common.hpp"
|
||||
@@ -63,9 +64,6 @@ struct BaseGraphicsData : ListNode<BaseGraphicsData, GraphicsDataFactoryHead*> {
|
||||
auto* head = getHead<T>();
|
||||
return head ? head->countForward() : 0;
|
||||
}
|
||||
std::unique_lock<std::recursive_mutex> destructorLock() override {
|
||||
return std::unique_lock<std::recursive_mutex>{m_head->m_dataMutex};
|
||||
}
|
||||
|
||||
explicit BaseGraphicsData(GraphicsDataFactoryHead& head __BooTraceArgs)
|
||||
: ListNode<BaseGraphicsData, GraphicsDataFactoryHead*>(&head) __BooTraceInitializer {}
|
||||
@@ -131,9 +129,6 @@ struct BaseGraphicsPool : ListNode<BaseGraphicsPool, GraphicsDataFactoryHead*> {
|
||||
auto* head = getHead<T>();
|
||||
return head ? head->countForward() : 0;
|
||||
}
|
||||
std::unique_lock<std::recursive_mutex> destructorLock() override {
|
||||
return std::unique_lock<std::recursive_mutex>{m_head->m_dataMutex};
|
||||
}
|
||||
|
||||
explicit BaseGraphicsPool(GraphicsDataFactoryHead& head __BooTraceArgs)
|
||||
: ListNode<BaseGraphicsPool, GraphicsDataFactoryHead*>(&head) __BooTraceInitializer {}
|
||||
@@ -158,10 +153,6 @@ struct GraphicsDataNode : ListNode<GraphicsDataNode<NodeCls, DataCls>, ObjToken<
|
||||
return std::unique_lock<std::recursive_mutex>{head->m_head->m_dataMutex};
|
||||
}
|
||||
|
||||
std::unique_lock<std::recursive_mutex> destructorLock() override {
|
||||
return std::unique_lock<std::recursive_mutex>{base::m_head->m_head->m_dataMutex};
|
||||
}
|
||||
|
||||
explicit GraphicsDataNode(const ObjToken<DataCls>& data)
|
||||
: ListNode<GraphicsDataNode<NodeCls, DataCls>, ObjToken<DataCls>, NodeCls>(data) {}
|
||||
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
#include "../win/Win32Common.hpp"
|
||||
#include "logvisor/logvisor.hpp"
|
||||
#include "boo/graphicsdev/D3D.hpp"
|
||||
#include "boo/IGraphicsContext.hpp"
|
||||
#include "Common.hpp"
|
||||
#include <vector>
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <condition_variable>
|
||||
#include <d3dcompiler.h>
|
||||
#include <comdef.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
#include <condition_variable>
|
||||
#include <forward_list>
|
||||
#include "xxhash/xxhash.h"
|
||||
#include <mutex>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
|
||||
#include <d3dcompiler.h>
|
||||
#include <comdef.h>
|
||||
|
||||
#include <logvisor/logvisor.hpp>
|
||||
|
||||
#undef min
|
||||
#undef max
|
||||
|
||||
@@ -2,22 +2,22 @@
|
||||
#include "boo/graphicsdev/glew.h"
|
||||
#include "boo/IApplication.hpp"
|
||||
#include "Common.hpp"
|
||||
#include <thread>
|
||||
#include <condition_variable>
|
||||
|
||||
#include <array>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
#include "xxhash/xxhash.h"
|
||||
#include "glslang/Public/ShaderLang.h"
|
||||
#include "glslang/Include/Types.h"
|
||||
#include "StandAlone/ResourceLimits.h"
|
||||
#include <condition_variable>
|
||||
#include <mutex>
|
||||
#include <thread>
|
||||
|
||||
#include <glslang/Public/ShaderLang.h>
|
||||
#include <glslang/Include/Types.h>
|
||||
#include <StandAlone/ResourceLimits.h>
|
||||
|
||||
#include <logvisor/logvisor.hpp>
|
||||
|
||||
#if _WIN32
|
||||
#include "../win/WinCommon.hpp"
|
||||
#endif
|
||||
|
||||
#include "logvisor/logvisor.hpp"
|
||||
|
||||
#undef min
|
||||
#undef max
|
||||
|
||||
|
||||
@@ -1060,9 +1060,6 @@ struct VulkanDescriptorPool : ListNode<VulkanDescriptorPool, VulkanDataFactoryIm
|
||||
|
||||
~VulkanDescriptorPool() { vk::DestroyDescriptorPool(m_head->m_ctx->m_dev, m_descPool, nullptr); }
|
||||
|
||||
std::unique_lock<std::recursive_mutex> destructorLock() override {
|
||||
return std::unique_lock<std::recursive_mutex>{m_head->m_dataMutex};
|
||||
}
|
||||
static std::unique_lock<std::recursive_mutex> _getHeadLock(VulkanDataFactoryImpl* factory) {
|
||||
return std::unique_lock<std::recursive_mutex>{factory->m_dataMutex};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user