Skip to content

Commit

Permalink
dekstop: Support quit and fullscreen fscommands
Browse files Browse the repository at this point in the history
  • Loading branch information
Lord-McSweeney authored and Lord-McSweeney committed Nov 25, 2023
1 parent 66c6c17 commit d3b9d8a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
2 changes: 2 additions & 0 deletions desktop/src/backends.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
mod audio;
mod external_interface;
mod fscommand;
mod navigator;
mod storage;
mod ui;

pub use audio::CpalAudioBackend;
pub use external_interface::DesktopExternalInterfaceProvider;
pub use fscommand::DesktopFSCommandProvider;
pub use navigator::ExternalNavigatorBackend;
pub use storage::DiskStorageBackend;
pub use ui::DesktopUiBackend;
33 changes: 33 additions & 0 deletions desktop/src/backends/fscommand.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
use crate::custom_event::RuffleEvent;

use ruffle_core::external::FsCommandProvider;
use std::rc::Rc;
use winit::event_loop::EventLoopProxy;
use winit::window::{Fullscreen, Window};

pub struct DesktopFSCommandProvider {
pub event_loop: EventLoopProxy<RuffleEvent>,
pub window: Rc<Window>,
}

impl FsCommandProvider for DesktopFSCommandProvider {
fn on_fs_command(&self, command: &str, args: &str) -> bool {
match command {
"quit" => {
let _ = self.event_loop.send_event(RuffleEvent::ExitRequested);
}
"fullscreen" => {
match args {
"true" => self
.window
.set_fullscreen(Some(Fullscreen::Borderless(None))),
"false" => self.window.set_fullscreen(None),
_ => {}
};
}
_ => return false,
};

true
}
}
8 changes: 6 additions & 2 deletions desktop/src/player.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use crate::backends::{
CpalAudioBackend, DesktopExternalInterfaceProvider, DesktopUiBackend, DiskStorageBackend,
ExternalNavigatorBackend,
CpalAudioBackend, DesktopExternalInterfaceProvider, DesktopFSCommandProvider, DesktopUiBackend,
DiskStorageBackend, ExternalNavigatorBackend,
};
use crate::cli::Opt;
use crate::custom_event::RuffleEvent;
Expand Down Expand Up @@ -143,6 +143,10 @@ impl ActivePlayer {
.with_navigator(navigator)
.with_renderer(renderer)
.with_storage(DiskStorageBackend::new().expect("Couldn't create storage backend"))
.with_fs_commands(Box::new(DesktopFSCommandProvider {
event_loop: event_loop.clone(),
window: window.clone(),
}))
.with_ui(
DesktopUiBackend::new(window.clone(), opt.open_url_mode)
.expect("Couldn't create ui backend"),
Expand Down

0 comments on commit d3b9d8a

Please sign in to comment.