int TransportCommand::single_frame(int command)
{
- return (command == SINGLE_FRAME_FWD ||
- command == SINGLE_FRAME_REWIND ||
- command == CURRENT_FRAME);
+ return (command == SINGLE_FRAME_FWD || command == SINGLE_FRAME_REWIND ||
+ command == CURRENT_FRAME || command == LAST_FRAME);
}
int TransportCommand::single_frame()
{
case NORMAL_REWIND:
case FAST_REWIND:
case SLOW_REWIND:
+ case LAST_FRAME:
return PLAY_REVERSE;
default:
case SINGLE_FRAME_FWD:
case SINGLE_FRAME_REWIND:
case CURRENT_FRAME:
+ case LAST_FRAME:
return 1.;
case FAST_FWD:
break;
case CURRENT_FRAME:
+ case LAST_FRAME:
case SINGLE_FRAME_FWD:
end_position = start_position + frame_period;
break;
break;
}
- if( use_displacement && command != CURRENT_FRAME &&
- get_direction() == PLAY_FORWARD ) {
+ if( use_displacement && (
+ (command != CURRENT_FRAME && get_direction() == PLAY_FORWARD ) ||
+ (command != LAST_FRAME && get_direction() == PLAY_REVERSE ) ) ) {
start_position += frame_period;
end_position += frame_period;
displacement = 1;