On 30 August 2013 17:09, Michael Müller <michael(a)fds-team.de> wrote:
> +static HRESULT WINAPI d3d9_swapchain_GetLastPresentCount(IDirect3DSwapChain9Ex *iface,
> + UINT *pLastPresentCount)
> +{
> + FIXME("iface %p, pLastPresentCount %p, stub!\n", iface, pLastPresentCount);
> +
> + if(pLastPresentCount)
> + *pLastPresentCount = 0;
> +
> + return D3D_OK;
> +}
Please use the same style as the rest of the code. E.g., "if
(last_present_count)".
> +static HRESULT WINAPI d3d9_swapchain_GetDisplayModeEx(IDirect3DSwapChain9Ex *iface,
> + D3DDISPLAYMODEEX *pMode, D3DDISPLAYROTATION *pRotation)
> +{
> + struct d3d9_swapchain *swapchain = impl_from_IDirect3DSwapChain9Ex(iface);
> + struct wined3d_display_mode wined3d_mode;
> + enum wined3d_display_rotation wined3d_rotation;
> + HRESULT hr;
> +
> + TRACE("iface %p, pMode %p, pRotation %p.\n", iface, pMode, pRotation);
> +
> + wined3d_mutex_lock();
> + hr = wined3d_swapchain_get_display_mode(swapchain->wined3d_swapchain, &wined3d_mode, &wined3d_rotation);
> + wined3d_mutex_unlock();
> +
> + if (SUCCEEDED(hr))
> + {
> + if(pMode)
> + {
> + pMode->Size = sizeof(D3DDISPLAYMODEEX);
> + pMode->Width = wined3d_mode.width;
> + pMode->Height = wined3d_mode.height;
> + pMode->RefreshRate = wined3d_mode.refresh_rate;
> + pMode->Format = d3dformat_from_wined3dformat(wined3d_mode.format_id);
> + pMode->ScanLineOrdering = wined3d_mode.scanline_ordering;
> + }
> +
> + if(pRotation)
> + *pRotation = wined3d_rotation;
> +
> + }
> +
> + return hr;
> +}
This is different from d3d9_GetAdapterDisplayModeEx(). The way you
handle "pMode->Size" looks suspicious, while the NULL checks on
"pMode" and "pRotation" may make sense. Please add tests to show this
is correct. (See also test_get_adapter_displaymode_ex(), although that
test has some room for improvement itself.)