I changed:

hr = This->shader_backend->shader_alloc_private(iface);

To the following:

FIXME("BEFORE, hr: 0x%08x\n", hr);
hr = This->shader_backend->shader_alloc_private(iface);
FIXME("AFTER, hr: 0x%08x\n", hr);

...and then I ran everquest2.exe again, alt+enter to full screen...

fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
fixme:d3d_shader:shader_glsl_free FREE SHADER
fixme:d3d:IWineD3DDeviceImpl_Reset BEFORE, hr: 0x00000000
fixme:d3d:IWineD3DDeviceImpl_Reset AFTER, hr: 0x00000000
fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
fixme:d3d_shader:shader_glsl_free FREE SHADER
fixme:d3d:IWineD3DDeviceImpl_Reset BEFORE, hr: 0x00000000
fixme:d3d:IWineD3DDeviceImpl_Reset AFTER, hr: 0x00000000
fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
fixme:d3d_shader:shader_glsl_free FREE SHADER
fixme:d3d9:IDirect3DDevice9Impl_Reset RESET DEVICE
fixme:d3d_shader:shader_glsl_free FREE SHADER
wine: Unhandled page fault on read access to 0x00000008 at address 0x7e44abcc (thread 0009), starting debugger...

The last two seem interesting where they don't reach shader_alloc_private() portion of the code, could this maybe be part of the problem?


On Mon, Jul 21, 2008 at 1:39 PM, H. Verbeet <hverbeet@gmail.com> wrote:
2008/7/21 Stefan Dösinger <stefan@codeweavers.com>:
> Is the shader backend recreated properly after the reset?
>
Just to clarify, in dlls/wined3d/device.c, IWineD3DDeviceImpl_Reset(),
line 7355 there's a call to shader_alloc_private(). This call is
supposed to recreate This->shader_priv.