eframe native: persist app state in background thread
Gives smoother frame rate
This commit is contained in:
parent
1dee439ab1
commit
558891c146
3 changed files with 12 additions and 5 deletions
|
@ -18,6 +18,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w
|
||||||
* Added `Link` and `ui.link` ([#1506](https://github.com/emilk/egui/pull/1506)).
|
* Added `Link` and `ui.link` ([#1506](https://github.com/emilk/egui/pull/1506)).
|
||||||
* Added triple-click support; triple-clicking a TextEdit field will select the whole paragraph ([#1512](https://github.com/emilk/egui/pull/1512)).
|
* Added triple-click support; triple-clicking a TextEdit field will select the whole paragraph ([#1512](https://github.com/emilk/egui/pull/1512)).
|
||||||
* Added `Plot::x_grid_spacer` and `Plot::y_grid_spacer` for custom grid spacing ([#1180](https://github.com/emilk/egui/pull/1180)).
|
* Added `Plot::x_grid_spacer` and `Plot::y_grid_spacer` for custom grid spacing ([#1180](https://github.com/emilk/egui/pull/1180)).
|
||||||
|
* Added `Ui::spinner()` shortcut method ([#1494](https://github.com/emilk/egui/pull/1494)).
|
||||||
* Added `CursorIcon`s for resizing columns, rows, and the eight cardinal directions.
|
* Added `CursorIcon`s for resizing columns, rows, and the eight cardinal directions.
|
||||||
|
|
||||||
### Changed 🔧
|
### Changed 🔧
|
||||||
|
|
|
@ -23,7 +23,7 @@ NOTE: [`egui_web`](../egui_web/CHANGELOG.md), [`egui-winit`](../egui-winit/CHANG
|
||||||
* Fixed potential scale bug when DPI scaling changes (e.g. when dragging a window between different displays) ([#1441](https://github.com/emilk/egui/pull/1441)).
|
* Fixed potential scale bug when DPI scaling changes (e.g. when dragging a window between different displays) ([#1441](https://github.com/emilk/egui/pull/1441)).
|
||||||
* MSRV (Minimum Supported Rust Version) is now `1.60.0` ([#1467](https://github.com/emilk/egui/pull/1467)).
|
* MSRV (Minimum Supported Rust Version) is now `1.60.0` ([#1467](https://github.com/emilk/egui/pull/1467)).
|
||||||
* Added new feature `puffin` to add [`puffin profiler`](https://github.com/EmbarkStudios/puffin) scopes ([#1483](https://github.com/emilk/egui/pull/1483)).
|
* Added new feature `puffin` to add [`puffin profiler`](https://github.com/EmbarkStudios/puffin) scopes ([#1483](https://github.com/emilk/egui/pull/1483)).
|
||||||
* Added `Ui::spinner()` shortcut method ([#1494](https://github.com/emilk/egui/pull/1494)).
|
* Moved app persistence to a background thread, allowing for smoother frame rates (on native).
|
||||||
|
|
||||||
|
|
||||||
## 0.17.0 - 2022-02-22
|
## 0.17.0 - 2022-02-22
|
||||||
|
|
|
@ -59,11 +59,17 @@ impl crate::Storage for FileStorage {
|
||||||
|
|
||||||
fn flush(&mut self) {
|
fn flush(&mut self) {
|
||||||
if self.dirty {
|
if self.dirty {
|
||||||
// eprintln!("Persisted to {}", self.path.display());
|
|
||||||
let file = std::fs::File::create(&self.ron_filepath).unwrap();
|
|
||||||
let config = Default::default();
|
|
||||||
ron::ser::to_writer_pretty(file, &self.kv, config).unwrap();
|
|
||||||
self.dirty = false;
|
self.dirty = false;
|
||||||
|
|
||||||
|
let file_path = self.ron_filepath.clone();
|
||||||
|
let kv = self.kv.clone();
|
||||||
|
|
||||||
|
std::thread::spawn(move || {
|
||||||
|
let file = std::fs::File::create(&file_path).unwrap();
|
||||||
|
let config = Default::default();
|
||||||
|
ron::ser::to_writer_pretty(file, &kv, config).unwrap();
|
||||||
|
tracing::trace!("Persisted to {:?}", file_path);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue