1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-13 13:31:48 +00:00

Implement thread ownership change for RenderingDevice

This commit is contained in:
Pedro J. Estébanez
2024-10-21 20:56:42 +02:00
parent 44fa552343
commit d5d509bbd6
3 changed files with 8 additions and 0 deletions

View File

@@ -7260,6 +7260,10 @@ void RenderingDevice::_bind_methods() {
BIND_ENUM_CONSTANT(DEBUG_PASS); BIND_ENUM_CONSTANT(DEBUG_PASS);
} }
void RenderingDevice::make_current() {
render_thread_id = Thread::get_caller_id();
}
RenderingDevice::~RenderingDevice() { RenderingDevice::~RenderingDevice() {
finalize(); finalize();

View File

@@ -1496,6 +1496,8 @@ public:
static RenderingDevice *get_singleton(); static RenderingDevice *get_singleton();
void make_current();
RenderingDevice(); RenderingDevice();
~RenderingDevice(); ~RenderingDevice();

View File

@@ -370,6 +370,8 @@ Size2i RenderingServerDefault::get_maximum_viewport_size() const {
void RenderingServerDefault::_assign_mt_ids(WorkerThreadPool::TaskID p_pump_task_id) { void RenderingServerDefault::_assign_mt_ids(WorkerThreadPool::TaskID p_pump_task_id) {
server_thread = Thread::get_caller_id(); server_thread = Thread::get_caller_id();
server_task_id = p_pump_task_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() { void RenderingServerDefault::_thread_exit() {