diff --git a/dlls/dxgi/adapter.c b/dlls/dxgi/adapter.c index 1efbec9e45e..d13e3e16ea6 100644 --- a/dlls/dxgi/adapter.c +++ b/dlls/dxgi/adapter.c @@ -189,7 +189,7 @@ HRESULT dxgi_adapter_init(struct dxgi_adapter *adapter, IDXGIFactory *parent, UI { return E_OUTOFMEMORY; } - dxgi_output_init(output); + dxgi_output_init(output, adapter); adapter->output = (IDXGIOutput *)output; return S_OK; diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h index 46b6f43c9bc..29295349936 100644 --- a/dlls/dxgi/dxgi_private.h +++ b/dlls/dxgi/dxgi_private.h @@ -102,9 +102,10 @@ struct dxgi_output { const struct IDXGIOutputVtbl *vtbl; LONG refcount; + struct dxgi_adapter *adapter; }; -void dxgi_output_init(struct dxgi_output *output) DECLSPEC_HIDDEN; +void dxgi_output_init(struct dxgi_output *output, struct dxgi_adapter *adapter) DECLSPEC_HIDDEN; /* IDXGIAdapter */ struct dxgi_adapter diff --git a/dlls/dxgi/output.c b/dlls/dxgi/output.c index c3f8289a676..5b8342774ec 100644 --- a/dlls/dxgi/output.c +++ b/dlls/dxgi/output.c @@ -98,9 +98,11 @@ static HRESULT STDMETHODCALLTYPE dxgi_output_GetPrivateData(IDXGIOutput *iface, static HRESULT STDMETHODCALLTYPE dxgi_output_GetParent(IDXGIOutput *iface, REFIID riid, void **parent) { - FIXME("iface %p, riid %s, parent %p stub!\n", iface, debugstr_guid(riid), parent); + struct dxgi_output *This = (struct dxgi_output *)iface; - return E_NOTIMPL; + TRACE("iface %p, riid %s, parent %p.\n", iface, debugstr_guid(riid), parent); + + return IDXGIAdapter_QueryInterface((IDXGIAdapter *)This->adapter, riid, parent); } /* IDXGIOutput methods */ @@ -217,8 +219,9 @@ static const struct IDXGIOutputVtbl dxgi_output_vtbl = dxgi_output_GetFrameStatistics, }; -void dxgi_output_init(struct dxgi_output *output) +void dxgi_output_init(struct dxgi_output *output, struct dxgi_adapter *adapter) { output->vtbl = &dxgi_output_vtbl; output->refcount = 1; + output->adapter = adapter; }