| @@ -58,6 +58,8 @@ protected: | |||||
| volatile nframes_t _pending_seek; /* absolute transport position to seek to */ | volatile nframes_t _pending_seek; /* absolute transport position to seek to */ | ||||
| volatile int _terminate; | volatile int _terminate; | ||||
| volatile int _xruns; | |||||
| int channels ( void ) const { return _rb.size(); } | int channels ( void ) const { return _rb.size(); } | ||||
| Audio_Sequence * track ( void ); | Audio_Sequence * track ( void ); | ||||
| @@ -69,13 +71,12 @@ protected: | |||||
| void block_processed ( void ) { sem_post( &_blocks ); } | void block_processed ( void ) { sem_post( &_blocks ); } | ||||
| bool wait_for_block ( void ) | bool wait_for_block ( void ) | ||||
| { | { | ||||
| while ( sem_wait( &_blocks ) == EINTR ); | |||||
| if ( _terminate ) | if ( _terminate ) | ||||
| return false; | return false; | ||||
| else | else | ||||
| { | |||||
| while ( sem_wait( &_blocks ) == EINTR ); | |||||
| return true; | return true; | ||||
| } | |||||
| } | } | ||||
| virtual void disk_thread ( void ) = 0; | virtual void disk_thread ( void ) = 0; | ||||
| @@ -86,6 +87,8 @@ public: | |||||
| static float seconds_to_buffer; | static float seconds_to_buffer; | ||||
| static size_t disk_io_kbytes; | static size_t disk_io_kbytes; | ||||
| int xruns ( void ) { return _xruns; } | |||||
| Disk_Stream ( Track *th, float frame_rate, nframes_t nframes, int channels ); | Disk_Stream ( Track *th, float frame_rate, nframes_t nframes, int channels ); | ||||
| virtual ~Disk_Stream ( ); | virtual ~Disk_Stream ( ); | ||||