| @@ -30,6 +30,7 @@ | |||||
| Engine::Engine ( ) | Engine::Engine ( ) | ||||
| { | { | ||||
| _freewheeling = false; | |||||
| _client = NULL; | _client = NULL; | ||||
| _buffers_dropped = 0; | _buffers_dropped = 0; | ||||
| _xruns = 0; | _xruns = 0; | ||||
| @@ -63,6 +64,12 @@ Engine::timebase ( jack_transport_state_t state, jack_nframes_t nframes, jack_po | |||||
| ((Engine*)arg)->timebase( state, nframes, pos, new_pos ); | ((Engine*)arg)->timebase( state, nframes, pos, new_pos ); | ||||
| } | } | ||||
| void | |||||
| Engine::freewheel ( int starting, void *arg ) | |||||
| { | |||||
| ((Engine*)arg)->freewheel( starting ); | |||||
| } | |||||
| void | void | ||||
| @@ -82,6 +89,16 @@ Engine::xrun ( void ) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| /* THREAD: RT */ | |||||
| void | |||||
| Engine::freewheel ( bool starting ) | |||||
| { | |||||
| _freewheeling = starting; | |||||
| if ( _freewheeling ) | |||||
| FATAL( "Freewheeling mode is unimplemented" ); | |||||
| } | |||||
| /* THREAD: RT */ | /* THREAD: RT */ | ||||
| /** This is the jack slow-sync callback. */ | /** This is the jack slow-sync callback. */ | ||||
| int | int | ||||
| @@ -185,6 +202,14 @@ Engine::process ( nframes_t nframes ) | |||||
| } | } | ||||
| /** enter or leave freehweeling mode */ | |||||
| void | |||||
| Engine::freewheeling ( bool yes ) | |||||
| { | |||||
| if ( jack_set_freewheel( _client, yes ) ) | |||||
| WARNING( "Unkown error while setting freewheeling mode" ); | |||||
| } | |||||
| int | int | ||||
| Engine::init ( void ) | Engine::init ( void ) | ||||
| { | { | ||||
| @@ -195,6 +220,7 @@ Engine::init ( void ) | |||||
| set_callback( process ); | set_callback( process ); | ||||
| set_callback( xrun ); | set_callback( xrun ); | ||||
| set_callback( freewheel ); | |||||
| /* FIXME: should we wait to register this until after the project | /* FIXME: should we wait to register this until after the project | ||||
| has been loaded (and we have disk threads running)? */ | has been loaded (and we have disk threads running)? */ | ||||
| @@ -43,6 +43,7 @@ class Engine : public Mutex | |||||
| int _buffers_dropped; /* buffers dropped because of locking */ | int _buffers_dropped; /* buffers dropped because of locking */ | ||||
| nframes_t _sample_rate; | nframes_t _sample_rate; | ||||
| volatile int _xruns; | volatile int _xruns; | ||||
| volatile bool _freewheeling; | |||||
| static int process ( nframes_t nframes, void *arg ); | static int process ( nframes_t nframes, void *arg ); | ||||
| int process ( nframes_t nframes ); | int process ( nframes_t nframes ); | ||||
| @@ -52,6 +53,8 @@ class Engine : public Mutex | |||||
| int xrun ( void ); | int xrun ( void ); | ||||
| static void timebase ( jack_transport_state_t state, jack_nframes_t nframes, jack_position_t *pos, int new_pos, void *arg ); | static void timebase ( jack_transport_state_t state, jack_nframes_t nframes, jack_position_t *pos, int new_pos, void *arg ); | ||||
| void timebase ( jack_transport_state_t state, jack_nframes_t nframes, jack_position_t *pos, int new_pos ); | void timebase ( jack_transport_state_t state, jack_nframes_t nframes, jack_position_t *pos, int new_pos ); | ||||
| static void freewheel ( int yes, void *arg ); | |||||
| void freewheel ( bool yes ); | |||||
| Engine ( const Engine &rhs ); | Engine ( const Engine &rhs ); | ||||
| Engine & operator = ( const Engine &rhs ); | Engine & operator = ( const Engine &rhs ); | ||||
| @@ -76,6 +79,8 @@ public: | |||||
| nframes_t sample_rate ( void ) const { return _sample_rate; } | nframes_t sample_rate ( void ) const { return _sample_rate; } | ||||
| int xruns ( void ) const { return _xruns; }; | int xruns ( void ) const { return _xruns; }; | ||||
| int dropped ( void ) const { return _buffers_dropped; } | int dropped ( void ) const { return _buffers_dropped; } | ||||
| bool freehweeling ( void ) const { return _freewheeling; } | |||||
| void freewheeling ( bool yes ); | |||||
| float cpu_load ( void ) const { return jack_cpu_load( _client ); } | float cpu_load ( void ) const { return jack_cpu_load( _client ); } | ||||
| }; | }; | ||||
| @@ -185,7 +185,7 @@ else if ( ! Project::open( name ) ) | |||||
| fl_alert( "Could not open \\"%s\\" as a Non-DAW project!", name ); | fl_alert( "Could not open \\"%s\\" as a Non-DAW project!", name ); | ||||
| // we are in a somewhar ambiguous state now with no project open. | // we are in a somewhar ambiguous state now with no project open. | ||||
| }} selected | |||||
| }} | |||||
| xywh {10 10 40 25} | xywh {10 10 40 25} | ||||
| } | } | ||||
| MenuItem {} { | MenuItem {} { | ||||
| @@ -203,7 +203,7 @@ Loggable::compact();} | |||||
| xywh {0 0 74 25} deactivate | xywh {0 0 74 25} deactivate | ||||
| } { | } { | ||||
| MenuItem {} { | MenuItem {} { | ||||
| label Project | |||||
| label Project selected | |||||
| xywh {0 0 40 25} | xywh {0 0 40 25} | ||||
| } | } | ||||
| MenuItem {} { | MenuItem {} { | ||||