@@ -7,7 +7,6 @@ use std::c_vec::CVec;
7
7
use libc;
8
8
use libc:: { c_int, size_t, c_void} ;
9
9
use libc:: { uint8_t} ;
10
- use rustrt:: task:: Task ;
11
10
12
11
use get_error;
13
12
use rwops:: RWops ;
@@ -246,39 +245,9 @@ pub trait AudioCallback<T> {
246
245
247
246
/// The userdata as seen by the SDL callback.
248
247
struct AudioCallbackUserdata < CB > {
249
- task : AudioCallbackTask ,
250
248
callback : CB
251
249
}
252
250
253
- /// A Task is required to use libstd from SDL's audio callback.
254
- struct AudioCallbackTask {
255
- /// Set to None if there was an error running a previous task.
256
- task : Option < Box < Task > >
257
- }
258
-
259
- impl Drop for AudioCallbackTask {
260
- /// Destroy the callback task.
261
- fn drop ( & mut self ) {
262
- use rustrt:: local:: Local ;
263
- use std:: mem:: replace;
264
-
265
- // Swap out the task with None in order to own it, since drop() only
266
- // provides a reference.
267
- match replace ( & mut self . task , None ) {
268
- Some ( task) => {
269
- // pop current task
270
- let old_task = Local :: take ( ) ;
271
-
272
- task. destroy ( ) ;
273
-
274
- // put task back
275
- Local :: put ( old_task) ;
276
- } ,
277
- None => ( )
278
- } ;
279
- }
280
- }
281
-
282
251
/// A phantom type for retreiving the SDL_AudioFormat of a given generic type.
283
252
/// All format types are returned as native-endian.
284
253
///
@@ -329,25 +298,7 @@ extern "C" fn audio_callback_marshall<T: AudioFormatNum<T>, CB: AudioCallback<T>
329
298
len : len as uint / size_of :: < T > ( )
330
299
} ) ;
331
300
332
- // Perform a dance to move tasks around without compiler errors
333
- let new_task = match replace ( & mut cb_userdata. task . task , None ) {
334
- Some ( task) => {
335
- let n = task. run ( || {
336
- cb_userdata. callback . callback ( buf) ;
337
- } ) ;
338
-
339
- if n. is_destroyed ( ) { None }
340
- else { Some ( n) }
341
- } ,
342
- None => {
343
- // Last callback had an error. Fill buffer with silence.
344
- for x in buf. iter_mut ( ) { * x = AudioFormatNum :: zero ( ) ; }
345
-
346
- None
347
- }
348
- } ;
349
-
350
- replace ( & mut cb_userdata. task . task , new_task) ;
301
+ cb_userdata. callback . callback ( buf) ;
351
302
}
352
303
}
353
304
@@ -377,11 +328,7 @@ impl<T: AudioFormatNum<T>, CB: AudioCallback<T>> AudioSpecDesired<T, CB> {
377
328
}
378
329
379
330
fn callback_to_userdata ( callback : CB ) -> Box < AudioCallbackUserdata < CB > > {
380
- let mut task = box Task :: new ( None , None ) ;
381
- task. name = Some ( "SDL audio callback" . into_cow ( ) ) ;
382
-
383
331
box AudioCallbackUserdata {
384
- task : AudioCallbackTask { task : Some ( task) } ,
385
332
callback : callback
386
333
}
387
334
}
0 commit comments