From 1e35dea6822445d0e27171a5ef0c3417b501d935 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 07:25:09 +0100 Subject: [PATCH 01/12] Added Audio Queue functions to sdl2-sys --- sdl2-sys/src/audio.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdl2-sys/src/audio.rs b/sdl2-sys/src/audio.rs index 74068ad3..b8545fe5 100644 --- a/sdl2-sys/src/audio.rs +++ b/sdl2-sys/src/audio.rs @@ -96,6 +96,9 @@ extern "C" { pub fn SDL_MixAudioFormat(dst: *mut uint8_t, src: *const uint8_t, format: SDL_AudioFormat, len: uint32_t, volume: c_int); + pub fn SDL_QueueAudio(dev: SDL_AudioDeviceID, data: *const c_void, len: uint32_t) -> c_int; + pub fn SDL_GetQueuedAudioSize(dev: SDL_AudioDeviceID) -> uint32_t; + pub fn SDL_ClearQueuedAudio(dev: SDL_AudioDeviceID); pub fn SDL_LockAudio(); pub fn SDL_LockAudioDevice(dev: SDL_AudioDeviceID); pub fn SDL_UnlockAudio(); From bf6f68845fb17fa723c67fae4f54d06b4be59dc9 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 08:43:02 +0100 Subject: [PATCH 02/12] Added the ability to create a queueing AudioDevice --- src/sdl2/audio.rs | 78 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 68 insertions(+), 10 deletions(-) diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index 1d91e5c1..909fa78b 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -74,6 +74,12 @@ impl AudioSubsystem { AudioDevice::open_playback(self, device, spec, get_callback) } + /// Opens a new audio device which uses queueing rather than older callback method. + #[inline] + pub fn open_queued_playback(&self, device: Option<&str>, spec: &AudioSpecDesired) { + AudioDevice::open_queued_playback(self, device, spec); + } + pub fn current_audio_driver(&self) -> &'static str { unsafe { let buf = ll::SDL_GetCurrentAudioDriver(); @@ -373,7 +379,7 @@ pub struct AudioSpecDesired { } impl AudioSpecDesired { - fn convert_to_ll(freq: Option, channels: Option, samples: Option, userdata: *mut CB) -> ll::SDL_AudioSpec { + fn convert_to_ll(freq: Option, channels: Option, samples: Option, userdata: Option<*mut CB>) -> ll::SDL_AudioSpec { use std::mem::transmute; if let Some(freq) = freq { assert!(freq > 0); } @@ -382,6 +388,8 @@ impl AudioSpecDesired { // A value of 0 means "fallback" or "default". + + unsafe { ll::SDL_AudioSpec { freq: freq.unwrap_or(0), @@ -391,12 +399,22 @@ impl AudioSpecDesired { samples: samples.unwrap_or(0), padding: 0, size: 0, - callback: Some(audio_callback_marshall:: - as extern "C" fn - (arg1: *mut c_void, - arg2: *mut uint8_t, - arg3: c_int)), - userdata: transmute(userdata) + callback: if userdata.is_some() { + Some(audio_callback_marshall:: + as extern "C" fn + (arg1: *mut c_void, + arg2: *mut uint8_t, + arg3: c_int)) + } + else { + None + }, + userdata: if userdata.is_some() { + transmute(userdata.expect("userdata error in AudioSpecDesired::convert_to_ll")) + } + else { + 0 as *mut c_void + } } } } @@ -450,7 +468,7 @@ pub struct AudioDevice { subsystem: AudioSubsystem, device_id: AudioDeviceID, /// Store the callback to keep it alive for the entire duration of `AudioDevice`. - userdata: Box + userdata: Option> } impl AudioDevice { @@ -496,7 +514,44 @@ impl AudioDevice { Ok(AudioDevice { subsystem: a.clone(), device_id: device_id, - userdata: userdata + userdata: Some(userdata) + }) + } + } + } + } + + /// Opens a new queueing audio device given the desired parameters and callback. + pub fn open_queued_playback(a: &AudioSubsystem, device: Option<&str>, spec: &AudioSpecDesired) -> Result, String> + where F: FnOnce(AudioSpec) -> CB + { + let desired = AudioSpecDesired::convert_to_ll(spec.freq, spec.channels, spec.samples); + + let mut obtained = unsafe { mem::uninitialized::() }; + unsafe { + let device = match device { + Some(device) => Some(CString::new(device).unwrap()), + None => None + }; + let device_ptr = device.map_or(ptr::null(), |s| s.as_ptr()); + + let iscapture_flag = 0; + let device_id = ll::SDL_OpenAudioDevice( + device_ptr as *const c_char, iscapture_flag, &desired, + &mut obtained, 0 + ); + match device_id { + 0 => { + Err(get_error()) + }, + id => { + let device_id = AudioDeviceID::PlaybackDevice(id); + let spec = AudioSpec::convert_from_ll(obtained); + + Ok(AudioDevice { + subsystem: a.clone(), + device_id: device_id, + userdata: None }) } } @@ -540,9 +595,12 @@ impl AudioDevice { /// /// Note that simply dropping `AudioDevice` will close the audio device, /// but the callback data will be dropped. + /// + /// Also note that this method should not be called with a queueing playback + /// device, as there is no callback data to be dropped. pub fn close_and_get_callback(self) -> CB { drop(self.device_id); - *self.userdata + *self.userdata.expect("Problem with AudioDeivce::close_and_get_callback") } } From e171791c7696ab4e2a5ba3075036fe25b4ee3374 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 09:57:49 +0100 Subject: [PATCH 03/12] Added function to queue additional audio to AudioQueue struct --- src/sdl2/audio.rs | 120 ++++++++++++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 46 deletions(-) diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index 909fa78b..d4832ee2 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -76,8 +76,10 @@ impl AudioSubsystem { /// Opens a new audio device which uses queueing rather than older callback method. #[inline] - pub fn open_queued_playback(&self, device: Option<&str>, spec: &AudioSpecDesired) { - AudioDevice::open_queued_playback(self, device, spec); + pub fn open_queue(&self, device: Option<&str>, spec: &AudioSpecDesired) -> Result + where CB: AudioCallback + { + AudioQueue::open_queue::(self, device, spec) } pub fn current_audio_driver(&self) -> &'static str { @@ -463,12 +465,78 @@ impl Drop for AudioDeviceID { } } +/// Wraps SDL_AudioDeviceID and owns the callback data used by the audio device. +pub struct AudioQueue { + subsystem: AudioSubsystem, + device_id: AudioDeviceID, +} + +impl AudioQueue { + /// Opens a new audio device given the desired parameters and callback. + pub fn open_queue (a: &AudioSubsystem, device: Option<&str>, spec: &AudioSpecDesired) -> Result where CB: AudioCallback { + let desired = AudioSpecDesired::convert_to_ll::(spec.freq, spec.channels, spec.samples, None); + + let mut obtained = unsafe { mem::uninitialized::() }; + unsafe { + let device = match device { + Some(device) => Some(CString::new(device).unwrap()), + None => None + }; + let device_ptr = device.map_or(ptr::null(), |s| s.as_ptr()); + + let iscapture_flag = 0; + let device_id = ll::SDL_OpenAudioDevice( + device_ptr as *const c_char, iscapture_flag, &desired, + &mut obtained, 0 + ); + match device_id { + 0 => { + Err(get_error()) + }, + id => { + let device_id = AudioDeviceID::PlaybackDevice(id); + + Ok(AudioQueue { + subsystem: a.clone(), + device_id: device_id, + }) + } + } + } + } + + #[inline] + pub fn subsystem(&self) -> &AudioSubsystem { &self.subsystem } + + pub fn status(&self) -> AudioStatus { + unsafe { + let status = ll::SDL_GetAudioDeviceStatus(self.device_id.id()); + FromPrimitive::from_i32(status as i32).unwrap() + } + } + + /// Pauses playback of the audio device. + pub fn pause(&self) { + unsafe { ll::SDL_PauseAudioDevice(self.device_id.id(), 1) } + } + + /// Starts playback of the audio device. + pub fn resume(&self) { + unsafe { ll::SDL_PauseAudioDevice(self.device_id.id(), 0) } + } + + pub fn queue(&self, data: &[Channel]) -> bool { + let result = unsafe {ll::SDL_QueueAudio(self.device_id.id(), data.as_ptr() as *const c_void, data.len() as u32)}; + result == 0 + } +} + /// Wraps SDL_AudioDeviceID and owns the callback data used by the audio device. pub struct AudioDevice { subsystem: AudioSubsystem, device_id: AudioDeviceID, /// Store the callback to keep it alive for the entire duration of `AudioDevice`. - userdata: Option> + userdata: Box } impl AudioDevice { @@ -484,7 +552,7 @@ impl AudioDevice { let b: Box = Box::new(mem::uninitialized()); mem::transmute(b) }; - let desired = AudioSpecDesired::convert_to_ll(spec.freq, spec.channels, spec.samples, userdata); + let desired = AudioSpecDesired::convert_to_ll(spec.freq, spec.channels, spec.samples, Some(userdata)); let mut obtained = unsafe { mem::uninitialized::() }; unsafe { @@ -514,44 +582,7 @@ impl AudioDevice { Ok(AudioDevice { subsystem: a.clone(), device_id: device_id, - userdata: Some(userdata) - }) - } - } - } - } - - /// Opens a new queueing audio device given the desired parameters and callback. - pub fn open_queued_playback(a: &AudioSubsystem, device: Option<&str>, spec: &AudioSpecDesired) -> Result, String> - where F: FnOnce(AudioSpec) -> CB - { - let desired = AudioSpecDesired::convert_to_ll(spec.freq, spec.channels, spec.samples); - - let mut obtained = unsafe { mem::uninitialized::() }; - unsafe { - let device = match device { - Some(device) => Some(CString::new(device).unwrap()), - None => None - }; - let device_ptr = device.map_or(ptr::null(), |s| s.as_ptr()); - - let iscapture_flag = 0; - let device_id = ll::SDL_OpenAudioDevice( - device_ptr as *const c_char, iscapture_flag, &desired, - &mut obtained, 0 - ); - match device_id { - 0 => { - Err(get_error()) - }, - id => { - let device_id = AudioDeviceID::PlaybackDevice(id); - let spec = AudioSpec::convert_from_ll(obtained); - - Ok(AudioDevice { - subsystem: a.clone(), - device_id: device_id, - userdata: None + userdata: userdata }) } } @@ -595,12 +626,9 @@ impl AudioDevice { /// /// Note that simply dropping `AudioDevice` will close the audio device, /// but the callback data will be dropped. - /// - /// Also note that this method should not be called with a queueing playback - /// device, as there is no callback data to be dropped. pub fn close_and_get_callback(self) -> CB { drop(self.device_id); - *self.userdata.expect("Problem with AudioDeivce::close_and_get_callback") + *self.userdata } } From 9480c4354d4addac76b40e4447993b28a29c483c Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 10:02:42 +0100 Subject: [PATCH 04/12] Added remaining queue functionality to AudioQueue --- src/sdl2/audio.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index d4832ee2..3f694310 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -525,10 +525,20 @@ impl AudioQueue { unsafe { ll::SDL_PauseAudioDevice(self.device_id.id(), 0) } } + /// Adds data to the audio queue. pub fn queue(&self, data: &[Channel]) -> bool { let result = unsafe {ll::SDL_QueueAudio(self.device_id.id(), data.as_ptr() as *const c_void, data.len() as u32)}; result == 0 } + + pub fn size(&self) -> u32 { + unsafe {ll::SDL_GetQueuedAudioSize(self.device_id.id())} + } + + /// Clears all data from the current audio queue. + pub fn clear(&self) { + unsafe {ll::SDL_ClearQueuedAudio(self.device_id.id());} + } } /// Wraps SDL_AudioDeviceID and owns the callback data used by the audio device. From 2440ed1634cbfa90193b47a46ce6ebcaf129ff36 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 11:30:12 +0100 Subject: [PATCH 05/12] Added example code for the AudioQueue --- examples/audio-queue-squarewave.rs | 49 +++++++++++++++++++++++++ src/sdl2/audio.rs | 59 +++++++++++++++++------------- 2 files changed, 83 insertions(+), 25 deletions(-) create mode 100644 examples/audio-queue-squarewave.rs diff --git a/examples/audio-queue-squarewave.rs b/examples/audio-queue-squarewave.rs new file mode 100644 index 00000000..cf23344a --- /dev/null +++ b/examples/audio-queue-squarewave.rs @@ -0,0 +1,49 @@ +extern crate sdl2; + +use sdl2::audio::{AudioCallback, AudioSpecDesired}; +use std::time::Duration; + +fn gen_wave(bytes_to_write: i32) -> Vec { + // Generate a square wave + let tone_volume = 1000i16; + let period = 48000 / 256; + let sample_count = bytes_to_write / 4; + let mut result = Vec::new(); + + for x in 0..sample_count { + result.push( + if (x / period) % 2 == 0 { + tone_volume + } + else { + -tone_volume + } + ); + } + result +} + +fn main() { + let sdl_context = sdl2::init().unwrap(); + let audio_subsystem = sdl_context.audio().unwrap(); + + let desired_spec = AudioSpecDesired { + freq: Some(48000), + channels: Some(2), // mono + samples: Some(4) // default sample size + }; + + let device = audio_subsystem.open_queue::(None, &desired_spec).unwrap(); + + let target_bytes = 48000 * 4; + let wave = gen_wave(target_bytes); + device.queue(&wave); + + // Start playback + device.resume(); + + // Play for 2 seconds + std::thread::sleep(Duration::from_millis(2000)); + + // Device is automatically closed when dropped +} diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index 3f694310..fdfb9ef1 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -76,10 +76,9 @@ impl AudioSubsystem { /// Opens a new audio device which uses queueing rather than older callback method. #[inline] - pub fn open_queue(&self, device: Option<&str>, spec: &AudioSpecDesired) -> Result - where CB: AudioCallback + pub fn open_queue(&self, device: Option<&str>, spec: &AudioSpecDesired) -> Result, String> where Channel: AudioFormatNum { - AudioQueue::open_queue::(self, device, spec) + AudioQueue::open_queue(self, device, spec) } pub fn current_audio_driver(&self) -> &'static str { @@ -381,7 +380,7 @@ pub struct AudioSpecDesired { } impl AudioSpecDesired { - fn convert_to_ll(freq: Option, channels: Option, samples: Option, userdata: Option<*mut CB>) -> ll::SDL_AudioSpec { + fn convert_to_ll(freq: Option, channels: Option, samples: Option, userdata: *mut CB) -> ll::SDL_AudioSpec { use std::mem::transmute; if let Some(freq) = freq { assert!(freq > 0); } @@ -390,8 +389,6 @@ impl AudioSpecDesired { // A value of 0 means "fallback" or "default". - - unsafe { ll::SDL_AudioSpec { freq: freq.unwrap_or(0), @@ -401,25 +398,35 @@ impl AudioSpecDesired { samples: samples.unwrap_or(0), padding: 0, size: 0, - callback: if userdata.is_some() { - Some(audio_callback_marshall:: + callback: Some(audio_callback_marshall:: as extern "C" fn (arg1: *mut c_void, arg2: *mut uint8_t, - arg3: c_int)) - } - else { - None - }, - userdata: if userdata.is_some() { - transmute(userdata.expect("userdata error in AudioSpecDesired::convert_to_ll")) - } - else { - 0 as *mut c_void - } + arg3: c_int)), + userdata: transmute(userdata) } } } + + fn convert_queue_to_ll(freq: Option, channels: Option, samples: Option) -> ll::SDL_AudioSpec { + if let Some(freq) = freq { assert!(freq > 0); } + if let Some(channels) = channels { assert!(channels > 0); } + if let Some(samples) = samples { assert!(samples > 0); } + + // A value of 0 means "fallback" or "default". + + ll::SDL_AudioSpec { + freq: freq.unwrap_or(0), + format: ::audio_format().to_ll(), + channels: channels.unwrap_or(0), + silence: 0, + samples: samples.unwrap_or(0), + padding: 0, + size: 0, + callback: None, + userdata: 0 as *mut c_void + } + } } #[allow(missing_copy_implementations)] @@ -466,15 +473,16 @@ impl Drop for AudioDeviceID { } /// Wraps SDL_AudioDeviceID and owns the callback data used by the audio device. -pub struct AudioQueue { +pub struct AudioQueue { subsystem: AudioSubsystem, device_id: AudioDeviceID, + phantom: PhantomData } -impl AudioQueue { +impl AudioQueue { /// Opens a new audio device given the desired parameters and callback. - pub fn open_queue (a: &AudioSubsystem, device: Option<&str>, spec: &AudioSpecDesired) -> Result where CB: AudioCallback { - let desired = AudioSpecDesired::convert_to_ll::(spec.freq, spec.channels, spec.samples, None); + pub fn open_queue(a: &AudioSubsystem, device: Option<&str>, spec: &AudioSpecDesired) -> Result, String> { + let desired = AudioSpecDesired::convert_queue_to_ll::(spec.freq, spec.channels, spec.samples); let mut obtained = unsafe { mem::uninitialized::() }; unsafe { @@ -499,6 +507,7 @@ impl AudioQueue { Ok(AudioQueue { subsystem: a.clone(), device_id: device_id, + phantom: PhantomData::default() }) } } @@ -526,7 +535,7 @@ impl AudioQueue { } /// Adds data to the audio queue. - pub fn queue(&self, data: &[Channel]) -> bool { + pub fn queue(&self, data: &[Channel]) -> bool { let result = unsafe {ll::SDL_QueueAudio(self.device_id.id(), data.as_ptr() as *const c_void, data.len() as u32)}; result == 0 } @@ -562,7 +571,7 @@ impl AudioDevice { let b: Box = Box::new(mem::uninitialized()); mem::transmute(b) }; - let desired = AudioSpecDesired::convert_to_ll(spec.freq, spec.channels, spec.samples, Some(userdata)); + let desired = AudioSpecDesired::convert_to_ll(spec.freq, spec.channels, spec.samples, userdata); let mut obtained = unsafe { mem::uninitialized::() }; unsafe { From e3ecf72d72157c244928bcef9d6dfe37f4efc49f Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 11:35:33 +0100 Subject: [PATCH 06/12] adjusted new example code --- examples/audio-queue-squarewave.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/audio-queue-squarewave.rs b/examples/audio-queue-squarewave.rs index cf23344a..7fd4c5a2 100644 --- a/examples/audio-queue-squarewave.rs +++ b/examples/audio-queue-squarewave.rs @@ -7,7 +7,7 @@ fn gen_wave(bytes_to_write: i32) -> Vec { // Generate a square wave let tone_volume = 1000i16; let period = 48000 / 256; - let sample_count = bytes_to_write / 4; + let sample_count = bytes_to_write; let mut result = Vec::new(); for x in 0..sample_count { From 7893c2ab83c3fc287f943149dc8082cfe915f145 Mon Sep 17 00:00:00 2001 From: Chris Parker Date: Sat, 27 Aug 2016 12:03:36 +0100 Subject: [PATCH 07/12] removed example code temporarily --- examples/audio-queue-squarewave.rs | 49 ------------------------------ 1 file changed, 49 deletions(-) delete mode 100644 examples/audio-queue-squarewave.rs diff --git a/examples/audio-queue-squarewave.rs b/examples/audio-queue-squarewave.rs deleted file mode 100644 index 7fd4c5a2..00000000 --- a/examples/audio-queue-squarewave.rs +++ /dev/null @@ -1,49 +0,0 @@ -extern crate sdl2; - -use sdl2::audio::{AudioCallback, AudioSpecDesired}; -use std::time::Duration; - -fn gen_wave(bytes_to_write: i32) -> Vec { - // Generate a square wave - let tone_volume = 1000i16; - let period = 48000 / 256; - let sample_count = bytes_to_write; - let mut result = Vec::new(); - - for x in 0..sample_count { - result.push( - if (x / period) % 2 == 0 { - tone_volume - } - else { - -tone_volume - } - ); - } - result -} - -fn main() { - let sdl_context = sdl2::init().unwrap(); - let audio_subsystem = sdl_context.audio().unwrap(); - - let desired_spec = AudioSpecDesired { - freq: Some(48000), - channels: Some(2), // mono - samples: Some(4) // default sample size - }; - - let device = audio_subsystem.open_queue::(None, &desired_spec).unwrap(); - - let target_bytes = 48000 * 4; - let wave = gen_wave(target_bytes); - device.queue(&wave); - - // Start playback - device.resume(); - - // Play for 2 seconds - std::thread::sleep(Duration::from_millis(2000)); - - // Device is automatically closed when dropped -} From f024e47558fbb6248b919260a421d76918cc662b Mon Sep 17 00:00:00 2001 From: Christopher Parker Date: Fri, 9 Sep 2016 00:44:45 +0100 Subject: [PATCH 08/12] adusted travis yml to remove repo --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4fc4950e..b890a681 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,6 @@ rust: - nightly - stable install: -- sudo add-apt-repository ppa:team-xbmc/ppa -y - sudo apt-get update -q - sudo apt-get install libsdl2-dev before_script: From 8bc76427a5e2a9f80465c930cfc2f3e73c79ff77 Mon Sep 17 00:00:00 2001 From: Christopher Parker Date: Fri, 9 Sep 2016 00:53:25 +0100 Subject: [PATCH 09/12] replaced example code --- examples/audio-queue-squarewave.rs | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 examples/audio-queue-squarewave.rs diff --git a/examples/audio-queue-squarewave.rs b/examples/audio-queue-squarewave.rs new file mode 100644 index 00000000..904cd226 --- /dev/null +++ b/examples/audio-queue-squarewave.rs @@ -0,0 +1,51 @@ +extern crate sdl2; + +use sdl2::audio::{AudioCallback, AudioSpecDesired}; + +use std::time::Duration; + +fn gen_wave(bytes_to_write: i32) -> Vec { + // Generate a square wave + let tone_volume = 1000i16; + let period = 48000 / 256; + let sample_count = bytes_to_write; + let mut result = Vec::new(); + + for x in 0..sample_count { + result.push( + if (x / period) % 2 == 0 { + tone_volume + } + else { + -tone_volume + } + ); + } + result +} + +fn main() { + let sdl_context = sdl2::init().unwrap(); + let audio_subsystem = sdl_context.audio().unwrap(); + + let desired_spec = AudioSpecDesired { + freq: Some(48000), + channels: Some(2), + // mono - + samples: Some(4) + // default sample size + }; + + let device = audio_subsystem.open_queue::(None, &desired_spec).unwrap(); + + let target_bytes = 48000 * 4; + let wave = gen_wave(target_bytes); + device.queue(&wave); + // Start playback + device.resume(); + + // Play for 2 seconds + std::thread::sleep(Duration::from_millis(2000)); + + // Device is automatically closed when dropped +} From 145305c709e2813c200f411a31c108412b8d4e68 Mon Sep 17 00:00:00 2001 From: Christopher Parker Date: Fri, 9 Sep 2016 01:48:16 +0100 Subject: [PATCH 10/12] adjusted travis file to install sdl2 from source code --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b890a681..803d5292 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,9 @@ rust: - nightly - stable install: -- sudo apt-get update -q -- sudo apt-get install libsdl2-dev +- wget https://www.libsdl.org/release/SDL2-2.0.4.tar.gz -O /tmp/sdl2.tar.gz +- tar xzf sdl2.tar.gz +- pushd sdl2 && ./configure && make && sudo make install && popd before_script: - | pip install 'travis-cargo<0.2' --user && From dd7be75aceff1c5dbec114ca3a902861468b6233 Mon Sep 17 00:00:00 2001 From: Christopher Parker Date: Fri, 9 Sep 2016 01:51:24 +0100 Subject: [PATCH 11/12] adjusted travis file to install sdl2 from source code --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 803d5292..d9c71d0c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ rust: - nightly - stable install: -- wget https://www.libsdl.org/release/SDL2-2.0.4.tar.gz -O /tmp/sdl2.tar.gz +- wget https://www.libsdl.org/release/SDL2-2.0.4.tar.gz -O sdl2.tar.gz - tar xzf sdl2.tar.gz - pushd sdl2 && ./configure && make && sudo make install && popd before_script: From c438ea587d15c405443fe5466bf2c8b366cb9ded Mon Sep 17 00:00:00 2001 From: Christopher Parker Date: Fri, 9 Sep 2016 01:55:24 +0100 Subject: [PATCH 12/12] adjusted travis file to install sdl2 from source code --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d9c71d0c..fb608709 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ rust: install: - wget https://www.libsdl.org/release/SDL2-2.0.4.tar.gz -O sdl2.tar.gz - tar xzf sdl2.tar.gz -- pushd sdl2 && ./configure && make && sudo make install && popd +- pushd SDL2-2.0.4 && ./configure && make && sudo make install && popd before_script: - | pip install 'travis-cargo<0.2' --user &&