From 8efff459c4055960eedc385e39cd14fd51b1305c Mon Sep 17 00:00:00 2001 From: lifning <> Date: Fri, 10 Dec 2021 00:53:07 -0800 Subject: [PATCH] integer scaling --- ferretro_components/src/provided/sdl2/canvas.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ferretro_components/src/provided/sdl2/canvas.rs b/ferretro_components/src/provided/sdl2/canvas.rs index 0309875..bdbf16c 100644 --- a/ferretro_components/src/provided/sdl2/canvas.rs +++ b/ferretro_components/src/provided/sdl2/canvas.rs @@ -9,9 +9,19 @@ use sdl2::render::WindowCanvas; pub(crate) fn paint_frame_on_canvas(frame: &VideoFrame, canvas: &mut WindowCanvas) -> bool { if let Some((pixel_data, pitch)) = frame.data_pitch_as_bytes() { + let (cw, ch) = canvas.output_size().unwrap(); let (width, height) = frame.dimensions(); let pixel_format = frame.pixel_format().map(sdl2_pixfmt); + let should_intscale = if cw >= width && ch >= height { + sdl2::sys::SDL_bool::SDL_TRUE + } else { + sdl2::sys::SDL_bool::SDL_FALSE + }; + unsafe { + sdl2::sys::SDL_RenderSetIntegerScale(canvas.raw(), should_intscale); + } + if let Ok(mut tex) = canvas .texture_creator() .create_texture_static(pixel_format, width, height)