mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-01-28 22:04:43 -08:00
Added directmanipulation-new-dll patchset
This commit is contained in:
parent
460094e600
commit
a0735f083d
@ -0,0 +1,136 @@
|
||||
From 61033f8cde29e03787076b06c638ae5e7af7d02a 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
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
include/Makefile.in | 1 +
|
||||
include/directmanipulation.idl | 103 +++++++++++++++++++++++++++++++++
|
||||
2 files changed, 104 insertions(+)
|
||||
create mode 100644 include/directmanipulation.idl
|
||||
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 69135879a9..a7fd4dc929 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -199,6 +199,7 @@ SOURCES = \
|
||||
dimm.idl \
|
||||
dinput.h \
|
||||
dinputd.h \
|
||||
+ directmanipulation.idl \
|
||||
dispdib.h \
|
||||
dispex.idl \
|
||||
dlgs.h \
|
||||
diff --git a/include/directmanipulation.idl b/include/directmanipulation.idl
|
||||
new file mode 100644
|
||||
index 0000000000..9dc2366cc3
|
||||
--- /dev/null
|
||||
+++ b/include/directmanipulation.idl
|
||||
@@ -0,0 +1,103 @@
|
||||
+/*
|
||||
+ * Copyright 2019 Alistair Leslie-Hughes
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
+ */
|
||||
+
|
||||
+import "oaidl.idl";
|
||||
+import "ocidl.idl";
|
||||
+
|
||||
+cpp_quote("#if 0")
|
||||
+typedef void* HWND;
|
||||
+cpp_quote("#endif")
|
||||
+
|
||||
+typedef enum DIRECTMANIPULATION_HITTEST_TYPE
|
||||
+{
|
||||
+ DIRECTMANIPULATION_HITTEST_TYPE_ASYNCHRONOUS = 0x00000000,
|
||||
+ DIRECTMANIPULATION_HITTEST_TYPE_SYNCHRONOUS = 0x00000001,
|
||||
+ DIRECTMANIPULATION_HITTEST_TYPE_AUTO_SYNCHRONOUS = 0x00000002
|
||||
+} DIRECTMANIPULATION_HITTEST_TYPE;
|
||||
+
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(fb759dba-6f4c-4c01-874e-19c8a05907f9),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationFrameInfoProvider : IUnknown
|
||||
+{
|
||||
+ HRESULT GetNextFrameInfo([out] ULONGLONG *time, [out] ULONGLONG *process, [out] ULONGLONG *composition);
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(fbf5d3b4-70c7-4163-9322-5a6f660d6fbc),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationManager : IUnknown
|
||||
+{
|
||||
+ HRESULT Activate([in] HWND window);
|
||||
+
|
||||
+ HRESULT Deactivate([in] HWND window);
|
||||
+
|
||||
+ HRESULT RegisterHitTestTarget([in] HWND window, [in] HWND hittest, [in] DIRECTMANIPULATION_HITTEST_TYPE type);
|
||||
+
|
||||
+ HRESULT ProcessInput([in] const MSG *msg, [out, retval] BOOL *handled);
|
||||
+
|
||||
+ HRESULT GetUpdateManager([in] REFIID riid, [out, iid_is(riid), retval,] void **obj);
|
||||
+
|
||||
+ HRESULT CreateViewport([in] IDirectManipulationFrameInfoProvider *frame, [in] HWND window,
|
||||
+ [in] REFIID riid, [out, iid_is(riid), retval] void **obj);
|
||||
+
|
||||
+ HRESULT CreateContent([in] IDirectManipulationFrameInfoProvider *frame, [in] REFCLSID clsid,
|
||||
+ [in] REFIID riid, [out, iid_is(riid), retval] void **obj);
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ local,
|
||||
+ object,
|
||||
+ uuid(fa1005e9-3d16-484c-bfc9-62b61e56ec4e),
|
||||
+ pointer_default(unique)
|
||||
+]
|
||||
+interface IDirectManipulationManager2 : IDirectManipulationManager
|
||||
+{
|
||||
+ HRESULT CreateBehavior([in] REFCLSID clsid, [in] REFIID riid, [out, iid_is(riid), retval] void **obj);
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ uuid(9fbedf98-f6d8-4e3b-b488-fa66dbf5e9f3),
|
||||
+ version(1.0)
|
||||
+]
|
||||
+library DirectManipulation
|
||||
+{
|
||||
+ [
|
||||
+ uuid(54e211b6-3650-4f75-8334-fa359598e1c5)
|
||||
+ ]
|
||||
+ coclass DirectManipulationManager
|
||||
+ {
|
||||
+ interface IDirectManipulationManager2;
|
||||
+ [default] interface IDirectManipulationManager;
|
||||
+ }
|
||||
+
|
||||
+ [
|
||||
+ uuid(99793286-77cc-4b57-96db-3b354f6f9fb5)
|
||||
+ ]
|
||||
+ coclass DirectManipulationSharedManager
|
||||
+ {
|
||||
+ interface IDirectManipulationManager2;
|
||||
+ [default] interface IDirectManipulationManager;
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,198 @@
|
||||
From 85a1801f45e59803456511a1ff3b4554ad79a23b 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
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
configure | 2 +
|
||||
configure.ac | 1 +
|
||||
dlls/directmanipulation/Makefile.in | 8 +++
|
||||
dlls/directmanipulation/directmanip.idl | 38 +++++++++++
|
||||
dlls/directmanipulation/directmanipulation.c | 67 +++++++++++++++++++
|
||||
.../directmanipulation.spec | 6 ++
|
||||
6 files changed, 122 insertions(+)
|
||||
create mode 100644 dlls/directmanipulation/Makefile.in
|
||||
create mode 100644 dlls/directmanipulation/directmanip.idl
|
||||
create mode 100644 dlls/directmanipulation/directmanipulation.c
|
||||
create mode 100644 dlls/directmanipulation/directmanipulation.spec
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index f1de2c4052..bc376a6686 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -1231,6 +1231,7 @@ enable_dhtmled_ocx
|
||||
enable_difxapi
|
||||
enable_dinput
|
||||
enable_dinput8
|
||||
+enable_directmanipulation
|
||||
enable_dispex
|
||||
enable_dmband
|
||||
enable_dmcompos
|
||||
@@ -20162,6 +20163,7 @@ wine_fn_config_makefile dlls/dinput enable_dinput
|
||||
wine_fn_config_makefile dlls/dinput/tests enable_tests
|
||||
wine_fn_config_makefile dlls/dinput8 enable_dinput8
|
||||
wine_fn_config_makefile dlls/dinput8/tests enable_tests
|
||||
+wine_fn_config_makefile dlls/directmanipulation enable_directmanipulation
|
||||
wine_fn_config_makefile dlls/dispdib.dll16 enable_win16
|
||||
wine_fn_config_makefile dlls/dispex enable_dispex
|
||||
wine_fn_config_makefile dlls/dispex/tests enable_tests
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a7c45ace73..51519fdd9b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3148,6 +3148,7 @@ WINE_CONFIG_MAKEFILE(dlls/dinput)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dinput/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dinput8)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dinput8/tests)
|
||||
+WINE_CONFIG_MAKEFILE(dlls/directmanipulation)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dispdib.dll16,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dispex)
|
||||
WINE_CONFIG_MAKEFILE(dlls/dispex/tests)
|
||||
diff --git a/dlls/directmanipulation/Makefile.in b/dlls/directmanipulation/Makefile.in
|
||||
new file mode 100644
|
||||
index 0000000000..331c2a8420
|
||||
--- /dev/null
|
||||
+++ b/dlls/directmanipulation/Makefile.in
|
||||
@@ -0,0 +1,8 @@
|
||||
+MODULE = directmanipulation.dll
|
||||
+
|
||||
+EXTRADLLFLAGS = -mno-cygwin
|
||||
+
|
||||
+IDL_SRCS = directmanip.idl
|
||||
+
|
||||
+C_SRCS = \
|
||||
+ directmanipulation.c
|
||||
diff --git a/dlls/directmanipulation/directmanip.idl b/dlls/directmanipulation/directmanip.idl
|
||||
new file mode 100644
|
||||
index 0000000000..ff00668ba5
|
||||
--- /dev/null
|
||||
+++ b/dlls/directmanipulation/directmanip.idl
|
||||
@@ -0,0 +1,38 @@
|
||||
+/*
|
||||
+ * Copyright 2019 Alistair Leslie-Hughes
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
+ */
|
||||
+#pragma makedep register
|
||||
+
|
||||
+[
|
||||
+ uuid(54e211b6-3650-4f75-8334-fa359598e1c5),
|
||||
+ threading(both)
|
||||
+]
|
||||
+coclass DirectManipulationManager
|
||||
+{
|
||||
+ interface IDirectManipulationManager2;
|
||||
+ [default] interface IDirectManipulationManager;
|
||||
+}
|
||||
+
|
||||
+[
|
||||
+ uuid(99793286-77cc-4b57-96db-3b354f6f9fb5),
|
||||
+ threading(both)
|
||||
+]
|
||||
+coclass DirectManipulationSharedManager
|
||||
+{
|
||||
+ interface IDirectManipulationManager2;
|
||||
+ [default] interface IDirectManipulationManager;
|
||||
+}
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
|
||||
new file mode 100644
|
||||
index 0000000000..136b2976a4
|
||||
--- /dev/null
|
||||
+++ b/dlls/directmanipulation/directmanipulation.c
|
||||
@@ -0,0 +1,67 @@
|
||||
+/*
|
||||
+ * Copyright 2019 Alistair Leslie-Hughes
|
||||
+ *
|
||||
+ * This library is free software; you can redistribute it and/or
|
||||
+ * modify it under the terms of the GNU Lesser General Public
|
||||
+ * License as published by the Free Software Foundation; either
|
||||
+ * version 2.1 of the License, or (at your option) any later version.
|
||||
+ *
|
||||
+ * This library is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ * Lesser General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU Lesser General Public
|
||||
+ * License along with this library; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
+ */
|
||||
+
|
||||
+#include <stdarg.h>
|
||||
+
|
||||
+#include "windef.h"
|
||||
+#include "winbase.h"
|
||||
+#include "oleidl.h"
|
||||
+#include "rpcproxy.h"
|
||||
+#include "wine/debug.h"
|
||||
+
|
||||
+WINE_DEFAULT_DEBUG_CHANNEL(manipulation);
|
||||
+
|
||||
+static HINSTANCE dm_instance;
|
||||
+
|
||||
+BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void *reserved)
|
||||
+{
|
||||
+ TRACE("(%p, %u, %p)\n", instance, reason, reserved);
|
||||
+
|
||||
+ switch (reason)
|
||||
+ {
|
||||
+ case DLL_WINE_PREATTACH:
|
||||
+ return FALSE; /* prefer native version */
|
||||
+ case DLL_PROCESS_ATTACH:
|
||||
+ dm_instance = instance;
|
||||
+ DisableThreadLibraryCalls(instance);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllRegisterServer(void)
|
||||
+{
|
||||
+ return __wine_register_resources( dm_instance );
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllUnregisterServer(void)
|
||||
+{
|
||||
+ return __wine_unregister_resources( dm_instance );
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllCanUnloadNow(void)
|
||||
+{
|
||||
+ return S_FALSE;
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
+{
|
||||
+ FIXME("(%s,%s,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
+ return CLASS_E_CLASSNOTAVAILABLE;
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.spec b/dlls/directmanipulation/directmanipulation.spec
|
||||
new file mode 100644
|
||||
index 0000000000..3f0004daeb
|
||||
--- /dev/null
|
||||
+++ b/dlls/directmanipulation/directmanipulation.spec
|
||||
@@ -0,0 +1,6 @@
|
||||
+@ stub InitializeDManipHook
|
||||
+@ stdcall -private DllCanUnloadNow()
|
||||
+@ stub DllGetActivationFactory
|
||||
+@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||
+@ stdcall -private DllRegisterServer()
|
||||
+@ stdcall -private DllUnregisterServer()
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,25 @@
|
||||
From 781e0d3e9a3c1818d59d09125e5f7bf503ea6015 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
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/uuid/uuid.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/uuid/uuid.c b/dlls/uuid/uuid.c
|
||||
index aa3b30c3c7..eacb83301d 100644
|
||||
--- a/dlls/uuid/uuid.c
|
||||
+++ b/dlls/uuid/uuid.c
|
||||
@@ -90,6 +90,7 @@ DEFINE_GUID(GUID_NULL,0,0,0,0,0,0,0,0,0,0,0);
|
||||
#include "netcfgx.h"
|
||||
#include "shimgdata.h"
|
||||
#include "comsvcs.h"
|
||||
+#include "directmanipulation.h"
|
||||
|
||||
/* FIXME: cguids declares GUIDs but does not define their values */
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
@ -0,0 +1,259 @@
|
||||
From 12f3cae8effd5394459dd00c31476cfae4da044d 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
|
||||
DirectManipulationManager/DirectManipulationSharedManager objects
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=44865
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/directmanipulation/Makefile.in | 1 +
|
||||
dlls/directmanipulation/directmanipulation.c | 205 ++++++++++++++++++-
|
||||
2 files changed, 204 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/directmanipulation/Makefile.in b/dlls/directmanipulation/Makefile.in
|
||||
index 331c2a8420..d67a21eb77 100644
|
||||
--- a/dlls/directmanipulation/Makefile.in
|
||||
+++ b/dlls/directmanipulation/Makefile.in
|
||||
@@ -1,4 +1,5 @@
|
||||
MODULE = directmanipulation.dll
|
||||
+IMPORTS = uuid
|
||||
|
||||
EXTRADLLFLAGS = -mno-cygwin
|
||||
|
||||
diff --git a/dlls/directmanipulation/directmanipulation.c b/dlls/directmanipulation/directmanipulation.c
|
||||
index 136b2976a4..04bec62af9 100644
|
||||
--- a/dlls/directmanipulation/directmanipulation.c
|
||||
+++ b/dlls/directmanipulation/directmanipulation.c
|
||||
@@ -15,6 +15,7 @@
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
+#define COBJMACROS
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
@@ -22,8 +23,11 @@
|
||||
#include "winbase.h"
|
||||
#include "oleidl.h"
|
||||
#include "rpcproxy.h"
|
||||
+#include "wine/heap.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
+#include "directmanipulation.h"
|
||||
+
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(manipulation);
|
||||
|
||||
static HINSTANCE dm_instance;
|
||||
@@ -60,8 +64,205 @@ HRESULT WINAPI DllCanUnloadNow(void)
|
||||
return S_FALSE;
|
||||
}
|
||||
|
||||
+
|
||||
+struct directmanipulation
|
||||
+{
|
||||
+ IDirectManipulationManager2 IDirectManipulationManager2_iface;
|
||||
+ LONG ref;
|
||||
+};
|
||||
+
|
||||
+static inline struct directmanipulation *impl_from_IDirectManipulationManager2(IDirectManipulationManager2 *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct directmanipulation, IDirectManipulationManager2_iface);
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_QueryInterface(IDirectManipulationManager2 *iface, REFIID riid, void **ppv)
|
||||
+{
|
||||
+ if (IsEqualGUID(riid, &IID_IUnknown) ||
|
||||
+ IsEqualGUID(riid, &IID_IDirectManipulationManager) ||
|
||||
+ IsEqualGUID(riid, &IID_IDirectManipulationManager2)) {
|
||||
+ 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 direct_manip_AddRef(IDirectManipulationManager2 *iface)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ ULONG ref = InterlockedIncrement(&This->ref);
|
||||
+
|
||||
+ TRACE("(%p) ref=%u\n", This, ref);
|
||||
+
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI direct_manip_Release(IDirectManipulationManager2 *iface)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ ULONG ref = InterlockedDecrement(&This->ref);
|
||||
+
|
||||
+ TRACE("(%p) ref=%u\n", This, ref);
|
||||
+
|
||||
+ if (!ref)
|
||||
+ {
|
||||
+ heap_free(This);
|
||||
+ }
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_Activate(IDirectManipulationManager2 *iface, HWND window)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %p\n", This, window);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_Deactivate(IDirectManipulationManager2 *iface, HWND window)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %p\n", This, window);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_RegisterHitTestTarget(IDirectManipulationManager2 *iface, HWND window,
|
||||
+ HWND hittest, DIRECTMANIPULATION_HITTEST_TYPE type)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %p, %p, %d\n", This, window, hittest, type);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_ProcessInput(IDirectManipulationManager2 *iface, const MSG *msg, BOOL *handled)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %p, %p\n", This, msg, handled);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_GetUpdateManager(IDirectManipulationManager2 *iface, REFIID riid, void **obj)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %s, %p\n", This, debugstr_guid(riid), obj);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_CreateViewport(IDirectManipulationManager2 *iface, IDirectManipulationFrameInfoProvider *frame,
|
||||
+ HWND window, REFIID riid, void **obj)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %p, %p, %s, %p\n", This, frame, window, debugstr_guid(riid), obj);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_CreateContent(IDirectManipulationManager2 *iface, IDirectManipulationFrameInfoProvider *frame,
|
||||
+ REFCLSID clsid, REFIID riid, void **obj)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %p, %s, %p\n", This, frame, debugstr_guid(riid), obj);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI direct_manip_CreateBehavior(IDirectManipulationManager2 *iface, REFCLSID clsid, REFIID riid, void **obj)
|
||||
+{
|
||||
+ struct directmanipulation *This = impl_from_IDirectManipulationManager2(iface);
|
||||
+ FIXME("%p, %s, %s, %p\n", This, debugstr_guid(clsid), debugstr_guid(riid), obj);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+struct IDirectManipulationManager2Vtbl directmanipVtbl =
|
||||
+{
|
||||
+ direct_manip_QueryInterface,
|
||||
+ direct_manip_AddRef,
|
||||
+ direct_manip_Release,
|
||||
+ direct_manip_Activate,
|
||||
+ direct_manip_Deactivate,
|
||||
+ direct_manip_RegisterHitTestTarget,
|
||||
+ direct_manip_ProcessInput,
|
||||
+ direct_manip_GetUpdateManager,
|
||||
+ direct_manip_CreateViewport,
|
||||
+ direct_manip_CreateContent,
|
||||
+ direct_manip_CreateBehavior
|
||||
+};
|
||||
+
|
||||
+HRESULT WINAPI DirectManipulation_CreateInstance(IClassFactory *iface, IUnknown *outer, REFIID riid, void **ppv)
|
||||
+{
|
||||
+ struct directmanipulation *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->IDirectManipulationManager2_iface.lpVtbl = &directmanipVtbl;
|
||||
+ object->ref = 1;
|
||||
+
|
||||
+ ret = direct_manip_QueryInterface(&object->IDirectManipulationManager2_iface, riid, ppv);
|
||||
+ direct_manip_Release(&object->IDirectManipulationManager2_iface);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI ClassFactory_QueryInterface(IClassFactory *iface, REFIID riid, void **ppv)
|
||||
+{
|
||||
+ *ppv = NULL;
|
||||
+
|
||||
+ if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_IClassFactory, riid)) {
|
||||
+ *ppv = iface;
|
||||
+ }
|
||||
+
|
||||
+ if(*ppv) {
|
||||
+ IUnknown_AddRef((IUnknown*)*ppv);
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
+ WARN("(%p)->(%s %p)\n", iface, debugstr_guid(riid), ppv);
|
||||
+ return E_NOINTERFACE;
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI ClassFactory_AddRef(IClassFactory *iface)
|
||||
+{
|
||||
+ TRACE("(%p)\n", iface);
|
||||
+ return 2;
|
||||
+}
|
||||
+
|
||||
+static ULONG WINAPI ClassFactory_Release(IClassFactory *iface)
|
||||
+{
|
||||
+ TRACE("(%p)\n", iface);
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
+static HRESULT WINAPI ClassFactory_LockServer(IClassFactory *iface, BOOL fLock)
|
||||
+{
|
||||
+ TRACE("(%p)->(%x)\n", iface, fLock);
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
+static const IClassFactoryVtbl DirectFactoryVtbl = {
|
||||
+ ClassFactory_QueryInterface,
|
||||
+ ClassFactory_AddRef,
|
||||
+ ClassFactory_Release,
|
||||
+ DirectManipulation_CreateInstance,
|
||||
+ ClassFactory_LockServer
|
||||
+};
|
||||
+
|
||||
+static IClassFactory direct_factory = { &DirectFactoryVtbl };
|
||||
+
|
||||
HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
|
||||
{
|
||||
- FIXME("(%s,%s,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
+ if(IsEqualGUID(&CLSID_DirectManipulationManager, rclsid) ||
|
||||
+ IsEqualGUID(&CLSID_DirectManipulationSharedManager, rclsid) ) {
|
||||
+ TRACE("(CLSID_DirectManipulationManager %s %p)\n", debugstr_guid(riid), ppv);
|
||||
+ return IClassFactory_QueryInterface(&direct_factory, riid, ppv);
|
||||
+ }
|
||||
+
|
||||
+ FIXME("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
|
||||
return CLASS_E_CLASSNOTAVAILABLE;
|
||||
-}
|
||||
\ No newline at end of file
|
||||
+}
|
||||
--
|
||||
2.17.1
|
||||
|
1
patches/directmanipulation-new-dll/definition
Normal file
1
patches/directmanipulation-new-dll/definition
Normal file
@ -0,0 +1 @@
|
||||
Fixes: [44865] directmanipulation: New DLL.
|
@ -134,6 +134,7 @@ patch_enable_all ()
|
||||
enable_dinput_joy_mappings="$1"
|
||||
enable_dinput_reconnect_joystick="$1"
|
||||
enable_dinput_remap_joystick="$1"
|
||||
enable_directmanipulation_new_dll="$1"
|
||||
enable_dsound_EAX="$1"
|
||||
enable_dsound_Fast_Mixer="$1"
|
||||
enable_dwmapi_DwmGetTransportAttributes="$1"
|
||||
@ -534,6 +535,9 @@ patch_enable ()
|
||||
dinput-remap-joystick)
|
||||
enable_dinput_remap_joystick="$2"
|
||||
;;
|
||||
directmanipulation-new-dll)
|
||||
enable_directmanipulation_new_dll="$2"
|
||||
;;
|
||||
dsound-EAX)
|
||||
enable_dsound_EAX="$2"
|
||||
;;
|
||||
@ -3251,6 +3255,29 @@ if test "$enable_dinput_remap_joystick" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset directmanipulation-new-dll
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
# | * [#44865] directmanipulation: New DLL.
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * configure, configure.ac, dlls/directmanipulation/Makefile.in, dlls/directmanipulation/directmanip.idl,
|
||||
# | dlls/directmanipulation/directmanipulation.c, dlls/directmanipulation/directmanipulation.spec, dlls/uuid/uuid.c,
|
||||
# | include/Makefile.in, include/directmanipulation.idl
|
||||
# |
|
||||
if test "$enable_directmanipulation_new_dll" -eq 1; then
|
||||
patch_apply directmanipulation-new-dll/0001-include-Add-directmanipulation.idl.patch
|
||||
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
|
||||
(
|
||||
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 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset dsound-Fast_Mixer
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
|
Loading…
x
Reference in New Issue
Block a user