Re: [PATCH 1/6] ddraw: Add validation to SetPriority / GetPriority.
On 15 July 2014 16:47, Stefan Dösinger <stefan(a)codeweavers.com> wrote:
-static HRESULT WINAPI ddraw_surface7_SetPriority(IDirectDrawSurface7 *iface, DWORD Priority) +static HRESULT WINAPI ddraw_surface7_SetPriority(IDirectDrawSurface7 *iface, DWORD priority) { struct ddraw_surface *surface = impl_from_IDirectDrawSurface7(iface); + DWORD managed = DDSCAPS2_TEXTUREMANAGE | DDSCAPS2_D3DTEXTUREMANAGE; HRESULT hr;
- TRACE("iface %p, priority %u.\n", iface, Priority); + TRACE("iface %p, priority %u.\n", iface, priority);
wined3d_mutex_lock(); - hr = wined3d_surface_set_priority(surface->wined3d_surface, Priority); + /* No need to check for offscreen plain surfaces or mipmap sublevels. SetPriority + * calls on such surfaces segfault on Windows. */ + if (!(surface->surface_desc.ddsCaps.dwCaps2 & managed)) + { + WARN("Called on non-managed texture returning DDERR_INVALIDPARAMS.\n"); + hr = DDERR_INVALIDPARAMS; + } + else + hr = wined3d_surface_set_priority(surface->wined3d_surface, priority); wined3d_mutex_unlock();
return hr; } The existing code already had this of course, but note that wined3d_surface_set_priority() returns the previous priority.
participants (1)
-
Henri Verbeet