http://bugs.winehq.org/show_bug.cgi?id=31550
Bug #: 31550 Summary: Patrizier 2 Gold crashes in wined3d_device_set_render_target Product: Wine Version: 1.5.11 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-d3d AssignedTo: wine-bugs@winehq.org ReportedBy: j.wielicki@sotecware.net Classification: Unclassified Regression SHA1: befdbbd90f3be5e044d11be8af049410e7628f00
Created attachment 41491 --> http://bugs.winehq.org/attachment.cgi?id=41491 quickfix which worksforme
I revived that old game a few days ago, just to find that it crashes during startup in wine. Other OpenGL/DirectX games run fine though. I bisected wine between 1.3.2 and 1.5.8 to find
commit befdbbd90f3be5e044d11be8af049410e7628f00 Author: Henri Verbeet hverbeet@codeweavers.com Date: Mon Jun 18 17:19:39 2012 +0200
wined3d: Reset render target bindings in wined3d_device_reset().
to be the first bad commit according to git. The crash occurs in wined3d_device_set_render_target, which is called by wined3d_device_reset, when attempting to access device->fb.render_targets, which is a nil value at that time.
My hotfix is to check for device->fb.render_targets be-ing non-NULL before calling wined3d_device_set_render_target from wined3d_device_reset. Appearantly it is perfectly fine to leave these calls out, as they were added by the bad commit which introduced the regression.
A quick test through my <del>games</del><ins>hardware accellerated graphics test applications</ins> makes it appear that this patch doesn't break anything.
The patch is made against the current master.