Module: wine Branch: master Commit: 4df9039f75c93f558a10a6ee6ac29c1aa4681aca URL: https://source.winehq.org/git/wine.git/?a=commit;h=4df9039f75c93f558a10a6ee6...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Thu Nov 28 10:08:18 2019 +0000
dmloader: Support DMUS_OBJ_MEMORY cache lookups.
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com Signed-off-by: Michael Stefaniuc mstefani@winehq.org Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dmloader/loader.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/dmloader/loader.c b/dlls/dmloader/loader.c index 42209def94..9048c02dfc 100644 --- a/dlls/dmloader/loader.c +++ b/dlls/dmloader/loader.c @@ -191,8 +191,18 @@ static struct cache_entry *find_cache_object(IDirectMusicLoaderImpl *This, DMUS_ if (desc->dwValidData & DMUS_OBJ_STREAM) FIXME("Finding DMUS_OBJ_STREAM cached objects currently not supported.\n");
- if (desc->dwValidData & DMUS_OBJ_MEMORY) - FIXME("Finding DMUS_OBJ_MEMORY cached objects currently not supported.\n"); + if (desc->dwValidData & DMUS_OBJ_MEMORY) { + LIST_FOR_EACH_ENTRY(existing, &This->cache, struct cache_entry, entry) { + if (existing->Desc.dwValidData & DMUS_OBJ_MEMORY && + desc->llMemLength == existing->Desc.llMemLength && + (desc->pbMemData == existing->Desc.pbMemData || + !memcmp(desc->pbMemData, existing->Desc.pbMemData, desc->llMemLength)) ) { + TRACE("Found by DMUS_OBJ_MEMORY (%d)\n", + desc->pbMemData == existing->Desc.pbMemData); + return existing; + } + } + }
if ((desc->dwValidData & (DMUS_OBJ_FILENAME | DMUS_OBJ_FULLPATH)) == (DMUS_OBJ_FILENAME | DMUS_OBJ_FULLPATH)) {