Henri Verbeet : dxgi: Implement IDXGIFactory1.
Alexandre Julliard
julliard at winehq.org
Tue Jan 28 13:33:24 CST 2014
Module: wine
Branch: master
Commit: 3d28b01916cf83461ee36325bb555b3f0771e792
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3d28b01916cf83461ee36325bb555b3f0771e792
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Tue Jan 28 10:09:26 2014 +0100
dxgi: Implement IDXGIFactory1.
---
dlls/dxgi/factory.c | 34 +++++++++++++++++++++++++++-------
include/wine/winedxgi.idl | 2 +-
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/dlls/dxgi/factory.c b/dlls/dxgi/factory.c
index e0aa035..18a9a81 100644
--- a/dlls/dxgi/factory.c
+++ b/dlls/dxgi/factory.c
@@ -38,6 +38,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_QueryInterface(IWineDXGIFactory *i
if (IsEqualGUID(riid, &IID_IUnknown)
|| IsEqualGUID(riid, &IID_IDXGIObject)
|| IsEqualGUID(riid, &IID_IDXGIFactory)
+ || IsEqualGUID(riid, &IID_IDXGIFactory1)
|| IsEqualGUID(riid, &IID_IWineDXGIFactory))
{
IUnknown_AddRef(iface);
@@ -124,29 +125,38 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_GetParent(IWineDXGIFactory *iface,
/* IDXGIFactory methods */
-static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters(IWineDXGIFactory *iface,
- UINT adapter_idx, IDXGIAdapter **adapter)
+static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters1(IWineDXGIFactory *iface,
+ UINT adapter_idx, IDXGIAdapter1 **adapter)
{
- struct dxgi_factory *This = impl_from_IWineDXGIFactory(iface);
+ struct dxgi_factory *factory = impl_from_IWineDXGIFactory(iface);
TRACE("iface %p, adapter_idx %u, adapter %p\n", iface, adapter_idx, adapter);
- if (!adapter) return DXGI_ERROR_INVALID_CALL;
+ if (!adapter)
+ return DXGI_ERROR_INVALID_CALL;
- if (adapter_idx >= This->adapter_count)
+ if (adapter_idx >= factory->adapter_count)
{
*adapter = NULL;
return DXGI_ERROR_NOT_FOUND;
}
- *adapter = (IDXGIAdapter *)This->adapters[adapter_idx];
- IDXGIAdapter_AddRef(*adapter);
+ *adapter = (IDXGIAdapter1 *)factory->adapters[adapter_idx];
+ IDXGIAdapter1_AddRef(*adapter);
TRACE("Returning adapter %p\n", *adapter);
return S_OK;
}
+static HRESULT STDMETHODCALLTYPE dxgi_factory_EnumAdapters(IWineDXGIFactory *iface,
+ UINT adapter_idx, IDXGIAdapter **adapter)
+{
+ TRACE("iface %p, adapter_idx %u, adapter %p\n", iface, adapter_idx, adapter);
+
+ return dxgi_factory_EnumAdapters1(iface, adapter_idx, (IDXGIAdapter1 **)adapter);
+}
+
static HRESULT STDMETHODCALLTYPE dxgi_factory_MakeWindowAssociation(IWineDXGIFactory *iface, HWND window, UINT flags)
{
FIXME("iface %p, window %p, flags %#x stub!\n\n", iface, window, flags);
@@ -263,6 +273,13 @@ static HRESULT STDMETHODCALLTYPE dxgi_factory_CreateSoftwareAdapter(IWineDXGIFac
return E_NOTIMPL;
}
+static BOOL STDMETHODCALLTYPE dxgi_factory_IsCurrent(IWineDXGIFactory *iface)
+{
+ FIXME("iface %p stub!\n", iface);
+
+ return TRUE;
+}
+
/* IWineDXGIFactory methods */
static struct wined3d * STDMETHODCALLTYPE dxgi_factory_get_wined3d(IWineDXGIFactory *iface)
@@ -294,6 +311,9 @@ static const struct IWineDXGIFactoryVtbl dxgi_factory_vtbl =
dxgi_factory_GetWindowAssociation,
dxgi_factory_CreateSwapChain,
dxgi_factory_CreateSoftwareAdapter,
+ /* IDXGIFactory1 methods */
+ dxgi_factory_EnumAdapters1,
+ dxgi_factory_IsCurrent,
/* IWineDXGIFactory methods */
dxgi_factory_get_wined3d,
};
diff --git a/include/wine/winedxgi.idl b/include/wine/winedxgi.idl
index a3baece..26f29e3 100644
--- a/include/wine/winedxgi.idl
+++ b/include/wine/winedxgi.idl
@@ -23,7 +23,7 @@ import "dxgi.idl";
local,
uuid(a07ad9ab-fb01-4574-8bfb-0a70a7373f04)
]
-interface IWineDXGIFactory : IDXGIFactory
+interface IWineDXGIFactory : IDXGIFactory1
{
struct wined3d *get_wined3d();
}
More information about the wine-cvs
mailing list