[Bug 50351] New: Slow text rendering in dofus linked to fnIMLangFontLink2_GetCharCodePages calling WideCharToMultiByte with CP_UNICODE

WineHQ Bugzilla wine-bugs at winehq.org
Thu Dec 17 17:08:27 CST 2020


https://bugs.winehq.org/show_bug.cgi?id=50351

            Bug ID: 50351
           Summary: Slow text rendering in dofus linked to
                    fnIMLangFontLink2_GetCharCodePages calling
                    WideCharToMultiByte with CP_UNICODE
           Product: Wine
           Version: 6.0-rc2
          Hardware: x86-64
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: mlang
          Assignee: wine-bugs at winehq.org
          Reporter: eijebong+wine at bananium.fr
      Distribution: ---

Created attachment 68941
  --> https://bugs.winehq.org/attachment.cgi?id=68941
Patch that fixes the text rendering slowness (probably wrong)

Dofus is very slow to render text and changing communication channels can hang
the game for a few seconds.

Profiling shows that it's spending lots of time opening files.
Tracing shows it's trying to open c_1200.nls a *lot*. That file doesn't exist.

Discussion on IRC:

```
22:45:27 nsivov> so that comes from mlang
22:45:47 gofman> mind umbstowcs and friends... what if it really ends up
searchign / opening locale file each time due to some reason (which can be
fixed)
22:46:37 gofman> or maybe it doesn't find some locale and tries again on each
character
22:48:07 zf> no such code page on Windows either
22:48:33 zf> we should probably cache failed attempts there
22:48:45 nsivov> in mlang it goes 1 char at a time * mlang_data size
22:49:30 gofman> cache missing is strange, but maybe some cached list of which
locale exist is possible

[...]

22:55:15 julliard> that's an mlang bug, CP_UNICODE is not a real codepage
22:57:01 nsivov> yes, for that particular loop it should be excluded

[...]

23:38:04 zf> just judging from the diagnosis above, it seems like
fnIMLangFontLink2_GetCharCodePages() is using CP_UNICODE in
WideCharToMultiByte() when it shouldn't
```

The attached diff fixes the slowness but is probably not correct and I
certainly don't understand enough about the cause to either write a meaningful
commit message or a test.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list