瀏覽代碼

image-source: Don't repeat same image when randomizing

When randomizing the image slide show, do not repeat the same image more
than once in a row
jp9000 9 年之前
父節點
當前提交
e73546b521
共有 1 個文件被更改,包括 10 次插入3 次删除
  1. 10 3
      plugins/image-source/obs-slideshow.c

+ 10 - 3
plugins/image-source/obs-slideshow.c

@@ -308,10 +308,17 @@ static void ss_video_tick(void *data, float seconds)
 	if (ss->elapsed > ss->slide_time) {
 	if (ss->elapsed > ss->slide_time) {
 		ss->elapsed -= ss->slide_time;
 		ss->elapsed -= ss->slide_time;
 
 
-		if (ss->randomize)
-			ss->cur_item = random_file(ss);
-		else if (++ss->cur_item >= ss->files.num)
+		if (ss->randomize) {
+			size_t next = ss->cur_item;
+			if (ss->files.num > 1) {
+				while (next == ss->cur_item)
+					next = random_file(ss);
+			}
+			ss->cur_item = next;
+
+		} else if (++ss->cur_item >= ss->files.num) {
 			ss->cur_item = 0;
 			ss->cur_item = 0;
+		}
 
 
 		if (ss->files.num)
 		if (ss->files.num)
 			obs_transition_start(ss->transition,
 			obs_transition_start(ss->transition,