Description
Bear with me, I'm a total noob to Rust and ggez ^^
Describe the bug
When running this code and moving my mouse around, the screen stays black and I get this error (Running with RUST_BACKTRACE = 1):
Hello ggez! dt = 402ms
thread 'main' panicked at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.16.3\src\backend\direct.rs:734:18:
Error in Surface::configure: Validation ErrorCaused by:
SurfaceOutput
must be dropped before a newSurface
is madestack backtrace:
0: std::panicking::begin_panic_handler
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library\std\src\panicking.rs:597
1: core::panicking::panic_fmt
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962/library\core\src\panicking.rs:72
2: wgpu::backend::direct::Context::handle_error_fatal<enum2$<wgpu_core::present::ConfigureSurfaceError> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.16.3\src\backend\direct.rs:308
3: wgpu::backend::direct::impl$7::surface_configure
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.16.3\src\backend\direct.rs:734
4: wgpu::context::impl$5::surface_configurewgpu::backend::direct::Context
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.16.3\src\context.rs:2056
5: wgpu::Surface::configure
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.16.3\src\lib.rs:4150
6: ggez::graphics::context::GraphicsContext::set_window_mode
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\ggez-0.9.3\src\graphics\context.rs:853
7: ggez::graphics::context::GraphicsContext::set_mode
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\ggez-0.9.3\src\graphics\context.rs:615
8: ggez::graphics::context::GraphicsContext::set_fullscreen
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\ggez-0.9.3\src\graphics\context.rs:595
9: ggezgametest::impl$0::draw
at .\src\main.rs:46
10: ggez::event::run::closure$0<ggezgametest::State,enum2$ggez::error::GameError >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\ggez-0.9.3\src\event.rs:549
11: winit::platform_impl::platform::event_loop::impl$3::run_return::closure$0<tuple$<>,ggez::event::run::closure_env$0<ggezgametest::State,enum2$ggez::error::GameError > >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop.rs:260
12: alloc::boxed::impl$48::call_mut<tuple$<enum2$<winit::event::Event<tuple$<> > >,ref_mut$<enum2$winit::event_loop::ControlFlow > >,dyn$<core::ops::function::FnMut<tuple$<enum2$<winit::event::Event<tuple$<> > >,ref_mut$<enum2$<winit::event_loop::ControlFlo
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\alloc\src\boxed.rs:2014
13: winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure$0<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop\runner.rs:250
14: core::panic::unwind_safe::impl$23::call_once<tuple$<>,winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\panic\unwind_safe.rs:271
15: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >,tuple$<> >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:504
16: hashbrown::raw::alloc::inner::do_allocalloc::alloc::Global
17: std::panicking::try<tuple$<>,core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > > >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:468
18: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >,tuple$<> >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panic.rs:142
19: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::catch_unwind<tuple$<>,tuple$<>,winit::platform_impl::platform::event_loop::runner::impl$3::call_event_handler::closure_env$0<tuple$<> > >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop\runner.rs:157
20: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::call_event_handler<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop\runner.rs:242
21: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::move_state_to<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop\runner.rs:344
22: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::main_events_cleared<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop\runner.rs:230
23: winit::platform_impl::platform::event_loop::flush_paint_messages<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop.rs:805
24: winit::platform_impl::platform::event_loop::public_window_callback_inner::closure$0<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop.rs:1124
25: core::ops::function::FnOnce::call_once<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$0<tuple$<> >,tuple$<> >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\ops\function.rs:250
26: core::panic::unwind_safe::impl$23::call_once<isize,winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$0<tuple$<> > >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\panic\unwind_safe.rs:271
27: std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$0<tuple$<> > >,isize>
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:504
28: ggez::graphics::image::impl$4::clone
29: std::panicking::try<isize,core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$0<tuple$<> > > >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panicking.rs:468
30: std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$0<tuple$<> > >,isize>
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\std\src\panic.rs:142
31: winit::platform_impl::platform::event_loop::runner::EventLoopRunner<tuple$<> >::catch_unwind<tuple$<>,isize,winit::platform_impl::platform::event_loop::public_window_callback_inner::closure_env$0<tuple$<> > >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop\runner.rs:157
32: winit::platform_impl::platform::event_loop::public_window_callback_inner<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop.rs:2320
33: winit::platform_impl::platform::event_loop::public_window_callback<tuple$<> >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop.rs:994
34: DispatchMessageW
35: CallWindowProcW
36: wglSwapBuffers
37: DispatchMessageW
38: DispatchMessageW
39: GetClassLongW
40: KiUserCallbackDispatcher
41: NtUserDispatchMessage
42: DispatchMessageW
43: winit::platform_impl::platform::event_loop::EventLoop<tuple$<> >::run_return<tuple$<>,ggez::event::run::closure_env$0<ggezgametest::State,enum2$ggez::error::GameError > >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\platform_impl\windows\event_loop.rs:282
44: winit::platform_impl::platform::event_loop::EventLoop<tuple$<> >::run<tuple$<>,ggez::event::run::closure_env$0<ggezgametest::State,enum2$ggez::error::GameError > >
rs:245
45: winit::event_loop::EventLoop<tuple$<> >::run<tuple$<>,ggez::event::run::closure_env$0<ggezgametest::State,enum2$ggez::error::GameError > >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\winit-0.28.7\src\event_loop.rs:305
46: ggez::event::run<ggezgametest::State,enum2$ggez::error::GameError >
at C:\Users\morit.cargo\registry\src\index.crates.io-6f17d22bba15001f\ggez-0.9.3\src\event.rs:286
47: ggezgametest::main
at .\src\main.rs:29
48: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
at /rustc/79e9716c980570bfd1f666e3b16ac583f0168962\library\core\src\ops\function.rs:250
note: Some details are omitted, run withRUST_BACKTRACE=full
for a verbose backtrace.
error: process didn't exit successfully:target\debug\ggezgametest.exe
(exit code: 101)
To Reproduce
use std::{env, time::Duration};
use ggez::{conf::{WindowMode, WindowSetup}, event::EventHandler, graphics::{Canvas, Color}, mint::Point2, *};
fn main() {
env::set_var("RUST_BACKTRACE", "1");
let state = State {
dt: Duration::new(0, 0),
mouse_pos: Point2 {x: 0_f32, y: 0_f32}
};
let config = conf::Conf {
window_mode: WindowMode {
fullscreen_type: conf::FullscreenType::Windowed,
resizable: true,
..Default::default()
},
window_setup: WindowSetup {
title: "GGEZ GAME TEST AHWBEAHW EbAW EBBY A E".to_string(),
..Default::default()
},
..Default::default()
};
let (context, event_loop) = ContextBuilder::new("ggezgametest", "earomc")
.default_conf(config)
.build()
.unwrap();
event::run(context, event_loop, state);
}
struct State {
dt: Duration,
mouse_pos: Point2<f32>
}
impl EventHandler<GameError> for State {
fn update(&mut self, ctx: &mut Context) -> GameResult {
self.dt = ctx.time.delta();
self.mouse_pos = ctx.mouse.position();
Ok(())
}
fn draw(&mut self, ctx: &mut Context) -> GameResult {
println!("Hello ggez! dt = {}ms", self.dt.as_millis());
ctx.gfx.set_fu
523B
llscreen(conf::FullscreenType::True).unwrap();
let canvas = Canvas::from_frame(ctx, Color::from_rgb(60, self.mouse_pos.x as u8, self.mouse_pos.y as u8));
canvas.finish(ctx)
}
}
Do "cargo run" and move your mouse around.
Expected behavior
It's supposed to run in fullscreen and update the color of the screen as the mouse cursor position changes.
Hardware and Software:
- ggez version: 0.9.3
- OS: Windows 11
- Graphics card: GeForce GTX 1060 6GB
- Graphics card drivers: Nvidia 31.0.15.1748