Henri Verbeet hverbeet@codeweavers.com writes:
They're mostly the same, except for the GL version also destroying its contexts, and being a bit more careful about the order in which backbuffers are destroyed.
dlls/wined3d/swapchain.c | 175 ++++++++++++++++----------------------------- 1 files changed, 62 insertions(+), 113 deletions(-)
It doesn't work here:
../../../tools/runtest -q -P wine -M ddraw.dll -T ../../.. -p ddraw_test.exe.so ddrawmodes.c && touch ddrawmodes.ok wine: Unhandled page fault on read access to 0x00000f2c at address 0x687550fa (thread 0021), starting debugger... Unhandled exception: page fault on read access to 0x00000f2c in 32-bit code (0x687550fa). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:687550fa ESP:0032f910 EBP:0032f948 EFLAGS:00010246( R- -- I Z- -P- ) EAX:00000021 EBX:6884b244 ECX:00110064 EDX:00000000 ESI:00000000 EDI:00000001 Stack dump: 0x0032f910: 00001302 00131ef0 00000000 00000000 0x0032f920: 00000000 00000000 00000000 00110014 0x0032f930: 0000ff00 000000ff 687550db 6884b244 0x0032f940: 00131848 00000001 0032f9a8 6880052b 0x0032f950: 00134d58 00000000 00131ef0 7bc73cfc 0x0032f960: 00000002 00129f28 00000000 000004b0 Backtrace: =>0 0x687550fa context_destroy+0x2a(This=0x134d58, context=(nil)) [/home/julliard/wine/wine/dlls/wined3d/context.c:1615] in wined3d (0x0032f948) 1 0x6880052b IWineD3DBaseSwapChainImpl_Destroy+0x18a(iface=0x131848) [/home/julliard/wine/wine/dlls/wined3d/swapchain.c:65] in wined3d (0x0032f9a8) 2 0x688006a1 IWineD3DBaseSwapChainImpl_Release+0x40(iface=0x131848) [/home/julliard/wine/wine/dlls/wined3d/swapchain.c:125] in wined3d (0x0032f9e8) 3 0x686d25b9 D3D7CB_DestroySwapChain+0x58(swapchain=0x131848) [/home/julliard/wine/wine/dlls/ddraw/ddraw.c:2621] in ddraw (0x0032fa18) 4 0x6875d317 IWineD3DDeviceImpl_UninitGDI+0x66(iface=0x134d58, D3DCB_DestroySwapChain=0x686d2560) [/home/julliard/wine/wine/dlls/wined3d/device.c:2300] in wined3d (0x0032fa78) 5 0x686f8f6e ddraw_surface7_Release+0x1cd(iface=0x129f28) [/home/julliard/wine/wine/dlls/ddraw/surface.c:396] in ddraw (0x0032fad8) 6 0x68689c21 func_ddrawmodes+0x2720() [/home/julliard/wine/wine/dlls/ddraw/tests/ddrawmodes.c:583] in ddraw_test (0x0032fd38) 7 0x686adc9e run_test+0x14d(name="ddrawmodes.c") [/home/julliard/wine/wine/dlls/ddraw/tests/../../../include/wine/test.h:556] in ddraw_test (0x0032fd88) 8 0x686ae767 main+0x156(argc=0xffffffff, argv=(nil)) [/home/julliard/wine/wine/dlls/ddraw/tests/../../../include/wine/test.h:624] in ddraw_test (0x0032fe48) 9 0x686ae93c __wine_spec_exe_entry+0x7b(peb=0x7ffdf000) [/home/julliard/wine/wine/dlls/winecrt0/exe_entry.c:36] in ddraw_test (0x0032fe90) 10 0x7b859a6c call_process_entry+0xb() in kernel32 (0x0032fea8) 11 0x7b85a69f start_process+0x5e(peb=0x7ffdf000) [/home/julliard/wine/wine/dlls/kernel32/process.c:1086] in kernel32 (0x0032fee8) 12 0x7bc74c78 call_thread_func+0xb() in ntdll (0x0032fef8) 13 0x7bc776b0 call_thread_entry_point+0x6f(entry=0x7b85a640, arg=0x7ffdf000) [/home/julliard/wine/wine/dlls/ntdll/signal_i386.c:2499] in ntdll (0x0032ffc8) 14 0x7bc4d27a start_process+0x29(kernel_start=0x7b85a640) [/home/julliard/wine/wine/dlls/ntdll/loader.c:2606] in ntdll (0x0032ffe8) 15 0x6802996d wine_call_on_stack+0x1c() in libwine.so.1 (0x00000000) 0x687550fa context_destroy+0x2a [/home/julliard/wine/wine/dlls/wined3d/context.c:1615] in wined3d: cmpl %eax,0xf2c(%esi) 1615 if (context->tid == GetCurrentThreadId() || !context->current)
On 8 April 2011 14:08, Alexandre Julliard julliard@winehq.org wrote:
=>0 0x687550fa context_destroy+0x2a(This=0x134d58, context=(nil)) [/home/julliard/wine/wine/dlls/wined3d/context.c:1615] in wined3d (0x0032f948) 1 0x6880052b IWineD3DBaseSwapChainImpl_Destroy+0x18a(iface=0x131848) [/home/julliard/wine/wine/dlls/wined3d/swapchain.c:65] in wined3d (0x0032f9a8)
Applying the attached patch anywhere before 4 should help. Would you like a new series?