Kazunobu Kuriyama wrote:

> With the current GTK implementation, the more frequently gui_mch_flush() is
> called, the more slowly the drawing gets done.
> 
> This is because of use of gdk_display_sync() in gui_mch_flush().
> 
> The function won't return until the X11 server acts on and finishes all the
> requests that were flushed from a client when it was called.
> 
> That's why frequent use of gui_mch_flush() results in that slowness,
> contrary to expectations.
> 
> Furthermore, the implementation calls gdk_window_process_updates() after
> calling gdk_display_sync().
> 
> Basically, gdk_window_process_updates() asks the server to send an expose
> event back to the window for giving it a chance to redraw the contents for
> update.
> 
> But just after calling gdk_display_sync(), there is nothing left in the
> request queue for a window to be updated.  Hence the call is of no use and
> unnecessary (rather, it could be harmful in performance if a GUI toolkit in
> use synthesizes events for optimization).
> 
> The proposed patch attached below is to address these issues.
> 
> With the patch, commands such as K in normal mode, :make, :version and
> :highlight get as fast as  Athena's, and the slowness that was pointed out
> in GitHub Issue #681 is drastically improved (I'd like to call it
> practically fixed).
> 
> That said, in spite of those flaws mentioned above, the current
> implementation has been sitting there for years (perhaps, more than a
> decade.  It looks use of a sync function dates back to the very early days
> of GTK GUI...) , and as far as I know, no one has called for or proposed
> improvement so far.  They really make me wonder.   If someone knows why
> gui_mch_flush() was written in such an unusual way, please enlighten me.
> I'd definitely appreciate it if you would.
> 
> As a side note, it looks the patch helps to address Ramel Eshed's GUI
> cursor drawing issue, though the patch itself was not written for that
> purpose (it was actually written  as part of a GTK code brush-up).

Thanks.  Some of this code may date back to the first GTK
implementation.  And since it doesn't cause actual trouble, it may just
have gone unnoticed.


-- 
ARTHUR: Right! Knights! Forward!
   ARTHUR leads a charge toward the castle.  Various shots of them battling on,
   despite being hit by a variety of farm animals.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui