Henri Verbeet : wined3d: Avoid moving buffers while they're mapped.

Alexandre Julliard julliard at winehq.org
Tue May 22 14:21:29 CDT 2012


Module: wine
Branch: master
Commit: 69bdff62536915a8d5dbbf565e1919e6f3a3f45e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=69bdff62536915a8d5dbbf565e1919e6f3a3f45e

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Tue May 22 18:01:04 2012 +0200

wined3d: Avoid moving buffers while they're mapped.

---

 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)




More information about the wine-cvs mailing list