0
0
forked from blender/blender
blender/intern
Philipp Oeser 1925c62d5f Fix #106425: Mantaflow guiding with domains is broken
Caused by e968b4197b / 67e23b4b29

Since culprit commits, we are not running `MANTA::initGuiding` /
`fluid_alloc_guiding` if guiding is meant to be pulled from other
domains (it does work with effectors though). This is because atm. only
the `FLUID_DOMAIN_ACTIVE_GUIDE` flag sets `mUsingGuiding` to true
(activated in `update_obstacleflags`, so only for effectors).

So to fix this, we have to ensure that `MANTA::initGuiding` runs (also
if guiding is pulled from domains), but also make sure we dont run into
the crashes from T102257.

It seems that the real reason we were getting crashes in T102257 is that
67e23b4b29 made it so that resetting the cache (including a call to
`fluid_modifier_reset_ex`) in `fluid_modifier_processDomain` happens
**after** `FluidDomainSettings.active_fields` have been updated (this
happens in `update_flowsflags` & `update_obstacleflags`).
But `fluid_modifier_reset_ex` also resets
`FluidDomainSettings.active_fields`. If we then update pointers later in
`fluid_modifier_processDomain`, we never get anything in the guiding
related pointers for the new `mCurrentID` (specifically `mPhiGuideIn`
will be a nullptr). This is the real reason `initGuiding()` runs a
second time (it does once for `fluid_modifier_init` then again as a
consequence of the call to `manta_guiding`).

This patch proposes to move the resetting process from 67e23b4b29
**above** the refreshing of the `FluidDomainSettings.active_fields`,
this way these field stay intact, we do get the first run of
`initGuiding()` from `fluid_modifier_init`, manta pointers get updated
with intact fields afterwards (so we then get a valid `mPhiGuideIn`),
which then prevents the second run from `manta_guiding` to actually call
the python script again.

The fix from e968b4197b is then not needed and reverted in this patch.

This should be good for LTS I think.

Pull Request: blender/blender#117067
2024-02-14 16:11:37 +01:00
..
atomic Intern/atomic: Fix const qualifier for atomic_load_ptr. 2022-05-31 21:05:15 +08:00
audaspace CMake: fix AUDASPACE disabling WITH_PYTHON for Blender 2022-05-20 11:18:49 +10:00
clog File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
cycles Cleanup: make format 2024-01-11 14:54:41 +01:00
dualcon Cleanup: Compilation warnings 2022-03-18 12:07:08 +01:00
eigen File headers: manually convert files to use SPDX headers 2022-02-11 15:15:49 +11:00
ffmpeg Cleanup: make format 2024-01-11 14:54:41 +01:00
ghost Fix #112935: Wrong window order handling on macOS 14 2023-11-14 13:30:33 +01:00
glew-mx File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
guardedalloc Build: fix NetBSD error in guardedalloc 2023-06-15 13:27:39 +02:00
iksolver Cleanup: spelling in comments, capitalize tags 2022-05-13 09:29:25 +10:00
itasc Cleanup: remove argument to doxygen \file 2022-03-25 12:10:30 +11:00
libc_compat Fix compilation on Linux, glibc 2.34, and CentOS libraries 2022-09-21 12:33:07 +02:00
libmv Libmv: Remove FreeBSD sincos() workaround 2023-06-15 13:17:44 +02:00
locale Fix building with boost >= 1.81 2023-06-15 13:23:10 +02:00
mantaflow Fix #106425: Mantaflow guiding with domains is broken 2024-02-14 16:11:37 +01:00
memutil File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
mikktspace Mikktspace: Reduce number of data queries to caller 2022-04-23 15:09:41 +02:00
opencolorio Cleanup: clarify what is scene linear color space in conversion conversion 2022-05-23 15:34:50 +02:00
opensubdiv Fix missing OpenMP in Linux builds 2022-10-31 20:29:50 +01:00
openvdb File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
quadriflow File headers: SPDX License migration 2022-02-11 09:14:36 +11:00
rigidbody Cleanup: spelling in comments, capitalize tags 2022-05-13 09:29:25 +10:00
sky Cleanup: spelling in comments 2022-06-30 12:14:22 +10:00
utfconv Cleanup: use C++ comments for disabled code 2022-04-13 13:47:04 +10:00
wayland_dynload GHOST/Wayland: support dynamic loading libraries for Wayland 2022-07-06 15:30:47 +10:00
CMakeLists.txt GHOST/Wayland: support dynamic loading libraries for Wayland 2022-07-06 15:30:47 +10:00