KeyFrame* KeyFrames::get_keyframe()
{
+ int64_t pos = track->to_units(edl->local_session->get_selectionstart(1), 0);
// Search for keyframe on or before selection
- KeyFrame *result =
- get_prev_keyframe(
- track->to_units(edl->local_session->get_selectionstart(1), 0),
- PLAY_FORWARD);
-
-// Return nearest keyframe if not in automatic keyframe generation
- if(!edl->session->auto_keyframes)
- {
- return result;
- }
- else
-// Return new keyframe
- if(result == (KeyFrame*)default_auto ||
- result->position != track->to_units(edl->local_session->get_selectionstart(1), 0))
- {
- return (KeyFrame*)insert_auto(track->to_units(edl->local_session->get_selectionstart(1), 0));
+ KeyFrame *result = get_prev_keyframe(pos, PLAY_FORWARD);
+ if( edl->session->auto_keyframes ) {
+ if( !result || result->position != pos ||
+ result == (KeyFrame*)default_auto )
+// generate keyframes while tweeking, and no keyframe found at pos
+ result = (KeyFrame*)insert_auto(pos);
}
- else
-// Return existing keyframe
- {
- return result;
- }
-
- return 0;
+ return result;
}