Module: wine Branch: master Commit: 798395d3b2922bf6939089ffb78aa17ba3c1e103 URL: https://source.winehq.org/git/wine.git/?a=commit;h=798395d3b2922bf6939089ffb... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Sat Jun 11 14:22:45 2022 +0200 d3dx10: Add support for ID3DX10ThreadPump parameter in D3DX10CreateTextureFromResourceW. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> --- dlls/d3dx10_43/texture.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/dlls/d3dx10_43/texture.c b/dlls/d3dx10_43/texture.c index 7a4031727fa..a988df6f477 100644 --- a/dlls/d3dx10_43/texture.c +++ b/dlls/d3dx10_43/texture.c @@ -715,11 +715,32 @@ HRESULT WINAPI D3DX10CreateTextureFromResourceW(ID3D10Device *device, HMODULE mo if (!device) return E_INVALIDARG; - hr = load_resourceW(module, resource, &buffer, &size); - if (FAILED(hr)) + if (pump) + { + ID3DX10DataProcessor *processor; + ID3DX10DataLoader *loader; + + if (FAILED((hr = D3DX10CreateAsyncResourceLoaderW(module, resource, &loader)))) + return hr; + if (FAILED((hr = D3DX10CreateAsyncTextureProcessor(device, load_info, &processor)))) + { + ID3DX10DataLoader_Destroy(loader); + return hr; + } + if (FAILED((hr = ID3DX10ThreadPump_AddWorkItem(pump, loader, processor, hresult, (void **)texture)))) + { + ID3DX10DataLoader_Destroy(loader); + ID3DX10DataProcessor_Destroy(processor); + } return hr; + } - return D3DX10CreateTextureFromMemory(device, buffer, size, load_info, pump, texture, hresult); + if (FAILED((hr = load_resourceW(module, resource, &buffer, &size)))) + return hr; + hr = create_texture(device, buffer, size, load_info, texture); + if (hresult) + *hresult = hr; + return hr; } void init_load_info(const D3DX10_IMAGE_LOAD_INFO *load_info, D3DX10_IMAGE_LOAD_INFO *out)