[PATCH 4/5] wined3d: Return data as struct wined3d_bo_address in buffer_get_memory().

Henri Verbeet hverbeet at codeweavers.com
Sun Jul 10 18:06:45 CDT 2011


---
 dlls/wined3d/buffer.c          |   15 ++++++++-------
 dlls/wined3d/device.c          |    2 +-
 dlls/wined3d/wined3d_private.h |    4 ++--
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index fa14f3a..305b5e9 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -467,10 +467,10 @@ static inline void fixup_transformed_pos(float *p)
 }
 
 /* Context activation is done by the caller. */
-const BYTE *buffer_get_memory(struct wined3d_buffer *buffer,
-        const struct wined3d_gl_info *gl_info, GLuint *buffer_object)
+void buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_info *gl_info,
+        struct wined3d_bo_address *data)
 {
-    *buffer_object = buffer->buffer_object;
+    data->buffer_object = buffer->buffer_object;
     if (!buffer->buffer_object)
     {
         if (buffer->flags & WINED3D_BUFFER_CREATEBO)
@@ -479,15 +479,16 @@ const BYTE *buffer_get_memory(struct wined3d_buffer *buffer,
             buffer->flags &= ~WINED3D_BUFFER_CREATEBO;
             if (buffer->buffer_object)
             {
-                *buffer_object = buffer->buffer_object;
-                return NULL;
+                data->buffer_object = buffer->buffer_object;
+                data->addr = NULL;
+                return;
             }
         }
-        return buffer->resource.allocatedMemory;
+        data->addr = buffer->resource.allocatedMemory;
     }
     else
     {
-        return NULL;
+        data->addr = NULL;
     }
 }
 
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 7c03df3..5cc1c84 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -213,7 +213,7 @@ void device_stream_info_from_declaration(struct wined3d_device *device,
         else
         {
             TRACE("Stream %u isn't UP, %p\n", element->input_slot, buffer);
-            data.addr = buffer_get_memory(buffer, &device->adapter->gl_info, &data.buffer_object);
+            buffer_get_memory(buffer, &device->adapter->gl_info, &data);
 
             /* Can't use vbo's if the base vertex index is negative. OpenGL doesn't accept negative offsets
              * (or rather offsets bigger than the vbo, because the pointer is unsigned), so use system memory
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 3e44af5..72c4782 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2404,8 +2404,8 @@ static inline struct wined3d_buffer *buffer_from_resource(struct wined3d_resourc
     return CONTAINING_RECORD(resource, struct wined3d_buffer, resource);
 }
 
-const BYTE *buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_info *gl_info,
-        GLuint *buffer_object) DECLSPEC_HIDDEN;
+void buffer_get_memory(struct wined3d_buffer *buffer, const struct wined3d_gl_info *gl_info,
+        struct wined3d_bo_address *data) DECLSPEC_HIDDEN;
 BYTE *buffer_get_sysmem(struct wined3d_buffer *This, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
 
 struct wined3d_rendertarget_view
-- 
1.7.3.4




More information about the wine-patches mailing list