[Geany-Devel] Geany performance
Pavel Roschin
rpg89 at xxxxx
Sun Sep 29 09:45:22 UTC 2013
Shouldn't updateUI called only for _visible_ documents? Anyway it will when you
click on tab and change document.
Considering problem more deeper - actually bottleneck function is
SCI_ENSUREVISIBLE, not exactly sci_goto_pos. Ok, there are many things to
thinking about.
> On 29 September 2013 18:47, Pavel Roschin <rpg89 at post.ru> wrote:
>
> > > It is. If I understand correctly the original reason for this is because
> > > when you set the scintilla buffer (at least as it goes currently), it
> > > pushes the cursor to the end of the inserted text, and so it needs to be
> > > pushed back to the start by default (if no other position is stored or
> > > specified). Please excuse if I'm mistaken here.
> >
> > Geany with my patch behaves normally without unnecessary goto_pos. But
> > today
> > I added more clear-looking patch that skips goto-ing if pos == current_pos.
> > Isn't? Try, it will take 2 minutes:
> >
> > void sci_goto_pos(ScintillaObject *sci, gint pos, gboolean unfold)
> > {
> > if (unfold) SSM(sci, SCI_ENSUREVISIBLE, (uptr_t) SSM(sci,
> > SCI_LINEFROMPOSITION, (uptr_t) pos, 0), 0);
> > /* Do not goto if we are already here */
> > if(pos == sci_get_current_position(sci)) return;
> > SSM(sci, SCI_GOTOPOS, (uptr_t) pos, 0);
> > }
> >
>
> The problem with this is that by not calling the SSM(sci, SCI_GOTOPOS,
> (uptr_t) pos, 0); you don't schedule an updateUI and you then don't get the
> associated notifications. I don't know what impacts that might have,
> especially as plugins can depend on those notifications.
>
> I would be *very* wary changing the semantics of such low level functions
> without great care, checking where they are used and all the side effects,
> such as the notification callbacks.
>
> Cheers
> Lex
>
>
> >
> > --
> > Best regards,
> > Pavel Roschin aka RPG
> > _______________________________________________
> > Devel mailing list
> > Devel at lists.geany.org
> > https://lists.geany.org/cgi-bin/mailman/listinfo/devel
> >
--
Best regards,
Pavel Roschin aka RPG
More information about the Devel
mailing list