st/nine: Assert on buffer creation failure

Add an assert to make sure buffer creation doesn't fail.
Add error handling in calling functions.

Signed-off-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
Patrick Rudolph 2016-09-24 10:46:27 +02:00 committed by Axel Davy
parent f8c01e7a96
commit f04fa0a62c
1 changed files with 18 additions and 8 deletions

View File

@ -85,6 +85,7 @@ D3DWindowBuffer_create(struct NineSwapChain9 *This,
D3DWindowBuffer *ret;
struct winsys_handle whandle;
int stride, dmaBufFd;
HRESULT hr;
memset(&whandle, 0, sizeof(whandle));
whandle.type = DRM_API_HANDLE_TYPE_FD;
@ -96,14 +97,20 @@ D3DWindowBuffer_create(struct NineSwapChain9 *This,
PIPE_HANDLE_USAGE_READ);
stride = whandle.stride;
dmaBufFd = whandle.handle;
ID3DPresent_NewD3DWindowBufferFromDmaBuf(This->present,
dmaBufFd,
resource->width0,
resource->height0,
stride,
depth,
32,
&ret);
hr = ID3DPresent_NewD3DWindowBufferFromDmaBuf(This->present,
dmaBufFd,
resource->width0,
resource->height0,
stride,
depth,
32,
&ret);
assert (SUCCEEDED(hr));
if (FAILED(hr)) {
ERR("Failed to create new D3DWindowBufferFromDmaBuf\n");
return NULL;
}
return ret;
}
@ -339,6 +346,9 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This,
}
This->present_handles[i] = D3DWindowBuffer_create(This, resource, depth, false);
pipe_resource_reference(&resource, NULL);
if (!This->present_handles[i]) {
return D3DERR_DRIVERINTERNALERROR;
}
}
if (pParams->EnableAutoDepthStencil) {
tmplt.bind = d3d9_get_pipe_depth_format_bindings(pParams->AutoDepthStencilFormat);