internal: use msPerFrame to control render timing
This commit is contained in:
@@ -262,13 +262,22 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
double _msPerFrame = 1000.0 / 60.0;
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
///
|
||||||
|
double get msPerFrame {
|
||||||
|
return _msPerFrame;
|
||||||
|
}
|
||||||
|
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future setFrameRate(int framerate) async {
|
Future setFrameRate(int framerate) async {
|
||||||
final interval = 1000.0 / framerate;
|
_msPerFrame = 1000.0 / framerate;
|
||||||
set_frame_interval_render_thread(_viewer!, interval);
|
set_frame_interval_render_thread(_viewer!, _msPerFrame);
|
||||||
}
|
}
|
||||||
|
|
||||||
final _onDispose = <Future Function()>[];
|
final _onDispose = <Future Function()>[];
|
||||||
|
|||||||
@@ -98,6 +98,11 @@ abstract class ThermionViewer {
|
|||||||
///
|
///
|
||||||
Future<View> getViewAt(int index);
|
Future<View> getViewAt(int index);
|
||||||
|
|
||||||
|
///
|
||||||
|
///
|
||||||
|
///
|
||||||
|
double get msPerFrame;
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Sets the framerate for continuous rendering when [setRendering] is enabled.
|
/// Sets the framerate for continuous rendering when [setRendering] is enabled.
|
||||||
///
|
///
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ class _ThermionTextureWidgetState extends State<ThermionTextureWidget> {
|
|||||||
if (!mounted) {
|
if (!mounted) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (widget.viewer.rendering && !_rendering && _resizing.isEmpty) {
|
if (widget.viewer.rendering && !_rendering && _resizing.isEmpty && (d.inMilliseconds - lastRender > widget.viewer.frameRateInMilliseconds)) {
|
||||||
_rendering = true;
|
_rendering = true;
|
||||||
if (this == _states.first && _texture != null) {
|
if (this == _states.first && _texture != null) {
|
||||||
await widget.viewer.requestFrame();
|
await widget.viewer.requestFrame();
|
||||||
|
|||||||
Reference in New Issue
Block a user