http://bugs.winehq.org/show_bug.cgi?id=30614
Bug #: 30614 Summary: Builtin richedit extremely slow at appending text when window is hidden Product: Wine Version: 1.5.2 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: richedit AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com Classification: Unclassified
While looking into bug 30593, I discovered that hidden richedit controls were way slower than visible ones at appending text. Running the attached test program with perf record wine hidden_richedit.exe perf report showed some time in ME_InvalidateMarkedParagraphs. +relay showed that function calling InvalidateRect many, many times. Adding a trace showed that most of the calls were redundant, and covered increasingly offscreen regions. Native riched20 works around the problem.
The attached kludge patch skips the offscreen InvalidateRects, and makes the test program run in a reasonable amount of time with builtin riched20. (Not quite as fast as native riched20, but tolerable.)
http://bugs.winehq.org/show_bug.cgi?id=30614
--- Comment #1 from Dan Kegel dank@kegel.com 2012-05-06 21:06:52 CDT --- Created attachment 40067 --> http://bugs.winehq.org/attachment.cgi?id=40067 Test program
http://bugs.winehq.org/show_bug.cgi?id=30614
--- Comment #2 from Dan Kegel dank@kegel.com 2012-05-06 21:07:43 CDT --- Created attachment 40068 --> http://bugs.winehq.org/attachment.cgi?id=40068 Patch to avoid calling InvalidateRect with offscreen lines
http://bugs.winehq.org/show_bug.cgi?id=30614
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, patch, testcase
http://bugs.winehq.org/show_bug.cgi?id=30614
Dylan Smith dylan.ah.smith@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED CC| |dylan.ah.smith@gmail.com
--- Comment #3 from Dylan Smith dylan.ah.smith@gmail.com 2012-05-07 21:18:02 CDT --- I submitted this patch submitted to wine-patches that I found fixes this bug: http://www.winehq.org/pipermail/wine-patches/2012-May/113990.html
Thanks Dan Kegel for noticing that the repaint flags weren't getting cleared in this case.
http://bugs.winehq.org/show_bug.cgi?id=30614
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |18fa3287f647ea1e123641ee044 | |47a7132c6a7c0 Status|ASSIGNED |RESOLVED Resolution| |FIXED
--- Comment #4 from Austin English austinenglish@gmail.com 2012-05-08 16:22:23 CDT --- (In reply to comment #3)
I submitted this patch submitted to wine-patches that I found fixes this bug: http://www.winehq.org/pipermail/wine-patches/2012-May/113990.html
Thanks Dan Kegel for noticing that the repaint flags weren't getting cleared in this case.
http://source.winehq.org/git/wine.git/commitdiff/18fa3287f647ea1e123641ee044...
http://bugs.winehq.org/show_bug.cgi?id=30614
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Alexandre Julliard julliard@winehq.org 2012-05-11 13:21:45 CDT --- Closing bugs fixed in 1.5.4.
http://bugs.winehq.org/show_bug.cgi?id=30614
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |1.4.x
http://bugs.winehq.org/show_bug.cgi?id=30614
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|1.4.x |---