1 --- DirectFB-1.7.7/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_timidity.c.orig 2013-12-19 01:16:24.000000000 +0100
2 +++ DirectFB-1.7.7/interfaces/IFusionSoundMusicProvider/ifusionsoundmusicprovider_timidity.c 2017-12-17 20:40:00.879730101 +0100
7 +seek_callback( void *ctx, long offset, int whence )
9 + IFusionSoundMusicProvider_Timidity_data *data = ctx;
10 + if (direct_stream_seekable( data->st )) {
13 + case SEEK_SET: newpos = offset; break;
14 + case SEEK_CUR: newpos = direct_stream_offset( data->st ) + offset; break;
15 + case SEEK_END: newpos = direct_stream_length( data->st ) + offset; break;
18 + direct_stream_seek( data->st, newpos );
19 + } else return -1; // not seekable
23 +tell_callback( void *ctx )
25 + IFusionSoundMusicProvider_Timidity_data *data = ctx;
26 + return direct_stream_offset( data->st );
30 close_callback( void *ctx )
34 Timidity_Stop( data, false );
36 direct_stream_seek( data->st, 0 );
37 - stream = mid_istream_open_callbacks( read_callback, close_callback, data );
38 + stream = mid_istream_open_callbacks( read_callback, seek_callback, tell_callback, close_callback, data );
40 D_ERROR( "IFusionSoundMusicProvider_Timidity: couldn't open input stream!\n" );
41 pthread_mutex_unlock( &data->lock );
43 Timidity_Stop( data, false );
45 direct_stream_seek( data->st, 0 );
46 - stream = mid_istream_open_callbacks( read_callback, close_callback, data );
47 + stream = mid_istream_open_callbacks( read_callback, seek_callback, tell_callback, close_callback, data );
49 D_ERROR( "IFusionSoundMusicProvider_Timidity: couldn't open input stream!\n" );
50 pthread_mutex_unlock( &data->lock );