remove asset while preview active segv fix, guard against segv with missing asset...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / trackcanvas.C
index fdd3112bb6b2fb62f315fc7c2f3fb70de94bf9ba..c746de7149af56c417a8566ada27087bc2c60c4f 100644 (file)
@@ -144,7 +144,7 @@ void TrackCanvas::create_objects()
        pankeyframe_pixmap = new BC_Pixmap(this, mwindow->theme->pankeyframe_data, PIXMAP_ALPHA);
        projectorkeyframe_pixmap = new BC_Pixmap(this, mwindow->theme->projectorkeyframe_data, PIXMAP_ALPHA);
        maskkeyframe_pixmap = new BC_Pixmap(this, mwindow->theme->maskkeyframe_data, PIXMAP_ALPHA);
-       draw();
+       draw(NORMAL_DRAW, 1);
        update_cursor(0);
        flash(0);
 }
@@ -152,7 +152,7 @@ void TrackCanvas::create_objects()
 void TrackCanvas::resize_event()
 {
 //printf("TrackCanvas::resize_event 1\n");
-       draw(0, 0);
+       draw(NORMAL_DRAW, 0);
        flash(0);
 //printf("TrackCanvas::resize_event 2\n");
 }
@@ -650,7 +650,6 @@ void TrackCanvas::draw(int mode, int hide_cursor)
 {
        const int debug = 0;
 
-
 // Swap pixmap layers
        if(get_w() != background_pixmap->get_w() ||
                get_h() != background_pixmap->get_h())
@@ -699,7 +698,7 @@ void TrackCanvas::draw_indexes(Indexable *indexable)
 // Don't redraw raw samples
        if(index_state->index_zoom > mwindow->edl->local_session->zoom_sample)
                return;
-       draw_resources(0, 1, indexable);
+       draw_resources(NORMAL_DRAW, 1, indexable);
        draw_overlays();
        flash(0);
 }
@@ -1193,7 +1192,6 @@ void TrackCanvas::draw_paste_destination()
                                                                from_units(drop_edit_position(&insertion,
                                                                        mwindow->session->drag_edit,
                                                                        mwindow->session->drag_edit->length));
-                                                       current_vedit++;
                                                }
                                        }
                                        if( paste_position >= 0 ) {
@@ -2092,6 +2090,12 @@ int TrackCanvas::do_keyframes(int cursor_x,
 // auto_operations[i]);
                                        if(buttonpress)
                                        {
+                                               if (buttonpress == 2 && auto_keyframe )
+                                               {
+                                                       double position = track->from_units(auto_keyframe->position);
+                                                       mwindow->edl->local_session->set_selectionstart(position);
+                                                       mwindow->edl->local_session->set_selectionend(position);
+                                               }
                                                if (buttonpress != 3)
                                                {
                                                        if(i == AUTOMATION_FADE || i == AUTOMATION_SPEED)
@@ -2744,7 +2748,7 @@ void TrackCanvas::fill_ganged_autos(int all, float change, Track *skip, FloatAut
                                CLAMP(new_value, auto_min, auto_max);
                                keyframe->adjust_to_new_coordinates(current_position, new_value);
                        }
-                       else if( mwindow->edl->session->auto_keyframes ) {
+                       else {
 // create keyframe on neighbouring track at the point in time given by fauto
                                FloatAuto *previous = 0, *next = 0;
                                float value = fade_autos->get_value(current_position, PLAY_FORWARD, previous, next);
@@ -2753,8 +2757,6 @@ void TrackCanvas::fill_ganged_autos(int all, float change, Track *skip, FloatAut
                                keyframe = (FloatAuto*)fade_autos->insert_auto(current_position);
                                keyframe->set_value(new_value);
                        }
-                       else
-                               continue;
                        mwindow->session->drag_auto_gang->append((Auto *)keyframe);
                }
        }