From 69bdff62536915a8d5dbbf565e1919e6f3a3f45e Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Tue, 22 May 2012 18:01:04 +0200 Subject: [PATCH] wined3d: Avoid moving buffers while they're mapped. --- dlls/wined3d/buffer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c index aaa50d75394..f11edf44d73 100644 --- a/dlls/wined3d/buffer.c +++ b/dlls/wined3d/buffer.c @@ -476,7 +476,7 @@ void buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_in data->buffer_object = buffer->buffer_object; if (!buffer->buffer_object) { - if (buffer->flags & WINED3D_BUFFER_CREATEBO) + if ((buffer->flags & WINED3D_BUFFER_CREATEBO) && !buffer->resource.map_count) { buffer_create_buffer_object(buffer, gl_info); buffer->flags &= ~WINED3D_BUFFER_CREATEBO; @@ -753,6 +753,12 @@ void CDECL wined3d_buffer_preload(struct wined3d_buffer *buffer) TRACE("buffer %p.\n", buffer); + if (buffer->resource.map_count) + { + WARN("Buffer is mapped, skipping preload.\n"); + return; + } + buffer->flags &= ~(WINED3D_BUFFER_NOSYNC | WINED3D_BUFFER_DISCARD); if (!buffer->buffer_object)