From 71a3dad7aed83045a0aee76004069016fff9909a Mon Sep 17 00:00:00 2001 From: Simon Heath Date: Mon, 10 Jul 2017 10:18:06 -0400 Subject: [PATCH] Made get/set_swap_interval take and return an enum instead of i32 --- src/sdl2/video.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/sdl2/video.rs b/src/sdl2/video.rs index 00a52818..497807d7 100644 --- a/src/sdl2/video.rs +++ b/src/sdl2/video.rs @@ -532,6 +532,15 @@ impl WindowContext { } } +/// Represents a setting for vsync/swap interval. +#[derive(Copy, Clone, PartialEq, Eq, Hash, Debug)] +#[repr(i32)] +pub enum SwapInterval { + Immediate = 0, + VSync = 1, + LateSwapTearing = -1, +} + /// Represents the "shell" of a `Window`. /// /// You can set get and set many of the SDL_Window properties (i.e., border, size, `PixelFormat`, etc) @@ -771,12 +780,16 @@ impl VideoSubsystem { } } - pub fn gl_set_swap_interval(&self, interval: i32) -> bool { + pub fn gl_set_swap_interval(&self, interval: SwapInterval) -> bool { unsafe { ll::SDL_GL_SetSwapInterval(interval as c_int) == 0 } } - pub fn gl_get_swap_interval(&self) -> i32 { - unsafe { ll::SDL_GL_GetSwapInterval() as i32 } + pub fn gl_get_swap_interval(&self) -> SwapInterval { + unsafe { + let interval = ll::SDL_GL_GetSwapInterval() as i32; + assert!(interval == -1 || interval == 0 || interval == 1); + mem::transmute(interval) + } } }