From 2137b9f1fdd2428a937e5cc326328a23d8fd8f31 Mon Sep 17 00:00:00 2001 From: David Wendt Date: Fri, 8 Nov 2019 15:07:01 -0500 Subject: [PATCH] Migrate `set_frame_rate` into the core `AudioBackend` trait --- core/src/backend/audio.rs | 7 +++++++ web/src/audio.rs | 8 ++++---- web/src/lib.rs | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/core/src/backend/audio.rs b/core/src/backend/audio.rs index 7b94b8dc6..c7eba6da6 100644 --- a/core/src/backend/audio.rs +++ b/core/src/backend/audio.rs @@ -76,6 +76,13 @@ pub trait AudioBackend { true } fn tick(&mut self) {} + + /// Inform the audio backend of the current stage frame rate. + /// + /// This is only necessary if your particular audio backend needs to know + /// what the stage frame rate is. Otherwise, you are free to avoid + /// implementing it. + fn set_frame_rate(&mut self, frame_rate: f64) {} } /// Rust does not auto-impl a Trait for Box or Deref diff --git a/web/src/audio.rs b/web/src/audio.rs index 23f95b070..02cc5d481 100644 --- a/web/src/audio.rs +++ b/web/src/audio.rs @@ -123,10 +123,6 @@ impl WebAudioBackend { }) } - pub fn set_frame_rate(&mut self, frame_rate: f64) { - self.frame_rate = frame_rate - } - fn start_sound_internal( &mut self, handle: SoundHandle, @@ -542,6 +538,10 @@ impl WebAudioBackend { } impl AudioBackend for WebAudioBackend { + fn set_frame_rate(&mut self, frame_rate: f64) { + self.frame_rate = frame_rate + } + fn register_sound(&mut self, sound: &swf::Sound) -> Result { // Slice off latency seek for MP3 data. let (skip_sample_frames, data) = if sound.format.compression == AudioCompression::Mp3 { diff --git a/web/src/lib.rs b/web/src/lib.rs index 12085ce40..e412f4fd3 100644 --- a/web/src/lib.rs +++ b/web/src/lib.rs @@ -11,7 +11,7 @@ use crate::{ }; use generational_arena::{Arena, Index}; use js_sys::Uint8Array; -use ruffle_core::{backend::render::RenderBackend, PlayerEvent}; +use ruffle_core::{backend::audio::AudioBackend, backend::render::RenderBackend, PlayerEvent}; use std::{cell::RefCell, error::Error, num::NonZeroI32}; use wasm_bindgen::{prelude::*, JsCast, JsValue}; use web_sys::{Element, EventTarget, HtmlCanvasElement, KeyboardEvent, PointerEvent};