Use sync file dialog for screenshots

This commit is contained in:
Simon Gellis 2025-07-14 19:33:36 -04:00
parent 422fe23cf2
commit 3ac13d0cf2
1 changed files with 5 additions and 8 deletions

View File

@ -311,12 +311,11 @@ impl GameWindow {
self.client self.client
.send_command(EmulatorCommand::Screenshot(self.sim_id, tx)); .send_command(EmulatorCommand::Screenshot(self.sim_id, tx));
let bytes = rx.await.context("Could not take screenshot")?; let bytes = rx.await.context("Could not take screenshot")?;
let file = rfd::AsyncFileDialog::new() let file = rfd::FileDialog::new()
.add_filter("PNG images", &["png"]) .add_filter("PNG images", &["png"])
.set_file_name("screenshot.png") .set_file_name("screenshot.png")
.save_file() .save_file();
.await; let Some(path) = file else {
let Some(file) = file else {
return Ok(None); return Ok(None);
}; };
if bytes.len() != 384 * 224 * 2 { if bytes.len() != 384 * 224 * 2 {
@ -328,10 +327,8 @@ impl GameWindow {
let y = (index / 2) / 384; let y = (index / 2) / 384;
screencap.put_pixel(x as u32, y as u32, image::Luma([pixel])); screencap.put_pixel(x as u32, y as u32, image::Luma([pixel]));
} }
screencap screencap.save(&path).context("Could not save screenshot")?;
.save(&file.path()) Ok(Some(path.display().to_string()))
.context("Could not save screenshot")?;
Ok(Some(file.path().display().to_string()))
} }
fn show_options_menu(&mut self, ctx: &Context, ui: &mut Ui) { fn show_options_menu(&mut self, ctx: &Context, ui: &mut Ui) {