diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart index 05dc2348..8f59fc99 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart @@ -262,13 +262,22 @@ class ThermionViewerFFI extends ThermionViewer { return out; } + double _msPerFrame = 1000.0 / 60.0; + + /// + /// + /// + double get msPerFrame { + return _msPerFrame; + } + /// /// /// @override Future setFrameRate(int framerate) async { - final interval = 1000.0 / framerate; - set_frame_interval_render_thread(_viewer!, interval); + _msPerFrame = 1000.0 / framerate; + set_frame_interval_render_thread(_viewer!, _msPerFrame); } final _onDispose = []; diff --git a/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart b/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart index 2061b01b..19e84ff3 100644 --- a/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart +++ b/thermion_dart/lib/src/viewer/src/thermion_viewer_base.dart @@ -98,6 +98,11 @@ abstract class ThermionViewer { /// Future getViewAt(int index); + /// + /// + /// + double get msPerFrame; + /// /// Sets the framerate for continuous rendering when [setRendering] is enabled. /// diff --git a/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart b/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart index 1a1535d9..458d582a 100644 --- a/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart +++ b/thermion_flutter/thermion_flutter/lib/src/widgets/src/thermion_texture_widget.dart @@ -148,7 +148,7 @@ class _ThermionTextureWidgetState extends State { if (!mounted) { return; } - if (widget.viewer.rendering && !_rendering && _resizing.isEmpty) { + if (widget.viewer.rendering && !_rendering && _resizing.isEmpty && (d.inMilliseconds - lastRender > widget.viewer.frameRateInMilliseconds)) { _rendering = true; if (this == _states.first && _texture != null) { await widget.viewer.requestFrame();