web: Add features for enabling webgl/canvas backend
This commit is contained in:
parent
e58cca3287
commit
936b314569
|
@ -8,8 +8,10 @@ edition = "2018"
|
|||
crate-type = ["cdylib", "rlib"]
|
||||
|
||||
[features]
|
||||
default = ["console_error_panic_hook", "console_log", "webgl"]
|
||||
lzma = ["ruffle_core/lzma"]
|
||||
default = ["console_error_panic_hook", "console_log"]
|
||||
canvas = ["ruffle_render_canvas"]
|
||||
webgl = ["ruffle_render_webgl"]
|
||||
|
||||
[dependencies]
|
||||
byteorder = "1.3.4"
|
||||
|
@ -19,9 +21,9 @@ fnv = "1.0.3"
|
|||
generational-arena = "0.2.7"
|
||||
js-sys = "0.3.25"
|
||||
log = "0.4"
|
||||
ruffle_render_canvas = { path = "../render/canvas" }
|
||||
ruffle_render_canvas = { path = "../render/canvas", optional = true }
|
||||
ruffle_web_common = { path = "common" }
|
||||
ruffle_render_webgl = { path = "../render/webgl" }
|
||||
ruffle_render_webgl = { path = "../render/webgl", optional = true }
|
||||
url = "2.1.1"
|
||||
wasm-bindgen = "0.2.57"
|
||||
wasm-bindgen-futures = "0.4.4"
|
||||
|
|
|
@ -6,9 +6,8 @@ mod navigator;
|
|||
use crate::{audio::WebAudioBackend, input::WebInputBackend, navigator::WebNavigatorBackend};
|
||||
use generational_arena::{Arena, Index};
|
||||
use js_sys::Uint8Array;
|
||||
use ruffle_core::backend::render::RenderBackend;
|
||||
use ruffle_core::PlayerEvent;
|
||||
use ruffle_render_canvas::WebCanvasRenderBackend;
|
||||
use ruffle_render_webgl::WebGlRenderBackend;
|
||||
use std::mem::drop;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{cell::RefCell, error::Error, num::NonZeroI32};
|
||||
|
@ -102,7 +101,7 @@ impl Ruffle {
|
|||
swf_data.copy_to(&mut data[..]);
|
||||
|
||||
let window = web_sys::window().ok_or_else(|| "Expected window")?;
|
||||
let renderer = Box::new(WebGlRenderBackend::new(&canvas)?);
|
||||
let renderer = create_renderer(&canvas)?;
|
||||
let audio = Box::new(WebAudioBackend::new()?);
|
||||
let navigator = Box::new(WebNavigatorBackend::new());
|
||||
let input = Box::new(WebInputBackend::new(&canvas));
|
||||
|
@ -469,3 +468,24 @@ impl Ruffle {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
fn create_renderer(canvas: &HtmlCanvasElement) -> Result<Box<dyn RenderBackend>, Box<dyn Error>> {
|
||||
#[cfg(not(any(feature = "canvas", feature = "webgl")))]
|
||||
std::compile_error!("You must enable one of the render backend features (e.g., webgl).");
|
||||
|
||||
#[cfg(feature = "webgl")]
|
||||
{
|
||||
if let Ok(renderer) = ruffle_render_webgl::WebGlRenderBackend::new(canvas) {
|
||||
return Ok(Box::new(renderer));
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "canvas")]
|
||||
{
|
||||
if let Ok(renderer) = ruffle_render_canvas::WebCanvasRenderBackend::new(canvas) {
|
||||
return Ok(Box::new(renderer));
|
||||
}
|
||||
}
|
||||
|
||||
Err("Unable to create renderer".into())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue