mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against f8d78b0d927c1cae4c5075c64d980c306fb3ed87.
This commit is contained in:
parent
8adf60dc8e
commit
8cd8abd51f
@ -118,7 +118,7 @@ for more details.*
|
||||
* CreateProcess does not prioritize the working directory over the system search path ([Wine Bug #23934](https://bugs.winehq.org/show_bug.cgi?id=23934))
|
||||
* D3DCompileShader should filter specific warning messages ([Wine Bug #33770](https://bugs.winehq.org/show_bug.cgi?id=33770))
|
||||
* Do not allow to deallocate thread stack for current thread
|
||||
* Do not check if object was signaled after user APC in server_select
|
||||
* ~~Do not check if object was signaled after user APC in server_select~~
|
||||
* Do not fail when a used context is passed to wglShareLists ([Wine Bug #11436](https://bugs.winehq.org/show_bug.cgi?id=11436))
|
||||
* Do not signal threads until they are really gone
|
||||
* Do not use unixfs for devices without mountpoint
|
||||
@ -190,7 +190,7 @@ for more details.*
|
||||
* Implement a Times New Roman replacement font ([Wine Bug #32342](https://bugs.winehq.org/show_bug.cgi?id=32342))
|
||||
* Implement additional stub functions in authz.dll
|
||||
* Implement an Arial replacement font ([Wine Bug #32323](https://bugs.winehq.org/show_bug.cgi?id=32323))
|
||||
* Implement combase.WindowsSubstring function
|
||||
* ~~Implement combase.WindowsSubstring function~~
|
||||
* Implement default homepage button in inetcpl.cpl
|
||||
* Implement enumeration of sound devices and basic properties to dxdiagn ([Wine Bug #32613](https://bugs.winehq.org/show_bug.cgi?id=32613))
|
||||
* Implement exclusive mode in PulseAudio backend ([Wine Bug #37042](https://bugs.winehq.org/show_bug.cgi?id=37042))
|
||||
|
4
debian/changelog
vendored
4
debian/changelog
vendored
@ -17,6 +17,10 @@ wine-staging (1.7.54) UNRELEASED; urgency=low
|
||||
unwinding on x86_64 (accepted upstream).
|
||||
* Removed patch to release capture before sending WM_COMMAND (accepted
|
||||
upstream).
|
||||
* Removed patch to avoid check for signaled object after user APC in
|
||||
server_select (accepted upstream).
|
||||
* Removed patch to implement combase.WindowsSubstring function (accepted
|
||||
upstream).
|
||||
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 19 Oct 2015 21:56:22 +0200
|
||||
|
||||
wine-staging (1.7.53) unstable; urgency=low
|
||||
|
@ -1,181 +0,0 @@
|
||||
From 397611b845973e2418118ffcb4aee305b671d533 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Pointhuber <thomas.pointhuber@gmx.at>
|
||||
Date: Mon, 16 Mar 2015 09:45:21 +0100
|
||||
Subject: combase: implement WindowsSubstring (try 2)
|
||||
|
||||
---
|
||||
.../api-ms-win-core-winrt-string-l1-1-0.spec | 2 +-
|
||||
dlls/combase/combase.spec | 2 +-
|
||||
dlls/combase/string.c | 19 +++++++
|
||||
dlls/combase/tests/string.c | 60 ++++++++++++++++++++++
|
||||
include/winerror.h | 1 +
|
||||
5 files changed, 82 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec b/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec
|
||||
index 2361a1d..825980d 100644
|
||||
--- a/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec
|
||||
+++ b/dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec
|
||||
@@ -21,7 +21,7 @@
|
||||
@ stdcall WindowsPromoteStringBuffer(ptr ptr) combase.WindowsPromoteStringBuffer
|
||||
@ stub WindowsReplaceString
|
||||
@ stdcall WindowsStringHasEmbeddedNull(ptr ptr) combase.WindowsStringHasEmbeddedNull
|
||||
-@ stub WindowsSubstring
|
||||
+@ stdcall WindowsSubstring(ptr long ptr) combase.WindowsSubstring
|
||||
@ stub WindowsSubstringWithSpecifiedLength
|
||||
@ stub WindowsTrimStringEnd
|
||||
@ stub WindowsTrimStringStart
|
||||
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec
|
||||
index ac095ce..48c3a7e 100644
|
||||
--- a/dlls/combase/combase.spec
|
||||
+++ b/dlls/combase/combase.spec
|
||||
@@ -302,7 +302,7 @@
|
||||
@ stdcall WindowsPromoteStringBuffer(ptr ptr)
|
||||
@ stub WindowsReplaceString
|
||||
@ stdcall WindowsStringHasEmbeddedNull(ptr ptr)
|
||||
-@ stub WindowsSubstring
|
||||
+@ stdcall WindowsSubstring(ptr long ptr)
|
||||
@ stub WindowsSubstringWithSpecifiedLength
|
||||
@ stub WindowsTrimStringEnd
|
||||
@ stub WindowsTrimStringStart
|
||||
diff --git a/dlls/combase/string.c b/dlls/combase/string.c
|
||||
index 7054af6..33e5100 100644
|
||||
--- a/dlls/combase/string.c
|
||||
+++ b/dlls/combase/string.c
|
||||
@@ -255,6 +255,25 @@ HRESULT WINAPI WindowsStringHasEmbeddedNull(HSTRING str, BOOL *out)
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
+ * WindowsSubstring (combase.@)
|
||||
+ */
|
||||
+HRESULT WINAPI WindowsSubstring(HSTRING str, UINT32 start, HSTRING *out)
|
||||
+{
|
||||
+ struct hstring_private *priv = impl_from_HSTRING(str);
|
||||
+ UINT32 len = WindowsGetStringLen(str);
|
||||
+ if (out == NULL)
|
||||
+ return E_INVALIDARG;
|
||||
+ if (start > len)
|
||||
+ return E_BOUNDS;
|
||||
+ if (start == len)
|
||||
+ {
|
||||
+ *out = NULL;
|
||||
+ return S_OK;
|
||||
+ }
|
||||
+ return WindowsCreateString(&priv->buffer[start], len - start, out);
|
||||
+}
|
||||
+
|
||||
+/***********************************************************************
|
||||
* WindowsIsStringEmpty (combase.@)
|
||||
*/
|
||||
BOOL WINAPI WindowsIsStringEmpty(HSTRING str)
|
||||
diff --git a/dlls/combase/tests/string.c b/dlls/combase/tests/string.c
|
||||
index 72eaa84..c46d04e 100644
|
||||
--- a/dlls/combase/tests/string.c
|
||||
+++ b/dlls/combase/tests/string.c
|
||||
@@ -38,6 +38,7 @@ static BOOL (WINAPI *pWindowsIsStringEmpty)(HSTRING);
|
||||
static HRESULT (WINAPI *pWindowsPreallocateStringBuffer)(UINT32, WCHAR **, HSTRING_BUFFER *);
|
||||
static HRESULT (WINAPI *pWindowsPromoteStringBuffer)(HSTRING_BUFFER, HSTRING *);
|
||||
static HRESULT (WINAPI *pWindowsStringHasEmbeddedNull)(HSTRING, BOOL *);
|
||||
+static HRESULT (WINAPI *pWindowsSubstring)(HSTRING, UINT32, HSTRING *);
|
||||
|
||||
#define SET(x) p##x = (void*)GetProcAddress(hmod, #x)
|
||||
|
||||
@@ -60,6 +61,7 @@ static BOOL init_functions(void)
|
||||
SET(WindowsPreallocateStringBuffer);
|
||||
SET(WindowsPromoteStringBuffer);
|
||||
SET(WindowsStringHasEmbeddedNull);
|
||||
+ SET(WindowsSubstring);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -92,6 +94,7 @@ static void _check_string(int line, HSTRING str, LPCWSTR content, UINT32 length,
|
||||
static const WCHAR input_string[] = { 'a', 'b', 'c', 'd', 'e', 'f', '\0', '\0' };
|
||||
static const WCHAR input_empty_string[] = { '\0' };
|
||||
static const WCHAR input_embed_null[] = { 'a', '\0', 'c', '\0', 'e', 'f', '\0' };
|
||||
+static const WCHAR output_substring[] = { 'c', 'd', 'e', 'f', '\0' };
|
||||
|
||||
static void test_create_delete(void)
|
||||
{
|
||||
@@ -236,6 +239,62 @@ static void test_string_buffer(void)
|
||||
ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
}
|
||||
|
||||
+static void test_substring(void)
|
||||
+{
|
||||
+ HSTRING str, substr;
|
||||
+ HSTRING_HEADER header;
|
||||
+
|
||||
+ /* Test substring of string buffers */
|
||||
+ ok(pWindowsCreateString(input_string, 6, &str) == S_OK, "Failed to create string\n");
|
||||
+ ok(pWindowsSubstring(str, 2, &substr) == S_OK, "Failed to create substring!\n");
|
||||
+ check_string(substr, output_substring, 4, FALSE);
|
||||
+ ok(pWindowsDeleteString(substr) == S_OK, "Failed to delete string\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
+
|
||||
+ /* Test duplication of string using substring */
|
||||
+ ok(pWindowsCreateString(input_string, 6, &str) == S_OK, "Failed to create string\n");
|
||||
+ ok(pWindowsSubstring(str, 0, &substr) == S_OK, "Failed to create substring!\n");
|
||||
+ ok(str != substr, "Duplicated string didn't create new string\n");
|
||||
+ check_string(substr, input_string, 6, FALSE);
|
||||
+ ok(pWindowsDeleteString(substr) == S_OK, "Failed to delete string\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
+
|
||||
+ /* Test substring of string reference */
|
||||
+ ok(pWindowsCreateStringReference(input_string, 6, &header, &str) == S_OK, "Failed to create string ref\n");
|
||||
+ ok(pWindowsSubstring(str, 2, &substr) == S_OK, "Failed to create substring of string ref!\n");
|
||||
+ check_string(substr, output_substring, 4, FALSE);
|
||||
+ ok(pWindowsDeleteString(substr) == S_OK, "Failed to delete string\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string ref\n");
|
||||
+
|
||||
+ /* Test duplication of string reference using substring */
|
||||
+ ok(pWindowsCreateStringReference(input_string, 6, &header, &str) == S_OK, "Failed to create string ref\n");
|
||||
+ ok(pWindowsSubstring(str, 0, &substr) == S_OK, "Failed to create substring of string ref!\n");
|
||||
+ ok(str != substr, "Duplicated string ref didn't create new string\n");
|
||||
+ check_string(substr, input_string, 6, FALSE);
|
||||
+ ok(pWindowsDeleteString(substr) == S_OK, "Failed to delete string\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
+
|
||||
+ /* Test get Substring of empty string */
|
||||
+ ok(pWindowsSubstring(NULL, 0, &substr) == S_OK, "Failed to duplicate NULL string\n");
|
||||
+ ok(substr == NULL, "Substring created new string\n");
|
||||
+
|
||||
+ /* Test get empty Substring of string */
|
||||
+ ok(pWindowsCreateString(input_string, 6, &str) == S_OK, "Failed to create string\n");
|
||||
+ ok(pWindowsSubstring(str, 6, &substr) == S_OK, "Failed to create substring!\n");
|
||||
+ ok(substr == NULL, "Substring created new string\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
+
|
||||
+ /* Test handling of using to high startIndex */
|
||||
+ ok(pWindowsCreateString(input_string, 6, &str) == S_OK, "Failed to create string\n");
|
||||
+ ok(pWindowsSubstring(str, 7, &substr) == E_BOUNDS, "Incorrect error handling\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
+
|
||||
+ /* Test handling of a NULL string */
|
||||
+ ok(pWindowsCreateString(input_string, 6, &str) == S_OK, "Failed to create string\n");
|
||||
+ ok(pWindowsSubstring(str, 7, NULL) == E_INVALIDARG, "Incorrect error handling\n");
|
||||
+ ok(pWindowsDeleteString(str) == S_OK, "Failed to delete string\n");
|
||||
+}
|
||||
+
|
||||
START_TEST(string)
|
||||
{
|
||||
if (!init_functions())
|
||||
@@ -244,4 +303,5 @@ START_TEST(string)
|
||||
test_duplicate();
|
||||
test_access();
|
||||
test_string_buffer();
|
||||
+ test_substring();
|
||||
}
|
||||
diff --git a/include/winerror.h b/include/winerror.h
|
||||
index 2958cbd..9b9fb72 100644
|
||||
--- a/include/winerror.h
|
||||
+++ b/include/winerror.h
|
||||
@@ -2090,6 +2090,7 @@ static inline HRESULT HRESULT_FROM_WIN32(unsigned int x)
|
||||
#define S_FALSE _HRESULT_TYPEDEF_(1)
|
||||
|
||||
#define E_PENDING _HRESULT_TYPEDEF_(0x8000000A)
|
||||
+#define E_BOUNDS _HRESULT_TYPEDEF_(0x8000000B)
|
||||
|
||||
|
||||
#define E_NOTIMPL _HRESULT_TYPEDEF_(0x80004001)
|
||||
--
|
||||
2.3.2
|
||||
|
@ -1,2 +0,0 @@
|
||||
Fixes: Implement combase.WindowsSubstring function
|
||||
Category: stable
|
@ -1,11 +1,11 @@
|
||||
From 6564e70be47d7eede39141f62290577272588655 Mon Sep 17 00:00:00 2001
|
||||
From aff30eb5ce44d1f62c9c0a1419a89ba076dd93b8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 22 Feb 2015 01:25:20 +0100
|
||||
Subject: dxva2: Initial implementation of MPEG2 decoder using vaapi backend.
|
||||
|
||||
---
|
||||
configure.ac | 16 +
|
||||
dlls/dxva2/Makefile.in | 12 +-
|
||||
dlls/dxva2/Makefile.in | 14 +-
|
||||
dlls/dxva2/backend.idl | 94 ++++++
|
||||
dlls/dxva2/dxva2_private.h | 115 ++++++-
|
||||
dlls/dxva2/genericdecoder.c | 432 +++++++++++++++++++++++++
|
||||
@ -14,14 +14,14 @@ Subject: dxva2: Initial implementation of MPEG2 decoder using vaapi backend.
|
||||
dlls/dxva2/vaapi-mpeg2.c | 753 +++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/dxva2/vaapi.c | 767 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
dlls/dxva2/videoservices.c | 74 ++---
|
||||
10 files changed, 2290 insertions(+), 66 deletions(-)
|
||||
10 files changed, 2291 insertions(+), 67 deletions(-)
|
||||
create mode 100644 dlls/dxva2/backend.idl
|
||||
create mode 100644 dlls/dxva2/genericdecoder.c
|
||||
create mode 100644 dlls/dxva2/vaapi-mpeg2.c
|
||||
create mode 100644 dlls/dxva2/vaapi.c
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 22b46ae..db872d8 100644
|
||||
index fbcd3fb..324deba 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -99,6 +99,8 @@ AC_ARG_WITH(xxf86vm, AS_HELP_STRING([--without-xxf86vm],[do not use XFree vide
|
||||
@ -33,7 +33,7 @@ index 22b46ae..db872d8 100644
|
||||
|
||||
AC_ARG_WITH(wine-tools,AS_HELP_STRING([--with-wine-tools=DIR],[use Wine tools from directory DIR]))
|
||||
AC_ARG_WITH(wine64, AS_HELP_STRING([--with-wine64=DIR],[use the 64-bit Wine in DIR for a Wow64 build]))
|
||||
@@ -1261,6 +1263,20 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
|
||||
@@ -1265,6 +1267,20 @@ This probably prevents linking to OpenGL. Try deleting the file and restarting c
|
||||
WINE_WARNING_WITH(opengl,[test -n "$opengl_msg"],[$opengl_msg
|
||||
OpenGL and Direct3D won't be supported.])
|
||||
|
||||
@ -55,7 +55,7 @@ index 22b46ae..db872d8 100644
|
||||
else
|
||||
X_CFLAGS=""
|
||||
diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in
|
||||
index 4af9dc0..808173c 100644
|
||||
index 4af9dc0..afdefc3 100644
|
||||
--- a/dlls/dxva2/Makefile.in
|
||||
+++ b/dlls/dxva2/Makefile.in
|
||||
@@ -1,8 +1,14 @@
|
||||
@ -67,15 +67,16 @@ index 4af9dc0..808173c 100644
|
||||
+ backend.idl
|
||||
|
||||
C_SRCS = \
|
||||
+ devicemanager.c \
|
||||
- main.c \
|
||||
- videoservices.c \
|
||||
devicemanager.c \
|
||||
- softwareprocessor.c
|
||||
+ genericdecoder.c \
|
||||
main.c \
|
||||
+ main.c \
|
||||
+ softwareprocessor.c \
|
||||
+ vaapi.c \
|
||||
+ vaapi-mpeg2.c \
|
||||
videoservices.c \
|
||||
- devicemanager.c \
|
||||
- softwareprocessor.c
|
||||
+ videoservices.c
|
||||
diff --git a/dlls/dxva2/backend.idl b/dlls/dxva2/backend.idl
|
||||
new file mode 100644
|
||||
index 0000000..dd37695
|
||||
@ -2632,5 +2633,5 @@ index 46e431a..84222dc 100644
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
--
|
||||
2.3.0
|
||||
2.6.1
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
From b4de3e81cdf0ba928d75455c871742d86920de13 Mon Sep 17 00:00:00 2001
|
||||
From 4ec62ff378a4051c25875bf620fa74170202256e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Sun, 22 Feb 2015 01:43:36 +0100
|
||||
Subject: dxva2: Implement h264 decoder.
|
||||
@ -12,7 +12,7 @@ Subject: dxva2: Implement h264 decoder.
|
||||
create mode 100644 dlls/dxva2/vaapi-h264.c
|
||||
|
||||
diff --git a/dlls/dxva2/Makefile.in b/dlls/dxva2/Makefile.in
|
||||
index 808173c..69ce4c8 100644
|
||||
index afdefc3..e527e96 100644
|
||||
--- a/dlls/dxva2/Makefile.in
|
||||
+++ b/dlls/dxva2/Makefile.in
|
||||
@@ -10,5 +10,6 @@ C_SRCS = \
|
||||
@ -21,7 +21,7 @@ index 808173c..69ce4c8 100644
|
||||
vaapi.c \
|
||||
+ vaapi-h264.c \
|
||||
vaapi-mpeg2.c \
|
||||
videoservices.c \
|
||||
videoservices.c
|
||||
diff --git a/dlls/dxva2/dxva2_private.h b/dlls/dxva2/dxva2_private.h
|
||||
index f518637..5df59bd 100644
|
||||
--- a/dlls/dxva2/dxva2_private.h
|
||||
@ -37,7 +37,7 @@ index f518637..5df59bd 100644
|
||||
#endif /* HAVE_VAAPI */
|
||||
diff --git a/dlls/dxva2/vaapi-h264.c b/dlls/dxva2/vaapi-h264.c
|
||||
new file mode 100644
|
||||
index 0000000..1a5817e
|
||||
index 0000000..08b6aed
|
||||
--- /dev/null
|
||||
+++ b/dlls/dxva2/vaapi-h264.c
|
||||
@@ -0,0 +1,890 @@
|
||||
@ -932,7 +932,7 @@ index 0000000..1a5817e
|
||||
+
|
||||
+#endif /* HAVE_VAAPI */
|
||||
diff --git a/dlls/dxva2/vaapi.c b/dlls/dxva2/vaapi.c
|
||||
index 3369a03..404f1ab 100644
|
||||
index 80e63bf..4c570f5 100644
|
||||
--- a/dlls/dxva2/vaapi.c
|
||||
+++ b/dlls/dxva2/vaapi.c
|
||||
@@ -655,6 +655,8 @@ static HRESULT WINAPI WineVideoService_CreateVideoDecoder( IWineVideoService *if
|
||||
@ -945,5 +945,5 @@ index 3369a03..404f1ab 100644
|
||||
return E_FAIL;
|
||||
}
|
||||
--
|
||||
2.1.0
|
||||
2.6.1
|
||||
|
||||
|
@ -1,70 +0,0 @@
|
||||
From 7284f98729206e3d28732a7640f53fe75fe17c5c Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 9 Oct 2015 20:51:23 +0200
|
||||
Subject: kernel32/tests: Add test to show that multiple user APCs are
|
||||
processed at once.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/sync.c | 27 ++++++++++++++++++++++++++-
|
||||
1 file changed, 26 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c
|
||||
index e842bf3..173793c 100644
|
||||
--- a/dlls/kernel32/tests/sync.c
|
||||
+++ b/dlls/kernel32/tests/sync.c
|
||||
@@ -2333,6 +2333,13 @@ static DWORD WINAPI alertable_wait_thread(void *param)
|
||||
todo_wine
|
||||
ok(status == STATUS_WAIT_0, "expected STATUS_WAIT_0, got %08x\n", status);
|
||||
|
||||
+ ReleaseSemaphore(semaphores[0], 1, NULL);
|
||||
+ timeout.QuadPart = -10000000;
|
||||
+ status = pNtWaitForMultipleObjects(1, &semaphores[1], FALSE, TRUE, &timeout);
|
||||
+ ok(status == STATUS_USER_APC, "expected STATUS_USER_APC, got %08x\n", status);
|
||||
+ result = WaitForSingleObject(semaphores[0], 0);
|
||||
+ ok(result == WAIT_TIMEOUT, "expected WAIT_TIMEOUT, got %u\n", result);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2342,12 +2349,21 @@ static void CALLBACK alertable_wait_apc(ULONG_PTR userdata)
|
||||
ReleaseSemaphore(semaphores[1], 1, NULL);
|
||||
}
|
||||
|
||||
+static void CALLBACK alertable_wait_apc2(ULONG_PTR userdata)
|
||||
+{
|
||||
+ HANDLE *semaphores = (void *)userdata;
|
||||
+ DWORD result;
|
||||
+
|
||||
+ result = WaitForSingleObject(semaphores[0], 1000);
|
||||
+ ok(result == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", result);
|
||||
+}
|
||||
+
|
||||
static void test_alertable_wait(void)
|
||||
{
|
||||
HANDLE thread, semaphores[2];
|
||||
DWORD result;
|
||||
|
||||
- semaphores[0] = CreateSemaphoreW(NULL, 0, 1, NULL);
|
||||
+ semaphores[0] = CreateSemaphoreW(NULL, 0, 2, NULL);
|
||||
ok(semaphores[0] != NULL, "CreateSemaphore failed with %u\n", GetLastError());
|
||||
semaphores[1] = CreateSemaphoreW(NULL, 0, 1, NULL);
|
||||
ok(semaphores[1] != NULL, "CreateSemaphore failed with %u\n", GetLastError());
|
||||
@@ -2366,6 +2382,15 @@ static void test_alertable_wait(void)
|
||||
result = QueueUserAPC(alertable_wait_apc, thread, (ULONG_PTR)semaphores);
|
||||
ok(result != 0, "QueueUserAPC failed with %u\n", GetLastError());
|
||||
|
||||
+ result = WaitForSingleObject(semaphores[0], 1000);
|
||||
+ ok(result == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", result);
|
||||
+ Sleep(100); /* ensure the thread is blocking in NtWaitForMultipleObjects */
|
||||
+ result = QueueUserAPC(alertable_wait_apc2, thread, (ULONG_PTR)semaphores);
|
||||
+ ok(result != 0, "QueueUserAPC failed with %u\n", GetLastError());
|
||||
+ result = QueueUserAPC(alertable_wait_apc2, thread, (ULONG_PTR)semaphores);
|
||||
+ ok(result != 0, "QueueUserAPC failed with %u\n", GetLastError());
|
||||
+ ReleaseSemaphore(semaphores[0], 2, NULL);
|
||||
+
|
||||
result = WaitForSingleObject(thread, 1000);
|
||||
ok(result == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", result);
|
||||
CloseHandle(thread);
|
||||
--
|
||||
2.6.0
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 39f5ce02a6524f23dbc4d8ea6dc602e9e47e15c6 Mon Sep 17 00:00:00 2001
|
||||
From 67ccfc9b0fe9549fb20f2b752d98dd51baa08b8e Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Wed, 21 Oct 2015 18:53:58 +0200
|
||||
Subject: ntdll: Block signals while executing system APCs.
|
||||
@ -8,7 +8,7 @@ Subject: ntdll: Block signals while executing system APCs.
|
||||
1 file changed, 40 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index 7d8d1e9..1173f4d 100644
|
||||
index f6457db..0e97290 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -371,13 +371,30 @@ static int wait_select_reply( void *cookie )
|
||||
@ -107,8 +107,8 @@ index 7d8d1e9..1173f4d 100644
|
||||
+ invoke_apc( &call, &result );
|
||||
+ pthread_sigmask( SIG_BLOCK, &server_block_set, &old_set );
|
||||
+
|
||||
/* if we ran a user apc, we have to check once more if
|
||||
* additional apcs are queued, but we don't want to wait */
|
||||
/* if we ran a user apc we have to check once more if additional apcs are queued,
|
||||
* but we don't want to wait */
|
||||
abs_timeout = 0;
|
||||
@@ -625,6 +656,7 @@ unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT
|
||||
if (size >= sizeof(select_op->signal_and_wait) && select_op->op == SELECT_SIGNAL_AND_WAIT)
|
@ -1,57 +0,0 @@
|
||||
From e87ab2e2a235d7f70aa414bb7f103f9ecb214cec Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Fri, 9 Oct 2015 21:12:59 +0200
|
||||
Subject: ntdll: Do not check if object was signaled after user APC in
|
||||
server_select.
|
||||
|
||||
---
|
||||
dlls/kernel32/tests/sync.c | 4 ----
|
||||
dlls/ntdll/server.c | 5 +++--
|
||||
2 files changed, 3 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c
|
||||
index 173793c..1065d5e 100644
|
||||
--- a/dlls/kernel32/tests/sync.c
|
||||
+++ b/dlls/kernel32/tests/sync.c
|
||||
@@ -2317,20 +2317,16 @@ static DWORD WINAPI alertable_wait_thread(void *param)
|
||||
|
||||
ReleaseSemaphore(semaphores[0], 1, NULL);
|
||||
result = WaitForMultipleObjectsEx(1, &semaphores[1], TRUE, 1000, TRUE);
|
||||
- todo_wine
|
||||
ok(result == WAIT_IO_COMPLETION, "expected WAIT_IO_COMPLETION, got %u\n", result);
|
||||
result = WaitForMultipleObjectsEx(1, &semaphores[1], TRUE, 200, TRUE);
|
||||
- todo_wine
|
||||
ok(result == WAIT_OBJECT_0, "expected WAIT_OBJECT_0, got %u\n", result);
|
||||
|
||||
ReleaseSemaphore(semaphores[0], 1, NULL);
|
||||
timeout.QuadPart = -10000000;
|
||||
status = pNtWaitForMultipleObjects(1, &semaphores[1], FALSE, TRUE, &timeout);
|
||||
- todo_wine
|
||||
ok(status == STATUS_USER_APC, "expected STATUS_USER_APC, got %08x\n", status);
|
||||
timeout.QuadPart = -2000000;
|
||||
status = pNtWaitForMultipleObjects(1, &semaphores[1], FALSE, TRUE, &timeout);
|
||||
- todo_wine
|
||||
ok(status == STATUS_WAIT_0, "expected STATUS_WAIT_0, got %08x\n", status);
|
||||
|
||||
ReleaseSemaphore(semaphores[0], 1, NULL);
|
||||
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
|
||||
index 95111ad..7d8d1e9 100644
|
||||
--- a/dlls/ntdll/server.c
|
||||
+++ b/dlls/ntdll/server.c
|
||||
@@ -614,10 +614,11 @@ unsigned int server_select( const select_op_t *select_op, data_size_t size, UINT
|
||||
if (ret != STATUS_USER_APC) break;
|
||||
if (invoke_apc( &call, &result ))
|
||||
{
|
||||
- /* if we ran a user apc we have to check once more if an object got signaled,
|
||||
- * but we don't want to wait */
|
||||
+ /* if we ran a user apc, we have to check once more if
|
||||
+ * additional apcs are queued, but we don't want to wait */
|
||||
abs_timeout = 0;
|
||||
user_apc = TRUE;
|
||||
+ size = 0;
|
||||
}
|
||||
|
||||
/* don't signal multiple times */
|
||||
--
|
||||
2.6.0
|
||||
|
@ -1,2 +1 @@
|
||||
Fixes: Do not check if object was signaled after user APC in server_select
|
||||
Fixes: [14697] Do not allow interruption of system APC in server_select
|
||||
|
@ -52,7 +52,7 @@ usage()
|
||||
# Get the upstream commit sha
|
||||
upstream_commit()
|
||||
{
|
||||
echo "4fb840b614691a787c76659f02c163d922f88fba"
|
||||
echo "f8d78b0d927c1cae4c5075c64d980c306fb3ed87"
|
||||
}
|
||||
|
||||
# Show version information
|
||||
@ -92,7 +92,6 @@ patch_enable_all ()
|
||||
enable_api_ms_win_crt_Stub_DLLs="$1"
|
||||
enable_authz_Stub_Functions="$1"
|
||||
enable_browseui_Progress_Dialog="$1"
|
||||
enable_combase_String="$1"
|
||||
enable_comctl32_Button_Theming="$1"
|
||||
enable_comctl32_PROPSHEET_InsertPage="$1"
|
||||
enable_comctl32_TVM_GETITEM="$1"
|
||||
@ -372,9 +371,6 @@ patch_enable ()
|
||||
category-stable)
|
||||
enable_category_stable="$2"
|
||||
;;
|
||||
combase-String)
|
||||
enable_combase_String="$2"
|
||||
;;
|
||||
comctl32-Button_Theming)
|
||||
enable_comctl32_Button_Theming="$2"
|
||||
;;
|
||||
@ -1439,9 +1435,6 @@ if test "$enable_category_stable" -eq 1; then
|
||||
if test "$enable_Staging" -gt 1; then
|
||||
abort "Patchset Staging disabled, but category-stable depends on that."
|
||||
fi
|
||||
if test "$enable_combase_String" -gt 1; then
|
||||
abort "Patchset combase-String disabled, but category-stable depends on that."
|
||||
fi
|
||||
if test "$enable_configure_Absolute_RPATH" -gt 1; then
|
||||
abort "Patchset configure-Absolute_RPATH disabled, but category-stable depends on that."
|
||||
fi
|
||||
@ -1651,7 +1644,6 @@ if test "$enable_category_stable" -eq 1; then
|
||||
fi
|
||||
enable_Compiler_Warnings=1
|
||||
enable_Staging=1
|
||||
enable_combase_String=1
|
||||
enable_configure_Absolute_RPATH=1
|
||||
enable_d3d9_Skip_Tests=1
|
||||
enable_d3d9_Surface_Refcount=1
|
||||
@ -2330,19 +2322,6 @@ if test "$enable_browseui_Progress_Dialog" -eq 1; then
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset combase-String
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/api-ms-win-core-winrt-string-l1-1-0/api-ms-win-core-winrt-string-l1-1-0.spec, dlls/combase/combase.spec,
|
||||
# | dlls/combase/string.c, dlls/combase/tests/string.c, include/winerror.h
|
||||
# |
|
||||
if test "$enable_combase_String" -eq 1; then
|
||||
patch_apply combase-String/0001-combase-implement-WindowsSubstring-try-2.patch
|
||||
(
|
||||
echo '+ { "Thomas Pointhuber", "combase: implement WindowsSubstring.", 2 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
||||
# Patchset comctl32-Button_Theming
|
||||
# |
|
||||
# | This patchset fixes the following Wine bugs:
|
||||
@ -4362,15 +4341,11 @@ fi
|
||||
# | * [#14697] Do not allow interruption of system APC in server_select
|
||||
# |
|
||||
# | Modified files:
|
||||
# | * dlls/kernel32/tests/sync.c, dlls/ntdll/server.c
|
||||
# | * dlls/ntdll/server.c
|
||||
# |
|
||||
if test "$enable_ntdll_Wait_User_APC" -eq 1; then
|
||||
patch_apply ntdll-Wait_User_APC/0001-kernel32-tests-Add-test-to-show-that-multiple-user-A.patch
|
||||
patch_apply ntdll-Wait_User_APC/0002-ntdll-Do-not-check-if-object-was-signaled-after-user.patch
|
||||
patch_apply ntdll-Wait_User_APC/0003-ntdll-Block-signals-while-executing-system-APCs.patch
|
||||
patch_apply ntdll-Wait_User_APC/0001-ntdll-Block-signals-while-executing-system-APCs.patch
|
||||
(
|
||||
echo '+ { "Sebastian Lackner", "kernel32/tests: Add test to show that multiple user APCs are processed at once.", 1 },';
|
||||
echo '+ { "Sebastian Lackner", "ntdll: Do not check if object was signaled after user APC in server_select.", 1 },';
|
||||
echo '+ { "Sebastian Lackner", "ntdll: Block signals while executing system APCs.", 1 },';
|
||||
) >> "$patchlist"
|
||||
fi
|
||||
|
@ -1,4 +1,4 @@
|
||||
From a0d7057a64862170f97d4c99d15d58323681efe4 Mon Sep 17 00:00:00 2001
|
||||
From 42b6ba4bb832d0191cda985e2701c61626c103b6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
|
||||
Date: Tue, 21 Jan 2014 16:49:21 +0100
|
||||
Subject: wined3d: Use resource facilities to destroy PBOs.
|
||||
@ -10,10 +10,10 @@ Subject: wined3d: Use resource facilities to destroy PBOs.
|
||||
3 files changed, 4 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
|
||||
index c6b3945..9783b78 100644
|
||||
index 882491c..e10ba41 100644
|
||||
--- a/dlls/wined3d/resource.c
|
||||
+++ b/dlls/wined3d/resource.c
|
||||
@@ -142,7 +142,7 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *
|
||||
@@ -223,7 +223,7 @@ HRESULT resource_init(struct wined3d_resource *resource, struct wined3d_device *
|
||||
return WINED3D_OK;
|
||||
}
|
||||
|
||||
@ -23,11 +23,11 @@ index c6b3945..9783b78 100644
|
||||
struct wined3d_context *context = context_acquire(resource->device, NULL);
|
||||
const struct wined3d_gl_info *gl_info = context->gl_info;
|
||||
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
|
||||
index e5edd34..b197655 100644
|
||||
index 273da13..8ae36af 100644
|
||||
--- a/dlls/wined3d/surface.c
|
||||
+++ b/dlls/wined3d/surface.c
|
||||
@@ -1029,16 +1029,6 @@ HRESULT CDECL wined3d_surface_get_render_target_data(struct wined3d_surface *sur
|
||||
return wined3d_surface_blt(surface, NULL, render_target, NULL, 0, NULL, WINED3D_TEXF_POINT);
|
||||
@@ -958,16 +958,6 @@ static HRESULT wined3d_surface_depth_blt(struct wined3d_surface *src_surface, DW
|
||||
return WINED3D_OK;
|
||||
}
|
||||
|
||||
-/* Context activation is done by the caller. */
|
||||
@ -43,7 +43,7 @@ index e5edd34..b197655 100644
|
||||
static ULONG surface_resource_incref(struct wined3d_resource *resource)
|
||||
{
|
||||
return wined3d_surface_incref(surface_from_resource(resource));
|
||||
@@ -1084,10 +1074,6 @@ static void surface_unload(struct wined3d_resource *resource)
|
||||
@@ -1013,10 +1003,6 @@ static void surface_unload(struct wined3d_resource *resource)
|
||||
wined3d_resource_invalidate_location(&surface->resource, ~surface->resource.map_binding);
|
||||
}
|
||||
|
||||
@ -54,7 +54,7 @@ index e5edd34..b197655 100644
|
||||
/* Destroy fbo render buffers. This is needed for implicit render targets, for
|
||||
* all application-created targets the application has to release the surface
|
||||
* before calling _Reset
|
||||
@@ -4225,7 +4211,8 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
|
||||
@@ -3949,7 +3935,8 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
|
||||
|
||||
wined3d_resource_prepare_map_memory(&surface->resource, context);
|
||||
wined3d_resource_load_location(&surface->resource, context, surface->resource.map_binding);
|
||||
@ -65,10 +65,10 @@ index e5edd34..b197655 100644
|
||||
|
||||
wined3d_resource_get_memory(&surface->resource, surface->resource.locations, &data);
|
||||
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
|
||||
index beaf9bc..5e6d5d3 100644
|
||||
index 4fd8b62..50fc36b 100644
|
||||
--- a/dlls/wined3d/wined3d_private.h
|
||||
+++ b/dlls/wined3d/wined3d_private.h
|
||||
@@ -2126,6 +2126,7 @@ DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN;
|
||||
@@ -2216,6 +2216,7 @@ DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN;
|
||||
BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
|
||||
BOOL wined3d_resource_check_block_align(const struct wined3d_resource *resource,
|
||||
const struct wined3d_box *box) DECLSPEC_HIDDEN;
|
||||
@ -77,5 +77,5 @@ index beaf9bc..5e6d5d3 100644
|
||||
BYTE *wined3d_resource_get_map_ptr(const struct wined3d_resource *resource,
|
||||
const struct wined3d_context *context, DWORD flags) DECLSPEC_HIDDEN;
|
||||
--
|
||||
2.2.1
|
||||
2.6.1
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -29,8 +29,8 @@ index d23227a..76aed78 100644
|
||||
fi
|
||||
|
||||
+dnl **** Check for PulseAudio ****
|
||||
+AC_SUBST(PULSELIBS,"")
|
||||
+AC_SUBST(PULSEINCL,"")
|
||||
+AC_SUBST(PULSE_LIBS,"")
|
||||
+AC_SUBST(PULSE_CFLAGS,"")
|
||||
+if test "x$with_pulse" != "xno";
|
||||
+then
|
||||
+ ac_save_CPPFLAGS="$CPPFLAGS"
|
||||
@ -43,8 +43,8 @@ index d23227a..76aed78 100644
|
||||
+ AC_CHECK_HEADERS(pulse/pulseaudio.h,
|
||||
+ [AC_CHECK_LIB(pulse, pa_stream_is_corked,
|
||||
+ [AC_DEFINE(HAVE_PULSEAUDIO, 1, [Define if you have pulseaudio])
|
||||
+ PULSELIBS="$ac_pulse_libs"
|
||||
+ PULSEINCL="$ac_pulse_cflags"],,$ac_pulse_libs)
|
||||
+ PULSE_LIBS="$ac_pulse_libs"
|
||||
+ PULSE_CFLAGS="$ac_pulse_cflags"],,$ac_pulse_libs)
|
||||
+ ])
|
||||
+ fi
|
||||
+ CPPFLAGS="$ac_save_CPPFLAGS"
|
||||
@ -59,13 +59,13 @@ index d23227a..76aed78 100644
|
||||
dnl **** Disable unsupported winmm drivers ****
|
||||
test -n "$ALSA_LIBS" || enable_winealsa_drv=${enable_winealsa_drv:-no}
|
||||
test -n "$COREAUDIO_LIBS" || enable_winecoreaudio_drv=${enable_winecoreaudio_drv:-no}
|
||||
+test -n "$PULSELIBS" || enable_winepulse_drv=${enable_winepulse_drv:-no}
|
||||
+test -n "$PULSE_LIBS" || enable_winepulse_drv=${enable_winepulse_drv:-no}
|
||||
test "x$ac_cv_member_oss_sysinfo_numaudioengines" = xyes || enable_wineoss_drv=${enable_wineoss_drv:-no}
|
||||
test "$ac_cv_header_linux_joystick_h" = "yes" -o "$ac_cv_header_IOKit_hid_IOHIDLib_h" = "yes" || enable_winejoystick_drv=${enable_winejoystick_drv:-no}
|
||||
|
||||
dnl **** Check for any sound system ****
|
||||
-if test "x$ALSA_LIBS$COREAUDIO_LIBS" = "x" -a \
|
||||
+if test "x$ALSA_LIBS$COREAUDIO_LIBS$PULSELIBS" = "x" -a \
|
||||
+if test "x$ALSA_LIBS$COREAUDIO_LIBS$PULSE_LIBS" = "x" -a \
|
||||
"x$ac_cv_member_oss_sysinfo_numaudioengines" != xyes -a \
|
||||
- "x$with_alsa$with_coreaudio$with_oss" != xnonono
|
||||
+ "x$with_alsa$with_coreaudio$with_oss$with_pulse" != xnononono
|
||||
@ -101,8 +101,8 @@ index 0000000..158bbc0
|
||||
@@ -0,0 +1,7 @@
|
||||
+MODULE = winepulse.drv
|
||||
+IMPORTS = dxguid uuid winmm user32 advapi32 ole32
|
||||
+EXTRALIBS = @PULSELIBS@ $(PTHREAD_LIBS)
|
||||
+EXTRAINCL = @PULSEINCL@
|
||||
+EXTRALIBS = $(PULSE_LIBS) $(PTHREAD_LIBS)
|
||||
+EXTRAINCL = $(PULSE_CFLAGS)
|
||||
+
|
||||
+C_SRCS = \
|
||||
+ mmdevdrv.c
|
||||
|
@ -26,8 +26,8 @@ index 158bbc0..3428329 100644
|
||||
MODULE = winepulse.drv
|
||||
IMPORTS = dxguid uuid winmm user32 advapi32 ole32
|
||||
+DELAYIMPORTS = winealsa.drv
|
||||
EXTRALIBS = @PULSELIBS@ $(PTHREAD_LIBS)
|
||||
EXTRAINCL = @PULSEINCL@
|
||||
EXTRALIBS = $(PULSE_LIBS) $(PTHREAD_LIBS)
|
||||
EXTRAINCL = $(PULSE_CFLAGS)
|
||||
|
||||
diff --git a/dlls/winepulse.drv/winepulse.drv.spec b/dlls/winepulse.drv/winepulse.drv.spec
|
||||
index 612bf46..288de87 100644
|
||||
|
@ -22,8 +22,8 @@ index 3428329..1112575 100644
|
||||
-IMPORTS = dxguid uuid winmm user32 advapi32 ole32
|
||||
+IMPORTS = dxguid uuid winmm user32 advapi32 ole32 version
|
||||
DELAYIMPORTS = winealsa.drv
|
||||
EXTRALIBS = @PULSELIBS@ $(PTHREAD_LIBS)
|
||||
EXTRAINCL = @PULSEINCL@
|
||||
EXTRALIBS = $(PULSE_LIBS) $(PTHREAD_LIBS)
|
||||
EXTRAINCL = $(PULSE_CFLAGS)
|
||||
diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c
|
||||
index 63b9786..356677c 100644
|
||||
--- a/dlls/winepulse.drv/mmdevdrv.c
|
||||
|
Loading…
Reference in New Issue
Block a user