mask_autos->get_prev_auto(position, PLAY_FORWARD, (Auto *&)prev_auto, 1);
MaskAuto *prev_mask = (MaskAuto *)prev_auto;
ArrayList<MaskPoint*> points;
-
+ int update_points = 1;
// Determine the points based on whether
// new keyframes will be generated or drawing is performed.
// If keyframe generation occurs, use the interpolated mask.
gui->y_origin = mask_cursor_y;
rerender = 1;
redraw = 1;
- track = 0;
+ update_points = 0;
break; }
case CWINDOW_MASK_ROTATE:
rotate = 1;
}
rerender = 1;
redraw = 1;
- track = 0;
+ update_points = 0;
break; }
}
MaskAuto temp_keyframe(mwindow->edl, mask_autos);
temp_keyframe.copy_data(gui->mask_keyframe);
// Apply interpolated points back to keyframe
- temp_keyframe.set_points(&points, mwindow->edl->session->cwindow_mask);
+ if( update_points )
+ temp_keyframe.set_points(&points, mwindow->edl->session->cwindow_mask);
gui->mask_keyframe->copy_data(gui->orig_mask_keyframe);
mask_autos->update_parameter(&temp_keyframe);
}
unsigned int program = 0;
#ifdef HAVE_GL
// Construct single source file out of arguments
- int nb_segs = 1;
- if( !segments ) {
+ int nb_segs = 0;
+ if( !segments ) { // arg list
va_list list; va_start(list, segments);
while( va_arg(list, char*) != 0 ) ++nb_segs;
va_end(list);
}
- const char *segs[nb_segs];
+ else { // segment list
+ while( segments[nb_segs] ) ++nb_segs;
+ }
+ const char *segs[++nb_segs];
if( !segments ) {
va_list list; va_start(list, segments);
for( int i=0; i<nb_segs; ++i )