#include "preferences.h"
#include "shuttle.h"
#include "theme.h"
+#include "tracks.h"
#include "transportque.h"
#include "vframe.h"
if( !edl ) return;
using_inout = use_inout;
- if( !is_vwindow() )
+ if( use_mixers() )
mwindow->handle_mixers(edl, command, wait_tracking,
use_inout, toggle_audio, 0, speed);
engine->next_command->toggle_audio = toggle_audio;
return mwindow->edl;
}
-int PlayTransport::pause_transport()
+int PlayTransport::set_transport(int mode)
{
- if(active_button) active_button->set_mode(PLAY_MODE);
- return 0;
-}
-
-
-int PlayTransport::reset_transport()
-{
- fast_reverse->set_mode(PLAY_MODE);
- reverse_play->set_mode(PLAY_MODE);
- forward_play->set_mode(PLAY_MODE);
- frame_reverse_play->set_mode(PLAY_MODE);
- frame_forward_play->set_mode(PLAY_MODE);
- fast_play->set_mode(PLAY_MODE);
+ fast_reverse->set_mode(mode);
+ reverse_play->set_mode(mode);
+ forward_play->set_mode(mode);
+ frame_reverse_play->set_mode(mode);
+ frame_forward_play->set_mode(mode);
+ fast_play->set_mode(mode);
return 0;
}
{
}
-int PTransportButton::set_mode(int mode)
+void PTransportButton::set_mode(int mode)
{
this->mode = mode;
- return 0;
+}
+
+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;
+ }
}
int PTransportButton::play_command(const char *lock_msg, int command)
}
int FastReverseButton::handle_event()
{
+ loop_mode(PLAY_REVERSE);
return play_command("FastReverseButton::handle_event", FAST_REWIND);
}
}
int ReverseButton::handle_event()
{
+ loop_mode(PLAY_REVERSE);
return play_command("ReverseButton::handle_event", NORMAL_REWIND);
}
}
int PlayButton::handle_event()
{
+ loop_mode(PLAY_FORWARD);
return play_command("PlayButton::handle_event", NORMAL_FWD);
}
}
int FastPlayButton::handle_event()
{
+ loop_mode(PLAY_FORWARD);
return play_command("FastPlayButton::handle_event", FAST_FWD);
}