http://bugs.winehq.org/show_bug.cgi?id=33341
Michael Cronenworth mike@cchtml.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |mike@cchtml.com
--- Comment #3 from Michael Cronenworth mike@cchtml.com 2013-04-14 00:30:15 CDT --- Planetside 2 now calls IDirect3DDevice9::Reset() before loading the main game, and I guess it didn't do this before this last patch. It's also the function being called when you change graphic settings.
When Reset() is called, Wine detects that resources have not yet been free'd so it refuses to Reset(). Planetside 2 doesn't handle this well and crashes.
Debug log: warn:d3d9:reset_enum_callback Surface 0xc418420 (resource 0x155e8100) is an implicit resource with ref 0. warn:d3d9:reset_enum_callback Resource 0x154c77a8 in pool D3DPOOL_DEFAULT blocks the Reset call. [repeated 12 times, then PS2 crashes]
If I comment out the resource checks and let it return D3D_OK, Planetside 2 loads and I can play the main game, but I'm not a Direct3D expert so I'm not sure if this leaks resources and we should call a free() of some kind. I can also change graphic settings (including render quality) without the game crashing.
P.S. D3DERR_INVALIDCALL is returned, but this is not a valid return type according to MSDN. I tried a few of the valid types but PS2 still crashes. It won't work unless it sees D3D_OK. I've seen Windows users complain about this same type of crash, but it must not happen enough for Sony to put programmers on it to fix it.