mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Updated directmanipulation-new-dll patchset
This commit is contained in:
parent
a0735f083d
commit
a12c030bd9
@ -1,7 +1,7 @@
|
||||
From 61033f8cde29e03787076b06c638ae5e7af7d02a Mon Sep 17 00:00:00 2001
|
||||
From c61d77e4a22c35890ac4cc789a879d6a70a942e2 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 17 Jul 2019 08:17:16 +1000
|
||||
Subject: [PATCH 1/4] include: Add directmanipulation.idl
|
||||
Subject: [PATCH 1/6] include: Add directmanipulation.idl
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 85a1801f45e59803456511a1ff3b4554ad79a23b Mon Sep 17 00:00:00 2001
|
||||
From 3c3fd497486e624cbc8ab3a98e2fd02cdf6dc2ba Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 17 Jul 2019 09:26:16 +1000
|
||||
Subject: [PATCH 2/4] directmanipulation: New dll
|
||||
Subject: [PATCH 2/6] directmanipulation: New dll
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 781e0d3e9a3c1818d59d09125e5f7bf503ea6015 Mon Sep 17 00:00:00 2001
|
||||
From 528186d14bef47f9afdbee2e323445f14191c858 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 18 Jul 2019 09:46:30 +1000
|
||||
Subject: [PATCH 3/4] uuid: Add directmanipulation.h
|
||||
Subject: [PATCH 3/6] uuid: Add directmanipulation.h
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 12f3cae8effd5394459dd00c31476cfae4da044d Mon Sep 17 00:00:00 2001
|
||||
From d7ab064f1040d0031a0f277f16d2ef7bfe5b1944 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 17 Jul 2019 16:33:21 +1000
|
||||
Subject: [PATCH 4/4] directmanipulation: Create
|
||||
Subject: [PATCH 4/6] directmanipulation: Create
|
||||
DirectManipulationManager/DirectManipulationSharedManager objects
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44865
|
||||
@ -22,7 +22,7 @@ index 331c2a8420..d67a21eb77 100644
|
||||
EXTRADLLFLAGS = -mno-cygwin
|
||||
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
|
||||
index 136b2976a4..04bec62af9 100644
|
||||
index 136b2976a4..81efa3688b 100644
|
||||
--- a/dlls/directmanipulation/directmanipulation.c
|
||||
+++ b/dlls/directmanipulation/directmanipulation.c
|
||||
@@ -15,6 +15,7 @@
|
||||
@ -173,7 +173,7 @@ index 136b2976a4..04bec62af9 100644
|
||||
+ direct_manip_CreateBehavior
|
||||
+};
|
||||
+
|
||||
+HRESULT WINAPI DirectManipulation_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
|
||||
+static HRESULT WINAPI DirectManipulation_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
|
||||
+{
|
||||
+ struct directmanipulation *object;
|
||||
+ HRESULT ret;
|
||||
|
@ -0,0 +1,108 @@
|
||||
From 6ee51b2ae31c53d05fef808c0aa1cfd47534e6af Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 19 Jul 2019 08:46:01 +1000
|
||||
Subject: [PATCH 5/6] include: Add DCompManipulationCompositor coclass and
|
||||
supporting interfaces.
|
||||
|
||||
---
|
||||
include/directmanipulation.idl | 79 ++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 79 insertions(+)
|
||||
|
||||
diff --git a/include/directmanipulation.idl b/include/directmanipulation.idl
|
||||
index 9dc2366cc3..c2fd831c6c 100644
|
||||
--- a/include/directmanipulation.idl
|
||||
+++ b/include/directmanipulation.idl
|
||||
@@ -66,6 +66,76 @@ interface IDirectManipulationManager : IUnknown
|
||||
[in] REFIID riid, [out, iid_is(riid), retval] void **obj);
|
||||
}
|
||||
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(b89962cb-3d89-442b-bb58-5098fa0f9f16),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationContent : IUnknown
|
||||
+{
|
||||
+ HRESULT GetContentRect([out] RECT *size);
|
||||
+
|
||||
+ HRESULT SetContentRect([in] const RECT *size);
|
||||
+
|
||||
+ HRESULT GetViewport([in] REFIID riid, [out, iid_is(riid)] void **object);
|
||||
+
|
||||
+ HRESULT GetTag([in] REFIID riid, [out, iid_is(riid)] void **object, [out] UINT32 *id);
|
||||
+
|
||||
+ HRESULT SetTag([in, unique] IUnknown *object, [in] UINT32 id);
|
||||
+
|
||||
+ HRESULT GetOutputTransform([out] float *matrix, [in] DWORD count);
|
||||
+
|
||||
+ HRESULT GetContentTransform([out] float *matrix, [in] DWORD count);
|
||||
+
|
||||
+ HRESULT SyncContentTransform([in] const float *matrix, [in] DWORD count);
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(790b6337-64f8-4ff5-a269-b32bc2af27a7),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationUpdateHandler : IUnknown
|
||||
+{
|
||||
+ HRESULT Update();
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(b0ae62fd-be34-46e7-9caa-d361facbb9cc),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationUpdateManager : IUnknown
|
||||
+{
|
||||
+ HRESULT RegisterWaitHandleCallback([in] HANDLE handle, [in] IDirectManipulationUpdateHandler *handler,
|
||||
+ [out] DWORD *cookie);
|
||||
+
|
||||
+ HRESULT UnregisterWaitHandleCallback([in] DWORD cookie);
|
||||
+
|
||||
+ HRESULT Update([in] IDirectManipulationFrameInfoProvider *provider);
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(537a0825-0387-4efa-b62f-71eb1f085a7e),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationCompositor : IUnknown
|
||||
+{
|
||||
+ HRESULT AddContent([in] IDirectManipulationContent *content, [in] IUnknown *device,
|
||||
+ [in] IUnknown *parent, [in] IUnknown *child);
|
||||
+
|
||||
+ HRESULT RemoveContent([in] IDirectManipulationContent *content);
|
||||
+
|
||||
+ HRESULT SetUpdateManager([in] IDirectManipulationUpdateManager *manager);
|
||||
+
|
||||
+ HRESULT Flush();
|
||||
+}
|
||||
+
|
||||
[
|
||||
local,
|
||||
object,
|
||||
@@ -100,4 +170,13 @@ library DirectManipulation
|
||||
interface IDirectManipulationManager2;
|
||||
[default] interface IDirectManipulationManager;
|
||||
}
|
||||
+
|
||||
+ [
|
||||
+ uuid(79dea627-a08a-43ac-8ef5-6900b9299126)
|
||||
+ ]
|
||||
+ coclass DCompManipulationCompositor
|
||||
+ {
|
||||
+ [default] interface IDirectManipulationCompositor;
|
||||
+ interface IDirectManipulationFrameInfoProvider;
|
||||
+ }
|
||||
}
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,182 @@
|
||||
From 4e92430f5d923dba1aa6174957b3d589b38d5fd7 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 19 Jul 2019 08:49:51 +1000
|
||||
Subject: [PATCH 6/6] directmanipulation: Support DCompManipulationCompositor
|
||||
interface
|
||||
|
||||
---
|
||||
dlls/directmanipulation/directmanip.idl | 10 ++
|
||||
dlls/directmanipulation/directmanipulation.c | 124 +++++++++++++++++++
|
||||
2 files changed, 134 insertions(+)
|
||||
|
||||
diff --git a/dlls/directmanipulation/directmanip.idl b/dlls/directmanipulation/directmanip.idl
|
||||
index ff00668ba5..9e1efa48ed 100644
|
||||
--- a/dlls/directmanipulation/directmanip.idl
|
||||
+++ b/dlls/directmanipulation/directmanip.idl
|
||||
@@ -36,3 +36,13 @@ coclass DirectManipulationSharedManager
|
||||
interface IDirectManipulationManager2;
|
||||
[default] interface IDirectManipulationManager;
|
||||
}
|
||||
+
|
||||
+[
|
||||
+ uuid(79dea627-a08a-43ac-8ef5-6900b9299126),
|
||||
+ threading(both)
|
||||
+]
|
||||
+coclass DCompManipulationCompositor
|
||||
+{
|
||||
+ [default] interface IDirectManipulationCompositor;
|
||||
+ interface IDirectManipulationFrameInfoProvider;
|
||||
+}
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
|
||||
index 81efa3688b..0fe5c4be34 100644
|
||||
--- a/dlls/directmanipulation/directmanipulation.c
|
||||
+++ b/dlls/directmanipulation/directmanipulation.c
|
||||
@@ -210,6 +210,117 @@ static HRESULT WINAPI DirectManipulation_CreateInstance(IClassFactory *iface, IU
|
||||
return ret;
|
||||
}
|
||||
|
||||
+struct directcompositor
|
||||
+{
|
||||
+ IDirectManipulationCompositor IDirectManipulationCompositor_iface;
|
||||
+ LONG ref;
|
||||
+};
|
||||
+
|
||||
+static inline struct directcompositor *impl_from_IDirectManipulationCompositor(IDirectManipulationCompositor *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct directcompositor, IDirectManipulationCompositor_iface);
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compositor_QueryInterface(IDirectManipulationCompositor *iface, REFIID riid, void **ppv)
|
||||
+{
|
||||
+ if (IsEqualGUID(riid, &IID_IUnknown) ||
|
||||
+ IsEqualGUID(riid, &IID_IDirectManipulationCompositor))
|
||||
+ {
|
||||
+ IUnknown_AddRef(iface);
|
||||
+ *ppv = iface;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
+ WARN("(%p)->(%s,%p),not found\n", iface, debugstr_guid(riid), ppv);
|
||||
+ return E_NOINTERFACE;
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI compositor_AddRef(IDirectManipulationCompositor *iface)
|
||||
+{
|
||||
+ struct directcompositor *This = impl_from_IDirectManipulationCompositor(iface);
|
||||
+ ULONG ref = InterlockedIncrement(&This->ref);
|
||||
+
|
||||
+ TRACE("(%p) ref=%u\n", This, ref);
|
||||
+
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI compositor_Release(IDirectManipulationCompositor *iface)
|
||||
+{
|
||||
+ struct directcompositor *This = impl_from_IDirectManipulationCompositor(iface);
|
||||
+ ULONG ref = InterlockedDecrement(&This->ref);
|
||||
+
|
||||
+ TRACE("(%p) ref=%u\n", This, ref);
|
||||
+
|
||||
+ if (!ref)
|
||||
+ {
|
||||
+ heap_free(This);
|
||||
+ }
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compositor_AddContent(IDirectManipulationCompositor *iface, IDirectManipulationContent *content,
|
||||
+ IUnknown *device, IUnknown *parent, IUnknown *child)
|
||||
+{
|
||||
+ struct directcompositor *This = impl_from_IDirectManipulationCompositor(iface);
|
||||
+ FIXME("%p, %p, %p, %p, %p\n", This, content, device, parent, child);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compositor_RemoveContent(IDirectManipulationCompositor *iface, IDirectManipulationContent *content)
|
||||
+{
|
||||
+ struct directcompositor *This = impl_from_IDirectManipulationCompositor(iface);
|
||||
+ FIXME("%p, %p\n", This, content);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compositor_SetUpdateManager(IDirectManipulationCompositor *iface, IDirectManipulationUpdateManager *manager)
|
||||
+{
|
||||
+ struct directcompositor *This = impl_from_IDirectManipulationCompositor(iface);
|
||||
+ FIXME("%p, %p\n", This, manager);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI compositor_Flush(IDirectManipulationCompositor *iface)
|
||||
+{
|
||||
+ struct directcompositor *This = impl_from_IDirectManipulationCompositor(iface);
|
||||
+ FIXME("%p\n", This);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+struct IDirectManipulationCompositorVtbl compositorVtbl =
|
||||
+{
|
||||
+ compositor_QueryInterface,
|
||||
+ compositor_AddRef,
|
||||
+ compositor_Release,
|
||||
+ compositor_AddContent,
|
||||
+ compositor_RemoveContent,
|
||||
+ compositor_SetUpdateManager,
|
||||
+ compositor_Flush
|
||||
+};
|
||||
+
|
||||
+static HRESULT WINAPI DirectCompositor_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
|
||||
+{
|
||||
+ struct directcompositor *object;
|
||||
+ HRESULT ret;
|
||||
+
|
||||
+ TRACE("(%p, %s, %p)\n", outer, debugstr_guid(riid), ppv);
|
||||
+
|
||||
+ *ppv = NULL;
|
||||
+
|
||||
+ object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object));
|
||||
+ if (!object)
|
||||
+ return E_OUTOFMEMORY;
|
||||
+
|
||||
+ object->IDirectManipulationCompositor_iface.lpVtbl = &compositorVtbl;
|
||||
+ object->ref = 1;
|
||||
+
|
||||
+ ret = compositor_QueryInterface(&object->IDirectManipulationCompositor_iface, riid, ppv);
|
||||
+ compositor_Release(&object->IDirectManipulationCompositor_iface);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
|
||||
{
|
||||
*ppv = NULL;
|
||||
@@ -253,7 +364,16 @@ static const IClassFactoryVtbl DirectFactoryVtbl = {
|
||||
ClassFactory_LockServer
|
||||
};
|
||||
|
||||
+static const IClassFactoryVtbl DirectCompositorVtbl = {
|
||||
+ ClassFactory_QueryInterface,
|
||||
+ ClassFactory_AddRef,
|
||||
+ ClassFactory_Release,
|
||||
+ DirectCompositor_CreateInstance,
|
||||
+ ClassFactory_LockServer
|
||||
+};
|
||||
+
|
||||
static IClassFactory direct_factory = { &DirectFactoryVtbl };
|
||||
+static IClassFactory compositor_factory = { &DirectCompositorVtbl };
|
||||
|
||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
@@ -262,6 +382,10 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
TRACE("(CLSID_DirectManipulationManager %s %p)\n", debugstr_guid(riid), ppv);
|
||||
return IClassFactory_QueryInterface(&direct_factory, riid, ppv);
|
||||
}
|
||||
+ else if(IsEqualGUID(&CLSID_DCompManipulationCompositor, rclsid)) {
|
||||
+ TRACE("(CLSID_DCompManipulationCompositor %s %p)\n", debugstr_guid(riid), ppv);
|
||||
+ return IClassFactory_QueryInterface(&compositor_factory, riid, ppv);
|
||||
+ }
|
||||
|
||||
FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
--
|
||||
2.17.1
|
||||
|
@ -3270,11 +3270,15 @@ if test "$enable_directmanipulation_new_dll" -eq 1; then
|
||||
patch_apply directmanipulation-new-dll/0002-directmanipulation-New-dll.patch
|
||||
patch_apply directmanipulation-new-dll/0003-uuid-Add-directmanipulation.h.patch
|
||||
patch_apply directmanipulation-new-dll/0004-directmanipulation-Create-DirectManipulationManager-.patch
|
||||
patch_apply directmanipulation-new-dll/0005-include-Add-DCompManipulationCompositor-coclass-and-.patch
|
||||
patch_apply directmanipulation-new-dll/0006-directmanipulation-Support-DCompManipulationComposit.patch
|
||||
(
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "include: Add directmanipulation.idl.", 1 },';
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: New dll.", 1 },';
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "uuid: Add directmanipulation.h.", 1 },';
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: Create DirectManipulationManager/DirectManipulationSharedManager objects.", 1 },';
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "include: Add DCompManipulationCompositor coclass and supporting interfaces.", 1 },';
|
||||
printf '%s\n' '+ { "Alistair Leslie-Hughes", "directmanipulation: Support DCompManipulationCompositor interface.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user