On 21/02/07, Pavel Troller patrol@sinus.cz wrote:
I'm a bit confusd because I failed to find the code for D3DCB_CreateAdditionalSwapChain(), I found only its call in device.c and its definition in wined3d_interface.h.
That's D3D7CB_CreateAdditionalSwapChain() in dlls/ddraw/ddraw.c
Hi! OK, thanks, found it now. I've modified its code by inserting many traces:
{ ICOM_THIS_FROM(IDirectDrawImpl, IDirectDraw7, device); IParentImpl *object = NULL; HRESULT res = D3D_OK; IWineD3DSwapChain *swapchain; TRACE("(%p) call back\n", device); TRACE("$$$$ 2672\n"); object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IParentImpl)); TRACE("$$$$ 2674\n"); if (NULL == object) { FIXME("Allocation of memory failed\n"); *ppSwapChain = NULL; return DDERR_OUTOFVIDEOMEMORY; } TRACE("$$$$ 2681\n"); ICOM_INIT_INTERFACE(object, IParent, IParent_Vtbl); TRACE("$$$$ 2683\n"); object->ref = 1;
res = IWineD3DDevice_CreateAdditionalSwapChain(This->wineD3DDevice, pPresentationParameters, &swapchain, (IUnknown*) ICOM_INTERFACE(object, IParent), D3D7CB_CreateRenderTarget, D3D7CB_CreateDepthStencilSurface); TRACE("$$$$ 2692\n"); if (res != D3D_OK) { FIXME("(%p) call to IWineD3DDevice_CreateAdditionalSwapChain failed\n", This); HeapFree(GetProcessHeap(), 0 , object); *ppSwapChain = NULL; } else { TRACE("2701\n"); *ppSwapChain = swapchain; object->child = (IUnknown *) swapchain; } TRACE("$$$$ Returning\n"); return res; }
The last trace which appeared in the log is 2683, so IWineD3DDevice_CreateAdditionalSwapChain() didn't return. I'm going bananas from those names; where the hell this one grows :-) ? grep, as obvious, shows its calls only. With regards, Pavel Troller