NoiseTexture: prevent race condition because of Ref::unref()
(cherry picked from commit 1f0f0b8cea
)
This commit is contained in:
parent
ddde3819d6
commit
c0047023e6
1 changed files with 8 additions and 3 deletions
|
@ -135,14 +135,19 @@ void NoiseTexture::_queue_update() {
|
|||
|
||||
Ref<Image> NoiseTexture::_generate_texture() {
|
||||
|
||||
if (noise.is_null()) return Ref<Image>();
|
||||
// Prevent memdelete due to unref() on other thread.
|
||||
Ref<OpenSimplexNoise> ref_noise = noise;
|
||||
|
||||
if (ref_noise.is_null()) {
|
||||
return Ref<Image>();
|
||||
}
|
||||
|
||||
Ref<Image> image;
|
||||
|
||||
if (seamless) {
|
||||
image = noise->get_seamless_image(size.x);
|
||||
image = ref_noise->get_seamless_image(size.x);
|
||||
} else {
|
||||
image = noise->get_image(size.x, size.y);
|
||||
image = ref_noise->get_image(size.x, size.y);
|
||||
}
|
||||
|
||||
if (as_normalmap) {
|
||||
|
|
Loading…
Reference in a new issue