Added patch to avoid calling IDirect3DDevice7_DrawIndexedPrimitive if there is no primitive.

This commit is contained in:
Sebastian Lackner 2014-12-27 18:56:01 +01:00
parent 913f7f2af2
commit 1944c4b4e8
3 changed files with 47 additions and 0 deletions

1
debian/changelog vendored
View File

@ -19,6 +19,7 @@ wine-staging (1.7.34) UNRELEASED; urgency=low
* Added patch to try harder to get the host name address in getaddrinfo().
* Added patch to fix invalid usage of RegOpenKeyExW in msdmo.
* Added patch to add support for named pipe message mode.
* Added patch to avoid calling IDirect3DDevice7_DrawIndexedPrimitive if there is no primitive.
* Removed patch to implement combase HSTRING objects (accepted upstream).
* Removed patch to add fake ProductId to registry (accepted upstream).
* Removed patch to implement stubs for MFStartup and MFShutdown (accepted upstream).

View File

@ -39,6 +39,7 @@ PATCHLIST := \
d3dx9_36-UpdateSkinnedMesh.ok \
dbghelp-Debug_Symbols.ok \
dbghelp-KdHelp.ok \
ddraw-d3d_execute_buffer.ok \
dinput-Events.ok \
dsound-Fast_Mixer.ok \
dxgi-GetDesc.ok \
@ -509,6 +510,18 @@ dbghelp-KdHelp.ok:
echo '+ { "Sebastian Lackner", "dbghelp: Don'\''t fill KdHelp structure for usermode applications.", 1 },'; \
) > dbghelp-KdHelp.ok
# Patchset ddraw-d3d_execute_buffer
# |
# | Modified files:
# | * dlls/ddraw/executebuffer.c
# |
.INTERMEDIATE: ddraw-d3d_execute_buffer.ok
ddraw-d3d_execute_buffer.ok:
$(call APPLY_FILE,ddraw-d3d_execute_buffer/0001-ddraw-Don-t-call-IDirect3DDevice7_DrawIndexedPrimiti.patch)
@( \
echo '+ { "Christian Costa", "ddraw: Don'\''t call IDirect3DDevice7_DrawIndexedPrimitive if there is no primitive.", 1 },'; \
) > ddraw-d3d_execute_buffer.ok
# Patchset dinput-Events
# |
# | This patchset fixes the following Wine bugs:

View File

@ -0,0 +1,33 @@
From da8a88f408a35b22bbd59c41d04e802278628aa2 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sat, 27 Dec 2014 17:05:42 +0100
Subject: ddraw: Don't call IDirect3DDevice7_DrawIndexedPrimitive if there is
no primitive.
This is allowed to have execute buffer command drawing 0 primitive and this is covered by tests.
So just do nothing and avoid a useless error message triggered by the tests.
---
dlls/ddraw/executebuffer.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/executebuffer.c b/dlls/ddraw/executebuffer.c
index 4e9baad..5360c28 100644
--- a/dlls/ddraw/executebuffer.c
+++ b/dlls/ddraw/executebuffer.c
@@ -149,9 +149,10 @@ HRESULT d3d_execute_buffer_execute(struct d3d_execute_buffer *buffer,
buffer->indices[(i * 3) + 2] = ci->u3.v3;
instr += size;
}
- IDirect3DDevice7_DrawIndexedPrimitive(&device->IDirect3DDevice7_iface,
- D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX, tl_vx, buffer->nb_vertices,
- buffer->indices, count * 3, 0);
+ if (count)
+ IDirect3DDevice7_DrawIndexedPrimitive(&device->IDirect3DDevice7_iface,
+ D3DPT_TRIANGLELIST, D3DFVF_TLVERTEX, tl_vx, buffer->nb_vertices,
+ buffer->indices, count * 3, 0);
} break;
case D3DOP_MATRIXLOAD:
--
2.1.3