mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against 12cfe6826773708e3b15f73b9674ccb959000d8b.
This commit is contained in:
parent
a644c49d6d
commit
f20c33fa04
@ -1,4 +1,4 @@
|
||||
From 0a07ca826c7991b6c4e2455ff374e6fee4f93b93 Mon Sep 17 00:00:00 2001
|
||||
From 45940635b59cf3183e26ab3ffd2b8f486161e5ad Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 3 Apr 2017 05:30:27 +0200
|
||||
Subject: [PATCH] ntdll: Implement HashLinks field in LDR module data.
|
||||
@ -110,10 +110,10 @@ index 1db68a191a3..bec46088518 100644
|
||||
test_dll_file( "kernel32.dll" );
|
||||
test_dll_file( "advapi32.dll" );
|
||||
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
|
||||
index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
index 01644df7763..8c6d05cb94e 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -114,6 +114,9 @@ struct file_id
|
||||
@@ -112,6 +112,9 @@ struct file_id
|
||||
BYTE ObjectId[16];
|
||||
};
|
||||
|
||||
@ -123,7 +123,7 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
/* internal representation of loaded modules */
|
||||
typedef struct _wine_modref
|
||||
{
|
||||
@@ -453,6 +456,52 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module )
|
||||
@@ -450,6 +453,52 @@ static void call_ldr_notifications( ULONG reason, LDR_DATA_TABLE_ENTRY *module )
|
||||
}
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
/*************************************************************************
|
||||
* get_modref
|
||||
*
|
||||
@@ -1195,7 +1244,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name
|
||||
@@ -1196,7 +1245,12 @@ static WINE_MODREF *alloc_module( HMODULE hModule, const UNICODE_STRING *nt_name
|
||||
&wm->ldr.InLoadOrderLinks);
|
||||
InsertTailList(&NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList,
|
||||
&wm->ldr.InMemoryOrderLinks);
|
||||
@ -189,7 +189,7 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
|
||||
if (!(nt->OptionalHeader.DllCharacteristics & IMAGE_DLLCHARACTERISTICS_NX_COMPAT))
|
||||
{
|
||||
@@ -1873,6 +1927,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
|
||||
@@ -1876,6 +1930,7 @@ static NTSTATUS build_module( LPCWSTR load_path, const UNICODE_STRING *nt_name,
|
||||
/* the module has only be inserted in the load & memory order lists */
|
||||
RemoveEntryList(&wm->ldr.InLoadOrderLinks);
|
||||
RemoveEntryList(&wm->ldr.InMemoryOrderLinks);
|
||||
@ -197,7 +197,7 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
|
||||
/* FIXME: there are several more dangling references
|
||||
* left. Including dlls loaded by this dll before the
|
||||
@@ -3246,6 +3301,7 @@ static void free_modref( WINE_MODREF *wm )
|
||||
@@ -3277,6 +3332,7 @@ static void free_modref( WINE_MODREF *wm )
|
||||
{
|
||||
RemoveEntryList(&wm->ldr.InLoadOrderLinks);
|
||||
RemoveEntryList(&wm->ldr.InMemoryOrderLinks);
|
||||
@ -205,7 +205,7 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
if (wm->ldr.InInitializationOrderLinks.Flink)
|
||||
RemoveEntryList(&wm->ldr.InInitializationOrderLinks);
|
||||
|
||||
@@ -3973,6 +4029,7 @@ static NTSTATUS process_init(void)
|
||||
@@ -3979,6 +4035,7 @@ static NTSTATUS process_init(void)
|
||||
INITIAL_TEB stack;
|
||||
TEB *teb = NtCurrentTeb();
|
||||
PEB *peb = teb->Peb;
|
||||
@ -213,18 +213,18 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
|
||||
peb->LdrData = &ldr;
|
||||
peb->FastPebLock = &peb_lock;
|
||||
@@ -4006,6 +4063,10 @@ static NTSTATUS process_init(void)
|
||||
load_global_options();
|
||||
version_init();
|
||||
@@ -4002,6 +4059,10 @@ static NTSTATUS process_init(void)
|
||||
InitializeListHead( &ldr.InMemoryOrderModuleList );
|
||||
InitializeListHead( &ldr.InInitializationOrderModuleList );
|
||||
|
||||
+ /* initialize hash table */
|
||||
+ for (i = 0; i < HASH_MAP_SIZE; i++)
|
||||
+ InitializeListHead(&hash_table[i]);
|
||||
+
|
||||
if (!(status = load_dll( params->DllPath.Buffer, params->ImagePathName.Buffer, NULL,
|
||||
DONT_RESOLVE_DLL_REFERENCES, &wm )))
|
||||
{
|
||||
@@ -4094,6 +4155,10 @@ static NTSTATUS process_init(void)
|
||||
#ifndef _WIN64
|
||||
is_wow64 = !!NtCurrentTeb64();
|
||||
#endif
|
||||
@@ -4050,6 +4111,10 @@ static NTSTATUS process_init(void)
|
||||
teb->Tib.StackBase = stack.StackBase;
|
||||
teb->Tib.StackLimit = stack.StackLimit;
|
||||
teb->DeallocationStack = stack.DeallocationStack;
|
||||
@ -236,10 +236,10 @@ index 6c86e6b2e6c..b8d6adaf390 100644
|
||||
}
|
||||
|
||||
diff --git a/include/winternl.h b/include/winternl.h
|
||||
index f0ab223ef2e..b6676717436 100644
|
||||
index fcdedaec8aa..6ea72da54f7 100644
|
||||
--- a/include/winternl.h
|
||||
+++ b/include/winternl.h
|
||||
@@ -2794,8 +2794,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY
|
||||
@@ -3040,8 +3040,8 @@ typedef struct _LDR_DATA_TABLE_ENTRY
|
||||
ULONG Flags;
|
||||
SHORT LoadCount;
|
||||
SHORT TlsIndex;
|
||||
@ -250,5 +250,5 @@ index f0ab223ef2e..b6676717436 100644
|
||||
HANDLE ActivationContext;
|
||||
void* Lock;
|
||||
--
|
||||
2.20.1
|
||||
2.30.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 9970a7ac4c75019023d35ab7fadcfa8e5d6af32f Mon Sep 17 00:00:00 2001
|
||||
From 5da647f8fca9e37cec233b3357561d25fd205603 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sat, 30 May 2015 02:23:15 +0200
|
||||
Subject: [PATCH] ntdll: Add support for hiding wine version information from
|
||||
@ -10,10 +10,10 @@ Subject: [PATCH] ntdll: Add support for hiding wine version information from
|
||||
2 files changed, 103 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
|
||||
index 1110fa37b6d..f0a9748b5fa 100644
|
||||
index 01644df7763..437bf6e224c 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -75,6 +75,9 @@ BOOL is_wow64 = FALSE;
|
||||
@@ -73,6 +73,9 @@ BOOL is_wow64 = FALSE;
|
||||
/* system search path */
|
||||
static const WCHAR system_path[] = L"C:\\windows\\system32;C:\\windows\\system;C:\\windows";
|
||||
|
||||
@ -23,7 +23,7 @@ index 1110fa37b6d..f0a9748b5fa 100644
|
||||
static BOOL imports_fixup_done = FALSE; /* set once the imports have been fixed up, before attaching them */
|
||||
static BOOL process_detaching = FALSE; /* set on process detach to avoid deadlocks with thread detach */
|
||||
static int free_lib_count; /* recursion depth of LdrUnloadDll calls */
|
||||
@@ -91,6 +94,8 @@ struct dll_dir_entry
|
||||
@@ -90,6 +93,8 @@ struct dll_dir_entry
|
||||
|
||||
static struct list dll_dir_list = LIST_INIT( dll_dir_list ); /* extra dirs from LdrAddDllDirectory */
|
||||
|
||||
@ -32,7 +32,7 @@ index 1110fa37b6d..f0a9748b5fa 100644
|
||||
struct ldr_notification
|
||||
{
|
||||
struct list entry;
|
||||
@@ -1757,6 +1762,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic )
|
||||
@@ -1671,6 +1676,96 @@ NTSTATUS WINAPI LdrUnlockLoaderLock( ULONG flags, ULONG_PTR magic )
|
||||
}
|
||||
|
||||
|
||||
@ -129,29 +129,29 @@ index 1110fa37b6d..f0a9748b5fa 100644
|
||||
/******************************************************************
|
||||
* LdrGetProcedureAddress (NTDLL.@)
|
||||
*/
|
||||
@@ -1777,7 +1872,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name,
|
||||
LPCWSTR load_path = NtCurrentTeb()->Peb->ProcessParameters->DllPath.Buffer;
|
||||
void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1, load_path )
|
||||
: find_ordinal_export( module, exports, exp_size, ord - exports->Base, load_path );
|
||||
@@ -1690,7 +1785,7 @@ NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE module, const ANSI_STRING *name,
|
||||
{
|
||||
void *proc = name ? find_named_export( module, exports, exp_size, name->Buffer, -1, NULL )
|
||||
: find_ordinal_export( module, exports, exp_size, ord - exports->Base, NULL );
|
||||
- if (proc)
|
||||
+ if (proc && !is_hidden_export( proc ))
|
||||
{
|
||||
*address = proc;
|
||||
ret = STATUS_SUCCESS;
|
||||
@@ -4156,6 +4251,8 @@ static NTSTATUS process_init(void)
|
||||
NtTerminateProcess( GetCurrentProcess(), status );
|
||||
}
|
||||
@@ -4026,6 +4121,8 @@ static NTSTATUS process_init(void)
|
||||
|
||||
build_ntdll_module();
|
||||
|
||||
+ hidden_exports_init( wm->ldr.FullDllName.Buffer );
|
||||
+
|
||||
#ifndef _WIN64
|
||||
if (NtCurrentTeb64())
|
||||
{
|
||||
if (is_wow64)
|
||||
map_wow64cpu();
|
||||
diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
|
||||
index 3bd70b60874..98629129c44 100644
|
||||
index b8f9dc28e63..a4db195c375 100644
|
||||
--- a/dlls/ntdll/ntdll_misc.h
|
||||
+++ b/dlls/ntdll/ntdll_misc.h
|
||||
@@ -155,6 +155,11 @@ static inline TEB64 *NtCurrentTeb64(void) { return (TEB64 *)NtCurrentTeb()->GdiB
|
||||
@@ -100,6 +100,11 @@ static inline TEB64 *NtCurrentTeb64(void) { return (TEB64 *)NtCurrentTeb()->GdiB
|
||||
|
||||
NTSTATUS WINAPI RtlHashUnicodeString(PCUNICODE_STRING,BOOLEAN,ULONG,ULONG*);
|
||||
|
||||
@ -164,5 +164,5 @@ index 3bd70b60874..98629129c44 100644
|
||||
static inline void ascii_to_unicode( WCHAR *dst, const char *src, size_t len )
|
||||
{
|
||||
--
|
||||
2.29.2
|
||||
2.30.2
|
||||
|
||||
|
@ -51,7 +51,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "f69c8f018188af49d5a3916f7bb7e3ab984fd3ec"
|
||||
echo "12cfe6826773708e3b15f73b9674ccb959000d8b"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 34e55c92e6deace0326f436c2c935bf2827510e1 Mon Sep 17 00:00:00 2001
|
||||
From 464489a607fc03a7a157e779c0c152e833cfab33 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 8 May 2017 23:33:45 +0200
|
||||
Subject: [PATCH] shell32: Add security property tab.
|
||||
@ -11,11 +11,11 @@ Subject: [PATCH] shell32: Add security property tab.
|
||||
4 files changed, 438 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in
|
||||
index e89177c3a73..6be1631a05a 100644
|
||||
index fe49bf09f98..f6fcf2e18eb 100644
|
||||
--- a/dlls/shell32/Makefile.in
|
||||
+++ b/dlls/shell32/Makefile.in
|
||||
@@ -1,7 +1,7 @@
|
||||
EXTRADEFS = -D_SHELL32_ -DWINE_NO_NAMELESS_EXTENSION
|
||||
EXTRADEFS = -D_SHELL32_
|
||||
MODULE = shell32.dll
|
||||
IMPORTLIB = shell32
|
||||
-IMPORTS = uuid shlwapi user32 gdi32 advapi32
|
||||
|
@ -1,258 +0,0 @@
|
||||
From 7d845fec580f156ed26a0a200ddd1611e54c1ee4 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Fri, 28 Aug 2020 15:59:50 +0200
|
||||
Subject: [PATCH] windows.globalization: Add stub dll.
|
||||
|
||||
---
|
||||
configure.ac | 1 +
|
||||
dlls/windows.globalization.dll/Makefile.in | 5 +
|
||||
.../windows.globalization.spec | 3 +
|
||||
.../windows.globalization_main.c | 141 ++++++++++++++++++
|
||||
include/Makefile.in | 1 +
|
||||
include/windows.globalization.idl | 27 ++++
|
||||
loader/wine.inf.in | 1 +
|
||||
7 files changed, 179 insertions(+)
|
||||
create mode 100644 dlls/windows.globalization.dll/Makefile.in
|
||||
create mode 100644 dlls/windows.globalization.dll/windows.globalization.spec
|
||||
create mode 100644 dlls/windows.globalization.dll/windows.globalization_main.c
|
||||
create mode 100644 include/windows.globalization.idl
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 558d2e906a2..036b5c2691d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3802,6 +3802,7 @@ WINE_CONFIG_MAKEFILE(dlls/win87em.dll16,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(dlls/winaspi.dll16,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(dlls/windebug.dll16,enable_win16)
|
||||
WINE_CONFIG_MAKEFILE(dlls/windows.gaming.input.dll)
|
||||
+WINE_CONFIG_MAKEFILE(dlls/windows.globalization.dll)
|
||||
WINE_CONFIG_MAKEFILE(dlls/windows.media.speech)
|
||||
WINE_CONFIG_MAKEFILE(dlls/windows.media.speech/tests)
|
||||
WINE_CONFIG_MAKEFILE(dlls/windowscodecs)
|
||||
diff --git a/dlls/windows.globalization.dll/Makefile.in b/dlls/windows.globalization.dll/Makefile.in
|
||||
new file mode 100644
|
||||
index 00000000000..25dc1cac3e6
|
||||
--- /dev/null
|
||||
+++ b/dlls/windows.globalization.dll/Makefile.in
|
||||
@@ -0,0 +1,5 @@
|
||||
+MODULE = windows.globalization.dll
|
||||
+IMPORTS = combase
|
||||
+EXTRADLLFLAGS = -mno-cygwin
|
||||
+C_SRCS = \
|
||||
+ windows.globalization_main.c
|
||||
diff --git a/dlls/windows.globalization.dll/windows.globalization.spec b/dlls/windows.globalization.dll/windows.globalization.spec
|
||||
new file mode 100644
|
||||
index 00000000000..721493229c2
|
||||
--- /dev/null
|
||||
+++ b/dlls/windows.globalization.dll/windows.globalization.spec
|
||||
@@ -0,0 +1,3 @@
|
||||
+1 stdcall -private DllCanUnloadNow()
|
||||
+2 stdcall -private DllGetActivationFactory(ptr ptr)
|
||||
+3 stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||
diff --git a/dlls/windows.globalization.dll/windows.globalization_main.c b/dlls/windows.globalization.dll/windows.globalization_main.c
|
||||
new file mode 100644
|
||||
index 00000000000..840ce08c0c5
|
||||
--- /dev/null
|
||||
+++ b/dlls/windows.globalization.dll/windows.globalization_main.c
|
||||
@@ -0,0 +1,141 @@
|
||||
+#include <stdarg.h>
|
||||
+
|
||||
+#define COBJMACROS
|
||||
+#include "windef.h"
|
||||
+#include "winbase.h"
|
||||
+#include "winstring.h"
|
||||
+#include "wine/debug.h"
|
||||
+#include "objbase.h"
|
||||
+
|
||||
+#include "initguid.h"
|
||||
+#include "activation.h"
|
||||
+
|
||||
+#include "windows.foundation.h"
|
||||
+#include "windows.globalization.h"
|
||||
+#include "windows.system.userprofile.h"
|
||||
+
|
||||
+WINE_DEFAULT_DEBUG_CHANNEL(locale);
|
||||
+
|
||||
+static const char *debugstr_hstring(HSTRING hstr)
|
||||
+{
|
||||
+ const WCHAR *str;
|
||||
+ UINT32 len;
|
||||
+ if (hstr && !((ULONG_PTR)hstr >> 16)) return "(invalid)";
|
||||
+ str = WindowsGetStringRawBuffer(hstr, &len);
|
||||
+ return wine_dbgstr_wn(str, len);
|
||||
+}
|
||||
+
|
||||
+struct windows_globalization
|
||||
+{
|
||||
+ IActivationFactory IActivationFactory_iface;
|
||||
+ LONG ref;
|
||||
+};
|
||||
+
|
||||
+static inline struct windows_globalization *impl_from_IActivationFactory(IActivationFactory *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct windows_globalization, IActivationFactory_iface);
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE windows_globalization_QueryInterface(
|
||||
+ IActivationFactory *iface, REFIID iid, void **out)
|
||||
+{
|
||||
+ struct windows_globalization *impl = impl_from_IActivationFactory(iface);
|
||||
+ TRACE("iface %p, iid %s, out %p stub!\n", iface, debugstr_guid(iid), out);
|
||||
+
|
||||
+ if (IsEqualGUID(iid, &IID_IUnknown) ||
|
||||
+ IsEqualGUID(iid, &IID_IInspectable) ||
|
||||
+ IsEqualGUID(iid, &IID_IActivationFactory))
|
||||
+ {
|
||||
+ IUnknown_AddRef(iface);
|
||||
+ *out = &impl->IActivationFactory_iface;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
+ FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
|
||||
+ *out = NULL;
|
||||
+ return E_NOINTERFACE;
|
||||
+}
|
||||
+
|
||||
+static ULONG STDMETHODCALLTYPE windows_globalization_AddRef(
|
||||
+ IActivationFactory *iface)
|
||||
+{
|
||||
+ struct windows_globalization *impl = impl_from_IActivationFactory(iface);
|
||||
+ ULONG ref = InterlockedIncrement(&impl->ref);
|
||||
+ TRACE("iface %p, ref %u.\n", iface, ref);
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static ULONG STDMETHODCALLTYPE windows_globalization_Release(
|
||||
+ IActivationFactory *iface)
|
||||
+{
|
||||
+ struct windows_globalization *impl = impl_from_IActivationFactory(iface);
|
||||
+ ULONG ref = InterlockedDecrement(&impl->ref);
|
||||
+ TRACE("iface %p, ref %u.\n", iface, ref);
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE windows_globalization_GetIids(
|
||||
+ IActivationFactory *iface, ULONG *iid_count, IID **iids)
|
||||
+{
|
||||
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE windows_globalization_GetRuntimeClassName(
|
||||
+ IActivationFactory *iface, HSTRING *class_name)
|
||||
+{
|
||||
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE windows_globalization_GetTrustLevel(
|
||||
+ IActivationFactory *iface, TrustLevel *trust_level)
|
||||
+{
|
||||
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE windows_globalization_ActivateInstance(
|
||||
+ IActivationFactory *iface, IInspectable **instance)
|
||||
+{
|
||||
+ FIXME("iface %p, instance %p stub!\n", iface, instance);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static const struct IActivationFactoryVtbl activation_factory_vtbl =
|
||||
+{
|
||||
+ windows_globalization_QueryInterface,
|
||||
+ windows_globalization_AddRef,
|
||||
+ windows_globalization_Release,
|
||||
+ /* IInspectable methods */
|
||||
+ windows_globalization_GetIids,
|
||||
+ windows_globalization_GetRuntimeClassName,
|
||||
+ windows_globalization_GetTrustLevel,
|
||||
+ /* IActivationFactory methods */
|
||||
+ windows_globalization_ActivateInstance,
|
||||
+};
|
||||
+
|
||||
+static struct windows_globalization windows_globalization =
|
||||
+{
|
||||
+ {&activation_factory_vtbl},
|
||||
+ 0
|
||||
+};
|
||||
+
|
||||
+HRESULT WINAPI DllCanUnloadNow(void)
|
||||
+{
|
||||
+ return S_FALSE;
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID riid, void **out)
|
||||
+{
|
||||
+ FIXME("clsid %s, riid %s, out %p stub!\n", debugstr_guid(clsid), debugstr_guid(riid), out);
|
||||
+ return CLASS_E_CLASSNOTAVAILABLE;
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI DllGetActivationFactory(HSTRING classid, IActivationFactory **factory)
|
||||
+{
|
||||
+ TRACE("classid %s, factory %p.\n", debugstr_hstring(classid), factory);
|
||||
+ *factory = &windows_globalization.IActivationFactory_iface;
|
||||
+ IUnknown_AddRef(*factory);
|
||||
+ return S_OK;
|
||||
+}
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 22ed5f3a2d5..a868eadce4b 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -752,6 +752,7 @@ SOURCES = \
|
||||
windows.foundation.idl \
|
||||
windows.gaming.input.idl \
|
||||
windows.gaming.input.forcefeedback.idl \
|
||||
+ windows.globalization.idl \
|
||||
windows.h \
|
||||
windows.media.speechsynthesis.idl \
|
||||
windows.system.idl \
|
||||
diff --git a/include/windows.globalization.idl b/include/windows.globalization.idl
|
||||
new file mode 100644
|
||||
index 00000000000..c3f80999af5
|
||||
--- /dev/null
|
||||
+++ b/include/windows.globalization.idl
|
||||
@@ -0,0 +1,27 @@
|
||||
+/*
|
||||
+ * Copyright 2020 Rémi Bernon for CodeWeavers
|
||||
+ *
|
||||
+ * 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
|
||||
+ */
|
||||
+
|
||||
+#ifdef __WIDL__
|
||||
+#pragma winrt ns_prefix
|
||||
+#endif
|
||||
+
|
||||
+import "inspectable.idl";
|
||||
+import "windows.foundation.idl";
|
||||
+
|
||||
+namespace Windows {
|
||||
+}
|
||||
diff --git a/loader/wine.inf.in b/loader/wine.inf.in
|
||||
index c10cb37a172..12d6d3ecb6e 100644
|
||||
--- a/loader/wine.inf.in
|
||||
+++ b/loader/wine.inf.in
|
||||
@@ -713,6 +713,7 @@ HKLM,%MciExtStr%,"wvx",,"MPEGVideo"
|
||||
[Misc]
|
||||
HKLM,Software\Microsoft\WindowsRuntime\ActivatableClassId\Windows.Gaming.Input.Gamepad,"DllPath",2,"Windows.Gaming.Input.dll"
|
||||
HKLM,Software\Microsoft\WindowsRuntime\ActivatableClassId\Windows.Gaming.Input.RawGameController,"DllPath",2,"Windows.Gaming.Input.dll"
|
||||
+HKLM,Software\Microsoft\WindowsRuntime\ActivatableClassId\Windows.System.UserProfile.GlobalizationPreferences,"DllPath",2,"Windows.Globalization.dll"
|
||||
HKLM,Software\Borland\Database Engine\Settings\SYSTEM\INIT,SHAREDMEMLOCATION,,9000
|
||||
HKLM,Software\Clients\Mail,,2,"Native Mail Client"
|
||||
HKLM,Software\Clients\Mail\Native Mail Client,,2,"Native Mail Client"
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,323 +0,0 @@
|
||||
From f184cbcf4416e8a5365bd6c63cc5649e9e53393c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Tue, 13 Oct 2020 18:11:35 +0200
|
||||
Subject: [PATCH] windows.globalization: Implement
|
||||
IGlobalizationPreferencesStatics stubs.
|
||||
|
||||
---
|
||||
dlls/windows.globalization.dll/Makefile.in | 2 +-
|
||||
.../windows.globalization_main.c | 134 ++++++++++++++++++
|
||||
include/Makefile.in | 1 +
|
||||
include/windows.foundation.idl | 1 +
|
||||
include/windows.globalization.idl | 20 ++-
|
||||
include/windows.system.userprofile.idl | 56 ++++++++
|
||||
6 files changed, 212 insertions(+), 2 deletions(-)
|
||||
create mode 100644 include/windows.system.userprofile.idl
|
||||
|
||||
diff --git a/dlls/windows.globalization.dll/Makefile.in b/dlls/windows.globalization.dll/Makefile.in
|
||||
index 25dc1cac3e6..7ddd97aef52 100644
|
||||
--- a/dlls/windows.globalization.dll/Makefile.in
|
||||
+++ b/dlls/windows.globalization.dll/Makefile.in
|
||||
@@ -1,5 +1,5 @@
|
||||
MODULE = windows.globalization.dll
|
||||
-IMPORTS = combase
|
||||
+IMPORTS = combase uuid
|
||||
EXTRADLLFLAGS = -mno-cygwin
|
||||
C_SRCS = \
|
||||
windows.globalization_main.c
|
||||
diff --git a/dlls/windows.globalization.dll/windows.globalization_main.c b/dlls/windows.globalization.dll/windows.globalization_main.c
|
||||
index 840ce08c0c5..5bb0b46866d 100644
|
||||
--- a/dlls/windows.globalization.dll/windows.globalization_main.c
|
||||
+++ b/dlls/windows.globalization.dll/windows.globalization_main.c
|
||||
@@ -10,8 +10,12 @@
|
||||
#include "initguid.h"
|
||||
#include "activation.h"
|
||||
|
||||
+#define WIDL_using_Windows_Foundation
|
||||
+#define WIDL_using_Windows_Foundation_Collections
|
||||
#include "windows.foundation.h"
|
||||
+#define WIDL_using_Windows_Globalization
|
||||
#include "windows.globalization.h"
|
||||
+#define WIDL_using_Windows_System_UserProfile
|
||||
#include "windows.system.userprofile.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(locale);
|
||||
@@ -28,6 +32,7 @@ static const char *debugstr_hstring(HSTRING hstr)
|
||||
struct windows_globalization
|
||||
{
|
||||
IActivationFactory IActivationFactory_iface;
|
||||
+ IGlobalizationPreferencesStatics IGlobalizationPreferencesStatics_iface;
|
||||
LONG ref;
|
||||
};
|
||||
|
||||
@@ -36,6 +41,127 @@ static inline struct windows_globalization *impl_from_IActivationFactory(IActiva
|
||||
return CONTAINING_RECORD(iface, struct windows_globalization, IActivationFactory_iface);
|
||||
}
|
||||
|
||||
+static inline struct windows_globalization *impl_from_IGlobalizationPreferencesStatics(IGlobalizationPreferencesStatics *iface)
|
||||
+{
|
||||
+ return CONTAINING_RECORD(iface, struct windows_globalization, IGlobalizationPreferencesStatics_iface);
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_QueryInterface(
|
||||
+ IGlobalizationPreferencesStatics *iface, REFIID iid, void **object)
|
||||
+{
|
||||
+ FIXME("iface %p, iid %s, object %p stub!\n", iface, debugstr_guid(iid), object);
|
||||
+
|
||||
+ if (IsEqualGUID(iid, &IID_IAgileObject))
|
||||
+ {
|
||||
+ IUnknown_AddRef(iface);
|
||||
+ *object = iface;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
+ WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
|
||||
+ *object = NULL;
|
||||
+ return E_NOINTERFACE;
|
||||
+}
|
||||
+
|
||||
+static ULONG STDMETHODCALLTYPE globalization_preferences_AddRef(
|
||||
+ IGlobalizationPreferencesStatics *iface)
|
||||
+{
|
||||
+ struct windows_globalization *impl = impl_from_IGlobalizationPreferencesStatics(iface);
|
||||
+ ULONG ref = InterlockedIncrement(&impl->ref);
|
||||
+ FIXME("iface %p -> ref %u.\n", iface, ref);
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static ULONG STDMETHODCALLTYPE globalization_preferences_Release(
|
||||
+ IGlobalizationPreferencesStatics *iface)
|
||||
+{
|
||||
+ struct windows_globalization *impl = impl_from_IGlobalizationPreferencesStatics(iface);
|
||||
+ ULONG ref = InterlockedDecrement(&impl->ref);
|
||||
+ FIXME("iface %p -> ref %u.\n", iface, ref);
|
||||
+ return ref;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_GetIids(
|
||||
+ IGlobalizationPreferencesStatics *iface, ULONG *iid_count, IID **iids)
|
||||
+{
|
||||
+ FIXME("iface %p, iid_count %p, iids %p stub!\n", iface, iid_count, iids);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_GetRuntimeClassName(
|
||||
+ IGlobalizationPreferencesStatics *iface, HSTRING *class_name)
|
||||
+{
|
||||
+ FIXME("iface %p, class_name %p stub!\n", iface, class_name);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_GetTrustLevel(
|
||||
+ IGlobalizationPreferencesStatics *iface, TrustLevel *trust_level)
|
||||
+{
|
||||
+ FIXME("iface %p, trust_level %p stub!\n", iface, trust_level);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_get_Calendars(IGlobalizationPreferencesStatics *iface,
|
||||
+ IVectorView_HSTRING **value)
|
||||
+{
|
||||
+ FIXME("iface %p, value %p stub!\n", iface, value);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_get_Clocks(IGlobalizationPreferencesStatics *iface,
|
||||
+ IVectorView_HSTRING **value)
|
||||
+{
|
||||
+ FIXME("iface %p, value %p stub!\n", iface, value);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_get_Currencies(IGlobalizationPreferencesStatics *iface,
|
||||
+ IVectorView_HSTRING **value)
|
||||
+{
|
||||
+ FIXME("iface %p, value %p stub!\n", iface, value);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_get_Languages(IGlobalizationPreferencesStatics *iface,
|
||||
+ IVectorView_HSTRING **value)
|
||||
+{
|
||||
+ FIXME("iface %p, value %p stub!\n", iface, value);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_get_HomeGeographicRegion(IGlobalizationPreferencesStatics *iface,
|
||||
+ HSTRING* value)
|
||||
+{
|
||||
+ FIXME("iface %p, value %p stub!\n", iface, value);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static HRESULT STDMETHODCALLTYPE globalization_preferences_get_WeekStartsOn(IGlobalizationPreferencesStatics *iface,
|
||||
+ enum DayOfWeek* value)
|
||||
+{
|
||||
+ FIXME("iface %p, value %p stub!\n", iface, value);
|
||||
+ return E_NOTIMPL;
|
||||
+}
|
||||
+
|
||||
+static const struct IGlobalizationPreferencesStaticsVtbl globalization_preferences_vtbl =
|
||||
+{
|
||||
+ globalization_preferences_QueryInterface,
|
||||
+ globalization_preferences_AddRef,
|
||||
+ globalization_preferences_Release,
|
||||
+ /* IInspectable methods */
|
||||
+ globalization_preferences_GetIids,
|
||||
+ globalization_preferences_GetRuntimeClassName,
|
||||
+ globalization_preferences_GetTrustLevel,
|
||||
+ /* IGlobalizationPreferencesStatics methods */
|
||||
+ globalization_preferences_get_Calendars,
|
||||
+ globalization_preferences_get_Clocks,
|
||||
+ globalization_preferences_get_Currencies,
|
||||
+ globalization_preferences_get_Languages,
|
||||
+ globalization_preferences_get_HomeGeographicRegion,
|
||||
+ globalization_preferences_get_WeekStartsOn,
|
||||
+};
|
||||
+
|
||||
static HRESULT STDMETHODCALLTYPE windows_globalization_QueryInterface(
|
||||
IActivationFactory *iface, REFIID iid, void **out)
|
||||
{
|
||||
@@ -51,6 +177,13 @@ static HRESULT STDMETHODCALLTYPE windows_globalization_QueryInterface(
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
+ if (IsEqualGUID(iid, &IID_IGlobalizationPreferencesStatics))
|
||||
+ {
|
||||
+ IUnknown_AddRef(iface);
|
||||
+ *out = &impl->IGlobalizationPreferencesStatics_iface;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
FIXME("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(iid));
|
||||
*out = NULL;
|
||||
return E_NOINTERFACE;
|
||||
@@ -118,6 +251,7 @@ static const struct IActivationFactoryVtbl activation_factory_vtbl =
|
||||
static struct windows_globalization windows_globalization =
|
||||
{
|
||||
{&activation_factory_vtbl},
|
||||
+ {&globalization_preferences_vtbl},
|
||||
0
|
||||
};
|
||||
|
||||
diff --git a/include/Makefile.in b/include/Makefile.in
|
||||
index 95013040926..958530388b4 100644
|
||||
--- a/include/Makefile.in
|
||||
+++ b/include/Makefile.in
|
||||
@@ -755,6 +755,7 @@ SOURCES = \
|
||||
windows.h \
|
||||
windows.media.speechsynthesis.idl \
|
||||
windows.system.idl \
|
||||
+ windows.system.userprofile.idl \
|
||||
windowscontracts.idl \
|
||||
windowsx.h \
|
||||
wine/debug.h \
|
||||
diff --git a/include/windows.foundation.idl b/include/windows.foundation.idl
|
||||
index 2bed3d54cda..0d53fa6f407 100644
|
||||
--- a/include/windows.foundation.idl
|
||||
+++ b/include/windows.foundation.idl
|
||||
@@ -125,6 +125,7 @@ namespace Windows {
|
||||
declare {
|
||||
interface Windows.Foundation.AsyncOperationCompletedHandler<boolean>;
|
||||
interface Windows.Foundation.IAsyncOperation<boolean>;
|
||||
+ interface Windows.Foundation.Collections.IVectorView<HSTRING>;
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/include/windows.globalization.idl b/include/windows.globalization.idl
|
||||
index c3f80999af5..ac76455b847 100644
|
||||
--- a/include/windows.globalization.idl
|
||||
+++ b/include/windows.globalization.idl
|
||||
@@ -20,8 +20,26 @@
|
||||
#pragma winrt ns_prefix
|
||||
#endif
|
||||
|
||||
-import "inspectable.idl";
|
||||
import "windows.foundation.idl";
|
||||
|
||||
namespace Windows {
|
||||
+ namespace Globalization {
|
||||
+ typedef enum DayOfWeek DayOfWeek;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+namespace Windows {
|
||||
+ namespace Globalization {
|
||||
+ [contract(Windows.Foundation.UniversalApiContract, 1.0)]
|
||||
+ enum DayOfWeek
|
||||
+ {
|
||||
+ Sunday = 0,
|
||||
+ Monday = 1,
|
||||
+ Tuesday = 2,
|
||||
+ Wednesday = 3,
|
||||
+ Thursday = 4,
|
||||
+ Friday = 5,
|
||||
+ Saturday = 6
|
||||
+ };
|
||||
+ }
|
||||
}
|
||||
diff --git a/include/windows.system.userprofile.idl b/include/windows.system.userprofile.idl
|
||||
new file mode 100644
|
||||
index 00000000000..e2676f9dd89
|
||||
--- /dev/null
|
||||
+++ b/include/windows.system.userprofile.idl
|
||||
@@ -0,0 +1,56 @@
|
||||
+/*
|
||||
+ * Copyright 2020 Rémi Bernon for CodeWeavers
|
||||
+ *
|
||||
+ * 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
|
||||
+ */
|
||||
+
|
||||
+#ifdef __WIDL__
|
||||
+#pragma winrt ns_prefix
|
||||
+#endif
|
||||
+
|
||||
+import "windows.foundation.idl";
|
||||
+import "windows.globalization.idl";
|
||||
+
|
||||
+namespace Windows {
|
||||
+ namespace System {
|
||||
+ namespace UserProfile {
|
||||
+ interface IGlobalizationPreferencesStatics;
|
||||
+ runtimeclass GlobalizationPreferences;
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+namespace Windows {
|
||||
+ namespace System {
|
||||
+ namespace UserProfile {
|
||||
+
|
||||
+ [
|
||||
+ contract(Windows.Foundation.UniversalApiContract, 1.0),
|
||||
+ exclusiveto(Windows.System.UserProfile.GlobalizationPreferences),
|
||||
+ uuid(01bf4326-ed37-4e96-b0e9-c1340d1ea158)
|
||||
+ ]
|
||||
+ interface IGlobalizationPreferencesStatics : IInspectable
|
||||
+ {
|
||||
+ [propget] HRESULT Calendars([out, retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
|
||||
+ [propget] HRESULT Clocks([out, retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
|
||||
+ [propget] HRESULT Currencies([out, retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
|
||||
+ [propget] HRESULT Languages([out, retval] Windows.Foundation.Collections.IVectorView<HSTRING>** value);
|
||||
+ [propget] HRESULT HomeGeographicRegion([out, retval] HSTRING* value);
|
||||
+ [propget] HRESULT WeekStartsOn([out, retval] Windows.Globalization.DayOfWeek* value);
|
||||
+ }
|
||||
+
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,17 +1,17 @@
|
||||
From b925b9bbfc943c19128f0bef39eec8539c683dd7 Mon Sep 17 00:00:00 2001
|
||||
From 4f994a5499335f908debff6be84e49733c94144b Mon Sep 17 00:00:00 2001
|
||||
From: Mark Harmstone <mark@harmstone.com>
|
||||
Date: Thu, 4 Dec 2014 21:36:42 +0000
|
||||
Subject: [PATCH 5/7] winepulse: implement GetPropValue
|
||||
Subject: [PATCH] winepulse: implement GetPropValue
|
||||
|
||||
---
|
||||
dlls/winepulse.drv/mmdevdrv.c | 116 +++++++++++++++++++++++++++++++++++++++---
|
||||
dlls/winepulse.drv/mmdevdrv.c | 116 ++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 109 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c
|
||||
index 583690b..8311cbd 100644
|
||||
index 5c471d3c13b..b7ae9aeaabf 100644
|
||||
--- a/dlls/winepulse.drv/mmdevdrv.c
|
||||
+++ b/dlls/winepulse.drv/mmdevdrv.c
|
||||
@@ -82,6 +82,8 @@ static struct list g_sessions = LIST_INIT(g_sessions);
|
||||
@@ -83,6 +83,8 @@ static struct list g_sessions = LIST_INIT(g_sessions);
|
||||
typedef struct _PhysDevice {
|
||||
struct list entry;
|
||||
GUID guid;
|
||||
@ -20,7 +20,7 @@ index 583690b..8311cbd 100644
|
||||
WCHAR name[0];
|
||||
} PhysDevice;
|
||||
|
||||
@@ -585,14 +587,67 @@ static BOOL get_device_guid(EDataFlow flow, const char *device, GUID *guid)
|
||||
@@ -674,14 +676,67 @@ static BOOL get_device_guid(EDataFlow flow, const char *device, GUID *guid)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ index 583690b..8311cbd 100644
|
||||
list_add_tail(list, &dev->entry);
|
||||
}
|
||||
}
|
||||
@@ -600,6 +655,7 @@ static void pulse_add_device(struct list *list, GUID *guid, const char *name)
|
||||
@@ -689,6 +744,7 @@ static void pulse_add_device(struct list *list, GUID *guid, const char *name)
|
||||
|
||||
static void pulse_phys_speakers_cb(pa_context *c, const pa_sink_info *i, int eol, void *userdata)
|
||||
{
|
||||
@ -98,7 +98,7 @@ index 583690b..8311cbd 100644
|
||||
GUID guid;
|
||||
|
||||
if (i) {
|
||||
@@ -609,18 +665,25 @@ static void pulse_phys_speakers_cb(pa_context *c, const pa_sink_info *i, int eol
|
||||
@@ -698,18 +754,25 @@ static void pulse_phys_speakers_cb(pa_context *c, const pa_sink_info *i, int eol
|
||||
|
||||
if (!get_device_guid(eRender, i->name, &guid))
|
||||
CoCreateGuid(&guid);
|
||||
@ -126,7 +126,7 @@ index 583690b..8311cbd 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -691,8 +754,8 @@ static HRESULT pulse_test_connect(void)
|
||||
@@ -780,8 +843,8 @@ static HRESULT pulse_test_connect(void)
|
||||
pulse_probe_settings(ml, ctx, 0, &pulse_fmt[1]);
|
||||
|
||||
g_phys_speakers_mask = 0;
|
||||
@ -137,7 +137,7 @@ index 583690b..8311cbd 100644
|
||||
|
||||
o = pa_context_get_sink_info_list(ctx, &pulse_phys_speakers_cb, NULL);
|
||||
if (o) {
|
||||
@@ -3554,8 +3617,36 @@ HRESULT WINAPI AUDDRV_GetAudioSessionManager(IMMDevice *device,
|
||||
@@ -3889,8 +3952,36 @@ HRESULT WINAPI AUDDRV_GetAudioSessionManager(IMMDevice *device,
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@ -152,15 +152,15 @@ index 583690b..8311cbd 100644
|
||||
+ return E_FAIL;
|
||||
+
|
||||
+ out->vt = VT_LPWSTR;
|
||||
+ out->u.pwszVal = CoTaskMemAlloc((strlenW(dev->device) + 1) * sizeof(WCHAR));
|
||||
+ if (!out->u.pwszVal)
|
||||
+ out->pwszVal = CoTaskMemAlloc((strlenW(dev->device) + 1) * sizeof(WCHAR));
|
||||
+ if (!out->pwszVal)
|
||||
+ return E_OUTOFMEMORY;
|
||||
+
|
||||
+ strcpyW(out->u.pwszVal, dev->device);
|
||||
+ strcpyW(out->pwszVal, dev->device);
|
||||
+ return S_OK;
|
||||
+ } else if (IsEqualPropertyKey(*prop, PKEY_AudioEndpoint_FormFactor)) {
|
||||
+ out->vt = VT_UI4;
|
||||
+ out->u.ulVal = dev->form;
|
||||
+ out->ulVal = dev->form;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+
|
||||
@ -174,8 +174,8 @@ index 583690b..8311cbd 100644
|
||||
TRACE("%s, (%s,%u), %p\n", wine_dbgstr_guid(guid), wine_dbgstr_guid(&prop->fmtid), prop->pid, out);
|
||||
|
||||
if (IsEqualGUID(guid, &pulse_render_guid) && IsEqualPropertyKey(*prop, PKEY_AudioEndpoint_PhysicalSpeakers)) {
|
||||
@@ -3565,5 +3656,16 @@ HRESULT WINAPI AUDDRV_GetPropValue(GUID *guid, const PROPERTYKEY *prop, PROPVARI
|
||||
return out->u.ulVal ? S_OK : E_FAIL;
|
||||
@@ -3900,7 +3991,18 @@ HRESULT WINAPI AUDDRV_GetPropValue(GUID *guid, const PROPERTYKEY *prop, PROPVARI
|
||||
return out->ulVal ? S_OK : E_FAIL;
|
||||
}
|
||||
|
||||
- return E_NOTIMPL;
|
||||
@ -192,6 +192,8 @@ index 583690b..8311cbd 100644
|
||||
+ WARN("Unknown GUID %s\n", debugstr_guid(guid));
|
||||
+ return E_FAIL;
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
1.9.1
|
||||
2.30.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From dfd56158947fe9f032d738f586fba49276a6eccc Mon Sep 17 00:00:00 2001
|
||||
From 8cfb9cdbf9448fbd2234a52ff69ac2921702996c Mon Sep 17 00:00:00 2001
|
||||
From: Mark Harmstone <mark@harmstone.com>
|
||||
Date: Sun, 21 Dec 2014 23:49:41 +0000
|
||||
Subject: [PATCH] winepulse: fetch actual program name if possible
|
||||
@ -14,7 +14,7 @@ Changes by Sebastian Lackner <sebastian@fds-team.de>:
|
||||
2 files changed, 117 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/dlls/winepulse.drv/Makefile.in b/dlls/winepulse.drv/Makefile.in
|
||||
index 3082ed8a69e..16bf0ab21c9 100644
|
||||
index d6600632360..2448789dedf 100644
|
||||
--- a/dlls/winepulse.drv/Makefile.in
|
||||
+++ b/dlls/winepulse.drv/Makefile.in
|
||||
@@ -1,5 +1,5 @@
|
||||
@ -23,12 +23,12 @@ index 3082ed8a69e..16bf0ab21c9 100644
|
||||
+IMPORTS = dxguid uuid winmm user32 advapi32 ole32 version
|
||||
EXTRALIBS = $(PULSE_LIBS) $(PTHREAD_LIBS)
|
||||
EXTRAINCL = $(PULSE_CFLAGS)
|
||||
EXTRADEFS = -DWINE_NO_NAMELESS_EXTENSION
|
||||
|
||||
diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c
|
||||
index 403d025d43f..f18242e8505 100644
|
||||
index 510797a2edc..46f20ce419d 100644
|
||||
--- a/dlls/winepulse.drv/mmdevdrv.c
|
||||
+++ b/dlls/winepulse.drv/mmdevdrv.c
|
||||
@@ -44,6 +44,7 @@
|
||||
@@ -43,6 +43,7 @@
|
||||
#include "wine/list.h"
|
||||
|
||||
#include "ole2.h"
|
||||
@ -36,7 +36,7 @@ index 403d025d43f..f18242e8505 100644
|
||||
#include "dshow.h"
|
||||
#include "dsound.h"
|
||||
#include "propsys.h"
|
||||
@@ -560,6 +561,109 @@ static void pulse_probe_settings(pa_mainloop *ml, pa_context *ctx, int render, W
|
||||
@@ -559,6 +560,109 @@ static void pulse_probe_settings(pa_mainloop *ml, pa_context *ctx, int render, W
|
||||
fmt->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
|
||||
}
|
||||
|
||||
@ -146,7 +146,7 @@ index 403d025d43f..f18242e8505 100644
|
||||
static HRESULT pulse_connect(void)
|
||||
{
|
||||
int len;
|
||||
@@ -583,14 +687,18 @@ static HRESULT pulse_connect(void)
|
||||
@@ -582,14 +686,18 @@ static HRESULT pulse_connect(void)
|
||||
pa_context_unref(pulse_ctx);
|
||||
|
||||
GetModuleFileNameW(NULL, path, ARRAY_SIZE(path));
|
||||
@ -174,5 +174,5 @@ index 403d025d43f..f18242e8505 100644
|
||||
pulse_ctx = pa_context_new(pa_mainloop_get_api(pulse_ml), str);
|
||||
pa_xfree(str);
|
||||
--
|
||||
2.30.2
|
||||
2.17.1
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
From dd288e62fc820d7fe827af7a243e80f4a6e04bd8 Mon Sep 17 00:00:00 2001
|
||||
From 64fdf14331c7a50c94c1c7cbd2807fed870b7202 Mon Sep 17 00:00:00 2001
|
||||
From: Mark Harmstone <mark@harmstone.com>
|
||||
Date: Wed, 10 Dec 2014 18:08:41 +0000
|
||||
Subject: [PATCH 7/7] winepulse: return PKEY_AudioEndpoint_PhysicalSpeakers
|
||||
device prop
|
||||
Subject: [PATCH] winepulse: return PKEY_AudioEndpoint_PhysicalSpeakers device
|
||||
prop
|
||||
|
||||
Changes by Sebastian Lackner <sebastian@fds-team.de>:
|
||||
* Rework logic to get all channel masks in pulse_test_connect.
|
||||
@ -11,10 +11,10 @@ Changes by Sebastian Lackner <sebastian@fds-team.de>:
|
||||
1 file changed, 19 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c
|
||||
index becf6a3..6861f94 100644
|
||||
index a1379fd97a2..5673a6a678d 100644
|
||||
--- a/dlls/winepulse.drv/mmdevdrv.c
|
||||
+++ b/dlls/winepulse.drv/mmdevdrv.c
|
||||
@@ -84,11 +84,11 @@ typedef struct _PhysDevice {
|
||||
@@ -85,11 +85,11 @@ typedef struct _PhysDevice {
|
||||
struct list entry;
|
||||
GUID guid;
|
||||
EndpointFormFactor form;
|
||||
@ -27,7 +27,7 @@ index becf6a3..6861f94 100644
|
||||
static struct list g_phys_speakers = LIST_INIT(g_phys_speakers);
|
||||
static struct list g_phys_sources = LIST_INIT(g_phys_sources);
|
||||
|
||||
@@ -744,7 +744,8 @@ static BOOL get_device_path(pa_proplist *p, int index, GUID *guid, WCHAR path[12
|
||||
@@ -834,7 +834,8 @@ static BOOL get_device_path(pa_proplist *p, int index, GUID *guid, WCHAR path[12
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ index becf6a3..6861f94 100644
|
||||
{
|
||||
static const WCHAR emptyW[] = {0};
|
||||
int len = MultiByteToWideChar(CP_UNIXCP, 0, name, -1, NULL, 0);
|
||||
@@ -753,6 +754,7 @@ static void pulse_add_device(struct list *list, GUID *guid, EndpointFormFactor f
|
||||
@@ -843,6 +844,7 @@ static void pulse_add_device(struct list *list, GUID *guid, EndpointFormFactor f
|
||||
if (dev) {
|
||||
dev->guid = *guid;
|
||||
dev->form = form;
|
||||
@ -45,7 +45,7 @@ index becf6a3..6861f94 100644
|
||||
strcpyW(dev->device, device ? device : emptyW);
|
||||
MultiByteToWideChar(CP_UNIXCP, 0, name, -1, dev->name, len);
|
||||
list_add_tail(list, &dev->entry);
|
||||
@@ -762,19 +764,25 @@ static void pulse_add_device(struct list *list, GUID *guid, EndpointFormFactor f
|
||||
@@ -852,19 +854,25 @@ static void pulse_add_device(struct list *list, GUID *guid, EndpointFormFactor f
|
||||
|
||||
static void pulse_phys_speakers_cb(pa_context *c, const pa_sink_info *i, int eol, void *userdata)
|
||||
{
|
||||
@ -73,7 +73,7 @@ index becf6a3..6861f94 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -790,7 +798,7 @@ static void pulse_phys_sources_cb(pa_context *c, const pa_source_info *i, int eo
|
||||
@@ -880,7 +888,7 @@ static void pulse_phys_sources_cb(pa_context *c, const pa_source_info *i, int eo
|
||||
CoCreateGuid(&guid);
|
||||
if (!get_device_path(i->proplist, i->index, &guid, device))
|
||||
device[0] = 0;
|
||||
@ -82,7 +82,7 @@ index becf6a3..6861f94 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -860,9 +868,8 @@ static HRESULT pulse_test_connect(void)
|
||||
@@ -950,9 +958,8 @@ static HRESULT pulse_test_connect(void)
|
||||
pulse_probe_settings(ml, ctx, 1, &pulse_fmt[0]);
|
||||
pulse_probe_settings(ml, ctx, 0, &pulse_fmt[1]);
|
||||
|
||||
@ -94,31 +94,31 @@ index becf6a3..6861f94 100644
|
||||
|
||||
o = pa_context_get_sink_info_list(ctx, &pulse_phys_speakers_cb, NULL);
|
||||
if (o) {
|
||||
@@ -3745,6 +3752,10 @@ static HRESULT pulse_device_get_prop_value(PhysDevice *dev, const PROPERTYKEY *p
|
||||
@@ -4081,6 +4088,10 @@ static HRESULT pulse_device_get_prop_value(PhysDevice *dev, const PROPERTYKEY *p
|
||||
out->vt = VT_UI4;
|
||||
out->u.ulVal = dev->form;
|
||||
out->ulVal = dev->form;
|
||||
return S_OK;
|
||||
+ } else if (IsEqualPropertyKey(*prop, PKEY_AudioEndpoint_PhysicalSpeakers)) {
|
||||
+ out->vt = VT_UI4;
|
||||
+ out->u.ulVal = dev->channel_mask;
|
||||
+ return out->u.ulVal ? S_OK : E_FAIL;
|
||||
+ out->ulVal = dev->channel_mask;
|
||||
+ return out->ulVal ? S_OK : E_FAIL;
|
||||
}
|
||||
|
||||
return E_NOTIMPL;
|
||||
@@ -3756,13 +3767,6 @@ HRESULT WINAPI AUDDRV_GetPropValue(GUID *guid, const PROPERTYKEY *prop, PROPVARI
|
||||
@@ -4092,13 +4103,6 @@ HRESULT WINAPI AUDDRV_GetPropValue(GUID *guid, const PROPERTYKEY *prop, PROPVARI
|
||||
|
||||
TRACE("%s, (%s,%u), %p\n", wine_dbgstr_guid(guid), wine_dbgstr_guid(&prop->fmtid), prop->pid, out);
|
||||
|
||||
- if (IsEqualGUID(guid, &pulse_render_guid) && IsEqualPropertyKey(*prop, PKEY_AudioEndpoint_PhysicalSpeakers)) {
|
||||
- out->vt = VT_UI4;
|
||||
- out->u.ulVal = g_phys_speakers_mask;
|
||||
- out->ulVal = g_phys_speakers_mask;
|
||||
-
|
||||
- return out->u.ulVal ? S_OK : E_FAIL;
|
||||
- return out->ulVal ? S_OK : E_FAIL;
|
||||
- }
|
||||
-
|
||||
LIST_FOR_EACH_ENTRY(dev, &g_phys_speakers, PhysDevice, entry) {
|
||||
if (IsEqualGUID(guid, &dev->guid))
|
||||
return pulse_device_get_prop_value(dev, prop, out);
|
||||
--
|
||||
1.9.1
|
||||
2.30.2
|
||||
|
||||
|
@ -1 +1 @@
|
||||
f69c8f018188af49d5a3916f7bb7e3ab984fd3ec
|
||||
12cfe6826773708e3b15f73b9674ccb959000d8b
|
||||
|
Loading…
Reference in New Issue
Block a user