- /* only update if the playhead is on screen or we are following it */
-
- if (_follow_playhead && _session->requested_return_frame() < 0) {
-
- //playhead_cursor->canvas_item.show();
-
- if (frame != last_update_frame) {
-
-
-#undef CONTINUOUS_SCROLL
-#ifndef CONTINUOUS_SCROLL
- if (frame < leftmost_frame || frame > leftmost_frame + current_page_frames()) {
-
- if (_session->transport_speed() < 0) {
- if (frame > (current_page_frames()/2)) {
- center_screen (frame-(current_page_frames()/2));
- } else {
- center_screen (current_page_frames()/2);
- }
- } else {
- center_screen (frame+(current_page_frames()/2));
- }
- }
-
- playhead_cursor->set_position (frame);
-
-#else // CONTINUOUS_SCROLL
-
- /* don't do continuous scroll till the new position is in the rightmost quarter of the
- editor canvas
- */
-
- if (_session->transport_speed()) {
- double target = ((double)frame - (double)current_page_frames()/2.0) / frames_per_unit;
- if (target <= 0.0) target = 0.0;
- if ( fabs(target - current) < current_page_frames()/frames_per_unit ) {
- target = (target * 0.15) + (current * 0.85);
- } else {
- /* relax */
- }
- //printf("frame: %d, cpf: %d, fpu: %6.6f, current: %6.6f, target : %6.6f\n", frame, current_page_frames(), frames_per_unit, current, target );
- current = target;
- horizontal_adjustment.set_value ( current );
- }
-
- playhead_cursor->set_position (frame);
-
-#endif // CONTINUOUS_SCROLL