diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/nine/swapchain9.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/gallium/state_trackers/nine/swapchain9.c b/src/gallium/state_trackers/nine/swapchain9.c index de61dad8e09..af6fe6e63fa 100644 --- a/src/gallium/state_trackers/nine/swapchain9.c +++ b/src/gallium/state_trackers/nine/swapchain9.c @@ -271,12 +271,6 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This, if (!bufs) return E_OUTOFMEMORY; This->buffers = bufs; - if (has_present_buffers) { - This->present_buffers = REALLOC(This->present_buffers, - This->present_buffers == NULL ? 0 : oldBufferCount * sizeof(struct pipe_resource *), - newBufferCount * sizeof(struct pipe_resource *)); - memset(This->present_buffers, 0, newBufferCount * sizeof(struct pipe_resource *)); - } This->present_handles = REALLOC(This->present_handles, oldBufferCount * sizeof(D3DWindowBuffer *), newBufferCount * sizeof(D3DWindowBuffer *)); @@ -286,6 +280,15 @@ NineSwapChain9_Resize( struct NineSwapChain9 *This, } } + if (has_present_buffers && + (newBufferCount != oldBufferCount || !This->present_buffers)) { + This->present_buffers = REALLOC(This->present_buffers, + This->present_buffers == NULL ? 0 : + oldBufferCount * sizeof(struct pipe_resource *), + newBufferCount * sizeof(struct pipe_resource *)); + memset(This->present_buffers, 0, newBufferCount * sizeof(struct pipe_resource *)); + } + for (i = 0; i < newBufferCount; ++i) { tmplt.bind = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_TRANSFER_READ | PIPE_BIND_TRANSFER_WRITE | PIPE_BIND_RENDER_TARGET; |