Ultimately, the issue was caused by updating sound sequence handle in `AUD_SequenceEntry_setSound` on each new frame regardless if the modifier data has changed. This commit fixes the issue by implementing a means for modifiers to check, if their parameters or inputs are changed. This is done by storing these parameters in `StripModifierDataRuntime` struct, that is shared between all modifier types. This is not ideal, but it significantly simplifies dependency graph runtime store/restore code. Function `strip_update_sound_modifiers` passes boolean `needs_update` to strip stack update functions. If any needs to be updated, it sets value of `needs_update` to true allowing following update functions to skip parameter checking to speed up the process. Original code updated sound sequence handle twice. Once by function `BKE_sound_update_scene_sound` then by `strip_update_sound_modifiers`. If sound modifier is used, only `strip_update_sound_modifiers` needs to be called, so there is condition to decide which one of these functions is called. Also fixes #139605 Pull Request: https://projects.blender.org/blender/blender/pulls/141595
18 lines
283 B
C++
18 lines
283 B
C++
/* SPDX-FileCopyrightText: 2025 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup sequencer
|
|
*/
|
|
|
|
struct Strip;
|
|
|
|
namespace blender::seq {
|
|
|
|
bool modifier_persistent_uids_are_valid(const Strip &strip);
|
|
|
|
} // namespace blender::seq
|