-// Fix the tracking position
- if(playback_engine)
- {
- if(command->command == CURRENT_FRAME || command->command == LAST_FRAME)
- {
-//printf("RenderEngine::run 4.1 %d\n", playback_engine->tracking_position);
- playback_engine->tracking_position = command->playbackstart;
- }
- else
- {
-// Make sure transport doesn't issue a pause command next
-//printf("RenderEngine::run 4.1 %d\n", playback_engine->tracking_position);
- if(!interrupted)
- {
- playback_engine->tracking_position =
- command->get_direction() == PLAY_FORWARD ?
- command->end_position : command->start_position;
- }
-
- if( playback_engine->is_playing_back && command->displacement ) {
- double position = playback_engine->tracking_position -
- 1./command->get_edl()->session->frame_rate;
- playback_engine->tracking_position = position >= 0 ? position : 0;
- }
-
- if(!interrupted) playback_engine->command->command = STOP;
- playback_engine->stop_tracking();
-
+ if( playback_engine ) {
+ double position = command->command == CURRENT_FRAME ? command->playbackstart :
+ playback_engine->is_playing_back && !interrupted ?
+ ( command->get_direction() == PLAY_FORWARD ?
+ command->end_position : command->start_position ) :
+ playback_engine->get_tracking_position() ;
+ if( command->displacement ) {
+ position -= 1./command->get_edl()->session->frame_rate;
+ if( position < 0 ) position = 0;