[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gEDA-dev: Zooming while moving/copying
[snip]
> Patrick, regarding your comment about checking if w_current->DONT_REDRAW is 1 before calling the
> redraw function, see the gschem and libgeda changelog, and take a look into o_basic.c, function
> o_redraw_all:
> case(ENDCOPY):
> case(ENDMCOPY):
> case(DRAWCOMP):
> case(ENDCOMP):
> /* Call the o_draw_list without redrawing, so the components */
> /* coordinates get recalculated */
> redraw_state = w_current->DONT_REDRAW;
> w_current->DONT_REDRAW = 1;
> o_draw_list(w_current, w_current->page_current->complex_place_list);
> w_current->DONT_REDRAW = redraw_state;
> o_drawbounding(w_current,
> NULL,
> w_current->page_current->complex_place_list,
> x_get_darkcolor(w_current->bb_color), FALSE);
> break;
> o_draw_list doesn't perform any draw operation because DONT_REDRAW is 1. However, if I remove
> that call, the object is not displayed properly (when zooming while moving or copying).
> I'm not too happy with this, but it is the way I found to make it work. Do you have an idea?
Personally, I'd like to see the complete removal of cached screen coords
unless it is deemed absolutely necessary. I did a brief (huge patch)
test of this some months back, and discovered that at least for zooming
(and possibly panning?) a large schematic, the speedup is noticable by
_removing_ the caching. (Since a lot of recalculation is done at each
zoom).
Removing cached screen coords (at least in their present form) is
necessary to implement multiple views on a single open page. If
necessary, perhaps it could be implemented in a more abstracted fashion,
with cached coordinates saved per view, and invalidated / updated as
necessary, rather than en-masse.
The drawing code is much simplified by the removal of the cached coords,
and whilst there are only a few minor redraw bugs in gschem at the
moment, I suspect it will be easier to get _zero_ redraw bugs without
the extra complexity of the recalculation system at present.
Regards
--
Peter Clifton
Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA
Tel: +44 (0)7729 980173
_______________________________________________
geda-dev mailing list
geda-dev@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev