hadronized / luminance-rs

Type-safe, type-level and stateless Rust graphics framework
https://phaazon.github.io/learn-luminance/
Other
1.09k stars 59 forks source link

luminance-glutin doesn't resize correctly under Wayland #581

Open iwikal opened 2 years ago

iwikal commented 2 years ago

fn main() -> anyhow::Result<()> { let (mut surface, event_loop) = GlutinSurface::new_gl33_frombuilders( |, window_builder| { window_builder .with_resizable(true) .with_inner_size(glutin::dpi::LogicalSize::new(400, 400u16)) }, |, context_builder| context_builder, )?;

surface.ctx.window().set_visible(true);

let mut on_event = move |event: Event<()>,
                         control_flow: &mut ControlFlow|
      -> anyhow::Result<()> {
    match event {
        Event::NewEvents(..) => {
            surface.ctx.window().request_redraw();
        }
        Event::WindowEvent { event, .. } => match event {
            WindowEvent::Resized(size) => {
                dbg!(size);
                surface
                    .ctx
                    .window()
                    .set_inner_size(size);
            }
            WindowEvent::CloseRequested => {
                *control_flow = ControlFlow::Exit;
            }
            _ => {}
        },
        Event::RedrawRequested(..) => {
            draw(&mut surface).context("Failed to render")?;

            surface.swap_buffers();
        }
        _ => {}
    }

    Ok(())
};

event_loop.run(move |event, _, control_flow| {
    match on_event(event, control_flow).context("Failed to process event") {
        Ok(_) => {}
        Err(e) => {
            eprintln!("Error: {:?}", e);

            std::process::exit(1);
        }
    }
});

}

fn draw(surface: &mut GlutinSurface) -> anyhow::Result<()> { let back_buffer = surface.back_buffer()?; let mut pipeline_gate = surface.new_pipeline_gate();

use luminance_front::pipeline::PipelineState;

pipeline_gate
    .pipeline(
        &back_buffer,
        &PipelineState::new(),
        |_, _| anyhow::Result::<()>::Ok(()),
    )
    .into_result()?;

Ok(())

}

Dependencies:
```toml
anyhow = "1.0.31"
glutin = "0.28"
luminance = "0.46"
luminance-front = "0.6"
luminance-derive = "0.9"
luminance-gl = "0.19"
luminance-glutin = "0.14"