[PATCH 1/5] wined3d: Avoid moving buffers while they're mapped.
Henri Verbeet
hverbeet at codeweavers.com
Tue May 22 11:01:04 CDT 2012
---
dlls/wined3d/buffer.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index aaa50d7..f11edf4 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)
--
1.7.3.4
More information about the wine-patches
mailing list