[Bf-blender-cvs] [42b51bf6a91] blender-v3.4-release: Fix T102571: Can't stop audio playback when using multiple windows
Richard Antalik
noreply at git.blender.org
Mon Dec 5 04:58:06 CET 2022
Commit: 42b51bf6a91acd055d34e31c06c9dff46b0aac1b
Author: Richard Antalik
Date: Mon Dec 5 04:45:38 2022 +0100
Branches: blender-v3.4-release
https://developer.blender.org/rB42b51bf6a91acd055d34e31c06c9dff46b0aac1b
Fix T102571: Can't stop audio playback when using multiple windows
Traverse all scene dependency graphs and stop audio playback for each
scene.
Also fixes T71233
Reviewed By: sergey, mont29
Differential Revision: https://developer.blender.org/D16646
===================================================================
M source/blender/editors/screen/screen_ops.c
===================================================================
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 9c0963d0fb1..a4e98aa639a 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -4812,19 +4812,28 @@ bScreen *ED_screen_animation_no_scrub(const wmWindowManager *wm)
int ED_screen_animation_play(bContext *C, int sync, int mode)
{
bScreen *screen = CTX_wm_screen(C);
- Scene *scene = CTX_data_scene(C);
- Scene *scene_eval = DEG_get_evaluated_scene(CTX_data_ensure_evaluated_depsgraph(C));
if (ED_screen_animation_playing(CTX_wm_manager(C))) {
/* stop playback now */
ED_screen_animation_timer(C, 0, 0, 0);
- BKE_sound_stop_scene(scene_eval);
-
- WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene);
+ Main *bmain = CTX_data_main(C);
+ LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) {
+ LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) {
+ Depsgraph *graph = BKE_scene_get_depsgraph(scene, view_layer);
+ if (graph) {
+ Scene *scene_eval = DEG_get_evaluated_scene(graph);
+ /* The audio handles are preserved throughout the dependency graph evaluation.
+ * Checking for scene->playback_handle even for non-evaluated scene should be okay. */
+ BKE_sound_stop_scene(scene_eval);
+ WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene);
+ }
+ }
+ }
}
else {
/* these settings are currently only available from a menu in the TimeLine */
if (mode == 1) { /* XXX only play audio forwards!? */
+ Scene *scene_eval = DEG_get_evaluated_scene(CTX_data_ensure_evaluated_depsgraph(C));
BKE_sound_play_scene(scene_eval);
}
More information about the Bf-blender-cvs
mailing list