diff --git a/lib/widgets/viewer/overlay/histogram.dart b/lib/widgets/viewer/overlay/histogram.dart index 7c648e5fa..0508c1104 100644 --- a/lib/widgets/viewer/overlay/histogram.dart +++ b/lib/widgets/viewer/overlay/histogram.dart @@ -78,7 +78,8 @@ class _ImageHistogramState extends State { Future _updateLevels(ImageInfo info) async { final targetEntry = entry; - final newLevels = await viewStateController.getHistogramLevels(info); + final forceUpdate = targetEntry.isAnimated; + final newLevels = await viewStateController.getHistogramLevels(info, forceUpdate); if (mounted) { setState(() => _levels = targetEntry == entry ? newLevels : {}); } diff --git a/lib/widgets/viewer/view/histogram.dart b/lib/widgets/viewer/view/histogram.dart index 6bb5fbcae..bd640e8b4 100644 --- a/lib/widgets/viewer/view/histogram.dart +++ b/lib/widgets/viewer/view/histogram.dart @@ -18,8 +18,8 @@ mixin HistogramMixin { static const int bins = 256; static const int normMax = bins - 1; - Future getHistogramLevels(ImageInfo info) async { - if (_levels.isEmpty) { + Future getHistogramLevels(ImageInfo info, bool forceUpdate) async { + if (_levels.isEmpty || forceUpdate) { if (_completer == null) { _completer = Completer(); final data = (await info.image.toByteData(format: ImageByteFormat.rawExtendedRgba128))!; @@ -31,6 +31,7 @@ mixin HistogramMixin { _completer?.complete(); } else { await _completer?.future; + _completer = null; } } return _levels;