From 12bd38b338f618d8d61eb71d26d49a7a2b23f629 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Fri, 3 Feb 2023 15:09:08 +0100 Subject: [PATCH] core: Changed Player::set_quality to take in a StageQuality directly --- Cargo.lock | 1 + core/src/player.rs | 7 ++----- web/Cargo.toml | 1 + web/src/lib.rs | 15 ++++++++++++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e6a27907..330394ae0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3695,6 +3695,7 @@ dependencies = [ "getrandom", "js-sys", "ruffle_core", + "ruffle_render", "ruffle_render_canvas", "ruffle_render_webgl", "ruffle_render_wgpu", diff --git a/core/src/player.rs b/core/src/player.rs index 0b64d4732..378f30b49 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -776,12 +776,9 @@ impl Player { }) } - pub fn set_quality(&mut self, quality: &str) { + pub fn set_quality(&mut self, quality: StageQuality) { self.mutate_with_update_context(|context| { - let stage = context.stage; - if let Ok(quality) = StageQuality::from_str(quality) { - stage.set_quality(context.gc_context, quality); - } + context.stage.set_quality(context.gc_context, quality); }) } diff --git a/web/Cargo.toml b/web/Cargo.toml index fee5b0065..c8cefceed 100644 --- a/web/Cargo.toml +++ b/web/Cargo.toml @@ -34,6 +34,7 @@ tracing-subscriber = { version = "0.3.16", default-features = false, features = tracing-wasm = "0.2.1" ruffle_render_canvas = { path = "../render/canvas", optional = true } ruffle_web_common = { path = "common" } +ruffle_render = { path = "../render" } ruffle_render_webgl = { path = "../render/webgl", optional = true } ruffle_render_wgpu = { path = "../render/wgpu", optional = true } ruffle_video_software = { path = "../video/software" } diff --git a/web/src/lib.rs b/web/src/lib.rs index 2bfc70b2c..2f667a0e2 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -17,6 +17,7 @@ use ruffle_core::external::{ }; use ruffle_core::tag_utils::SwfMovie; use ruffle_core::{Color, Player, PlayerBuilder, PlayerEvent, StaticCallstack, ViewportDimensions}; +use ruffle_render::quality::StageQuality; use ruffle_video_software::backend::SoftwareVideoBackend; use ruffle_web_common::JsResult; use serde::{Deserialize, Serialize}; @@ -540,6 +541,13 @@ impl Ruffle { .with_player_version(config.player_version) .build(); + let default_quality = if ruffle_web_common::is_mobile_or_tablet() { + tracing::info!("Running on a mobile device; defaulting to low quality"); + StageQuality::Low + } else { + StageQuality::High + }; + let mut callstack = None; if let Ok(mut core) = core.try_lock() { // Set config parameters. @@ -548,7 +556,12 @@ impl Ruffle { } core.set_show_menu(config.show_menu); core.set_stage_align(config.salign.as_deref().unwrap_or("")); - core.set_quality(config.quality.as_deref().unwrap_or("high")); + core.set_quality( + config + .quality + .and_then(|q| StageQuality::from_str(&q).ok()) + .unwrap_or(default_quality), + ); core.set_scale_mode(config.scale.as_deref().unwrap_or("showAll")); core.set_window_mode(config.wmode.as_deref().unwrap_or("window"));