+}
+
+void PTransportButton::loop_mode(int dir)
+{
+ if( mode != LOOP_MODE ) return;
+ EDL *edl = transport->get_edl();
+ if( !edl ) return;
+ PlaybackEngine *engine = transport->engine;
+ if( !engine || engine->is_playing_back ) return;
+ double position = engine->get_tracking_position();
+ switch( dir ) {
+ case PLAY_FORWARD:
+ if( position >= edl->tracks->total_playable_length() )
+ transport->goto_start();
+ break;
+ case PLAY_REVERSE:
+ if( position <= 0 )
+ transport->goto_end();
+ break;
+ }