Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2013-10-21 18:40:14 +0400
committerBastien Montagne <montagne29@wanadoo.fr>2013-10-21 18:40:14 +0400
commit5d132e722efeaed52536b411fb6cf86083b7d6e4 (patch)
tree298241414d394915b41f3ea956b07d84ded4fb75 /source
parent55201ce48ba5883297bc0ed8db990faf93a20276 (diff)
Followup to r60857: code was assuming markers were sorted, which is not guaranted. Also heavily simplified it (previous code was supposed to have optimizations, but ended just looping twice over the markers' list...).
Many thanks to Brecht and Sergey for noting the quirk and reviews! :)
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/animation/anim_markers.c56
1 files changed, 10 insertions, 46 deletions
diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c
index 8a9f4559140..1e8f2bfc038 100644
--- a/source/blender/editors/animation/anim_markers.c
+++ b/source/blender/editors/animation/anim_markers.c
@@ -197,59 +197,23 @@ void ED_markers_get_minmax(ListBase *markers, short sel, float *first, float *la
{
TimeMarker *marker;
float min, max;
- int selcount = 0;
/* sanity check */
//printf("markers = %p - %p, %p\n", markers, markers->first, markers->last);
- if (markers == NULL) {
- *first = 0.0f;
- *last = 0.0f;
- return;
- }
-
- if (markers->first && markers->last) {
- TimeMarker *fm = markers->first;
- TimeMarker *lm = markers->last;
-
- /* Store last marker in min, and first marker in max, so that later real value calc actually works! [#37146]. */
- min = (float)lm->frame;
- max = (float)fm->frame;
- }
- else {
+ if (ELEM3(NULL, markers, markers->first, markers->last)) {
*first = 0.0f;
*last = 0.0f;
return;
}
-
- /* count how many markers are usable - see later */
- if (sel) {
- for (marker = markers->first; marker; marker = marker->next) {
- if (marker->flag & SELECT)
- selcount++;
- }
- }
- else
- selcount = BLI_countlist(markers);
-
- /* if only selected are to be considered, only consider the selected ones
- * (optimization for not searching list)
- */
- if (selcount > 1) {
- for (marker = markers->first; marker; marker = marker->next) {
- if (sel) {
- if (marker->flag & SELECT) {
- if (marker->frame < min)
- min = (float)marker->frame;
- if (marker->frame > max)
- max = (float)marker->frame;
- }
- }
- else {
- if (marker->frame < min)
- min = (float)marker->frame;
- if (marker->frame > max)
- max = (float)marker->frame;
- }
+
+ min = FLT_MAX;
+ max = -FLT_MAX;
+ for (marker = markers->first; marker; marker = marker->next) {
+ if (!sel || (marker->flag & SELECT)) {
+ if (marker->frame < min)
+ min = (float)marker->frame;
+ if (marker->frame > max)
+ max = (float)marker->frame;
}
}