mirror of
https://github.com/encounter/rust-sdl2.git
synced 2026-07-10 21:18:41 -07:00
Make all examples work and all tests pass after the error/rect changes
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ name = "sdl2"
|
||||
description = "SDL2 bindings for Rust"
|
||||
repository = "https://github.com/AngryLawyer/rust-sdl2"
|
||||
documentation = "http://angrylawyer.github.io/rust-sdl2/sdl2/"
|
||||
version = "0.14.0"
|
||||
version = "0.15.0"
|
||||
license = "MIT"
|
||||
authors = [ "Tony Aldridge <tony@angry-lawyer.com>" ]
|
||||
keywords = ["SDL", "windowing", "graphics"]
|
||||
|
||||
@@ -98,7 +98,7 @@ download through Crates.io:
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
sdl2 = "0.14"
|
||||
sdl2 = "0.15"
|
||||
```
|
||||
|
||||
Alternatively, pull it from GitHub
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
extern crate sdl2;
|
||||
|
||||
use sdl2::audio::{AudioCallback, AudioSpecDesired};
|
||||
use std::time::Duration;
|
||||
|
||||
struct SquareWave {
|
||||
phase_inc: f32,
|
||||
@@ -49,7 +50,7 @@ fn main() {
|
||||
device.resume();
|
||||
|
||||
// Play for 2 seconds
|
||||
std::thread::sleep_ms(2000);
|
||||
std::thread::sleep(Duration::from_millis(2000));
|
||||
|
||||
// Device is automatically closed when dropped
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
extern crate sdl2;
|
||||
|
||||
use sdl2::audio::{AudioCallback, AudioSpecDesired,AudioSpecWAV,AudioCVT};
|
||||
use std::time::Duration;
|
||||
|
||||
// NOTE: You probably want to investigate SDL_Mixer
|
||||
// (https://github.com/andelf/rust-sdl2_mixer) for real use cases.
|
||||
@@ -57,7 +58,7 @@ fn main() {
|
||||
device.resume();
|
||||
|
||||
// Play for a second
|
||||
std::thread::sleep_ms(1000);
|
||||
std::thread::sleep(Duration::from_millis(1000));
|
||||
|
||||
// Device is automatically closed when dropped
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ extern crate sdl2;
|
||||
extern crate rand;
|
||||
|
||||
use sdl2::audio::{AudioCallback, AudioSpecDesired};
|
||||
use std::time::Duration;
|
||||
|
||||
struct MyCallback {
|
||||
volume: f32
|
||||
@@ -42,7 +43,7 @@ fn main() {
|
||||
device.resume();
|
||||
|
||||
// Play for 1 second
|
||||
std::thread::sleep_ms(1000);
|
||||
std::thread::sleep(Duration::from_millis(1000));
|
||||
|
||||
{
|
||||
// Acquire a lock. This lets us read and modify callback data.
|
||||
@@ -52,7 +53,7 @@ fn main() {
|
||||
}
|
||||
|
||||
// Play for another second
|
||||
std::thread::sleep_ms(1000);
|
||||
std::thread::sleep(Duration::from_millis(1000));
|
||||
|
||||
// Device is automatically closed when dropped
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ extern crate sdl2;
|
||||
use sdl2::event::Event;
|
||||
use sdl2::keyboard::Keycode;
|
||||
use std::collections::HashSet;
|
||||
use std::time::Duration;
|
||||
|
||||
pub fn main() {
|
||||
let sdl_context = sdl2::init().unwrap();
|
||||
@@ -38,6 +39,6 @@ pub fn main() {
|
||||
|
||||
prev_keys = keys;
|
||||
|
||||
std::thread::sleep_ms(100);
|
||||
std::thread::sleep(Duration::from_millis(100));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ pub fn main() {
|
||||
|
||||
let mut renderer = window.renderer().build().unwrap();
|
||||
|
||||
let mut texture = renderer.create_texture_streaming(PixelFormatEnum::RGB24, (256, 256)).unwrap();
|
||||
let mut texture = renderer.create_texture_streaming(
|
||||
PixelFormatEnum::RGB24, 256, 256).unwrap();
|
||||
// Create a red-green gradient
|
||||
texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
|
||||
for y in 0..256 {
|
||||
@@ -31,8 +32,9 @@ pub fn main() {
|
||||
}).unwrap();
|
||||
|
||||
renderer.clear();
|
||||
renderer.copy(&texture, None, Some(Rect::new(100, 100, 256, 256).unwrap()));
|
||||
renderer.copy_ex(&texture, None, Some(Rect::new(450, 100, 256, 256).unwrap()), 30.0, None, (false, false));
|
||||
renderer.copy(&texture, None, Some(Rect::new(100, 100, 256, 256)));
|
||||
renderer.copy_ex(&texture, None,
|
||||
Some(Rect::new(450, 100, 256, 256)), 30.0, None, false, false).unwrap();
|
||||
renderer.present();
|
||||
|
||||
let mut event_pump = sdl_context.event_pump().unwrap();
|
||||
@@ -40,7 +42,8 @@ pub fn main() {
|
||||
'running: loop {
|
||||
for event in event_pump.poll_iter() {
|
||||
match event {
|
||||
Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
|
||||
Event::Quit {..}
|
||||
| Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
|
||||
break 'running
|
||||
},
|
||||
_ => {}
|
||||
|
||||
@@ -17,7 +17,8 @@ pub fn main() {
|
||||
|
||||
let mut renderer = window.renderer().build().unwrap();
|
||||
|
||||
let mut texture = renderer.create_texture_streaming(PixelFormatEnum::IYUV, (256, 256)).unwrap();
|
||||
let mut texture = renderer.create_texture_streaming(
|
||||
PixelFormatEnum::IYUV, 256, 256).unwrap();
|
||||
// Create a U-V gradient
|
||||
texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
|
||||
// `pitch` is the width of the Y component
|
||||
@@ -48,7 +49,7 @@ pub fn main() {
|
||||
}).unwrap();
|
||||
|
||||
renderer.clear();
|
||||
renderer.copy(&texture, None, Some(Rect::new(100, 100, 256, 256).unwrap()));
|
||||
renderer.copy(&texture, None, Some(Rect::new(100, 100, 256, 256)));
|
||||
renderer.present();
|
||||
|
||||
let mut event_pump = sdl_context.event_pump().unwrap();
|
||||
|
||||
@@ -22,7 +22,8 @@ pub fn main() {
|
||||
'running: loop {
|
||||
for event in event_pump.poll_iter() {
|
||||
match event {
|
||||
Event::Quit {..} | Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
|
||||
Event::Quit {..}
|
||||
| Event::KeyDown { keycode: Some(Keycode::Escape), .. } => {
|
||||
break 'running
|
||||
},
|
||||
_ => {}
|
||||
@@ -36,7 +37,7 @@ pub fn main() {
|
||||
let position = window.position();
|
||||
let size = window.size();
|
||||
let title = format!("Window - pos({}x{}), size({}x{}): {}", position.0, position.1, size.0, size.1, tick);
|
||||
window.set_title(&title);
|
||||
window.set_title(&title).unwrap();
|
||||
|
||||
tick += 1;
|
||||
}
|
||||
|
||||
+2
-1
@@ -3,6 +3,7 @@
|
||||
//! # Example
|
||||
//! ```no_run
|
||||
//! use sdl2::audio::{AudioCallback, AudioSpecDesired};
|
||||
//! use std::time::Duration;
|
||||
//!
|
||||
//! struct SquareWave {
|
||||
//! phase_inc: f32,
|
||||
@@ -47,7 +48,7 @@
|
||||
//! device.resume();
|
||||
//!
|
||||
//! // Play for 2 seconds
|
||||
//! std::thread::sleep_ms(2000);
|
||||
//! std::thread::sleep(Duration::from_millis(2000));
|
||||
//! ```
|
||||
use std::ffi::{CStr, CString};
|
||||
use num::FromPrimitive;
|
||||
|
||||
+1
-1
@@ -159,7 +159,7 @@ impl ::EventSubsystem {
|
||||
///
|
||||
/// Returns an error, if no more user events can be created.
|
||||
pub unsafe fn register_events(&self, nr: u32) -> Result<Vec<u32>, String> {
|
||||
let result = unsafe { ll::SDL_RegisterEvents(nr as ::libc::c_int) };
|
||||
let result = ll::SDL_RegisterEvents(nr as ::libc::c_int);
|
||||
const ERR_NR:u32 = ::std::u32::MAX - 1;
|
||||
|
||||
match result {
|
||||
|
||||
+2
-2
@@ -870,12 +870,12 @@ impl<'a> Renderer<'a> {
|
||||
/// fn draw_to_texture(r: &mut Renderer) -> Texture {
|
||||
/// r.render_target()
|
||||
/// .expect("This platform doesn't support render targets")
|
||||
/// .create_and_set(PixelFormatEnum::RGBA8888, (512, 512));
|
||||
/// .create_and_set(PixelFormatEnum::RGBA8888, 512, 512);
|
||||
///
|
||||
/// // Start drawing
|
||||
/// r.clear();
|
||||
/// r.set_draw_color(Color::RGB(255, 0, 0));
|
||||
/// r.fill_rect(Rect::new(100, 100, 256, 256).unwrap());
|
||||
/// r.fill_rect(Rect::new(100, 100, 256, 256));
|
||||
///
|
||||
/// let texture: Option<Texture> = r.render_target().unwrap().reset().unwrap();
|
||||
/// texture.unwrap()
|
||||
|
||||
+10
-4
@@ -89,6 +89,8 @@ extern "C" fn c_timer_callback(_interval: u32, param: *mut c_void) -> uint32_t {
|
||||
#[cfg(test)]
|
||||
fn test_timer_runs_multiple_times() {
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Duration;
|
||||
|
||||
let sdl_context = ::sdl::init().unwrap();
|
||||
let timer_subsystem = sdl_context.timer().unwrap();
|
||||
|
||||
@@ -106,7 +108,7 @@ fn test_timer_runs_multiple_times() {
|
||||
} else { 0 }
|
||||
}));
|
||||
|
||||
::std::thread::sleep_ms(250); // tick the timer at least 10 times w/ 200ms of "buffer"
|
||||
::std::thread::sleep(Duration::from_millis(250)); // tick the timer at least 10 times w/ 200ms of "buffer"
|
||||
let num = local_num.lock().unwrap(); // read the number back
|
||||
assert_eq!(*num, 9); // it should have incremented at least 10 times...
|
||||
}
|
||||
@@ -114,6 +116,8 @@ fn test_timer_runs_multiple_times() {
|
||||
#[cfg(test)]
|
||||
fn test_timer_runs_at_least_once() {
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Duration;
|
||||
|
||||
let sdl_context = ::sdl::init().unwrap();
|
||||
let timer_subsystem = sdl_context.timer().unwrap();
|
||||
|
||||
@@ -125,14 +129,16 @@ fn test_timer_runs_at_least_once() {
|
||||
*flag = true; 0
|
||||
}));
|
||||
|
||||
::std::thread::sleep_ms(50);
|
||||
::std::thread::sleep(Duration::from_millis(50));
|
||||
let flag = local_flag.lock().unwrap();
|
||||
assert_eq!(*flag, true);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
fn test_timer_can_be_recreated() {
|
||||
use std::time::Duration;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
let sdl_context = ::sdl::init().unwrap();
|
||||
let timer_subsystem = sdl_context.timer().unwrap();
|
||||
|
||||
@@ -147,12 +153,12 @@ fn test_timer_can_be_recreated() {
|
||||
}));
|
||||
|
||||
// reclaim closure after timer runs
|
||||
::std::thread::sleep_ms(50);
|
||||
::std::thread::sleep(Duration::from_millis(50));
|
||||
let closure = timer_1.into_inner();
|
||||
|
||||
// create a second timer and increment again
|
||||
let _timer_2 = timer_subsystem.add_timer(20, closure);
|
||||
::std::thread::sleep_ms(50);
|
||||
::std::thread::sleep(Duration::from_millis(50));
|
||||
|
||||
// check that timer was incremented twice
|
||||
let num = local_num.lock().unwrap();
|
||||
|
||||
+13
-10
@@ -48,32 +48,35 @@ fn test2(ev: &sdl2::EventSubsystem, ep: &mut sdl2::EventPump) {
|
||||
}
|
||||
}
|
||||
|
||||
struct SomeEventType_test3 {
|
||||
#[allow(unused)]
|
||||
struct SomeEventTypeTest3 {
|
||||
a: u32
|
||||
}
|
||||
struct SomeOtherEventType_test3 {
|
||||
|
||||
#[allow(unused)]
|
||||
struct SomeOtherEventTypeTest3 {
|
||||
b: u32
|
||||
}
|
||||
|
||||
fn test3(ev: &sdl2::EventSubsystem) {
|
||||
ev.register_custom_event::<SomeEventType_test3>().unwrap();
|
||||
ev.register_custom_event::<SomeOtherEventType_test3>().unwrap();
|
||||
ev.register_custom_event::<SomeEventTypeTest3>().unwrap();
|
||||
ev.register_custom_event::<SomeOtherEventTypeTest3>().unwrap();
|
||||
|
||||
assert!(ev.register_custom_event::<SomeEventType_test3>().is_err());
|
||||
assert!(ev.register_custom_event::<SomeEventTypeTest3>().is_err());
|
||||
}
|
||||
|
||||
struct SomeEventType_test4 {
|
||||
struct SomeEventTypeTest4 {
|
||||
a: u32
|
||||
}
|
||||
|
||||
fn test4(ev: &sdl2::EventSubsystem, ep: &mut sdl2::EventPump) {
|
||||
ev.register_custom_event::<SomeEventType_test4>().unwrap();
|
||||
let event = SomeEventType_test4 { a: 42 };
|
||||
ev.push_custom_event(event);
|
||||
ev.register_custom_event::<SomeEventTypeTest4>().unwrap();
|
||||
let event = SomeEventTypeTest4 { a: 42 };
|
||||
ev.push_custom_event(event).unwrap();
|
||||
|
||||
let received = ep.poll_event().unwrap();
|
||||
if received.is_user_event() {
|
||||
let e2 = received.as_user_event_type::<SomeEventType_test4>().unwrap();
|
||||
let e2 = received.as_user_event_type::<SomeEventTypeTest4>().unwrap();
|
||||
assert_eq!(e2.a, 42);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user