On 9/19/21 9:04 PM, Matteo Bruni wrote:
On Thu, Sep 16, 2021 at 8:48 AM Nikolay Sivov <nsivov(a)codeweavers.com> wrote:
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/d3d10/d3d10_private.h | 1 + dlls/d3d10/effect.c | 41 ++++++++++++++++++++++++++++---------- dlls/d3d10/tests/effect.c | 4 ---- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/dlls/d3d10/effect.c b/dlls/d3d10/effect.c index c757b82a529..9436d0277f2 100644 --- a/dlls/d3d10/effect.c +++ b/dlls/d3d10/effect.c @@ -8446,7 +8457,17 @@ HRESULT WINAPI D3D10CreateEffectFromMemory(void *data, SIZE_T data_size, UINT fl if (!(flags & D3D10_EFFECT_COMPILE_CHILD_EFFECT) != !effect_pool) return E_INVALIDARG;
- if (FAILED(hr = d3d10_create_effect(data, data_size, device, &d3d10_effect_vtbl, &object))) + if (effect_pool) + { + pool = effect_pool->lpVtbl->AsEffect(effect_pool); + if (pool->lpVtbl != &d3d10_effect_pool_effect_vtbl) + { + WARN("External pool implementations are not supported.\n"); + return E_INVALIDARG; + } + } Any idea if that's something that native allows? No idea. I added this only because of the way update_buffer() currently works, maybe some other places are doing impl_from_* too, I haven't checked.