From ddcf5bac44d2b6a065a8a770fe9f7f145a2de372 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 21 Aug 2024 12:38:09 +1000 Subject: [PATCH] Revert "Fix image sequence detection to account for the number of digits" This reverts commit 5c2d412a2917e3cf9de75ce7a6fd7cb37051c48a. because it caused a regression. Resolve #124832. --- source/blender/editors/include/ED_image.hh | 7 ----- .../editors/space_image/image_sequence.cc | 26 +++++++------------ 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/source/blender/editors/include/ED_image.hh b/source/blender/editors/include/ED_image.hh index 98d3f48a8f0..e38c632415d 100644 --- a/source/blender/editors/include/ED_image.hh +++ b/source/blender/editors/include/ED_image.hh @@ -200,13 +200,6 @@ struct ImageFrameRange { /* Temporary data. */ ListBase frames; - - /** Sequences filename head. */ - char filename_head[FILE_MAX]; - /** Sequences digits size. */ - unsigned short filename_digits; - /** Sequences filename tail. */ - char filename_tail[FILE_MAX]; }; /** diff --git a/source/blender/editors/space_image/image_sequence.cc b/source/blender/editors/space_image/image_sequence.cc index 16f09a15443..c08c6501007 100644 --- a/source/blender/editors/space_image/image_sequence.cc +++ b/source/blender/editors/space_image/image_sequence.cc @@ -42,7 +42,10 @@ static void image_sequence_get_frame_ranges(wmOperator *op, ListBase *ranges) { char dir[FILE_MAXDIR]; const bool do_frame_range = RNA_boolean_get(op->ptr, "use_sequence_detection"); + ImageFrameRange *range = nullptr; int range_first_frame = 0; + /* Track when a new series of files are found that aren't compatible with the previous file. */ + char base_head[FILE_MAX], base_tail[FILE_MAX]; RNA_string_get(op->ptr, "directory", dir); RNA_BEGIN (op->ptr, itemptr, "files") { @@ -55,19 +58,10 @@ static void image_sequence_get_frame_ranges(wmOperator *op, ListBase *ranges) frame->framenr = BLI_path_sequence_decode( filename, head, sizeof(head), tail, sizeof(tail), &digits); - /* Check if the image sequence is already initialized. */ - ImageFrameRange *range = nullptr; - if (do_frame_range) { - LISTBASE_FOREACH (ImageFrameRange *, range_test, ranges) { - if ((digits == range_test->filename_digits) && - (STREQ(head, range_test->filename_head) && STREQ(tail, range_test->filename_tail))) - { - range = range_test; - break; - } - } - } - if (range) { + /* still in the same sequence */ + if (do_frame_range && (range != nullptr) && STREQLEN(base_head, head, FILE_MAX) && + STREQLEN(base_tail, tail, FILE_MAX)) + { /* Set filepath to first frame in the range. */ if (frame->framenr < range_first_frame) { BLI_path_join(range->filepath, sizeof(range->filepath), dir, filename); @@ -79,9 +73,9 @@ static void image_sequence_get_frame_ranges(wmOperator *op, ListBase *ranges) range = static_cast(MEM_callocN(sizeof(*range), __func__)); BLI_path_join(range->filepath, sizeof(range->filepath), dir, filename); BLI_addtail(ranges, range); - range->filename_digits = digits; - STRNCPY(range->filename_head, head); - STRNCPY(range->filename_tail, tail); + + STRNCPY(base_head, head); + STRNCPY(base_tail, tail); range_first_frame = frame->framenr; }