You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Compare commits
10 Commits
v1.8.2-uno
...
v1.8.6-uno
Author | SHA1 | Date | |
---|---|---|---|
|
2e2bc510ce | ||
|
1c4bc193eb | ||
|
f8cd6c9ba1 | ||
|
3124bd0bf3 | ||
|
ea079c4c16 | ||
|
126524d9ce | ||
|
441bcce3db | ||
|
1bf2e6fe90 | ||
|
9d13bfd569 | ||
|
739a308958 |
@@ -66,7 +66,8 @@ Configuration:
|
||||
|
||||
Backends:
|
||||
--backend=patch Use regular 'patch' utility to apply patches (default)
|
||||
--backend=epatch Use 'epatch' to apply patches (Gentoo only)
|
||||
--backend=eapply Use 'eapply' to apply patches (Gentoo only)
|
||||
--backend=epatch Use 'epatch' to apply patches (Gentoo only, deprecated)
|
||||
--backend=git-am Use 'git am' to apply patches
|
||||
--backend=git-apply Use 'git apply' to apply patches
|
||||
--backend=stg Import the patches using stacked git
|
||||
|
@@ -1,14 +1,15 @@
|
||||
From 4d0e6bbc00bd49b8dcfce494bd7380c49f58f92b Mon Sep 17 00:00:00 2001
|
||||
From 7e2bb678c70a7a5c3ba3d06e413b4446e6bcf02e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 28 Jul 2015 18:21:20 +0200
|
||||
Subject: amstream: Implement IAMMediaStream::GetMultiMediaStream.
|
||||
|
||||
---
|
||||
dlls/amstream/mediastream.c | 40 ++++++++++++++++++++++++++++++++--------
|
||||
1 file changed, 32 insertions(+), 8 deletions(-)
|
||||
dlls/amstream/mediastream.c | 30 ++++++++++++++++++++++++------
|
||||
dlls/amstream/tests/amstream.c | 12 ++++++------
|
||||
2 files changed, 30 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/amstream/mediastream.c b/dlls/amstream/mediastream.c
|
||||
index 947be1e..e4e15d7 100644
|
||||
index 51349abb8ea..98fca62e449 100644
|
||||
--- a/dlls/amstream/mediastream.c
|
||||
+++ b/dlls/amstream/mediastream.c
|
||||
@@ -110,9 +110,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetMultiMediaStre
|
||||
@@ -29,25 +30,7 @@ index 947be1e..e4e15d7 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DirectDrawMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface,
|
||||
@@ -271,9 +277,15 @@ static HRESULT WINAPI DirectDrawMediaStreamImpl_IDirectDrawMediaStream_GetMultiM
|
||||
{
|
||||
DirectDrawMediaStreamImpl *This = impl_from_IDirectDrawMediaStream(iface);
|
||||
|
||||
- FIXME("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream);
|
||||
+ TRACE("(%p/%p)->(%p) stub!\n", This, iface, ppMultiMediaStream);
|
||||
|
||||
- return S_FALSE;
|
||||
+ if (!ppMultiMediaStream)
|
||||
+ return E_POINTER;
|
||||
+
|
||||
+ IMultiMediaStream_AddRef(This->parent);
|
||||
+ *ppMultiMediaStream = This->parent;
|
||||
+
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI DirectDrawMediaStreamImpl_IDirectDrawMediaStream_GetInformation(IDirectDrawMediaStream *iface,
|
||||
@@ -511,9 +523,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetMultiMediaStream(IA
|
||||
@@ -517,9 +523,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetMultiMediaStream(IA
|
||||
{
|
||||
AudioMediaStreamImpl *This = impl_from_AudioMediaStream_IAMMediaStream(iface);
|
||||
|
||||
@@ -65,7 +48,7 @@ index 947be1e..e4e15d7 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI AudioMediaStreamImpl_IAMMediaStream_GetInformation(IAMMediaStream *iface,
|
||||
@@ -672,9 +690,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetMultiMediaStream
|
||||
@@ -678,9 +690,15 @@ static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetMultiMediaStream
|
||||
{
|
||||
AudioMediaStreamImpl *This = impl_from_IAudioMediaStream(iface);
|
||||
|
||||
@@ -83,6 +66,52 @@ index 947be1e..e4e15d7 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI AudioMediaStreamImpl_IAudioMediaStream_GetInformation(IAudioMediaStream *iface,
|
||||
diff --git a/dlls/amstream/tests/amstream.c b/dlls/amstream/tests/amstream.c
|
||||
index eb9c5f962ce..4afa3e0489d 100644
|
||||
--- a/dlls/amstream/tests/amstream.c
|
||||
+++ b/dlls/amstream/tests/amstream.c
|
||||
@@ -263,11 +263,11 @@ static void test_media_streams(void)
|
||||
ok((void*)am_media_stream == (void*)video_stream, "Not same interface, got %p expected %p\n", am_media_stream, video_stream);
|
||||
|
||||
hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, NULL);
|
||||
- todo_wine ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);
|
||||
+ ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);
|
||||
|
||||
multi_media_stream = (void *)0xdeadbeef;
|
||||
hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, &multi_media_stream);
|
||||
- todo_wine ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr);
|
||||
+ ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
ok((void *)multi_media_stream == (void *)pams, "Expected %p, got %p\n", pams, multi_media_stream);
|
||||
@@ -376,11 +376,11 @@ static void test_media_streams(void)
|
||||
ok((void*)am_media_stream == (void*)audio_stream, "Not same interface, got %p expected %p\n", am_media_stream, audio_stream);
|
||||
|
||||
hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, NULL);
|
||||
- todo_wine ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);
|
||||
+ ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);
|
||||
|
||||
multi_media_stream = (void *)0xdeadbeef;
|
||||
hr = IAMMediaStream_GetMultiMediaStream(am_media_stream, &multi_media_stream);
|
||||
- todo_wine ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr);
|
||||
+ ok(hr == S_OK, "IAMMediaStream_GetMultiMediaStream returned: %x\n", hr);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
ok((void *)multi_media_stream == (void *)pams, "Expected %p, got %p\n", pams, multi_media_stream);
|
||||
@@ -414,11 +414,11 @@ static void test_media_streams(void)
|
||||
ok(hr == S_OK, "IAudioMediaStream_CreateSample returned: %x\n", hr);
|
||||
|
||||
hr = IAudioMediaStream_GetMultiMediaStream(audio_media_stream, NULL);
|
||||
- todo_wine ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);
|
||||
+ ok(hr == E_POINTER, "Expected E_POINTER, got %x\n", hr);
|
||||
|
||||
multi_media_stream = (void *)0xdeadbeef;
|
||||
hr = IAudioMediaStream_GetMultiMediaStream(audio_media_stream, &multi_media_stream);
|
||||
- todo_wine ok(hr == S_OK, "IAudioMediaStream_GetMultiMediaStream returned: %x\n", hr);
|
||||
+ ok(hr == S_OK, "IAudioMediaStream_GetMultiMediaStream returned: %x\n", hr);
|
||||
if (hr == S_OK)
|
||||
{
|
||||
ok((void *)multi_media_stream == (void *)pams, "Expected %p, got %p\n", pams, multi_media_stream);
|
||||
--
|
||||
2.4.5
|
||||
2.11.0
|
||||
|
||||
|
@@ -1,46 +0,0 @@
|
||||
From fe4c1e1f10f8edc76c5dad994ed2e5202f9c2821 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Storsjo <martin@martin.st>
|
||||
Date: Mon, 3 Aug 2015 22:26:01 +0300
|
||||
Subject: ucrtbase: Hook up some functions with new names to existing
|
||||
implementations
|
||||
|
||||
These are some functions that on a first glance seem to have a
|
||||
matching signature even though the name has changed.
|
||||
---
|
||||
dlls/ucrtbase/ucrtbase.spec | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
|
||||
index bb56408..cee094d 100644
|
||||
--- a/dlls/ucrtbase/ucrtbase.spec
|
||||
+++ b/dlls/ucrtbase/ucrtbase.spec
|
||||
@@ -211,7 +211,7 @@
|
||||
@ cdecl _c_exit() MSVCRT__c_exit
|
||||
@ cdecl _cabs(long) MSVCRT__cabs
|
||||
@ cdecl _callnewh(long)
|
||||
-@ stub _calloc_base
|
||||
+@ cdecl _calloc_base(long long) MSVCRT_calloc
|
||||
@ cdecl _cexit() MSVCRT__cexit
|
||||
@ cdecl _cgets(ptr)
|
||||
@ stub _cgets_s
|
||||
@@ -333,7 +333,7 @@
|
||||
@ cdecl _fputwchar(long) MSVCRT__fputwchar
|
||||
@ cdecl _fread_nolock(ptr long long ptr) MSVCRT__fread_nolock
|
||||
@ cdecl _fread_nolock_s(ptr long long long ptr) MSVCRT__fread_nolock_s
|
||||
-@ stub _free_base
|
||||
+@ cdecl _free_base(ptr) MSVCRT_free
|
||||
@ cdecl _free_locale(ptr) MSVCRT__free_locale
|
||||
@ cdecl _fseek_nolock(ptr long long) MSVCRT__fseek_nolock
|
||||
@ cdecl _fseeki64(ptr int64 long) MSVCRT__fseeki64
|
||||
@@ -580,7 +580,7 @@
|
||||
@ cdecl _ltow_s(long ptr long long) MSVCRT__ltow_s
|
||||
@ cdecl _makepath(ptr str str str str) MSVCRT__makepath
|
||||
@ cdecl _makepath_s(ptr long str str str str) MSVCRT__makepath_s
|
||||
-@ stub _malloc_base
|
||||
+@ cdecl _malloc_base(long) MSVCRT_malloc
|
||||
@ cdecl _mbbtombc(long)
|
||||
@ stub _mbbtombc_l
|
||||
@ cdecl _mbbtype(long long)
|
||||
--
|
||||
2.5.0
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: Add stub dlls required for MSVC 2015 runtime library (Windows 10)
|
@@ -1,177 +0,0 @@
|
||||
From 4eb926239cec9c6dfa489056bb30d698039926a1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Bernhard=20=C3=9Cbelacker?= <bernhardu@vr-web.de>
|
||||
Date: Tue, 24 Nov 2015 21:13:50 +0100
|
||||
Subject: dinput: Implement device property DIPROP_USERNAME.
|
||||
|
||||
https://bugs.winehq.org/show_bug.cgi?id=39667
|
||||
|
||||
Probably same issue as in https://bugs.winehq.org/show_bug.cgi?id=12432 .
|
||||
(Attached backtrace seems equal.)
|
||||
|
||||
Steps to reproduce:
|
||||
- start launcher
|
||||
- "Configure Controller"
|
||||
- leave dialog with "Cancel"
|
||||
- crash
|
||||
|
||||
MotoGP 3 demo launcher uses ConfigureDevices for the key mapping.
|
||||
This seems because the result of a GetProperty(DIPROP_USERNAME) is used
|
||||
without checking.
|
||||
---
|
||||
dlls/dinput/device.c | 39 +++++++++++++++++++++++++++++++++++++++
|
||||
dlls/dinput/device_private.h | 1 +
|
||||
dlls/dinput8/tests/device.c | 29 +++++++++++++++++++++++++++--
|
||||
3 files changed, 67 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
|
||||
index e525f01..41fb2c4 100644
|
||||
--- a/dlls/dinput/device.c
|
||||
+++ b/dlls/dinput/device.c
|
||||
@@ -778,11 +778,13 @@ HRESULT _build_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf,
|
||||
|
||||
HRESULT _set_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, LPCWSTR lpszUserName, DWORD dwFlags, LPCDIDATAFORMAT df)
|
||||
{
|
||||
+ static const WCHAR emptyW[] = { 0 };
|
||||
IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8W(iface);
|
||||
DIDATAFORMAT data_format;
|
||||
DIOBJECTDATAFORMAT *obj_df = NULL;
|
||||
DIPROPDWORD dp;
|
||||
DIPROPRANGE dpr;
|
||||
+ DIPROPSTRING dps;
|
||||
WCHAR username[MAX_PATH];
|
||||
DWORD username_size = MAX_PATH;
|
||||
int i, action = 0, num_actions = 0;
|
||||
@@ -863,6 +865,13 @@ HRESULT _set_action_map(LPDIRECTINPUTDEVICE8W iface, LPDIACTIONFORMATW lpdiaf, L
|
||||
else
|
||||
lstrcpynW(username, lpszUserName, MAX_PATH);
|
||||
|
||||
+ dps.diph.dwSize = sizeof(dps);
|
||||
+ dps.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
+ dps.diph.dwObj = 0;
|
||||
+ dps.diph.dwHow = DIPH_DEVICE;
|
||||
+ lstrcpynW(dps.wsz, (dwFlags & DIDSAM_NOUSER) ? emptyW : username, sizeof(dps.wsz)/sizeof(WCHAR));
|
||||
+ IDirectInputDevice8_SetProperty(iface, DIPROP_USERNAME, &dps.diph);
|
||||
+
|
||||
/* Save the settings to disk */
|
||||
save_mapping_settings(iface, lpdiaf, username);
|
||||
|
||||
@@ -1100,6 +1109,9 @@ ULONG WINAPI IDirectInputDevice2WImpl_Release(LPDIRECTINPUTDEVICE8W iface)
|
||||
/* Free action mapping */
|
||||
HeapFree(GetProcessHeap(), 0, This->action_map);
|
||||
|
||||
+ /* Free username */
|
||||
+ HeapFree(GetProcessHeap(), 0, This->username);
|
||||
+
|
||||
EnterCriticalSection( &This->dinput->crit );
|
||||
list_remove( &This->entry );
|
||||
LeaveCriticalSection( &This->dinput->crit );
|
||||
@@ -1251,6 +1263,17 @@ HRESULT WINAPI IDirectInputDevice2WImpl_GetProperty(LPDIRECTINPUTDEVICE8W iface,
|
||||
TRACE("buffersize = %d\n", pd->dwData);
|
||||
break;
|
||||
}
|
||||
+ case (DWORD_PTR) DIPROP_USERNAME:
|
||||
+ {
|
||||
+ LPDIPROPSTRING ps = (LPDIPROPSTRING)pdiph;
|
||||
+
|
||||
+ if (pdiph->dwSize != sizeof(DIPROPSTRING)) return DIERR_INVALIDPARAM;
|
||||
+
|
||||
+ ps->wsz[0] = 0;
|
||||
+ if (This->username)
|
||||
+ lstrcpynW(ps->wsz, This->username, sizeof(ps->wsz)/sizeof(WCHAR));
|
||||
+ break;
|
||||
+ }
|
||||
case (DWORD_PTR) DIPROP_VIDPID:
|
||||
FIXME("DIPROP_VIDPID not implemented\n");
|
||||
return DIERR_UNSUPPORTED;
|
||||
@@ -1324,6 +1347,22 @@ HRESULT WINAPI IDirectInputDevice2WImpl_SetProperty(
|
||||
LeaveCriticalSection(&This->crit);
|
||||
break;
|
||||
}
|
||||
+ case (DWORD_PTR) DIPROP_USERNAME:
|
||||
+ {
|
||||
+ LPCDIPROPSTRING ps = (LPCDIPROPSTRING)pdiph;
|
||||
+
|
||||
+ if (pdiph->dwSize != sizeof(DIPROPSTRING)) return DIERR_INVALIDPARAM;
|
||||
+
|
||||
+ if (!This->username)
|
||||
+ This->username = HeapAlloc(GetProcessHeap(), 0, sizeof(ps->wsz));
|
||||
+ if (!This->username)
|
||||
+ return DIERR_OUTOFMEMORY;
|
||||
+
|
||||
+ This->username[0] = 0;
|
||||
+ if (ps->wsz)
|
||||
+ lstrcpynW(This->username, ps->wsz, sizeof(ps->wsz)/sizeof(WCHAR));
|
||||
+ break;
|
||||
+ }
|
||||
default:
|
||||
WARN("Unknown property %s\n", debugstr_guid(rguid));
|
||||
return DIERR_UNSUPPORTED;
|
||||
diff --git a/dlls/dinput/device_private.h b/dlls/dinput/device_private.h
|
||||
index 52bbec4..44fa46a 100644
|
||||
--- a/dlls/dinput/device_private.h
|
||||
+++ b/dlls/dinput/device_private.h
|
||||
@@ -81,6 +81,7 @@ struct IDirectInputDeviceImpl
|
||||
/* Action mapping */
|
||||
int num_actions; /* number of actions mapped */
|
||||
ActionMap *action_map; /* array of mappings */
|
||||
+ WCHAR *username; /* set by 'SetActionMap' */
|
||||
};
|
||||
|
||||
extern BOOL get_app_key(HKEY*, HKEY*) DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/dinput8/tests/device.c b/dlls/dinput8/tests/device.c
|
||||
index 6495559..b5e27ad 100644
|
||||
--- a/dlls/dinput8/tests/device.c
|
||||
+++ b/dlls/dinput8/tests/device.c
|
||||
@@ -223,8 +223,8 @@ static BOOL CALLBACK enumeration_callback(const DIDEVICEINSTANCEA *lpddi, IDirec
|
||||
dps.wsz[0] = '\0';
|
||||
|
||||
hr = IDirectInputDevice_GetProperty(lpdid, DIPROP_USERNAME, &dps.diph);
|
||||
- todo_wine ok (SUCCEEDED(hr), "GetProperty failed hr=%08x\n", hr);
|
||||
- todo_wine ok (!lstrcmpW(usernameW, dps.wsz), "Username not set correctly expected=%s, got=%s\n", wine_dbgstr_wn(usernameW, -1), wine_dbgstr_wn(dps.wsz, -1));
|
||||
+ ok (SUCCEEDED(hr), "GetProperty failed hr=%08x\n", hr);
|
||||
+ ok (!lstrcmpW(usernameW, dps.wsz), "Username not set correctly expected=%s, got=%s\n", wine_dbgstr_wn(usernameW, -1), wine_dbgstr_wn(dps.wsz, -1));
|
||||
|
||||
/* Test buffer size */
|
||||
memset(&dp, 0, sizeof(dp));
|
||||
@@ -275,6 +275,7 @@ static void test_action_mapping(void)
|
||||
HINSTANCE hinst = GetModuleHandleA(NULL);
|
||||
IDirectInput8A *pDI = NULL;
|
||||
DIACTIONFORMATA af;
|
||||
+ DIPROPSTRING dps;
|
||||
struct enum_data data = {pDI, &af, NULL, NULL, NULL, 0};
|
||||
HWND hwnd;
|
||||
|
||||
@@ -342,6 +343,30 @@ static void test_action_mapping(void)
|
||||
|
||||
af.dwDataSize = 4 * sizeof(actionMapping) / sizeof(actionMapping[0]);
|
||||
af.dwNumActions = sizeof(actionMapping) / sizeof(actionMapping[0]);
|
||||
+
|
||||
+ /* test DIDSAM_NOUSER */
|
||||
+ dps.diph.dwSize = sizeof(dps);
|
||||
+ dps.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
+ dps.diph.dwObj = 0;
|
||||
+ dps.diph.dwHow = DIPH_DEVICE;
|
||||
+ dps.wsz[0] = '\0';
|
||||
+
|
||||
+ hr = IDirectInputDevice_GetProperty(data.keyboard, DIPROP_USERNAME, &dps.diph);
|
||||
+ ok (SUCCEEDED(hr), "GetProperty failed hr=%08x\n", hr);
|
||||
+ ok (dps.wsz[0] != 0, "Expected any username, got=%s\n", wine_dbgstr_wn(dps.wsz, -1));
|
||||
+
|
||||
+ hr = IDirectInputDevice8_SetActionMap(data.keyboard, data.lpdiaf, NULL, DIDSAM_NOUSER);
|
||||
+ ok (SUCCEEDED(hr), "SetActionMap failed hr=%08x\n", hr);
|
||||
+
|
||||
+ dps.diph.dwSize = sizeof(dps);
|
||||
+ dps.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
+ dps.diph.dwObj = 0;
|
||||
+ dps.diph.dwHow = DIPH_DEVICE;
|
||||
+ dps.wsz[0] = '\0';
|
||||
+
|
||||
+ hr = IDirectInputDevice_GetProperty(data.keyboard, DIPROP_USERNAME, &dps.diph);
|
||||
+ ok (SUCCEEDED(hr), "GetProperty failed hr=%08x\n", hr);
|
||||
+ ok (dps.wsz[0] == 0, "Expected empty username, got=%s\n", wine_dbgstr_wn(dps.wsz, -1));
|
||||
}
|
||||
|
||||
if (data.mouse != NULL)
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [39667] Implement dinput device property DIPROP_USERNAME
|
@@ -1,4 +1,4 @@
|
||||
From 6ae55e62a81e4f4ded0ea14926f014b6d6a4b633 Mon Sep 17 00:00:00 2001
|
||||
From 3c0f4068c5e5319560525b157e704dccf0e6353e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Wed, 28 Oct 2015 22:36:01 +0100
|
||||
Subject: hal: Implement KeQueryPerformanceCounter.
|
||||
@@ -9,12 +9,12 @@ Subject: hal: Implement KeQueryPerformanceCounter.
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/hal/hal.c b/dlls/hal/hal.c
|
||||
index 96bc895..145869d 100644
|
||||
index 0b2e422..be3a48b 100644
|
||||
--- a/dlls/hal/hal.c
|
||||
+++ b/dlls/hal/hal.c
|
||||
@@ -155,3 +155,13 @@ KIRQL WINAPI KeGetCurrentIrql(VOID)
|
||||
FIXME( " stub!\n");
|
||||
return 0;
|
||||
@@ -172,3 +172,13 @@ void WINAPI WRITE_PORT_ULONG(ULONG *port, ULONG value)
|
||||
{
|
||||
FIXME("(%p %d) stub!\n", port, value);
|
||||
}
|
||||
+
|
||||
+ULONGLONG WINAPI KeQueryPerformanceCounter(LARGE_INTEGER *frequency)
|
||||
@@ -27,7 +27,7 @@ index 96bc895..145869d 100644
|
||||
+ return counter.QuadPart;
|
||||
+}
|
||||
diff --git a/dlls/hal/hal.spec b/dlls/hal/hal.spec
|
||||
index 3046c65..dc908dd 100644
|
||||
index c21806c..243c67b 100644
|
||||
--- a/dlls/hal/hal.spec
|
||||
+++ b/dlls/hal/hal.spec
|
||||
@@ -72,7 +72,7 @@
|
||||
@@ -40,5 +40,5 @@ index 3046c65..dc908dd 100644
|
||||
@ stub KeRaiseIrqlToDpcLevel
|
||||
@ stub KeRaiseIrqlToSynchLevel
|
||||
--
|
||||
2.6.2
|
||||
2.9.0
|
||||
|
||||
|
@@ -1,88 +0,0 @@
|
||||
From 830e882a471628e15ac3e6d14ffc864e2d448153 Mon Sep 17 00:00:00 2001
|
||||
From: Aric Stewart <aric@codeweavers.com>
|
||||
Date: Wed, 14 Oct 2015 10:53:42 -0500
|
||||
Subject: hid: Stub HidP_TranslateUsagesToI8042ScanCodes
|
||||
|
||||
My whole patch did not send last time for some reason. Here is the whole patch.
|
||||
|
||||
For Bug 39447
|
||||
|
||||
Signed-off-by: Aric Stewart <aric@codeweavers.com>
|
||||
---
|
||||
dlls/hid/hid.spec | 2 +-
|
||||
dlls/hid/hidp.c | 13 +++++++++++++
|
||||
include/ddk/hidpi.h | 11 +++++++++++
|
||||
3 files changed, 25 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/hid/hid.spec b/dlls/hid/hid.spec
|
||||
index e416762..76df40d 100644
|
||||
--- a/dlls/hid/hid.spec
|
||||
+++ b/dlls/hid/hid.spec
|
||||
@@ -39,6 +39,6 @@
|
||||
@ stub HidP_SetUsageValue
|
||||
@ stub HidP_SetUsageValueArray
|
||||
@ stub HidP_SetUsages
|
||||
-@ stub HidP_TranslateUsagesToI8042ScanCodes
|
||||
+@ stdcall HidP_TranslateUsagesToI8042ScanCodes(ptr long long ptr ptr ptr)
|
||||
@ stub HidP_UnsetUsages
|
||||
@ stub HidP_UsageListDifference
|
||||
diff --git a/dlls/hid/hidp.c b/dlls/hid/hidp.c
|
||||
index 3d7a12e..91d4fbe 100644
|
||||
--- a/dlls/hid/hidp.c
|
||||
+++ b/dlls/hid/hidp.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <stdarg.h>
|
||||
|
||||
#define NONAMELESSUNION
|
||||
+#include "ntstatus.h"
|
||||
#define WIN32_NO_STATUS
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
@@ -519,3 +520,15 @@ ULONG WINAPI HidP_MaxUsageListLength(HIDP_REPORT_TYPE ReportType, USAGE UsagePag
|
||||
}
|
||||
return count;
|
||||
}
|
||||
+
|
||||
+NTSTATUS WINAPI HidP_TranslateUsagesToI8042ScanCodes(PUSAGE ChangedUsageList, ULONG UsageListLength,
|
||||
+ HIDP_KEYBOARD_DIRECTION KeyAction,
|
||||
+ PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
|
||||
+ PHIDP_INSERT_SCANCODES InsertCodesProcedure,
|
||||
+ PVOID InsertCodesContext)
|
||||
+{
|
||||
+ ERR("(%p, %i, %i, %p, %p, %p): stub\n", ChangedUsageList, UsageListLength,
|
||||
+ KeyAction, ModifierState, InsertCodesProcedure, InsertCodesContext);
|
||||
+
|
||||
+ return STATUS_NOT_IMPLEMENTED;
|
||||
+}
|
||||
diff --git a/include/ddk/hidpi.h b/include/ddk/hidpi.h
|
||||
index 4cfac61..a14ff80 100644
|
||||
--- a/include/ddk/hidpi.h
|
||||
+++ b/include/ddk/hidpi.h
|
||||
@@ -136,6 +136,16 @@ typedef struct _HIDP_CAPS
|
||||
USHORT NumberFeatureDataIndices;
|
||||
} HIDP_CAPS, *PHIDP_CAPS;
|
||||
|
||||
+typedef enum _HIDP_KEYBOARD_DIRECTION
|
||||
+{
|
||||
+ HidP_Keyboard_Break,
|
||||
+ HidP_Keyboard_Make
|
||||
+} HIDP_KEYBOARD_DIRECTION;
|
||||
+
|
||||
+typedef struct _HIDP_KEYBOARD_MODIFIER_STATE HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;
|
||||
+
|
||||
+typedef BOOLEAN (WINAPI *PHIDP_INSERT_SCANCODES)(PVOID Context, PCHAR NewScanCodes, ULONG Length);
|
||||
+
|
||||
NTSTATUS WINAPI HidP_GetButtonCaps(HIDP_REPORT_TYPE ReportType, PHIDP_BUTTON_CAPS ButtonCaps, PUSHORT ButtonCapsLength, PHIDP_PREPARSED_DATA PreparsedData);
|
||||
NTSTATUS WINAPI HidP_GetCaps(PHIDP_PREPARSED_DATA PreparsedData, PHIDP_CAPS Capabilities);
|
||||
NTSTATUS WINAPI HidP_GetUsages(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, USHORT LinkCollection, PUSAGE UsageList, PULONG UsageLength, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
|
||||
@@ -144,6 +154,7 @@ NTSTATUS WINAPI HidP_GetValueCaps(HIDP_REPORT_TYPE ReportType, PHIDP_VALUE_CAPS
|
||||
NTSTATUS WINAPI HidP_InitializeReportForID(HIDP_REPORT_TYPE ReportType, UCHAR ReportID, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
|
||||
ULONG WINAPI HidP_MaxUsageListLength(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, PHIDP_PREPARSED_DATA PreparsedData);
|
||||
NTSTATUS WINAPI HidP_GetScaledUsageValue(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, USHORT LinkCollection, USAGE Usage, PLONG UsageValue, PHIDP_PREPARSED_DATA PreparsedData, PCHAR Report, ULONG ReportLength);
|
||||
+NTSTATUS WINAPI HidP_TranslateUsagesToI8042ScanCodes(PUSAGE ChangedUsageList, ULONG UsageListLength, HIDP_KEYBOARD_DIRECTION KeyAction, PHIDP_KEYBOARD_MODIFIER_STATE ModifierState, PHIDP_INSERT_SCANCODES InsertCodesProcedure, PVOID InsertCodesContext);
|
||||
|
||||
#ifndef FACILITY_HID_ERROR_CODE
|
||||
#define FACILITY_HID_ERROR_CODE 0x11
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [39447] Implement stub for hid.HidP_TranslateUsagesToI8042ScanCodes
|
@@ -1,50 +0,0 @@
|
||||
From 33fa174b6404cfea673d510457d21d784a23efbd Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 4 May 2014 00:18:11 +0200
|
||||
Subject: kernel32: Silence repeated CompareStringEx FIXME.
|
||||
|
||||
---
|
||||
dlls/kernel32/locale.c | 14 +++++++++-----
|
||||
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
|
||||
index eca0e39..55ef3d6 100644
|
||||
--- a/dlls/kernel32/locale.c
|
||||
+++ b/dlls/kernel32/locale.c
|
||||
@@ -2985,9 +2985,10 @@ INT WINAPI CompareStringW(LCID lcid, DWORD flags,
|
||||
INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
|
||||
LPCWSTR str2, INT len2, LPNLSVERSIONINFO version, LPVOID reserved, LPARAM lParam)
|
||||
{
|
||||
- DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT
|
||||
- |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP;
|
||||
- DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000;
|
||||
+ static const DWORD supported_flags = NORM_IGNORECASE|NORM_IGNORENONSPACE|NORM_IGNORESYMBOLS|SORT_STRINGSORT
|
||||
+ |NORM_IGNOREKANATYPE|NORM_IGNOREWIDTH|LOCALE_USE_CP_ACP
|
||||
+ |NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000;
|
||||
+ static DWORD semistub_flags = NORM_LINGUISTIC_CASING|LINGUISTIC_IGNORECASE|0x10000000;
|
||||
/* 0x10000000 is related to diacritics in Arabic, Japanese, and Hebrew */
|
||||
INT ret;
|
||||
|
||||
@@ -3001,14 +3002,17 @@ INT WINAPI CompareStringEx(LPCWSTR locale, DWORD flags, LPCWSTR str1, INT len1,
|
||||
return 0;
|
||||
}
|
||||
|
||||
- if (flags & ~(supported_flags|semistub_flags))
|
||||
+ if (flags & ~supported_flags)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (flags & semistub_flags)
|
||||
- FIXME("semi-stub behavor for flag(s) 0x%x\n", flags & semistub_flags);
|
||||
+ {
|
||||
+ FIXME("semi-stub behavior for flag(s) 0x%x\n", flags & semistub_flags);
|
||||
+ semistub_flags &= ~flags;
|
||||
+ }
|
||||
|
||||
if (len1 < 0) len1 = strlenW(str1);
|
||||
if (len2 < 0) len2 = strlenW(str2);
|
||||
--
|
||||
1.7.9.5
|
||||
|
@@ -1 +0,0 @@
|
||||
Category: stable
|
@@ -1,53 +0,0 @@
|
||||
From 0aab8389ccbaf7c89a37112faef790ef45b0b15f Mon Sep 17 00:00:00 2001
|
||||
From: Austin English <austinenglish@gmail.com>
|
||||
Date: Tue, 3 Nov 2015 11:03:54 -0600
|
||||
Subject: kernel32: add FreeUserPhysicalPages stub (try 2)
|
||||
|
||||
For https://bugs.winehq.org/show_bug.cgi?id=39543
|
||||
|
||||
Signed-off-by: Austin English <austinenglish@gmail.com>
|
||||
---
|
||||
dlls/kernel32/heap.c | 7 +++++++
|
||||
dlls/kernel32/kernel32.spec | 4 ++--
|
||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c
|
||||
index 0c05de6..e86b292 100644
|
||||
--- a/dlls/kernel32/heap.c
|
||||
+++ b/dlls/kernel32/heap.c
|
||||
@@ -1490,3 +1490,10 @@ BOOL WINAPI AllocateUserPhysicalPages(HANDLE process, ULONG_PTR *pages, ULONG_PT
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
return FALSE;
|
||||
}
|
||||
+
|
||||
+BOOL WINAPI FreeUserPhysicalPages(HANDLE process, ULONG_PTR *pages, ULONG_PTR *userarray)
|
||||
+{
|
||||
+ FIXME("stub: %p %p %p\n", process, pages, userarray);
|
||||
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
||||
+ return FALSE;
|
||||
+}
|
||||
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
||||
index ff67e54..d4e1d01 100644
|
||||
--- a/dlls/kernel32/kernel32.spec
|
||||
+++ b/dlls/kernel32/kernel32.spec
|
||||
@@ -154,7 +154,7 @@
|
||||
@ stdcall AllocConsole()
|
||||
@ stub -i386 AllocLSCallback
|
||||
@ stdcall -i386 -private AllocSLCallback(ptr ptr) krnl386.exe16.AllocSLCallback
|
||||
-@ stdcall AllocateUserPhysicalPages(ptr ptr ptr)
|
||||
+@ stdcall AllocateUserPhysicalPages(long ptr ptr)
|
||||
@ stdcall ApplicationRecoveryFinished(long)
|
||||
@ stdcall ApplicationRecoveryInProgress(ptr)
|
||||
@ stdcall AreFileApisANSI()
|
||||
@@ -535,7 +535,7 @@
|
||||
@ stdcall FreeLibraryWhenCallbackReturns(ptr ptr) ntdll.TpCallbackUnloadDllOnCompletion
|
||||
@ stdcall FreeResource(long)
|
||||
@ stdcall -i386 -private FreeSLCallback(long) krnl386.exe16.FreeSLCallback
|
||||
-@ stub FreeUserPhysicalPages
|
||||
+@ stdcall FreeUserPhysicalPages(long ptr ptr)
|
||||
@ stub FreeVirtualBuffer
|
||||
@ stdcall GenerateConsoleCtrlEvent(long long)
|
||||
@ stdcall -i386 -private Get16DLLAddress(long str) krnl386.exe16.Get16DLLAddress
|
||||
--
|
||||
2.6.2
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [39543] Add stub kernel32.FreeUserPhysicalPages
|
@@ -1,251 +0,0 @@
|
||||
From afd33fadd45f1073ac0b8734d7003ba46b5d1269 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Tue, 12 Aug 2014 20:24:14 +0200
|
||||
Subject: kernel32: Implement GetFinalPathNameByHandle.
|
||||
|
||||
---
|
||||
.../api-ms-win-core-file-l1-1-0.spec | 4 +-
|
||||
.../api-ms-win-core-file-l1-2-0.spec | 4 +-
|
||||
dlls/kernel32/file.c | 182 +++++++++++++++++++++
|
||||
dlls/kernel32/kernel32.spec | 4 +-
|
||||
4 files changed, 188 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/api-ms-win-core-file-l1-1-0/api-ms-win-core-file-l1-1-0.spec b/dlls/api-ms-win-core-file-l1-1-0/api-ms-win-core-file-l1-1-0.spec
|
||||
index 9e5b809..61e8038 100644
|
||||
--- a/dlls/api-ms-win-core-file-l1-1-0/api-ms-win-core-file-l1-1-0.spec
|
||||
+++ b/dlls/api-ms-win-core-file-l1-1-0/api-ms-win-core-file-l1-1-0.spec
|
||||
@@ -39,8 +39,8 @@
|
||||
@ stdcall GetFileSizeEx(long ptr) kernel32.GetFileSizeEx
|
||||
@ stdcall GetFileTime(long ptr ptr ptr) kernel32.GetFileTime
|
||||
@ stdcall GetFileType(long) kernel32.GetFileType
|
||||
-@ stub GetFinalPathNameByHandleA
|
||||
-@ stub GetFinalPathNameByHandleW
|
||||
+@ stdcall GetFinalPathNameByHandleA(long ptr long long) kernel32.GetFinalPathNameByHandleA
|
||||
+@ stdcall GetFinalPathNameByHandleW(long ptr long long) kernel32.GetFinalPathNameByHandleW
|
||||
@ stdcall GetFullPathNameA(str long ptr ptr) kernel32.GetFullPathNameA
|
||||
@ stdcall GetFullPathNameW(wstr long ptr ptr) kernel32.GetFullPathNameW
|
||||
@ stdcall GetLogicalDriveStringsW(long ptr) kernel32.GetLogicalDriveStringsW
|
||||
diff --git a/dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec b/dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec
|
||||
index ebfd52e..cddf112 100644
|
||||
--- a/dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec
|
||||
+++ b/dlls/api-ms-win-core-file-l1-2-0/api-ms-win-core-file-l1-2-0.spec
|
||||
@@ -39,8 +39,8 @@
|
||||
@ stdcall GetFileSizeEx(long ptr) kernel32.GetFileSizeEx
|
||||
@ stdcall GetFileTime(long ptr ptr ptr) kernel32.GetFileTime
|
||||
@ stdcall GetFileType(long) kernel32.GetFileType
|
||||
-@ stub GetFinalPathNameByHandleA
|
||||
-@ stub GetFinalPathNameByHandleW
|
||||
+@ stdcall GetFinalPathNameByHandleA(long ptr long long) kernel32.GetFinalPathNameByHandleA
|
||||
+@ stdcall GetFinalPathNameByHandleW(long ptr long long) kernel32.GetFinalPathNameByHandleW
|
||||
@ stdcall GetFullPathNameA(str long ptr ptr) kernel32.GetFullPathNameA
|
||||
@ stdcall GetFullPathNameW(wstr long ptr ptr) kernel32.GetFullPathNameW
|
||||
@ stdcall GetLogicalDriveStringsW(long ptr) kernel32.GetLogicalDriveStringsW
|
||||
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
|
||||
index 006db1c..b3cc8c3 100644
|
||||
--- a/dlls/kernel32/file.c
|
||||
+++ b/dlls/kernel32/file.c
|
||||
@@ -2829,3 +2829,185 @@ DWORD WINAPI K32GetDeviceDriverFileNameW(void *image_base, LPWSTR file_name, DWO
|
||||
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * GetFinalPathNameByHandleW (KERNEL32.@)
|
||||
+ */
|
||||
+DWORD WINAPI GetFinalPathNameByHandleW(HANDLE file, LPWSTR path, DWORD charcount, DWORD flags)
|
||||
+{
|
||||
+ WCHAR buffer[sizeof(OBJECT_NAME_INFORMATION) + MAX_PATH + 1];
|
||||
+ OBJECT_NAME_INFORMATION *info = (OBJECT_NAME_INFORMATION*)&buffer;
|
||||
+ WCHAR drive_part[MAX_PATH];
|
||||
+ DWORD drive_part_len;
|
||||
+ NTSTATUS status;
|
||||
+ DWORD result = 0;
|
||||
+ ULONG dummy;
|
||||
+ WCHAR *ptr;
|
||||
+
|
||||
+ TRACE( "(%p,%p,%d,%x)\n", file, path, charcount, flags );
|
||||
+
|
||||
+ /* check for invalid arguments */
|
||||
+ if (!path)
|
||||
+ {
|
||||
+ SetLastError( ERROR_INVALID_PARAMETER );
|
||||
+ return 0;
|
||||
+ }
|
||||
+ else if (file == INVALID_HANDLE_VALUE)
|
||||
+ {
|
||||
+ SetLastError( ERROR_INVALID_HANDLE );
|
||||
+ return 0;
|
||||
+ }
|
||||
+ else if (flags & ~(FILE_NAME_OPENED | VOLUME_NAME_GUID | VOLUME_NAME_NONE | VOLUME_NAME_NT))
|
||||
+ {
|
||||
+ WARN("Invalid or unsupported flags: %x\n", flags);
|
||||
+ SetLastError( ERROR_INVALID_PARAMETER );
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /* get object name */
|
||||
+ status = NtQueryObject( file, ObjectNameInformation, &buffer, sizeof(buffer) - sizeof(WCHAR), &dummy );
|
||||
+ if (status != STATUS_SUCCESS)
|
||||
+ {
|
||||
+ SetLastError( RtlNtStatusToDosError( status ) );
|
||||
+ return 0;
|
||||
+ }
|
||||
+ else if (info->Name.Length < 4 * sizeof(WCHAR) || info->Name.Buffer[0] != '\\' ||
|
||||
+ info->Name.Buffer[1] != '?' || info->Name.Buffer[2] != '?' || info->Name.Buffer[3] != '\\' )
|
||||
+ {
|
||||
+ FIXME("Unexpected object name: %s\n", debugstr_wn(info->Name.Buffer, info->Name.Length / sizeof(WCHAR)));
|
||||
+ SetLastError( ERROR_GEN_FAILURE );
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /* add terminating null character, remove "\\??\\" */
|
||||
+ info->Name.Buffer[info->Name.Length / sizeof(WCHAR)] = 0;
|
||||
+ info->Name.Length -= 4 * sizeof(WCHAR);
|
||||
+ info->Name.Buffer += 4;
|
||||
+
|
||||
+ /* FILE_NAME_OPENED is not supported yet, and would require Wineserver changes */
|
||||
+ if (flags & FILE_NAME_OPENED)
|
||||
+ {
|
||||
+ FIXME("FILE_NAME_OPENED not supported\n");
|
||||
+ flags &= ~FILE_NAME_OPENED;
|
||||
+ }
|
||||
+
|
||||
+ /* Get information required for VOLUME_NAME_NONE, VOLUME_NAME_GUID and VOLUME_NAME_NT */
|
||||
+ if (flags == VOLUME_NAME_NONE || flags == VOLUME_NAME_GUID || flags == VOLUME_NAME_NT)
|
||||
+ {
|
||||
+ if (!GetVolumePathNameW( info->Name.Buffer, drive_part, MAX_PATH ))
|
||||
+ return 0;
|
||||
+
|
||||
+ drive_part_len = strlenW(drive_part);
|
||||
+ if (!drive_part_len || drive_part_len > strlenW(info->Name.Buffer) ||
|
||||
+ drive_part[drive_part_len-1] != '\\' ||
|
||||
+ strncmpiW( info->Name.Buffer, drive_part, drive_part_len ))
|
||||
+ {
|
||||
+ FIXME("Path %s returned by GetVolumePathNameW does not match file path %s\n",
|
||||
+ debugstr_w(drive_part), debugstr_w(info->Name.Buffer));
|
||||
+ SetLastError( ERROR_GEN_FAILURE );
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (flags == VOLUME_NAME_NONE)
|
||||
+ {
|
||||
+ ptr = info->Name.Buffer + drive_part_len - 1;
|
||||
+ result = strlenW(ptr);
|
||||
+ if (result < charcount)
|
||||
+ memcpy(path, ptr, (result + 1) * sizeof(WCHAR));
|
||||
+ else result++;
|
||||
+ }
|
||||
+ else if (flags == VOLUME_NAME_GUID)
|
||||
+ {
|
||||
+ WCHAR volume_prefix[51];
|
||||
+
|
||||
+ /* GetVolumeNameForVolumeMountPointW sets error code on failure */
|
||||
+ if (!GetVolumeNameForVolumeMountPointW( drive_part, volume_prefix, 50 ))
|
||||
+ return 0;
|
||||
+
|
||||
+ ptr = info->Name.Buffer + drive_part_len;
|
||||
+ result = strlenW(volume_prefix) + strlenW(ptr);
|
||||
+ if (result < charcount)
|
||||
+ {
|
||||
+ path[0] = 0;
|
||||
+ strcatW(path, volume_prefix);
|
||||
+ strcatW(path, ptr);
|
||||
+ }
|
||||
+ else result++;
|
||||
+ }
|
||||
+ else if (flags == VOLUME_NAME_NT)
|
||||
+ {
|
||||
+ WCHAR nt_prefix[MAX_PATH];
|
||||
+
|
||||
+ /* QueryDosDeviceW sets error code on failure */
|
||||
+ drive_part[drive_part_len - 1] = 0;
|
||||
+ if (!QueryDosDeviceW( drive_part, nt_prefix, MAX_PATH ))
|
||||
+ return 0;
|
||||
+
|
||||
+ ptr = info->Name.Buffer + drive_part_len - 1;
|
||||
+ result = strlenW(nt_prefix) + strlenW(ptr);
|
||||
+ if (result < charcount)
|
||||
+ {
|
||||
+ path[0] = 0;
|
||||
+ strcatW(path, nt_prefix);
|
||||
+ strcatW(path, ptr);
|
||||
+ }
|
||||
+ else result++;
|
||||
+ }
|
||||
+ else if (flags == VOLUME_NAME_DOS)
|
||||
+ {
|
||||
+ static const WCHAR dos_prefix[] = {'\\','\\','?','\\', '\0'};
|
||||
+
|
||||
+ result = strlenW(dos_prefix) + strlenW(info->Name.Buffer);
|
||||
+ if (result < charcount)
|
||||
+ {
|
||||
+ path[0] = 0;
|
||||
+ strcatW(path, dos_prefix);
|
||||
+ strcatW(path, info->Name.Buffer);
|
||||
+ }
|
||||
+ else result++;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ /* Windows crashes here, but we prefer returning ERROR_INVALID_PARAMETER */
|
||||
+ WARN("Invalid combination of flags: %x\n", flags);
|
||||
+ SetLastError( ERROR_INVALID_PARAMETER );
|
||||
+ }
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+/***********************************************************************
|
||||
+ * GetFinalPathNameByHandleA (KERNEL32.@)
|
||||
+ */
|
||||
+DWORD WINAPI GetFinalPathNameByHandleA(HANDLE file, LPSTR path, DWORD charcount, DWORD flags)
|
||||
+{
|
||||
+ WCHAR *str;
|
||||
+ DWORD result;
|
||||
+
|
||||
+ TRACE( "(%p,%p,%d,%x)\n", file, path, charcount, flags );
|
||||
+
|
||||
+ if (!path || !charcount)
|
||||
+ return GetFinalPathNameByHandleW(file, (LPWSTR)path, charcount, flags);
|
||||
+
|
||||
+ str = HeapAlloc( GetProcessHeap(), 0, charcount * sizeof(WCHAR) );
|
||||
+ if (!str)
|
||||
+ {
|
||||
+ SetLastError( ERROR_NOT_ENOUGH_MEMORY );
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ result = GetFinalPathNameByHandleW(file, (LPWSTR)str, charcount, flags);
|
||||
+ if (result)
|
||||
+ {
|
||||
+ if (result < charcount)
|
||||
+ {
|
||||
+ result = FILE_name_WtoA( str, result, path, charcount - 1 );
|
||||
+ path[result] = 0;
|
||||
+ }
|
||||
+ else result--; /* Why does Windows do this? */
|
||||
+ }
|
||||
+
|
||||
+ HeapFree( GetProcessHeap(), 0, str );
|
||||
+ return result;
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
|
||||
index bb72041..b7bead0 100644
|
||||
--- a/dlls/kernel32/kernel32.spec
|
||||
+++ b/dlls/kernel32/kernel32.spec
|
||||
@@ -682,8 +682,8 @@
|
||||
@ stdcall GetFileSizeEx(long ptr)
|
||||
@ stdcall GetFileTime(long ptr ptr ptr)
|
||||
@ stdcall GetFileType(long)
|
||||
-# @ stub GetFinalPathNameByHandleA
|
||||
-# @ stub GetFinalPathNameByHandleW
|
||||
+@ stdcall GetFinalPathNameByHandleA(long ptr long long)
|
||||
+@ stdcall GetFinalPathNameByHandleW(long ptr long long)
|
||||
@ stdcall GetFirmwareEnvironmentVariableA(str str ptr long)
|
||||
@ stdcall GetFirmwareEnvironmentVariableW(wstr wstr ptr long)
|
||||
@ stdcall GetFullPathNameA(str long ptr ptr)
|
||||
--
|
||||
2.4.0
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [34851] Support for GetFinalPathNameByHandle
|
@@ -1,29 +0,0 @@
|
||||
From c62a9b8f39fcdd2209959e831e3801162b41420c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 27 Jan 2016 06:56:09 +0100
|
||||
Subject: kernel32: Do not inherit QT_* environment variables to Windows
|
||||
environment.
|
||||
|
||||
If necessary, QT environment variables can still be set by adding a WINE
|
||||
prefix, for example: WINEQT_QPA_PLATFORM=...
|
||||
---
|
||||
dlls/kernel32/process.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
|
||||
index 6e7b23e..bb6c2dd 100644
|
||||
--- a/dlls/kernel32/process.c
|
||||
+++ b/dlls/kernel32/process.c
|
||||
@@ -135,7 +135,8 @@ static inline BOOL is_special_env_var( const char *var )
|
||||
!strncmp( var, "PWD=", sizeof("PWD=")-1 ) ||
|
||||
!strncmp( var, "HOME=", sizeof("HOME=")-1 ) ||
|
||||
!strncmp( var, "TEMP=", sizeof("TEMP=")-1 ) ||
|
||||
- !strncmp( var, "TMP=", sizeof("TMP=")-1 ));
|
||||
+ !strncmp( var, "TMP=", sizeof("TMP=")-1 ) ||
|
||||
+ !strncmp( var, "QT_", sizeof("QT_")-1 ));
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.6.4
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: Do not inherit QT_* environment variables to Windows environment
|
@@ -1,4 +1,4 @@
|
||||
From 9a4f8fae5a735a8ceeec6136b548420abb69f336 Mon Sep 17 00:00:00 2001
|
||||
From f97150c35f617561b99e71f3b7568170f72890a6 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dtimoshkov@codeweavers.com>
|
||||
Date: Mon, 28 Jul 2003 07:39:25 -0500
|
||||
Subject: libs: Fix most problems with CompareString.
|
||||
@@ -9,10 +9,10 @@ Subject: libs: Fix most problems with CompareString.
|
||||
2 files changed, 34 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
|
||||
index 7b0212e..cba3ebc 100644
|
||||
index 3054c50..d12378d 100644
|
||||
--- a/dlls/kernel32/tests/locale.c
|
||||
+++ b/dlls/kernel32/tests/locale.c
|
||||
@@ -1759,13 +1759,13 @@ static void test_CompareStringA(void)
|
||||
@@ -1763,13 +1763,13 @@ static void test_CompareStringA(void)
|
||||
todo_wine ok(ret != CSTR_EQUAL, "\\2 vs \\1 expected unequal\n");
|
||||
|
||||
ret = CompareStringA(lcid, NORM_IGNORECASE | LOCALE_USE_CP_ACP, "#", -1, ".", -1);
|
||||
@@ -29,10 +29,10 @@ index 7b0212e..cba3ebc 100644
|
||||
|
||||
lcid = MAKELCID(MAKELANGID(LANG_POLISH, SUBLANG_DEFAULT), SORT_DEFAULT);
|
||||
|
||||
@@ -4600,6 +4600,5 @@ START_TEST(locale)
|
||||
test_GetGeoInfo();
|
||||
test_EnumSystemGeoID();
|
||||
@@ -4851,6 +4851,5 @@ START_TEST(locale)
|
||||
test_invariant();
|
||||
test_GetSystemPreferredUILanguages();
|
||||
test_GetThreadPreferredUILanguages();
|
||||
- /* this requires collation table patch to make it MS compatible */
|
||||
- if (0) test_sorting();
|
||||
+ test_sorting();
|
||||
@@ -168,5 +168,5 @@ index 465d740..f354a75 100644
|
||||
0x0a130121, 0x0a140121, 0x02370121, 0x02350121, 0x03a30121, 0x03a40121, 0x03a50121, 0x024e0121,
|
||||
0x02a10121, 0x0a150161, 0x0a290151, 0x0a3d0161, 0x0a490161, 0x0a650161, 0x0a910161, 0x0a990161,
|
||||
--
|
||||
2.6.2
|
||||
2.9.0
|
||||
|
||||
|
@@ -1,36 +0,0 @@
|
||||
From e88178f705163d00848d550641734f0e06855509 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Sun, 8 Feb 2015 11:32:55 +0100
|
||||
Subject: mmdevapi: Improve AEV_GetVolumeRange stub.
|
||||
|
||||
---
|
||||
dlls/mmdevapi/audiovolume.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/mmdevapi/audiovolume.c b/dlls/mmdevapi/audiovolume.c
|
||||
index 4cc3226..f174f58 100644
|
||||
--- a/dlls/mmdevapi/audiovolume.c
|
||||
+++ b/dlls/mmdevapi/audiovolume.c
|
||||
@@ -248,11 +248,16 @@ static HRESULT WINAPI AEV_QueryHardwareSupport(IAudioEndpointVolumeEx *iface, DW
|
||||
|
||||
static HRESULT WINAPI AEV_GetVolumeRange(IAudioEndpointVolumeEx *iface, float *mindb, float *maxdb, float *inc)
|
||||
{
|
||||
- TRACE("(%p)->(%p,%p,%p)\n", iface, mindb, maxdb, inc);
|
||||
+ FIXME("(%p)->(%p,%p,%p): stub\n", iface, mindb, maxdb, inc);
|
||||
+
|
||||
if (!mindb || !maxdb || !inc)
|
||||
return E_POINTER;
|
||||
- FIXME("stub\n");
|
||||
- return E_NOTIMPL;
|
||||
+
|
||||
+ *mindb = 0.0f;
|
||||
+ *maxdb = 1.0f;
|
||||
+ *inc = 0.1f;
|
||||
+
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI AEV_GetVolumeRangeChannel(IAudioEndpointVolumeEx *iface, UINT chan, float *mindb, float *maxdb, float *inc)
|
||||
--
|
||||
2.2.2
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 542ba5fc717facafe9de075cec17fa115472bc1b Mon Sep 17 00:00:00 2001
|
||||
From 7d87ebc6e74f4e95bb1e136d1592c508e1c30416 Mon Sep 17 00:00:00 2001
|
||||
From: Christian Costa <titan.costa@gmail.com>
|
||||
Date: Sun, 8 Feb 2015 11:38:17 +0100
|
||||
Subject: mmdevapi: Improve AEV_SetMasterVolumeLevel and
|
||||
@@ -9,7 +9,7 @@ Subject: mmdevapi: Improve AEV_SetMasterVolumeLevel and
|
||||
1 file changed, 17 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/mmdevapi/audiovolume.c b/dlls/mmdevapi/audiovolume.c
|
||||
index e6f94a1..4f915ed 100644
|
||||
index a49d2e93db2..81224350c76 100644
|
||||
--- a/dlls/mmdevapi/audiovolume.c
|
||||
+++ b/dlls/mmdevapi/audiovolume.c
|
||||
@@ -43,6 +43,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mmdevapi);
|
||||
@@ -57,14 +57,14 @@ index e6f94a1..4f915ed 100644
|
||||
}
|
||||
|
||||
static HRESULT WINAPI AEV_GetMasterVolumeLevelScalar(IAudioEndpointVolumeEx *iface, float *level)
|
||||
@@ -288,6 +298,7 @@ HRESULT AudioEndpointVolume_Create(MMDevice *parent, IAudioEndpointVolume **ppv)
|
||||
@@ -288,6 +298,7 @@ HRESULT AudioEndpointVolume_Create(MMDevice *parent, IAudioEndpointVolumeEx **pp
|
||||
return E_OUTOFMEMORY;
|
||||
This->IAudioEndpointVolumeEx_iface.lpVtbl = &AEVImpl_Vtbl;
|
||||
This->ref = 1;
|
||||
+ This->level = 1.0f;
|
||||
|
||||
*ppv = (IAudioEndpointVolume*)&This->IAudioEndpointVolumeEx_iface;
|
||||
*ppv = &This->IAudioEndpointVolumeEx_iface;
|
||||
return S_OK;
|
||||
--
|
||||
2.4.2
|
||||
2.11.0
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user