[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