Module: wine Branch: master Commit: 82965692a0d16fc4f94c6a548a9ab4b1199472af URL: http://source.winehq.org/git/wine.git/?a=commit;h=82965692a0d16fc4f94c6a548a...
Author: Sebastian Lackner sebastian@fds-team.de Date: Fri Feb 17 16:54:45 2017 +0100
wined3d: Avoid unnecessary memory allocations in nested command stream calls.
Signed-off-by: Sebastian Lackner sebastian@fds-team.de Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/cs.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c index 10905c0..bbae5ad 100644 --- a/dlls/wined3d/cs.c +++ b/dlls/wined3d/cs.c @@ -1608,15 +1608,14 @@ static void wined3d_cs_st_submit(struct wined3d_cs *cs) data = cs->data; start = cs->start; cs->start = cs->end; + opcode = *(const enum wined3d_cs_op *)&data[start]; wined3d_cs_op_handlers[opcode](cs, &data[start]); - if (!start) - { - if (cs->data != data) - HeapFree(GetProcessHeap(), 0, data); - else - cs->start = cs->end = 0; - } + + if (cs->data == data) + cs->start = cs->end = start; + else if (!start) + HeapFree(GetProcessHeap(), 0, data); }
static void wined3d_cs_st_push_constants(struct wined3d_cs *cs, enum wined3d_push_constants p,