AnimatedTexture: Fix crash when loaded from a thread
This commit is contained in:
parent
19bf77f666
commit
e6d930b31f
2 changed files with 7 additions and 1 deletions
|
@ -270,13 +270,18 @@ void AnimatedTexture::_bind_methods() {
|
||||||
BIND_CONSTANT(MAX_FRAMES);
|
BIND_CONSTANT(MAX_FRAMES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AnimatedTexture::_finish_non_thread_safe_setup() {
|
||||||
|
RenderingServer::get_singleton()->connect("frame_pre_draw", callable_mp(this, &AnimatedTexture::_update_proxy));
|
||||||
|
}
|
||||||
|
|
||||||
AnimatedTexture::AnimatedTexture() {
|
AnimatedTexture::AnimatedTexture() {
|
||||||
//proxy = RS::get_singleton()->texture_create();
|
//proxy = RS::get_singleton()->texture_create();
|
||||||
proxy_ph = RS::get_singleton()->texture_2d_placeholder_create();
|
proxy_ph = RS::get_singleton()->texture_2d_placeholder_create();
|
||||||
proxy = RS::get_singleton()->texture_proxy_create(proxy_ph);
|
proxy = RS::get_singleton()->texture_proxy_create(proxy_ph);
|
||||||
|
|
||||||
RenderingServer::get_singleton()->texture_set_force_redraw_if_visible(proxy, true);
|
RenderingServer::get_singleton()->texture_set_force_redraw_if_visible(proxy, true);
|
||||||
RenderingServer::get_singleton()->connect("frame_pre_draw", callable_mp(this, &AnimatedTexture::_update_proxy));
|
|
||||||
|
MessageQueue::get_main_singleton()->push_callable(callable_mp(this, &AnimatedTexture::_finish_non_thread_safe_setup));
|
||||||
}
|
}
|
||||||
|
|
||||||
AnimatedTexture::~AnimatedTexture() {
|
AnimatedTexture::~AnimatedTexture() {
|
||||||
|
|
|
@ -65,6 +65,7 @@ private:
|
||||||
uint64_t prev_ticks = 0;
|
uint64_t prev_ticks = 0;
|
||||||
|
|
||||||
void _update_proxy();
|
void _update_proxy();
|
||||||
|
void _finish_non_thread_safe_setup();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
Loading…
Reference in a new issue