X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_ops.cc;h=f2990751708dac5471d7ecd6c7b7429c396fda06;hb=2ba58dfe65bb0c5ba7d5eb18a1566fa79eeb6993;hp=9eb0a4c2bd0eda175a0b9fe386a3eacf31102046;hpb=bcd65def7da197a6f88eb1c4adb375f2b639f783;p=ardour.git diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 9eb0a4c2bd..f299075170 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -1146,7 +1146,7 @@ void Editor::scroll_playhead (bool forward) { framepos_t pos = playhead_cursor->current_frame (); - framecnt_t delta = (framecnt_t) floor (current_page_frames() / 0.8); + framecnt_t delta = (framecnt_t) floor (current_page_samples() / 0.8); if (forward) { if (pos == max_framepos) { @@ -1211,7 +1211,7 @@ Editor::cursor_align (bool playhead_to_edit) void Editor::scroll_backward (float pages) { - framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * frames_per_pixel); + framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * samples_per_pixel); framepos_t const cnt = (framepos_t) floor (pages * one_page); framepos_t frame; @@ -1227,7 +1227,7 @@ Editor::scroll_backward (float pages) void Editor::scroll_forward (float pages) { - framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * frames_per_pixel); + framepos_t const one_page = (framepos_t) rint (_visible_canvas_width * samples_per_pixel); framepos_t const cnt = (framepos_t) floor (pages * one_page); framepos_t frame; @@ -1331,17 +1331,17 @@ Editor::tav_zoom_smooth (bool coarser, bool force_all) } bool -Editor::clamp_frames_per_pixel (double& fpp) const +Editor::clamp_samples_per_pixel (framecnt_t& fpp) const { bool clamped = false; - if (fpp < 2.0) { - fpp = 2.0; + if (fpp < 1) { + fpp = 1; clamped = true; } if (max_framepos / fpp < 800) { - fpp = max_framepos / 800.0; + fpp = max_framepos / 800; clamped = true; } @@ -1353,25 +1353,25 @@ Editor::temporal_zoom_step (bool coarser) { ENSURE_GUI_THREAD (*this, &Editor::temporal_zoom_step, coarser) - double nfpp = frames_per_pixel; + framecnt_t nspp = samples_per_pixel; if (coarser) { - nfpp = min (9e6, nfpp * 1.61803399); + nspp *= 2; } else { - nfpp = max (1.0, nfpp / 1.61803399); + nspp /= 2; } - temporal_zoom (nfpp); + temporal_zoom (nspp); } void -Editor::temporal_zoom (double fpp) +Editor::temporal_zoom (framecnt_t fpp) { if (!_session) { return; } - framepos_t current_page = current_page_frames(); + framepos_t current_page = current_page_samples(); framepos_t current_leftmost = leftmost_frame; framepos_t current_rightmost; framepos_t current_center; @@ -1380,22 +1380,24 @@ Editor::temporal_zoom (double fpp) framepos_t leftmost_after_zoom = 0; framepos_t where; bool in_track_canvas; - double nfpp; + framecnt_t nfpp; double l; - clamp_frames_per_pixel (fpp); - if (fpp == frames_per_pixel) { + clamp_samples_per_pixel (fpp); + if (fpp == samples_per_pixel) { return; } - nfpp = fpp; - // Imposing an arbitrary limit to zoom out as too much zoom out produces // segfaults for lack of memory. If somebody decides this is not high enough I // believe it can be raisen to higher values but some limit must be in place. - if (nfpp > 8e+08) { - nfpp = 8e+08; - } + // + // This constant represents 1 day @ 48kHz on a 1600 pixel wide display + // all of which is used for the editor track displays. The whole day + // would be 4147200000 samples, so 2592000 samples per pixel. + + nfpp = min (fpp, (framecnt_t) 2592000); + nfpp = max ((framecnt_t) 1, fpp); new_page_size = (framepos_t) floor (_visible_canvas_width * nfpp); half_page_size = new_page_size / 2; @@ -1660,7 +1662,7 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame) double range_before = frame - leftmost_frame; double new_fpp; - new_fpp = frames_per_pixel; + new_fpp = samples_per_pixel; if (coarser) { new_fpp *= 1.61803399; @@ -1670,7 +1672,7 @@ Editor::temporal_zoom_to_frame (bool coarser, framepos_t frame) range_before /= 1.61803399; } - if (new_fpp == frames_per_pixel) { + if (new_fpp == samples_per_pixel) { return; } @@ -1964,22 +1966,19 @@ Editor::unhide_ranges () void Editor::insert_region_list_drag (boost::shared_ptr region, int x, int y) { - double wx, wy; double cx, cy; framepos_t where; RouteTimeAxisView *rtv = 0; boost::shared_ptr playlist; - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - GdkEvent event; event.type = GDK_BUTTON_RELEASE; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; - where = event_frame (&event, &cx, &cy); + where = window_event_frame (&event, &cx, &cy); - if (where < leftmost_frame || where > leftmost_frame + current_page_frames()) { + if (where < leftmost_frame || where > leftmost_frame + current_page_samples()) { /* clearly outside canvas area */ return; } @@ -2009,19 +2008,16 @@ Editor::insert_region_list_drag (boost::shared_ptr region, int x, int y) void Editor::insert_route_list_drag (boost::shared_ptr route, int x, int y) { - double wx, wy; double cx, cy; RouteTimeAxisView *dest_rtv = 0; RouteTimeAxisView *source_rtv = 0; - _track_canvas_viewport->window_to_canvas (x, y, wx, wy); - GdkEvent event; event.type = GDK_BUTTON_RELEASE; - event.button.x = wx; - event.button.y = wy; + event.button.x = x; + event.button.y = y; - event_frame (&event, &cx, &cy); + window_event_frame (&event, &cx, &cy); std::pair const tv = trackview_by_y_position (cy); if (tv.first == 0) { @@ -2108,7 +2104,7 @@ Editor::transition_to_rolling (bool fwd) if (_session->config.get_external_sync()) { switch (Config->get_sync_source()) { - case JACK: + case Engine: break; default: /* transport controlled by the master */ @@ -2383,7 +2379,6 @@ Editor::rename_region () d.add_button(Gtk::Stock::OK, Gtk::RESPONSE_OK); d.set_size_request (300, -1); - d.set_position (Gtk::WIN_POS_MOUSE); entry.set_text (rs.front()->region()->name()); entry.select_region (0, -1); @@ -3482,7 +3477,7 @@ Editor::freeze_route () /* wait for just a little while, because the above call is asynchronous */ - ::usleep (250000); + Glib::usleep (250000); if (clicked_routeview == 0 || !clicked_routeview->is_audio_track()) { return; @@ -4425,14 +4420,14 @@ Editor::reset_point_selection () void Editor::center_playhead () { - float const page = _visible_canvas_width * frames_per_pixel; + float const page = _visible_canvas_width * samples_per_pixel; center_screen_internal (playhead_cursor->current_frame (), page); } void Editor::center_edit_point () { - float const page = _visible_canvas_width * frames_per_pixel; + float const page = _visible_canvas_width * samples_per_pixel; center_screen_internal (get_preferred_edit_position(), page); } @@ -4713,7 +4708,7 @@ Editor::apply_midi_note_edit_op_to_region (MidiOperator& op, MidiRegionView& mrv vector::Notes> v; v.push_back (selected); - framepos_t pos_frames = mrv.midi_region()->position(); + framepos_t pos_frames = mrv.midi_region()->position() - mrv.midi_region()->start(); double pos_beats = _session->tempo_map().framewalk_to_beats(0, pos_frames); return op (mrv.midi_region()->model(), pos_beats, v); @@ -5052,7 +5047,6 @@ Editor::toggle_region_lock () _session->commit_reversible_command (); } -#ifdef WITH_VIDEOTIMELINE void Editor::toggle_region_video_lock () { @@ -5076,8 +5070,6 @@ Editor::toggle_region_video_lock () _session->commit_reversible_command (); } -#endif - void Editor::toggle_region_lock_style () @@ -5532,7 +5524,7 @@ Editor::split_region () struct EditorOrderRouteSorter { bool operator() (boost::shared_ptr a, boost::shared_ptr b) { - return a->order_key (EditorSort) < b->order_key (EditorSort); + return a->order_key () < b->order_key (); } }; @@ -6960,7 +6952,7 @@ Editor::uncombine_regions () void Editor::toggle_midi_input_active (bool flip_others) { - bool onoff; + bool onoff = false; boost::shared_ptr rl (new RouteList); for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {