OpenXR: Change timing of xrWaitFrame and add thread safety features to OpenXR
This commit is contained in:
@ -41,6 +41,32 @@
|
||||
#include "servers/display_server.h"
|
||||
#include "servers/rendering/rendering_device.h"
|
||||
|
||||
// Helper macros for code outside of the rendering server, but that is
|
||||
// called by the rendering server.
|
||||
#ifdef DEBUG_ENABLED
|
||||
#define ERR_ON_RENDER_THREAD \
|
||||
RenderingServer *rendering_server = RenderingServer::get_singleton(); \
|
||||
ERR_FAIL_NULL(rendering_server); \
|
||||
ERR_FAIL_COND(rendering_server->is_on_render_thread());
|
||||
#define ERR_ON_RENDER_THREAD_V(m_ret) \
|
||||
RenderingServer *rendering_server = RenderingServer::get_singleton(); \
|
||||
ERR_FAIL_NULL_V(rendering_server, m_ret); \
|
||||
ERR_FAIL_COND_V(rendering_server->is_on_render_thread(), m_ret);
|
||||
#define ERR_NOT_ON_RENDER_THREAD \
|
||||
RenderingServer *rendering_server = RenderingServer::get_singleton(); \
|
||||
ERR_FAIL_NULL(rendering_server); \
|
||||
ERR_FAIL_COND(!rendering_server->is_on_render_thread());
|
||||
#define ERR_NOT_ON_RENDER_THREAD_V(m_ret) \
|
||||
RenderingServer *rendering_server = RenderingServer::get_singleton(); \
|
||||
ERR_FAIL_NULL_V(rendering_server, m_ret); \
|
||||
ERR_FAIL_COND_V(!rendering_server->is_on_render_thread(), m_ret);
|
||||
#else
|
||||
#define ERR_ON_RENDER_THREAD
|
||||
#define ERR_ON_RENDER_THREAD_V(m_ret)
|
||||
#define ERR_NOT_ON_RENDER_THREAD
|
||||
#define ERR_NOT_ON_RENDER_THREAD_V(m_ret)
|
||||
#endif
|
||||
|
||||
template <typename T>
|
||||
class TypedArray;
|
||||
|
||||
@ -1684,7 +1710,7 @@ public:
|
||||
|
||||
#ifndef DISABLE_DEPRECATED
|
||||
// Never actually used, should be removed when we can break compatibility.
|
||||
enum Features {
|
||||
enum Features{
|
||||
FEATURE_SHADERS,
|
||||
FEATURE_MULTITHREADED,
|
||||
};
|
||||
@ -1708,6 +1734,7 @@ public:
|
||||
bool is_render_loop_enabled() const;
|
||||
void set_render_loop_enabled(bool p_enabled);
|
||||
|
||||
virtual bool is_on_render_thread() = 0;
|
||||
virtual void call_on_render_thread(const Callable &p_callable) = 0;
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
|
||||
Reference in New Issue
Block a user