http://bugs.winehq.org/show_bug.cgi?id=25733
Summary: Magic the Gathering: DotP is really slow loading a match Product: Wine Version: 1.3.11 Platform: x86 OS/Version: Mac OS X 10.6 Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: per@morth.org
When Magic the Gathering: Duels of the Plainswalker starts a match, it does a _lot_ of these calls:
trace:file:FindFirstFileExW L"DATA_DLC_0003\DATA_PC\DATA_SHARED\ART_ASSETS\MODELS\CARD\ART_ASSETS\TEXTURES\PTBOX_FULL.IMG" 0 0x33bb60 0 0x0 0 trace:file:RtlDosPathNameToNtPathName_U (L"DATA_DLC_0003\DATA_PC\DATA_SHARED\ART_ASSETS\MODELS\CARD\ART_ASSETS\TEXTURES\PTBOX_FULL.IMG",0x33baf4,0x33bafc,0x0) trace:file:RtlGetFullPathName_U (L"DATA_DLC_0003\DATA_PC\DATA_SHARED\ART_ASSETS\MODELS\CARD\ART_ASSETS\TEXTURES\PTBOX_FULL.IMG" 520 0x33b818 0x33bafc) trace:file:wine_nt_to_unix_file_name L"\program files\steam\steamapps\common\magic the gathering - duels of the planeswalkers\DATA_DLC_0003\DATA_PC\DATA_SHARED\ART_ASSETS\MODELS\CARD\ART_ASSETS\TEXTURES\" not found in /Users/pelle/.wine/dosdevices/c:/program files/steam/steamapps/common/magic the gathering - duels of the planeswalkers
I estimated it to around 290k calls for one match using wc. Of these over 95 % fail like the one above, while a few do find the requested file. This makes the match take several minutes to load in wine. I don't have any windows machine but I assume it's much much faster there.
Something should be done to speed this up. I was thinking maybe a cache, but ofc it's difficult to cache when the file system might change under your feet. Ideas appreciated.
http://bugs.winehq.org/show_bug.cgi?id=25733
--- Comment #1 from Per Johansson per@morth.org 2011-01-08 18:09:12 CST --- This simple diff helps quite a bit, bringing it down from about 3 minutes to under one minute. It only works since I'm using a case insensitive native filesystem, obviously.
diff --git a/dlls/ntdll/directory.c b/dlls/ntdll/directory.c index 711a0b0..50b3c54 100644 --- a/dlls/ntdll/directory.c +++ b/dlls/ntdll/directory.c @@ -1824,6 +1824,7 @@ static NTSTATUS find_file_in_dir( char *unix_name, int pos, const WCHAR *name, i if (is_win_dir) *is_win_dir = is_same_file( &windir, &st ); return STATUS_SUCCESS; } + goto not_found; } if (check_case) goto not_found; /* we want an exact match */
http://bugs.winehq.org/show_bug.cgi?id=25733
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- OS/Version|Mac OS X 10.6 |Mac OS X
http://bugs.winehq.org/show_bug.cgi?id=25733
Per Johansson per@morth.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |ABANDONED
--- Comment #2 from Per Johansson per@morth.org 2011-10-10 01:42:52 CDT --- Not playing this game anymore. Probably wasn't a bug in wine anyway.
http://bugs.winehq.org/show_bug.cgi?id=25733
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #3 from Austin English austinenglish@gmail.com 2011-10-17 16:06:41 CDT --- Closing.