zest prefers this over await

This commit is contained in:
Marcel Märtens 2021-08-11 01:23:48 +02:00
parent 32e58c4b17
commit 889a8d11f5
3 changed files with 23 additions and 22 deletions

View File

@ -232,7 +232,7 @@ fn main() {
// Create window // Create window
use veloren_voxygen::{error::Error, render::RenderError}; use veloren_voxygen::{error::Error, render::RenderError};
let (mut window, event_loop) = match tokio_runtime.block_on(Window::new(&settings)) { let (mut window, event_loop) = match Window::new(&settings, &tokio_runtime) {
Ok(ok) => ok, Ok(ok) => ok,
// Custom panic message when a graphics backend could not be found // Custom panic message when a graphics backend could not be found
Err(Error::RenderError(RenderError::CouldNotFindAdapter)) => { Err(Error::RenderError(RenderError::CouldNotFindAdapter)) => {

View File

@ -183,9 +183,10 @@ pub struct Renderer {
impl Renderer { impl Renderer {
/// Create a new `Renderer` from a variety of backend-specific components /// Create a new `Renderer` from a variety of backend-specific components
/// and the window targets. /// and the window targets.
pub async fn new( pub fn new(
window: &winit::window::Window, window: &winit::window::Window,
mode: RenderMode, mode: RenderMode,
runtime: &tokio::runtime::Runtime,
) -> Result<Self, RenderError> { ) -> Result<Self, RenderError> {
let (pipeline_modes, mut other_modes) = mode.split(); let (pipeline_modes, mut other_modes) = mode.split();
// Enable seamless cubemaps globally, where available--they are essentially a // Enable seamless cubemaps globally, where available--they are essentially a
@ -223,12 +224,11 @@ impl Renderer {
#[allow(unsafe_code)] #[allow(unsafe_code)]
let surface = unsafe { instance.create_surface(window) }; let surface = unsafe { instance.create_surface(window) };
let adapter = instance let adapter = runtime
.request_adapter(&wgpu::RequestAdapterOptionsBase { .block_on(instance.request_adapter(&wgpu::RequestAdapterOptionsBase {
power_preference: wgpu::PowerPreference::HighPerformance, power_preference: wgpu::PowerPreference::HighPerformance,
compatible_surface: Some(&surface), compatible_surface: Some(&surface),
}) }))
.await
.ok_or(RenderError::CouldNotFindAdapter)?; .ok_or(RenderError::CouldNotFindAdapter)?;
let info = adapter.get_info(); let info = adapter.get_info();
@ -271,8 +271,7 @@ impl Renderer {
path path
}); });
let (device, queue) = adapter let (device, queue) = runtime.block_on(adapter.request_device(
.request_device(
&wgpu::DeviceDescriptor { &wgpu::DeviceDescriptor {
// TODO // TODO
label: None, label: None,
@ -283,8 +282,7 @@ impl Renderer {
limits, limits,
}, },
trace_path.as_deref(), trace_path.as_deref(),
) ))?;
.await?;
// Set error handler for wgpu errors // Set error handler for wgpu errors
// This is better for use than their default because it includes the error in // This is better for use than their default because it includes the error in

View File

@ -398,7 +398,10 @@ pub struct Window {
} }
impl Window { impl Window {
pub async fn new(settings: &Settings) -> Result<(Window, EventLoop), Error> { pub fn new(
settings: &Settings,
runtime: &tokio::runtime::Runtime,
) -> Result<(Window, EventLoop), Error> {
let event_loop = EventLoop::new(); let event_loop = EventLoop::new();
let size = settings.graphics.window_size; let size = settings.graphics.window_size;
@ -418,7 +421,7 @@ impl Window {
let window = win_builder.build(&event_loop).unwrap(); let window = win_builder.build(&event_loop).unwrap();
let renderer = Renderer::new(&window, settings.graphics.render_mode.clone()).await?; let renderer = Renderer::new(&window, settings.graphics.render_mode.clone(), runtime)?;
let keypress_map = HashMap::new(); let keypress_map = HashMap::new();