Ejemplo n.º 1
0
void
scrolling_1 (struct frame *frame, int window_size, int unchanged_at_top,
	     int unchanged_at_bottom, int *draw_cost, int *old_draw_cost,
	     unsigned *old_hash, unsigned *new_hash, int free_at_end)
{
  USE_SAFE_ALLOCA;
  struct matrix_elt *matrix;
  SAFE_NALLOCA (matrix, window_size + 1, window_size + 1);

  if (FRAME_SCROLL_REGION_OK (frame))
    {
      calculate_direct_scrolling (frame, matrix, window_size,
				  unchanged_at_bottom,
				  draw_cost, old_draw_cost,
				  old_hash, new_hash, free_at_end);
      do_direct_scrolling (frame, frame->current_matrix,
			   matrix, window_size, unchanged_at_top);
    }
  else
    {
      calculate_scrolling (frame, matrix, window_size, unchanged_at_bottom,
			   draw_cost, old_hash, new_hash,
			   free_at_end);
      do_scrolling (frame,
                    frame->current_matrix, matrix, window_size,
		    unchanged_at_top);
    }

  SAFE_FREE ();
}
Ejemplo n.º 2
0
void
scrolling_1 (struct frame *frame, int window_size, int unchanged_at_top,
	     int unchanged_at_bottom, int *draw_cost, int *old_draw_cost,
	     int *old_hash, int *new_hash, int free_at_end)
{
  struct matrix_elt *matrix
    = alloca ((window_size + 1) * (window_size + 1) * sizeof *matrix);

  if (FRAME_SCROLL_REGION_OK (frame))
    {
      calculate_direct_scrolling (frame, matrix, window_size,
				  unchanged_at_bottom,
				  draw_cost, old_draw_cost,
				  old_hash, new_hash, free_at_end);
      do_direct_scrolling (frame, frame->current_matrix,
			   matrix, window_size, unchanged_at_top);
    }
  else
    {
      calculate_scrolling (frame, matrix, window_size, unchanged_at_bottom,
			   draw_cost, old_hash, new_hash,
			   free_at_end);
      do_scrolling (frame,
                    frame->current_matrix, matrix, window_size,
		    unchanged_at_top);
    }
}