summaryrefslogtreecommitdiffstats
path: root/servers/rendering_server.h
diff options
context:
space:
mode:
Diffstat (limited to 'servers/rendering_server.h')
-rw-r--r--servers/rendering_server.h29
1 files changed, 28 insertions, 1 deletions
diff --git a/servers/rendering_server.h b/servers/rendering_server.h
index 8f0150f180..240d82c90b 100644
--- a/servers/rendering_server.h
+++ b/servers/rendering_server.h
@@ -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