diff --git a/gtk2_ardour/draginfo.h b/gtk2_ardour/draginfo.h index 8b13961532..c38c2aaa65 100644 --- a/gtk2_ardour/draginfo.h +++ b/gtk2_ardour/draginfo.h @@ -40,7 +40,7 @@ struct DragInfo { ItemType item_type; void* data; nframes_t last_frame_position; - int32_t pointer_frame_offset; + int64_t pointer_frame_offset; nframes_t grab_frame; nframes_t last_pointer_frame; nframes_t current_pointer_frame; diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index d38cf10bc9..8744659b58 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -1449,8 +1449,8 @@ Editor::motion_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item */ if (!drag_info.move_threshold_passed) { - bool x_threshold_passed = (abs ((int) (drag_info.current_pointer_x - drag_info.grab_x)) > 4); - bool y_threshold_passed = (abs ((int) (drag_info.current_pointer_y - drag_info.grab_y)) > 4); + bool x_threshold_passed = (abs ((int64_t) (drag_info.current_pointer_x - drag_info.grab_x)) > 4LL); + bool y_threshold_passed = (abs ((int64_t) (drag_info.current_pointer_y - drag_info.grab_y)) > 4LL); drag_info.move_threshold_passed = (x_threshold_passed || y_threshold_passed); @@ -1707,7 +1707,7 @@ Editor::fade_in_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) nframes_t pos; nframes_t fade_length; - if ((int32_t)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { pos = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { @@ -1752,7 +1752,7 @@ Editor::fade_in_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* even if (drag_info.first_move) return; - if ((int32_t)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { pos = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { pos = 0; @@ -1862,7 +1862,7 @@ Editor::fade_out_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* eve nframes_t pos; nframes_t fade_length; - if ((long)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { pos = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { @@ -1944,7 +1944,7 @@ Editor::cursor_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) Cursor* cursor = (Cursor *) drag_info.data; nframes_t adjusted_frame; - if ((long)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { adjusted_frame = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { @@ -2060,7 +2060,7 @@ Editor::marker_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) nframes_t newframe; - if (drag_info.pointer_frame_offset <= (long) drag_info.current_pointer_frame) { + if (drag_info.pointer_frame_offset <= drag_info.current_pointer_frame) { newframe = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { @@ -2241,7 +2241,7 @@ Editor::meter_marker_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* e MeterMarker* marker = (MeterMarker *) drag_info.data; nframes_t adjusted_frame; - if ((long)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { adjusted_frame = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { @@ -2372,7 +2372,7 @@ Editor::tempo_marker_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* e TempoMarker* marker = (TempoMarker *) drag_info.data; nframes_t adjusted_frame; - if ((long)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { adjusted_frame = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; } else { @@ -2988,14 +2988,14 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) if (drag_info.move_threshold_passed) { - if ((int32_t)drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { nframes_t sync_frame; nframes_t sync_offset; int32_t sync_dir; pending_region_position = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; - + sync_offset = rv->region()->sync_offset (sync_dir); sync_frame = rv->region()->adjust_to_sync (pending_region_position); @@ -3027,7 +3027,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) /* now compute the canvas unit distance we need to move the regiondrag_info.last_trackview->order to make it appear at the new location. */ - + if (pending_region_position > drag_info.last_frame_position) { x_delta = ((double) (pending_region_position - drag_info.last_frame_position) / frames_per_unit); } else { @@ -3179,7 +3179,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event) if (-x_delta > ix1) { x_delta = -ix1; } - } else if ((x_delta > 0) &&(rv->region()->last_frame() > max_frames - x_delta)) { + } else if ((x_delta > 0) && (rv->region()->last_frame() > max_frames - x_delta)) { x_delta = max_frames - rv->region()->last_frame(); } @@ -3802,10 +3802,9 @@ Editor::drag_selection (ArdourCanvas::Item* item, GdkEvent* event) nframes_t length; nframes_t pending_position; - if ((int32_t) drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { + if (drag_info.current_pointer_frame > drag_info.pointer_frame_offset) { pending_position = drag_info.current_pointer_frame - drag_info.pointer_frame_offset; - } - else { + } else { pending_position = 0; } diff --git a/libs/ardour/ardour/curve.h b/libs/ardour/ardour/curve.h index dd63439f08..5b725f4720 100644 --- a/libs/ardour/ardour/curve.h +++ b/libs/ardour/ardour/curve.h @@ -52,8 +52,8 @@ class Curve : public AutomationList Curve (const Curve& other, double start, double end); Curve (const XMLNode&); - bool rt_safe_get_vector (double x0, double x1, float *arg, int32_t veclen); - void get_vector (double x0, double x1, float *arg, int32_t veclen); + bool rt_safe_get_vector (double x0, double x1, float *arg, int64_t veclen); + void get_vector (double x0, double x1, float *arg, int64_t veclen); AutomationEventList::iterator closest_control_point_before (double xval); AutomationEventList::iterator closest_control_point_after (double xval); @@ -72,14 +72,14 @@ class Curve : public AutomationList double unlocked_eval (double where); double multipoint_eval (double x); - void _get_vector (double x0, double x1, float *arg, int32_t veclen); + void _get_vector (double x0, double x1, float *arg, int64_t veclen); }; } // namespace ARDOUR extern "C" { - void curve_get_vector_from_c (void *arg, double, double, float*, int32_t); + void curve_get_vector_from_c (void *arg, double, double, float*, int64_t); } #endif /* __ardour_curve_h__ */ diff --git a/libs/ardour/curve.cc b/libs/ardour/curve.cc index 5a1dc108f8..249d84642b 100644 --- a/libs/ardour/curve.cc +++ b/libs/ardour/curve.cc @@ -72,7 +72,7 @@ Curve::~Curve () void Curve::solve () { - uint32_t npoints; + uint64_t npoints; if (!_dirty) { return; @@ -87,7 +87,7 @@ Curve::solve () double x[npoints]; double y[npoints]; - uint32_t i; + uint64_t i; AutomationEventList::iterator xx; for (i = 0, xx = events.begin(); xx != events.end(); ++xx, ++i) { @@ -206,7 +206,7 @@ Curve::solve () } bool -Curve::rt_safe_get_vector (double x0, double x1, float *vec, int32_t veclen) +Curve::rt_safe_get_vector (double x0, double x1, float *vec, int64_t veclen) { Glib::Mutex::Lock lm (lock, Glib::TRY_LOCK); @@ -219,19 +219,19 @@ Curve::rt_safe_get_vector (double x0, double x1, float *vec, int32_t veclen) } void -Curve::get_vector (double x0, double x1, float *vec, int32_t veclen) +Curve::get_vector (double x0, double x1, float *vec, int64_t veclen) { Glib::Mutex::Lock lm (lock); _get_vector (x0, x1, vec, veclen); } void -Curve::_get_vector (double x0, double x1, float *vec, int32_t veclen) +Curve::_get_vector (double x0, double x1, float *vec, int64_t veclen) { double rx, dx, lx, hx, max_x, min_x; - int32_t i; - int32_t original_veclen; - int32_t npoints; + int64_t i; + int64_t original_veclen; + int64_t npoints; if ((npoints = events.size()) == 0) { for (i = 0; i < veclen; ++i) { @@ -262,7 +262,7 @@ Curve::_get_vector (double x0, double x1, float *vec, int32_t veclen) */ double frac = (min_x - x0) / (x1 - x0); - int32_t subveclen = (int32_t) floor (veclen * frac); + int64_t subveclen = (int64_t) floor (veclen * frac); subveclen = min (subveclen, veclen); @@ -280,7 +280,7 @@ Curve::_get_vector (double x0, double x1, float *vec, int32_t veclen) double frac = (x1 - max_x) / (x1 - x0); - int32_t subveclen = (int32_t) floor (original_veclen * frac); + int64_t subveclen = (int64_t) floor (original_veclen * frac); float val; @@ -437,7 +437,7 @@ Curve::point_factory (const ControlEvent& other) const extern "C" { void -curve_get_vector_from_c (void *arg, double x0, double x1, float* vec, int32_t vecsize) +curve_get_vector_from_c (void *arg, double x0, double x1, float* vec, int64_t vecsize) { static_cast(arg)->get_vector (x0, x1, vec, vecsize); } diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index ad3077d9a0..3f9fa2737f 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -1675,20 +1675,25 @@ Route::_set_state (const XMLNode& node, bool call_base) } } - XMLNodeList redirect_nodes; - - for (niter = nlist.begin(); niter != nlist.end(); ++niter){ + if (ports_legal) { - child = *niter; + /* if ports are not legal, this will happen in set_deferred_state() */ + + XMLNodeList redirect_nodes; + + for (niter = nlist.begin(); niter != nlist.end(); ++niter){ + + child = *niter; + + if (child->name() == X_("Send") || child->name() == X_("Insert")) { + redirect_nodes.push_back(child); + } - if (child->name() == X_("Send") || child->name() == X_("Insert")) { - redirect_nodes.push_back(child); } - + + _set_redirect_states (redirect_nodes); } - _set_redirect_states(redirect_nodes); - for (niter = nlist.begin(); niter != nlist.end(); ++niter){ child = *niter; @@ -1814,7 +1819,7 @@ Route::_set_redirect_states(const XMLNodeList &nlist) --last; if (prev_last == last) { - cerr << "Could not fully restore state as some redirects were not possible to create" << endl; + warning << _name << ": could not fully restore state as some redirects were not possible to create" << endmsg; continue; }