From 9b0e3de465d2f114e0bf14a4d1613fe86fe5f650 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Thu, 26 May 2022 18:17:44 +0200 Subject: [PATCH] d3dx10: Add support for ID3DX10ThreadPump parameter in D3DX10GetImageInfoFromFileW. Signed-off-by: Piotr Caban --- dlls/d3dx10_43/texture.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/dlls/d3dx10_43/texture.c b/dlls/d3dx10_43/texture.c index c018487ae7a..3ee1eaba624 100644 --- a/dlls/d3dx10_43/texture.c +++ b/dlls/d3dx10_43/texture.c @@ -332,17 +332,34 @@ HRESULT WINAPI D3DX10GetImageInfoFromFileW(const WCHAR *src_file, ID3DX10ThreadP if (!src_file) return E_FAIL; - if (FAILED((hr = load_file(src_file, &buffer, &size)))) + if (pump) { - if (result) - *result = hr; + ID3DX10DataProcessor *processor; + ID3DX10DataLoader *loader; + + if (FAILED((hr = D3DX10CreateAsyncFileLoaderW(src_file, &loader)))) + return hr; + if (FAILED((hr = D3DX10CreateAsyncTextureInfoProcessor(info, &processor)))) + { + ID3DX10DataLoader_Destroy(loader); + return hr; + } + hr = ID3DX10ThreadPump_AddWorkItem(pump, loader, processor, result, NULL); + if (FAILED(hr)) + { + ID3DX10DataLoader_Destroy(loader); + ID3DX10DataProcessor_Destroy(processor); + } return hr; } - hr = D3DX10GetImageInfoFromMemory(buffer, size, pump, info, result); - - free(buffer); - + if (SUCCEEDED((hr = load_file(src_file, &buffer, &size)))) + { + hr = get_image_info(buffer, size, info); + free(buffer); + } + if (result) + *result = hr; return hr; }