Added directmanipulation-new-dll patchset

This commit is contained in:
Alistair Leslie-Hughes 2019-07-18 11:44:22 +10:00
parent 460094e600
commit a0735f083d
6 changed files with 646 additions and 0 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -0,0 +1 @@
Fixes: [44865] directmanipulation: New DLL.

View File

@ -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: