diff options
| author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-10-21 20:56:42 +0200 |
|---|---|---|
| committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2024-10-21 20:56:42 +0200 |
| commit | d5d509bbd68f829f5cb9dbf3e0ee5c1a349f9a4f (patch) | |
| tree | 0f5db4f4d7ef1da7267e823a5b57cb67e710586e /servers | |
| parent | 44fa552343722bb048e2d7c6d3661174a95a8a3c (diff) | |
| download | redot-engine-d5d509bbd68f829f5cb9dbf3e0ee5c1a349f9a4f.tar.gz | |
Implement thread ownership change for RenderingDevice
Diffstat (limited to 'servers')
| -rw-r--r-- | servers/rendering/rendering_device.cpp | 4 | ||||
| -rw-r--r-- | servers/rendering/rendering_device.h | 2 | ||||
| -rw-r--r-- | servers/rendering/rendering_server_default.cpp | 2 |
3 files changed, 8 insertions, 0 deletions
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp index 942d5631e4..6eb1386749 100644 --- a/servers/rendering/rendering_device.cpp +++ b/servers/rendering/rendering_device.cpp @@ -7260,6 +7260,10 @@ void RenderingDevice::_bind_methods() { BIND_ENUM_CONSTANT(DEBUG_PASS); } +void RenderingDevice::make_current() { + render_thread_id = Thread::get_caller_id(); +} + RenderingDevice::~RenderingDevice() { finalize(); diff --git a/servers/rendering/rendering_device.h b/servers/rendering/rendering_device.h index 71ffbfbd88..c440e11cd4 100644 --- a/servers/rendering/rendering_device.h +++ b/servers/rendering/rendering_device.h @@ -1496,6 +1496,8 @@ public: static RenderingDevice *get_singleton(); + void make_current(); + RenderingDevice(); ~RenderingDevice(); diff --git a/servers/rendering/rendering_server_default.cpp b/servers/rendering/rendering_server_default.cpp index 20f1f9ad6f..2ec693cbbf 100644 --- a/servers/rendering/rendering_server_default.cpp +++ b/servers/rendering/rendering_server_default.cpp @@ -370,6 +370,8 @@ Size2i RenderingServerDefault::get_maximum_viewport_size() const { void RenderingServerDefault::_assign_mt_ids(WorkerThreadPool::TaskID p_pump_task_id) { server_thread = Thread::get_caller_id(); server_task_id = p_pump_task_id; + // This is needed because the main RD is created on the main thread. + RenderingDevice::get_singleton()->make_current(); } void RenderingServerDefault::_thread_exit() { |
