[Bf-blender-cvs] [b4b2caf] master: PlayAnim: avoid list count setting frame from mouse

Campbell Barton noreply at git.blender.org
Thu Oct 15 08:03:18 CEST 2015


Commit: b4b2caffd8852fa831c4160c2fb6dec23e416c74
Author: Campbell Barton
Date:   Thu Oct 15 16:45:49 2015 +1100
Branches: master
https://developer.blender.org/rBb4b2caffd8852fa831c4160c2fb6dec23e416c74

PlayAnim: avoid list count setting frame from mouse

===================================================================

M	source/blender/windowmanager/intern/wm_playanim.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_playanim.c b/source/blender/windowmanager/intern/wm_playanim.c
index 1c32373..27b4609 100644
--- a/source/blender/windowmanager/intern/wm_playanim.c
+++ b/source/blender/windowmanager/intern/wm_playanim.c
@@ -544,17 +544,16 @@ static void update_sound_fps(void)
 static void change_frame(PlayState *ps, int cx)
 {
 	int sizex, sizey;
-	int i;
+	int i, i_last;
 
-	playanim_window_get_size(&sizex, &sizey);
-	ps->picture = picsbase.first;
-	/* TODO - store in ps direct? */
-	i = 0;
-	while (ps->picture) {
-		i++;
-		ps->picture = ps->picture->next;
+	if (BLI_listbase_is_empty(&picsbase)) {
+		return;
 	}
-	i = (i * cx) / sizex;
+
+	playanim_window_get_size(&sizex, &sizey);
+	i_last = ((struct PlayAnimPict *)picsbase.last)->frame;
+	i = (i_last * cx) / sizex;
+	CLAMP(i, 0, i_last);
 
 #ifdef WITH_AUDASPACE
 	if (scrub_handle) {
@@ -588,11 +587,8 @@ static void change_frame(PlayState *ps, int cx)
 	}
 #endif
 
-	ps->picture = picsbase.first;
-	for (; i > 0; i--) {
-		if (ps->picture->next == NULL) break;
-		ps->picture = ps->picture->next;
-	}
+	ps->picture = BLI_findlink(&picsbase, i);
+	BLI_assert(ps->picture != NULL);
 
 	ps->sstep = true;
 	ps->wait2 = false;




More information about the Bf-blender-cvs mailing list