internal: use msPerFrame to control render timing
This commit is contained in:
@@ -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 = <Future Function()>[];
|
||||
|
||||
@@ -98,6 +98,11 @@ abstract class ThermionViewer {
|
||||
///
|
||||
Future<View> getViewAt(int index);
|
||||
|
||||
///
|
||||
///
|
||||
///
|
||||
double get msPerFrame;
|
||||
|
||||
///
|
||||
/// Sets the framerate for continuous rendering when [setRendering] is enabled.
|
||||
///
|
||||
|
||||
@@ -148,7 +148,7 @@ class _ThermionTextureWidgetState extends State<ThermionTextureWidget> {
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user