Rebase against bfb845f9fccb2ff5bff0b0ba3238fec7f9f7b710.

This commit is contained in:
Sebastian Lackner 2015-11-05 17:26:02 +01:00
parent 4205b76407
commit 9afe850d99
16 changed files with 219 additions and 992 deletions

View File

@ -121,7 +121,7 @@ for more details.*
* Do not wait for hook thread startup in IDirectInput8::Initialize ([Wine Bug #21403](https://bugs.winehq.org/show_bug.cgi?id=21403))
* Enforce that surfaces are flushed after ReleaseDC ([Wine Bug #39465](https://bugs.winehq.org/show_bug.cgi?id=39465))
* Ensure NtProtectVirtualMemory and NtCreateSection are on separate pages ([Wine Bug #33162](https://bugs.winehq.org/show_bug.cgi?id=33162))
* Ensure X11 input events are handled even without explicit message loop ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854))
* ~~Ensure X11 input events are handled even without explicit message loop~~ ([Wine Bug #8854](https://bugs.winehq.org/show_bug.cgi?id=8854))
* Exception during start of fr-043 caused by missing DXTn support ([Wine Bug #37391](https://bugs.winehq.org/show_bug.cgi?id=37391))
* Export additional OpenAL32 functions ([Wine Bug #38972](https://bugs.winehq.org/show_bug.cgi?id=38972))
* Expose PKEY_AudioEndpoint_PhysicalSpeakers device property in PulseAudio driver
@ -155,7 +155,7 @@ for more details.*
* Fix implementation of msvcrt.close when stdout == stderr
* Fix issues with dragging layers between images in Adobe Photoshop 7.0 ([Wine Bug #12007](https://bugs.winehq.org/show_bug.cgi?id=12007))
* Fix missing video introduced by pixelformat changes. ([Wine Bug #36900](https://bugs.winehq.org/show_bug.cgi?id=36900))
* Fix multiple issues in widl typelib generation
* ~~Fix multiple issues in widl typelib generation~~
* Fix multithreading issues with fullscreen clipping ([Wine Bug #38087](https://bugs.winehq.org/show_bug.cgi?id=38087))
* Fix possible segfault in pulse_rd_loop of PulseAudio backend
* Fix race-condition when threads are killed during shutdown
@ -253,7 +253,7 @@ for more details.*
* Return proper status codes when NtReadFile/NtWriteFile is called on closed (but not disconnected) pipe
* SHFileOperation with FO_MOVE should create new directory on Vista+ ([Wine Bug #25207](https://bugs.winehq.org/show_bug.cgi?id=25207))
* SO_CONNECT_TIME returns the appropriate time
* Scrolling causes mouse and screen to lock in Call to Power II ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
* ~~Scrolling causes mouse and screen to lock in Call to Power II~~ ([Wine Bug #34559](https://bugs.winehq.org/show_bug.cgi?id=34559))
* Send WM_PAINT event during dialog creation ([Wine Bug #35652](https://bugs.winehq.org/show_bug.cgi?id=35652))
* Set EOF on file which has a memory mapping should fail
* Set NamedPipeState to FILE_PIPE_CLOSING_STATE on broken pipe in NtQueryInformationFile

4
debian/changelog vendored
View File

@ -13,6 +13,10 @@ wine-staging (1.7.55) UNRELEASED; urgency=low
* Removed various PulseAudio driver patches (accepted upstream).
* Removed patch to protect TVM_GETITEM from invalid item pointers (accepted
upstream).
* Removed patch to ensure that X11 input events handled even without explicit
message loop (accepted upstream).
* Removed patches to fix multiple issues in widl typelib generator (accepted
upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Sun, 01 Nov 2015 01:06:20 +0100
wine-staging (1.7.54) unstable; urgency=low

View File

@ -1,103 +0,0 @@
From 278d2cd8f466e786bed9fa4a621d627c20c83b8d Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 18 Dec 2014 01:04:34 +0100
Subject: dinput: Ensure X11 input events are handled even without explicit
message loop. (v4)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This commit basically reverts b22ff8018aca7c365e505f1db7732f7050ae259b.
Michael Müller did a full analysis of this problem, which reveals that the issue
is caused by the way user32 and winex11 works. Wine establishes separate X server
connections for each thread, so each thread needs to call
USER_Driver->pMsgWaitForMultipleObjectsEx from time to time to ensure that events
are properly forwarded to the wineserver. On Windows all this isn't necessary
because the kernel itself is responsible for generating window events, and there
is no need to pass them from the application to the kernel.
A proper fix would mean to rewrite winex11 to always handle X11 events
asynchronously, and without explicit need for a message loop. Since such a rewrite
is rather unlikely and will not happen during the near future, adding a workaround
till a better solution is found. This workaround will have no disadvantage, except
that this isn't a complete fix. Please note that not only hooks are affected by
this issue, also *RawInput* functions show the same issue - which is the reason why
native dinput will still not work (already tested).
Since games use very different code in order to query for input events, we have to
call __wine_check_for_events from multiple locations in the code. See:
* https://bugs.wine-staging.com/show_bug.cgi?id=42
* https://bugs.wine-staging.com/show_bug.cgi?id=149
---
dlls/dinput/device.c | 5 +++--
dlls/dinput/keyboard.c | 2 ++
dlls/dinput/mouse.c | 2 ++
dlls/dinput/tests/mouse.c | 2 ++
4 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/dinput/device.c b/dlls/dinput/device.c
index ab43029..501eae8 100644
--- a/dlls/dinput/device.c
+++ b/dlls/dinput/device.c
@@ -1631,8 +1631,9 @@ HRESULT WINAPI IDirectInputDevice2WImpl_Poll(LPDIRECTINPUTDEVICE8W iface)
IDirectInputDeviceImpl *This = impl_from_IDirectInputDevice8W(iface);
if (!This->acquired) return DIERR_NOTACQUIRED;
- /* Because wine devices do not need to be polled, just return DI_NOEFFECT */
- return DI_NOEFFECT;
+
+ MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0);
+ return DI_OK;
}
HRESULT WINAPI IDirectInputDevice2AImpl_Poll(LPDIRECTINPUTDEVICE8A iface)
diff --git a/dlls/dinput/keyboard.c b/dlls/dinput/keyboard.c
index f3ac30e..1e273f6 100644
--- a/dlls/dinput/keyboard.c
+++ b/dlls/dinput/keyboard.c
@@ -335,6 +335,8 @@ static HRESULT WINAPI SysKeyboardWImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W ifac
if (len != This->base.data_format.user_df->dwDataSize )
return DIERR_INVALIDPARAM;
+ MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0);
+
EnterCriticalSection(&This->base.crit);
if (TRACE_ON(dinput)) {
diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c
index 132efce..8126c1e 100644
--- a/dlls/dinput/mouse.c
+++ b/dlls/dinput/mouse.c
@@ -552,6 +552,8 @@ static HRESULT WINAPI SysMouseWImpl_GetDeviceState(LPDIRECTINPUTDEVICE8W iface,
if(This->base.acquired == 0) return DIERR_NOTACQUIRED;
+ MsgWaitForMultipleObjectsEx(0, NULL, 0, QS_ALLINPUT, 0);
+
TRACE("(this=%p,0x%08x,%p):\n", This, len, ptr);
_dump_mouse_state(&This->m_state);
diff --git a/dlls/dinput/tests/mouse.c b/dlls/dinput/tests/mouse.c
index 1a5f4bc..711abcf 100644
--- a/dlls/dinput/tests/mouse.c
+++ b/dlls/dinput/tests/mouse.c
@@ -160,6 +160,7 @@ static void test_acquire(IDirectInputA *pDI, HWND hwnd)
IDirectInputDevice_Acquire(pMouse);
cnt = 1;
hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0);
+ todo_wine
ok(hr == S_OK && cnt > 0, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt);
/* Check for buffer owerflow */
@@ -171,6 +172,7 @@ static void test_acquire(IDirectInputA *pDI, HWND hwnd)
ok(hr == DI_OK, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt);
cnt = 1;
hr = IDirectInputDevice_GetDeviceData(pMouse, sizeof(mouse_state), &mouse_state, &cnt, 0);
+ todo_wine
ok(hr == DI_OK && cnt == 1, "GetDeviceData() failed: %08x cnt:%d\n", hr, cnt);
if (pMouse) IUnknown_Release(pMouse);
--
2.6.1

View File

@ -1,3 +0,0 @@
Fixes: [8854] Ensure X11 input events are handled even without explicit message loop
Fixes: [34559] Scrolling causes mouse and screen to lock in Call to Power II
Category: stable

View File

@ -1,4 +1,4 @@
From 446c222f1cda30dd0cc4c36a2feb4256537dec7d Mon Sep 17 00:00:00 2001
From 1b7d74bd0325ceb988838324875369cdea6b26d9 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 16 Oct 2015 02:32:58 +0200
Subject: ntdll: Use wrapper functions for syscalls.
@ -14,7 +14,7 @@ Subject: ntdll: Use wrapper functions for syscalls.
dlls/ntdll/ntdll_misc.h | 17 ++++++
dlls/ntdll/om.c | 39 +++++++++-----
dlls/ntdll/process.c | 15 ++++--
dlls/ntdll/reg.c | 57 +++++++++++++-------
dlls/ntdll/reg.c | 60 ++++++++++++++-------
dlls/ntdll/resource.c | 16 ++++--
dlls/ntdll/sec.c | 9 ++--
dlls/ntdll/signal_arm.c | 3 +-
@ -26,7 +26,7 @@ Subject: ntdll: Use wrapper functions for syscalls.
dlls/ntdll/thread.c | 36 ++++++++-----
dlls/ntdll/time.c | 12 +++--
dlls/ntdll/virtual.c | 48 +++++++++++------
22 files changed, 410 insertions(+), 191 deletions(-)
22 files changed, 412 insertions(+), 192 deletions(-)
diff --git a/dlls/ntdll/atom.c b/dlls/ntdll/atom.c
index 304b7f6..222fde9 100644
@ -950,7 +950,7 @@ index ca9462a..37c08f1 100644
{
NTSTATUS status;
diff --git a/dlls/ntdll/reg.c b/dlls/ntdll/reg.c
index a104c2e..c8d8704 100644
index c0fc641..6df88c3 100644
--- a/dlls/ntdll/reg.c
+++ b/dlls/ntdll/reg.c
@@ -51,7 +51,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(reg);
@ -963,7 +963,17 @@ index a104c2e..c8d8704 100644
ULONG TitleIndex, const UNICODE_STRING *class, ULONG options,
PULONG dispos )
{
@@ -113,7 +114,8 @@ NTSTATUS WINAPI RtlpNtCreateKey( PHANDLE retkey, ACCESS_MASK access, const OBJEC
@@ -109,7 +110,8 @@ NTSTATUS WINAPI RtlpNtCreateKey( PHANDLE retkey, ACCESS_MASK access, const OBJEC
* NtOpenKeyEx [NTDLL.@]
* ZwOpenKeyEx [NTDLL.@]
*/
-NTSTATUS WINAPI NtOpenKeyEx( PHANDLE retkey, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr, ULONG options )
+DEFINE_SYSCALL_ENTRYPOINT( NtOpenKeyEx, 4 );
+NTSTATUS WINAPI SYSCALL(NtOpenKeyEx)( PHANDLE retkey, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr, ULONG options )
{
NTSTATUS ret;
DWORD len;
@@ -146,7 +148,8 @@ NTSTATUS WINAPI NtOpenKeyEx( PHANDLE retkey, ACCESS_MASK access, const OBJECT_AT
* IN ACCESS_MASK access
* IN POBJECT_ATTRIBUTES attr
*/
@ -971,9 +981,9 @@ index a104c2e..c8d8704 100644
+DEFINE_SYSCALL_ENTRYPOINT( NtOpenKey, 3 );
+NTSTATUS WINAPI SYSCALL(NtOpenKey)( PHANDLE retkey, ACCESS_MASK access, const OBJECT_ATTRIBUTES *attr )
{
NTSTATUS ret;
DWORD len;
@@ -156,7 +158,8 @@ NTSTATUS WINAPI RtlpNtOpenKey( PHANDLE retkey, ACCESS_MASK access, OBJECT_ATTRIB
return NtOpenKeyEx( retkey, access, attr, 0 );
}
@@ -167,7 +170,8 @@ NTSTATUS WINAPI RtlpNtOpenKey( PHANDLE retkey, ACCESS_MASK access, OBJECT_ATTRIB
* NtDeleteKey [NTDLL.@]
* ZwDeleteKey [NTDLL.@]
*/
@ -983,7 +993,7 @@ index a104c2e..c8d8704 100644
{
NTSTATUS ret;
@@ -185,7 +188,8 @@ NTSTATUS WINAPI RtlpNtMakeTemporaryKey( HANDLE hkey )
@@ -196,7 +200,8 @@ NTSTATUS WINAPI RtlpNtMakeTemporaryKey( HANDLE hkey )
* NtDeleteValueKey [NTDLL.@]
* ZwDeleteValueKey [NTDLL.@]
*/
@ -993,7 +1003,7 @@ index a104c2e..c8d8704 100644
{
NTSTATUS ret;
@@ -311,7 +315,8 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i
@@ -322,7 +327,8 @@ static NTSTATUS enumerate_key( HANDLE handle, int index, KEY_INFORMATION_CLASS i
* NOTES
* the name copied into the buffer is NOT 0-terminated
*/
@ -1003,7 +1013,7 @@ index a104c2e..c8d8704 100644
void *info, DWORD length, DWORD *result_len )
{
/* -1 means query key, so avoid it here */
@@ -370,7 +375,8 @@ NTSTATUS WINAPI RtlpNtEnumerateSubKey( HANDLE handle, UNICODE_STRING *out, ULONG
@@ -381,7 +387,8 @@ NTSTATUS WINAPI RtlpNtEnumerateSubKey( HANDLE handle, UNICODE_STRING *out, ULONG
* NtQueryKey [NTDLL.@]
* ZwQueryKey [NTDLL.@]
*/
@ -1013,7 +1023,7 @@ index a104c2e..c8d8704 100644
void *info, DWORD length, DWORD *result_len )
{
return enumerate_key( handle, -1, info_class, info, length, result_len );
@@ -425,7 +431,8 @@ static void copy_key_value_info( KEY_VALUE_INFORMATION_CLASS info_class, void *i
@@ -436,7 +443,8 @@ static void copy_key_value_info( KEY_VALUE_INFORMATION_CLASS info_class, void *i
* NtEnumerateValueKey [NTDLL.@]
* ZwEnumerateValueKey [NTDLL.@]
*/
@ -1023,7 +1033,7 @@ index a104c2e..c8d8704 100644
KEY_VALUE_INFORMATION_CLASS info_class,
void *info, DWORD length, DWORD *result_len )
{
@@ -473,7 +480,8 @@ NTSTATUS WINAPI NtEnumerateValueKey( HANDLE handle, ULONG index,
@@ -484,7 +492,8 @@ NTSTATUS WINAPI NtEnumerateValueKey( HANDLE handle, ULONG index,
* NOTES
* the name in the KeyValueInformation is never set
*/
@ -1033,7 +1043,7 @@ index a104c2e..c8d8704 100644
KEY_VALUE_INFORMATION_CLASS info_class,
void *info, DWORD length, DWORD *result_len )
{
@@ -575,7 +583,8 @@ NTSTATUS WINAPI RtlpNtQueryValueKey( HANDLE handle, ULONG *result_type, PBYTE de
@@ -586,7 +595,8 @@ NTSTATUS WINAPI RtlpNtQueryValueKey( HANDLE handle, ULONG *result_type, PBYTE de
* NtFlushKey [NTDLL.@]
* ZwFlushKey [NTDLL.@]
*/
@ -1043,7 +1053,7 @@ index a104c2e..c8d8704 100644
{
NTSTATUS ret;
@@ -595,7 +604,8 @@ NTSTATUS WINAPI NtFlushKey(HANDLE key)
@@ -606,7 +616,8 @@ NTSTATUS WINAPI NtFlushKey(HANDLE key)
* NtLoadKey [NTDLL.@]
* ZwLoadKey [NTDLL.@]
*/
@ -1053,7 +1063,7 @@ index a104c2e..c8d8704 100644
{
NTSTATUS ret;
HANDLE hive;
@@ -625,7 +635,8 @@ NTSTATUS WINAPI NtLoadKey( const OBJECT_ATTRIBUTES *attr, OBJECT_ATTRIBUTES *fil
@@ -636,7 +647,8 @@ NTSTATUS WINAPI NtLoadKey( const OBJECT_ATTRIBUTES *attr, OBJECT_ATTRIBUTES *fil
* NtNotifyChangeKey [NTDLL.@]
* ZwNotifyChangeKey [NTDLL.@]
*/
@ -1063,7 +1073,7 @@ index a104c2e..c8d8704 100644
IN HANDLE KeyHandle,
IN HANDLE Event,
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
@@ -680,7 +691,8 @@ NTSTATUS WINAPI NtNotifyChangeKey(
@@ -691,7 +703,8 @@ NTSTATUS WINAPI NtNotifyChangeKey(
* ZwQueryMultipleValueKey
*/
@ -1073,7 +1083,7 @@ index a104c2e..c8d8704 100644
HANDLE KeyHandle,
PKEY_MULTIPLE_VALUE_INFORMATION ListOfValuesToQuery,
ULONG NumberOfItems,
@@ -698,7 +710,8 @@ NTSTATUS WINAPI NtQueryMultipleValueKey(
@@ -709,7 +722,8 @@ NTSTATUS WINAPI NtQueryMultipleValueKey(
* NtReplaceKey [NTDLL.@]
* ZwReplaceKey [NTDLL.@]
*/
@ -1083,7 +1093,7 @@ index a104c2e..c8d8704 100644
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN HANDLE Key,
IN POBJECT_ATTRIBUTES ReplacedObjectAttributes)
@@ -711,7 +724,8 @@ NTSTATUS WINAPI NtReplaceKey(
@@ -722,7 +736,8 @@ NTSTATUS WINAPI NtReplaceKey(
* NtRestoreKey [NTDLL.@]
* ZwRestoreKey [NTDLL.@]
*/
@ -1093,7 +1103,7 @@ index a104c2e..c8d8704 100644
HANDLE KeyHandle,
HANDLE FileHandle,
ULONG RestoreFlags)
@@ -724,7 +738,8 @@ NTSTATUS WINAPI NtRestoreKey(
@@ -735,7 +750,8 @@ NTSTATUS WINAPI NtRestoreKey(
* NtSaveKey [NTDLL.@]
* ZwSaveKey [NTDLL.@]
*/
@ -1103,7 +1113,7 @@ index a104c2e..c8d8704 100644
{
NTSTATUS ret;
@@ -744,7 +759,8 @@ NTSTATUS WINAPI NtSaveKey(IN HANDLE KeyHandle, IN HANDLE FileHandle)
@@ -755,7 +771,8 @@ NTSTATUS WINAPI NtSaveKey(IN HANDLE KeyHandle, IN HANDLE FileHandle)
* NtSetInformationKey [NTDLL.@]
* ZwSetInformationKey [NTDLL.@]
*/
@ -1113,7 +1123,7 @@ index a104c2e..c8d8704 100644
IN HANDLE KeyHandle,
IN const int KeyInformationClass,
IN PVOID KeyInformation,
@@ -764,7 +780,8 @@ NTSTATUS WINAPI NtSetInformationKey(
@@ -775,7 +792,8 @@ NTSTATUS WINAPI NtSetInformationKey(
* win95 does not care about count for REG_SZ and finds out the len by itself (js)
* NT does definitely care (aj)
*/
@ -1123,7 +1133,7 @@ index a104c2e..c8d8704 100644
ULONG type, const void *data, ULONG count )
{
NTSTATUS ret;
@@ -803,7 +820,8 @@ NTSTATUS WINAPI RtlpNtSetValueKey( HANDLE hkey, ULONG type, const void *data,
@@ -814,7 +832,8 @@ NTSTATUS WINAPI RtlpNtSetValueKey( HANDLE hkey, ULONG type, const void *data,
* NtUnloadKey [NTDLL.@]
* ZwUnloadKey [NTDLL.@]
*/
@ -1133,7 +1143,7 @@ index a104c2e..c8d8704 100644
{
NTSTATUS ret;
@@ -1410,7 +1428,8 @@ NTSTATUS WINAPI RtlWriteRegistryValue( ULONG RelativeTo, PCWSTR path, PCWSTR nam
@@ -1421,7 +1440,8 @@ NTSTATUS WINAPI RtlWriteRegistryValue( ULONG RelativeTo, PCWSTR path, PCWSTR nam
* unless there is some app which explicitly depends on that, there is
* no good reason to reproduce that.
*/
@ -2091,5 +2101,5 @@ index 4d4bc3b..f30d94a 100644
struct file_view *view1, *view2;
struct stat st1, st2;
--
2.6.1
2.6.2

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "60fedd23f95c66f4dce06c5c447de9ec99ebefa5"
echo "bfb845f9fccb2ff5bff0b0ba3238fec7f9f7b710"
}
# Show version information
@ -125,7 +125,6 @@ patch_enable_all ()
enable_ddraw_Write_Vtable="$1"
enable_ddraw_ZBufferBitDepths="$1"
enable_ddraw_d3d_execute_buffer="$1"
enable_dinput_Events="$1"
enable_dinput_Initialize="$1"
enable_dsound_EAX="$1"
enable_dsound_Fast_Mixer="$1"
@ -284,7 +283,6 @@ patch_enable_all ()
enable_uxtheme_GTK_Theming="$1"
enable_version_VerQueryValue="$1"
enable_wbemdisp_ISWbemSecurity="$1"
enable_widl_Typelib_Generator="$1"
enable_wine_inf_Performance="$1"
enable_wine_inf_ProfileList_UserSID="$1"
enable_wineboot_DriveSerial="$1"
@ -474,9 +472,6 @@ patch_enable ()
ddraw-d3d_execute_buffer)
enable_ddraw_d3d_execute_buffer="$2"
;;
dinput-Events)
enable_dinput_Events="$2"
;;
dinput-Initialize)
enable_dinput_Initialize="$2"
;;
@ -951,9 +946,6 @@ patch_enable ()
wbemdisp-ISWbemSecurity)
enable_wbemdisp_ISWbemSecurity="$2"
;;
widl-Typelib_Generator)
enable_widl_Typelib_Generator="$2"
;;
wine.inf-Performance)
enable_wine_inf_Performance="$2"
;;
@ -1493,9 +1485,6 @@ if test "$enable_category_stable" -eq 1; then
if test "$enable_ddraw_EnumSurfaces" -gt 1; then
abort "Patchset ddraw-EnumSurfaces disabled, but category-stable depends on that."
fi
if test "$enable_dinput_Events" -gt 1; then
abort "Patchset dinput-Events disabled, but category-stable depends on that."
fi
if test "$enable_dxgi_GetDesc" -gt 1; then
abort "Patchset dxgi-GetDesc disabled, but category-stable depends on that."
fi
@ -1674,7 +1663,6 @@ if test "$enable_category_stable" -eq 1; then
enable_d3dx9_36_UpdateSkinnedMesh=1
enable_dbghelp_Debug_Symbols=1
enable_ddraw_EnumSurfaces=1
enable_dinput_Events=1
enable_dxgi_GetDesc=1
enable_fonts_Missing_Fonts=1
enable_gdi32_MaxPixelFormats=1
@ -2823,22 +2811,6 @@ if test "$enable_ddraw_d3d_execute_buffer" -eq 1; then
) >> "$patchlist"
fi
# Patchset dinput-Events
# |
# | This patchset fixes the following Wine bugs:
# | * [#8854] Ensure X11 input events are handled even without explicit message loop
# | * [#34559] Scrolling causes mouse and screen to lock in Call to Power II
# |
# | Modified files:
# | * dlls/dinput/device.c, dlls/dinput/keyboard.c, dlls/dinput/mouse.c, dlls/dinput/tests/mouse.c
# |
if test "$enable_dinput_Events" -eq 1; then
patch_apply dinput-Events/0001-dinput-Ensure-X11-input-events-are-handled-even-with.patch
(
echo '+ { "Sebastian Lackner", "dinput: Ensure X11 input events are handled even without explicit message loop.", 4 },';
) >> "$patchlist"
fi
# Patchset dinput-Initialize
# |
# | This patchset fixes the following Wine bugs:
@ -5512,27 +5484,6 @@ if test "$enable_wbemdisp_ISWbemSecurity" -eq 1; then
) >> "$patchlist"
fi
# Patchset widl-Typelib_Generator
# |
# | Modified files:
# | * dlls/oleaut32/tests/test_tlb.idl, dlls/oleaut32/tests/typelib.c, tools/widl/parser.y, tools/widl/typetree.c,
# | tools/widl/write_msft.c
# |
if test "$enable_widl_Typelib_Generator" -eq 1; then
patch_apply widl-Typelib_Generator/0001-widl-Ignore-assignment-of-a-duplicate-uuid.-Resend.patch
patch_apply widl-Typelib_Generator/0002-widl-Attribute-uuid-takes-precedence-over-hidden-.-R.patch
patch_apply widl-Typelib_Generator/0003-widl-Attributes-of-the-alias-are-supposed-to-replace.patch
patch_apply widl-Typelib_Generator/0004-widl-Avoid-generating-duplicate-typelib-entries-for-.patch
patch_apply widl-Typelib_Generator/0005-oleaut32-tests-Add-a-bunch-of-new-tests-for-typelib-.patch
(
echo '+ { "Dmitry Timoshkov", "widl: Ignore assignment of a duplicate uuid. Resend.", 1 },';
echo '+ { "Dmitry Timoshkov", "widl: Attribute uuid() takes precedence over '\''hidden'\''. Resend.", 1 },';
echo '+ { "Dmitry Timoshkov", "widl: Attributes of the alias are supposed to replace attributes of a tag in the typelib. Resend.", 1 },';
echo '+ { "Dmitry Timoshkov", "widl: Avoid generating duplicate typelib entries for structure tag names. Resend.", 1 },';
echo '+ { "Dmitry Timoshkov", "oleaut32/tests: Add a bunch of new tests for typelib generation.", 1 },';
) >> "$patchlist"
fi
# Patchset wine.inf-Performance
# |
# | This patchset fixes the following Wine bugs:
@ -5650,7 +5601,8 @@ fi
# | * makedep-PARENTSPEC, ntdll-DllOverrides_WOW64, ntdll-Loader_Machine_Type, ntdll-DllRedirects, wined3d-DXTn
# |
# | Modified files:
# | * configure.ac, dlls/d3d11/device.c, dlls/wined3d-csmt/Makefile.in, dlls/wined3d-csmt/version.rc, dlls/wined3d/resource.c,
# | * configure.ac, dlls/d3d11/device.c, dlls/d3d11/texture.c, dlls/d3d8/surface.c, dlls/d3d8/volume.c, dlls/d3d9/surface.c,
# | dlls/d3d9/volume.c, dlls/wined3d-csmt/Makefile.in, dlls/wined3d-csmt/version.rc, dlls/wined3d/resource.c,
# | dlls/wined3d/wined3d.spec, include/wine/wined3d.h
# |
if test "$enable_wined3d_CSMT_Helper" -eq 1; then
@ -6503,11 +6455,11 @@ fi
# | * dlls/ws2_32/socket.c, dlls/ws2_32/tests/sock.c, dlls/ws2_32/ws2_32.spec, include/winsock2.h
# |
if test "$enable_ws2_32_WSAPoll" -eq 1; then
patch_apply ws2_32-WSAPoll/0001-include-Add-stuff-related-to-WSAPoll-try-2.patch
patch_apply ws2_32-WSAPoll/0001-include-Remove-check-for-__WINE_WNE_PORT_H-in-winsoc.patch
patch_apply ws2_32-WSAPoll/0002-ws2_32-tests-Add-WSAPoll-tests.patch
patch_apply ws2_32-WSAPoll/0003-ws2_32-Add-WSAPoll-implementation.patch
(
echo '+ { "Bruno Jesus", "include: Add stuff related to WSAPoll().", 2 },';
echo '+ { "Sebastian Lackner", "include: Remove check for __WINE_WNE_PORT_H in winsock2.h.", 1 },';
echo '+ { "Bruno Jesus", "ws2_32/tests: Add WSAPoll() tests.", 1 },';
echo '+ { "Bruno Jesus", "ws2_32: Add WSAPoll() implementation.", 1 },';
) >> "$patchlist"

View File

@ -1,58 +0,0 @@
From d2819273e30e3f5c89cd2f704ddb4593e3cbb540 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 31 Oct 2015 14:31:38 +0800
Subject: widl: Ignore assignment of a duplicate uuid. Resend.
MSDN KB285146 article describes this behaviour, and the tests in the last
patch confirm that.
Technically this means that in the construct like
typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396d)]
enum _d { d1, d2 } d;
only 'd' gets assigned the specified uuid, '_d' will get uuid offset set
to -1 (undefined) which leads to '_d' having NULL_GUID. This matches widl
behaviour, in this case widl emits a warning (mentioned in the KB article).
I decided to leave emitting a warning about a duplicate uuid for enums same
way as for structures and unions, this may help recognizing real bugs instead
of hiding them (although apparently midl doesn't generate a warning for enums
while still ignoring the uuid assignment).
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
tools/widl/write_msft.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c
index 98081f2..0992cf3 100644
--- a/tools/widl/write_msft.c
+++ b/tools/widl/write_msft.c
@@ -494,10 +494,22 @@ static int ctl2_alloc_guid(
MSFT_GuidEntry *guid_space;
int hash_key;
+ chat("adding uuid {%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
+ guid->guid.Data1, guid->guid.Data2, guid->guid.Data3,
+ guid->guid.Data4[0], guid->guid.Data4[1], guid->guid.Data4[2], guid->guid.Data4[3],
+ guid->guid.Data4[4], guid->guid.Data4[5], guid->guid.Data4[6], guid->guid.Data4[7]);
+
hash_key = ctl2_hash_guid(&guid->guid);
offset = ctl2_find_guid(typelib, hash_key, &guid->guid);
- if (offset != -1) return offset;
+ if (offset != -1)
+ {
+ warning("duplicate uuid {%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}\n",
+ guid->guid.Data1, guid->guid.Data2, guid->guid.Data3,
+ guid->guid.Data4[0], guid->guid.Data4[1], guid->guid.Data4[2], guid->guid.Data4[3],
+ guid->guid.Data4[4], guid->guid.Data4[5], guid->guid.Data4[6], guid->guid.Data4[7]);
+ return -1;
+ }
offset = ctl2_alloc_segment(typelib, MSFT_SEG_GUID, sizeof(MSFT_GuidEntry), 0);
--
2.6.1

View File

@ -1,61 +0,0 @@
From a9e4b8375ccef3198df93f9021a7262bb5578033 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 31 Oct 2015 14:31:42 +0800
Subject: widl: Attribute uuid() takes precedence over 'hidden'. Resend.
This means that definition like
[uuid(016fe2ec-b2c8-45f8-b23b-39e53a753900),hidden]
typedef struct _m { int m1; } m;
makes both '_m' and 'm' appear in the typelib, and the tests confirm that.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
tools/widl/parser.y | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index b42b4a2..db5897e 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -123,7 +123,6 @@ static statement_t *make_statement_importlib(const char *str);
static statement_t *make_statement_module(type_t *type);
static statement_t *make_statement_typedef(var_list_t *names);
static statement_t *make_statement_import(const char *str);
-static statement_t *make_statement_typedef(var_list_t *names);
static statement_list_t *append_statement(statement_list_t *list, statement_t *stmt);
static statement_list_t *append_statements(statement_list_t *, statement_list_t *);
static attr_list_t *append_attribs(attr_list_t *, attr_list_t *);
@@ -1881,22 +1880,20 @@ static type_t *reg_typedefs(decl_spec_t *decl_spec, declarator_list_t *decls, at
const declarator_t *decl;
type_t *type = decl_spec->type;
+ if (is_attr(attrs, ATTR_UUID) && !is_attr(attrs, ATTR_PUBLIC))
+ attrs = append_attr( attrs, make_attr(ATTR_PUBLIC) );
+
/* We must generate names for tagless enum, struct or union.
Typedef-ing a tagless enum, struct or union means we want the typedef
to be included in a library hence the public attribute. */
if ((type_get_type_detect_alias(type) == TYPE_ENUM ||
type_get_type_detect_alias(type) == TYPE_STRUCT ||
type_get_type_detect_alias(type) == TYPE_UNION ||
- type_get_type_detect_alias(type) == TYPE_ENCAPSULATED_UNION) &&
- !type->name)
+ type_get_type_detect_alias(type) == TYPE_ENCAPSULATED_UNION))
{
- if (! is_attr(attrs, ATTR_PUBLIC) && ! is_attr (attrs, ATTR_HIDDEN))
- attrs = append_attr( attrs, make_attr(ATTR_PUBLIC) );
- type->name = gen_name();
+ if (!type->name)
+ type->name = gen_name();
}
- else if (is_attr(attrs, ATTR_UUID) && !is_attr(attrs, ATTR_PUBLIC)
- && !is_attr(attrs, ATTR_HIDDEN))
- attrs = append_attr( attrs, make_attr(ATTR_PUBLIC) );
LIST_FOR_EACH_ENTRY( decl, decls, const declarator_t, entry )
{
--
2.6.1

View File

@ -1,68 +0,0 @@
From 6efefd95152a5dd8f05c95558c783e42562d4bf1 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 31 Oct 2015 14:31:47 +0800
Subject: widl: Attributes of the alias are supposed to replace attributes of a
tag in the typelib. Resend.
I have limited this functionality only to typedefs for structures, unions
and enums since I have the tests only for this types.
I've added the tests for version() and helpcontext() attributes suggested
by Huw to the last patch with tests to make this change more convincing.
In practice this means that the difinitions in an .idl like
[uuid(016fe2ec-b2c8-45f8-b23b-39e53a753901),restricted]
struct _n { int n1; };
[uuid(016fe2ec-b2c8-45f8-b23b-39e53a753902),hidden]
typedef struct _n n;
[uuid(016fe2ec-b2c8-45f8-b23b-39e53a753903)]
typedef struct _n nn;
lead to the following typelib records:
{
"_n",
"{016fe2ec-b2c8-45f8-b23b-39e53a753903}",
/*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(struct _n),
/*#vtbl*/ 0, /*#func*/ 0
},
{
"n",
"{016fe2ec-b2c8-45f8-b23b-39e53a753902}",
/*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
/*#vtbl*/ 0, /*#func*/ 0
},
{
"nn",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
/*#vtbl*/ 0, /*#func*/ 0
}
and the tests confirm that. But this change is very specific to typelibs
and breaks header generation, thus it's limited only to the typelib mode.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
tools/widl/parser.y | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index db5897e..4309833 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -1893,6 +1893,10 @@ static type_t *reg_typedefs(decl_spec_t *decl_spec, declarator_list_t *decls, at
{
if (!type->name)
type->name = gen_name();
+
+ /* replace existing attributes when generating a typelib */
+ if (do_typelib)
+ type->attrs = attrs;
}
LIST_FOR_EACH_ENTRY( decl, decls, const declarator_t, entry )
--
2.6.1

View File

@ -1,38 +0,0 @@
From a0a2310c05b8205b67a9e4aeaa6bb98d68746b52 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 31 Oct 2015 14:31:51 +0800
Subject: widl: Avoid generating duplicate typelib entries for structure tag
names. Resend.
I've added the tests to show how it's supposed to behave. Without this
patch a generated typelib has numerous duplicate '_n' entries.
This is merely an optimization for the typelib generator, but this change
breaks header generation, thus it's limited only to the typelib mode.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
tools/widl/typetree.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tools/widl/typetree.c b/tools/widl/typetree.c
index 5925d40..e316614 100644
--- a/tools/widl/typetree.c
+++ b/tools/widl/typetree.c
@@ -300,7 +300,12 @@ type_t *type_new_enum(const char *name, struct namespace *namespace, int defined
type_t *type_new_struct(char *name, struct namespace *namespace, int defined, var_list_t *fields)
{
type_t *tag_type = name ? find_type(name, namespace, tsSTRUCT) : NULL;
- type_t *t = make_type(TYPE_STRUCT);
+ type_t *t;
+
+ /* avoid creating duplicate typelib type entries */
+ if (tag_type && do_typelib) return tag_type;
+
+ t = make_type(TYPE_STRUCT);
t->name = name;
t->namespace = namespace;
--
2.6.1

View File

@ -1,491 +0,0 @@
From e8c77ae1630f628cf2d43049399ca99b24514548 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sat, 31 Oct 2015 14:31:55 +0800
Subject: oleaut32/tests: Add a bunch of new tests for typelib generation.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/oleaut32/tests/test_tlb.idl | 50 +++++++++
dlls/oleaut32/tests/typelib.c | 237 +++++++++++++++++++++++++++++++++++----
2 files changed, 265 insertions(+), 22 deletions(-)
diff --git a/dlls/oleaut32/tests/test_tlb.idl b/dlls/oleaut32/tests/test_tlb.idl
index 8275c37..7ae5565 100644
--- a/dlls/oleaut32/tests/test_tlb.idl
+++ b/dlls/oleaut32/tests/test_tlb.idl
@@ -2,6 +2,7 @@
* ITypeLib test IDL - we dump it and compare results in typelib.c
*
* Copyright 2007 Google (Mikolaj Zalewski)
+ * Copyright 2015 Dmitry Timoshkov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,6 +29,34 @@ library Test
{
importlib("stdole2.tlb");
+ interface child_iface;
+ interface parent_iface;
+
+ [uuid(b14b6bb5-904e-4ff9-b247-bd361f7aa001)]
+ interface parent_iface : IUnknown
+ {
+ HRESULT test1([out,retval] child_iface **);
+ }
+ [uuid(b14b6bb5-904e-4ff9-b247-bd361f7aa002)]
+ interface child_iface: parent_iface
+ {
+ HRESULT test2(void);
+ }
+
+ [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753901),restricted]
+ struct _n { int n1; };
+ [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753902),hidden]
+ typedef struct _n n;
+ [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753903),version(1.2),helpcontext(3)]
+ typedef struct _n nn;
+
+ [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753904),restricted]
+ struct _m { int m1; };
+ [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753905),hidden,version(1.2)]
+ typedef struct _m m;
+ [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753906),helpcontext(3)]
+ typedef struct _m mm;
+
[dual,uuid(b14b6bb5-904e-4ff9-b247-bd361f7aaedd)]
interface IDualIface : IDispatch
{
@@ -59,6 +88,9 @@ library Test
BSTR bstr;
};
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396a),restricted]
+ int t_INT;
+
typedef [public] enum _a { a1, a2 } a;
typedef [public] enum aa { aa1, aa2 } aa;
typedef enum _b { b1, b2 } b;
@@ -66,11 +98,29 @@ library Test
typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396b)] enum _c { c1, c2 } c;
typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396c)] enum cc { cc1, cc2 } cc;
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396d),restricted,hidden]
+ enum _d { d1, d2 } d;
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a75396e),restricted,hidden]
+ enum dd { dd1, dd2 } dd;
+
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753970),restricted,hidden]
+ struct _e { int e1; } e;
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753971),restricted,hidden]
+ struct ee { int ee1; } ee;
+
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753972),restricted,hidden]
+ union _f { int f1; BSTR *f2; } f;
+ typedef [uuid(016fe2ec-b2c8-45f8-b23b-39e53a753973),restricted,hidden]
+ union ff { int ff1; BSTR *ff2; } ff;
+
[uuid(ec5dfcd6-eeb0-4cd6-b51e-8030e1dac00a)]
interface ITestIface : IDispatch
{
HRESULT test1(a value);
HRESULT test2(b value);
HRESULT test3(c value);
+ HRESULT test4(d value);
+ HRESULT test5(e value);
+ HRESULT test6(f value);
}
}
diff --git a/dlls/oleaut32/tests/typelib.c b/dlls/oleaut32/tests/typelib.c
index 1d13b89..977d7a8 100644
--- a/dlls/oleaut32/tests/typelib.c
+++ b/dlls/oleaut32/tests/typelib.c
@@ -2,7 +2,7 @@
* ITypeLib and ITypeInfo test
*
* Copyright 2004 Jacek Caban
- * Copyright 2006 Dmitry Timoshkov
+ * Copyright 2006,2015 Dmitry Timoshkov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -3862,6 +3862,10 @@ static char *print_size(BSTR name, TYPEATTR *attr)
sprintf(buf, "sizeof(struct %s)", dump_string(name));
break;
+ case TKIND_UNION:
+ sprintf(buf, "sizeof(union %s)", dump_string(name));
+ break;
+
case TKIND_ENUM:
case TKIND_ALIAS:
sprintf(buf, "4");
@@ -3971,9 +3975,10 @@ static void test_dump_typelib(const char *name)
{
TYPEATTR *attr;
BSTR name;
+ DWORD help_ctx;
int f = 0;
- OLE_CHECK(ITypeLib_GetDocumentation(lib, i, &name, NULL, NULL, NULL));
+ OLE_CHECK(ITypeLib_GetDocumentation(lib, i, &name, NULL, &help_ctx, NULL));
printf("{\n"
" \"%s\",\n", dump_string(name));
@@ -3983,10 +3988,11 @@ static void test_dump_typelib(const char *name)
printf(" \"%s\",\n", wine_dbgstr_guid(&attr->guid));
printf(" /*kind*/ %s, /*flags*/ %s, /*align*/ %d, /*size*/ %s,\n"
- " /*#vtbl*/ %d, /*#func*/ %d",
+ " /*helpctx*/ 0x%04x, /*version*/ 0x%08x, /*#vtbl*/ %d, /*#func*/ %d",
map_value(attr->typekind, tkind_map), dump_type_flags(attr->wTypeFlags),
- attr->cbAlignment, print_size(name, attr), attr->cbSizeVft/sizeof(void*),
- attr->cFuncs);
+ attr->cbAlignment, print_size(name, attr),
+ help_ctx, MAKELONG(attr->wMinorVerNum, attr->wMajorVerNum),
+ attr->cbSizeVft/sizeof(void*), attr->cFuncs);
if (attr->cFuncs) printf(",\n {\n");
else printf("\n");
@@ -4072,6 +4078,8 @@ typedef struct _type_info
WORD wTypeFlags;
USHORT cbAlignment;
USHORT cbSizeInstance;
+ USHORT help_ctx;
+ DWORD version;
USHORT cbSizeVft;
USHORT cFuncs;
function_info funcs[20];
@@ -4080,10 +4088,88 @@ typedef struct _type_info
static const type_info info[] = {
/*** Autogenerated data. Do not edit, change the generator above instead. ***/
{
+ "parent_iface",
+ "{b14b6bb5-904e-4ff9-b247-bd361f7aa001}",
+ /*kind*/ TKIND_INTERFACE, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(parent_iface*),
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 4, /*#func*/ 1,
+ {
+ {
+ /*id*/ 0x60010000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
+ /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 3, /*#scodes*/ 0, /*flags*/ 0,
+ {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */
+ { /* params */
+ {VT_PTR, -1, PARAMFLAG_FOUT|PARAMFLAG_FRETVAL},
+ {-1, 0, 0}
+ },
+ { /* names */
+ "test1",
+ "__MIDL__parent_iface0000",
+ NULL,
+ },
+ },
+ }
+},
+{
+ "child_iface",
+ "{b14b6bb5-904e-4ff9-b247-bd361f7aa002}",
+ /*kind*/ TKIND_INTERFACE, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(child_iface*),
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 5, /*#func*/ 1,
+ {
+ {
+ /*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
+ /*#param*/ 0, /*#opt*/ 0, /*vtbl*/ 4, /*#scodes*/ 0, /*flags*/ 0,
+ {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */
+ { /* params */
+ {-1, 0, 0}
+ },
+ { /* names */
+ "test2",
+ NULL,
+ },
+ },
+ }
+},
+{
+ "_n",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753903}",
+ /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(struct _n),
+ /*helpctx*/ 0x0003, /*version*/ 0x00010002, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "n",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753902}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "nn",
+ "{00000000-0000-0000-0000-000000000000}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0003, /*version*/ 0x00010002, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "_m",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753906}",
+ /*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(struct _m),
+ /*helpctx*/ 0x0003, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "m",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753905}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00010002, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "mm",
+ "{00000000-0000-0000-0000-000000000000}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0003, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
"IDualIface",
"{b14b6bb5-904e-4ff9-b247-bd361f7aaedd}",
/*kind*/ TKIND_DISPATCH, /*flags*/ TYPEFLAG_FDISPATCHABLE|TYPEFLAG_FDUAL, /*align*/ 4, /*size*/ sizeof(IDualIface*),
- /*#vtbl*/ 7, /*#func*/ 8,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 7, /*#func*/ 8,
{
{
/*id*/ 0x60000000, /*func*/ FUNC_DISPATCH, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
@@ -4225,7 +4311,7 @@ static const type_info info[] = {
"ISimpleIface",
"{ec5dfcd6-eeb0-4cd6-b51e-8030e1dac009}",
/*kind*/ TKIND_INTERFACE, /*flags*/ TYPEFLAG_FDISPATCHABLE, /*align*/ 4, /*size*/ sizeof(ISimpleIface*),
- /*#vtbl*/ 8, /*#func*/ 1,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 8, /*#func*/ 1,
{
{
/*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
@@ -4245,67 +4331,127 @@ static const type_info info[] = {
"test_struct",
"{4029f190-ca4a-4611-aeb9-673983cb96dd}",
/*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(struct test_struct),
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"test_struct2",
"{4029f190-ca4a-4611-aeb9-673983cb96de}",
/*kind*/ TKIND_RECORD, /*flags*/ 0, /*align*/ 4, /*size*/ sizeof(struct test_struct2),
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "t_INT",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a75396a}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"a",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"_a",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"aa",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"_b",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"bb",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"c",
"{016fe2ec-b2c8-45f8-b23b-39e53a75396b}",
/*kind*/ TKIND_ALIAS, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"_c",
"{00000000-0000-0000-0000-000000000000}",
/*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"cc",
- "{00000000-0000-0000-0000-000000000000}",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a75396c}",
/*kind*/ TKIND_ENUM, /*flags*/ 0, /*align*/ 4, /*size*/ 4,
- /*#vtbl*/ 0, /*#func*/ 0
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "d",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a75396d}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "_d",
+ "{00000000-0000-0000-0000-000000000000}",
+ /*kind*/ TKIND_ENUM, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "dd",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a75396e}",
+ /*kind*/ TKIND_ENUM, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "e",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753970}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "_e",
+ "{00000000-0000-0000-0000-000000000000}",
+ /*kind*/ TKIND_RECORD, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ sizeof(struct _e),
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "ee",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753971}",
+ /*kind*/ TKIND_RECORD, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ sizeof(struct ee),
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "f",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753972}",
+ /*kind*/ TKIND_ALIAS, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ 4,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "_f",
+ "{00000000-0000-0000-0000-000000000000}",
+ /*kind*/ TKIND_UNION, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ sizeof(union _f),
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
+},
+{
+ "ff",
+ "{016fe2ec-b2c8-45f8-b23b-39e53a753973}",
+ /*kind*/ TKIND_UNION, /*flags*/ TYPEFLAG_FRESTRICTED|TYPEFLAG_FHIDDEN, /*align*/ 4, /*size*/ sizeof(union ff),
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 0, /*#func*/ 0
},
{
"ITestIface",
"{ec5dfcd6-eeb0-4cd6-b51e-8030e1dac00a}",
/*kind*/ TKIND_INTERFACE, /*flags*/ TYPEFLAG_FDISPATCHABLE, /*align*/ 4, /*size*/ sizeof(ITestIface*),
- /*#vtbl*/ 10, /*#func*/ 3,
+ /*helpctx*/ 0x0000, /*version*/ 0x00000000, /*#vtbl*/ 13, /*#func*/ 6,
{
{
/*id*/ 0x60020000, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
@@ -4349,6 +4495,48 @@ static const type_info info[] = {
NULL,
},
},
+ {
+ /*id*/ 0x60020003, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
+ /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 10, /*#scodes*/ 0, /*flags*/ 0,
+ {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */
+ { /* params */
+ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE},
+ {-1, 0, 0}
+ },
+ { /* names */
+ "test4",
+ "value",
+ NULL,
+ },
+ },
+ {
+ /*id*/ 0x60020004, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
+ /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 11, /*#scodes*/ 0, /*flags*/ 0,
+ {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */
+ { /* params */
+ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE},
+ {-1, 0, 0}
+ },
+ { /* names */
+ "test5",
+ "value",
+ NULL,
+ },
+ },
+ {
+ /*id*/ 0x60020005, /*func*/ FUNC_PUREVIRTUAL, /*inv*/ INVOKE_FUNC, /*call*/ CC_STDCALL,
+ /*#param*/ 1, /*#opt*/ 0, /*vtbl*/ 12, /*#scodes*/ 0, /*flags*/ 0,
+ {VT_HRESULT, -1, PARAMFLAG_NONE}, /* ret */
+ { /* params */
+ {VT_USERDEFINED, TKIND_ALIAS, PARAMFLAG_NONE},
+ {-1, 0, 0}
+ },
+ { /* names */
+ "test6",
+ "value",
+ NULL,
+ },
+ },
}
}
};
@@ -4374,10 +4562,11 @@ static void test_dump_typelib(const char *name)
ITypeInfo *typeinfo;
TYPEATTR *typeattr;
BSTR bstrIfName;
+ DWORD help_ctx;
trace("Interface %s\n", ti->name);
ole_check(ITypeLib_GetTypeInfo(typelib, iface, &typeinfo));
- ole_check(ITypeLib_GetDocumentation(typelib, iface, &bstrIfName, NULL, NULL, NULL));
+ ole_check(ITypeLib_GetDocumentation(typelib, iface, &bstrIfName, NULL, &help_ctx, NULL));
expect_wstr_acpval(bstrIfName, ti->name);
SysFreeString(bstrIfName);
@@ -4385,7 +4574,7 @@ static void test_dump_typelib(const char *name)
expect_int(typeattr->typekind, ti->type);
expect_hex(typeattr->wTypeFlags, ti->wTypeFlags);
/* FIXME: remove once widl is fixed */
- if (typeattr->typekind == TKIND_ALIAS)
+ if (typeattr->typekind == TKIND_ALIAS && typeattr->cbAlignment != ti->cbAlignment)
{
todo_wine /* widl generates broken typelib and typeattr just reflects that */
ok(typeattr->cbAlignment == ti->cbAlignment || broken(typeattr->cbAlignment == 1),
@@ -4399,6 +4588,8 @@ todo_wine /* widl generates broken typelib and typeattr just reflects that */
expect_int(typeattr->cbAlignment, ti->cbAlignment);
expect_int(typeattr->cbSizeInstance, ti->cbSizeInstance);
}
+ expect_int(help_ctx, ti->help_ctx);
+ expect_int(MAKELONG(typeattr->wMinorVerNum, typeattr->wMajorVerNum), ti->version);
expect_int(typeattr->cbSizeVft, ti->cbSizeVft * sizeof(void*));
expect_int(typeattr->cFuncs, ti->cFuncs);
@@ -4445,7 +4636,9 @@ todo_wine /* widl generates broken typelib and typeattr just reflects that */
ole_check(ITypeInfo_GetNames(typeinfo, desc->memid, namesTab, 256, &cNames));
for (i = 0; i < cNames; i++)
{
- expect_wstr_acpval(namesTab[i], fn_info->names[i]);
+ /* automatically generated names differ between midl and widl */
+ if (strncmp(fn_info->names[i], "__MIDL__", 8) != 0)
+ expect_wstr_acpval(namesTab[i], fn_info->names[i]);
SysFreeString(namesTab[i]);
}
expect_null(fn_info->names[cNames]);
--
2.6.1

View File

@ -1 +0,0 @@
Fixes: Fix multiple issues in widl typelib generation

View File

@ -1,4 +1,4 @@
From d28eecc1251b483848ae2bf539ca5398c8575946 Mon Sep 17 00:00:00 2001
From 8eaad5ab61fe01c56e9d2622b11fd9f1e058273e Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Wed, 4 Nov 2015 19:31:30 +0100
Subject: wined3d: Rename wined3d_resource_(un)map to
@ -7,13 +7,18 @@ Subject: wined3d: Rename wined3d_resource_(un)map to
To avoid name conflicts in the CSMT patchset.
---
dlls/d3d11/device.c | 4 ++--
dlls/d3d11/texture.c | 8 ++++----
dlls/d3d8/surface.c | 4 ++--
dlls/d3d8/volume.c | 4 ++--
dlls/d3d9/surface.c | 4 ++--
dlls/d3d9/volume.c | 4 ++--
dlls/wined3d/resource.c | 4 ++--
dlls/wined3d/wined3d.spec | 4 ++--
include/wine/wined3d.h | 6 +++---
4 files changed, 9 insertions(+), 9 deletions(-)
9 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/dlls/d3d11/device.c b/dlls/d3d11/device.c
index ca8b0ef..f5acbff 100644
index 4560f52..b5cb5ed 100644
--- a/dlls/d3d11/device.c
+++ b/dlls/d3d11/device.c
@@ -215,7 +215,7 @@ static HRESULT STDMETHODCALLTYPE d3d11_immediate_context_Map(ID3D11DeviceContext
@ -34,6 +39,134 @@ index ca8b0ef..f5acbff 100644
wined3d_mutex_unlock();
}
diff --git a/dlls/d3d11/texture.c b/dlls/d3d11/texture.c
index 011a5f7..99e531a 100644
--- a/dlls/d3d11/texture.c
+++ b/dlls/d3d11/texture.c
@@ -366,7 +366,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_texture2d_Map(ID3D10Texture2D *iface, UIN
FIXME("Ignoring map_flags %#x.\n", map_flags);
wined3d_mutex_lock();
- if (SUCCEEDED(hr = wined3d_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
+ if (SUCCEEDED(hr = wined3d_resource_sub_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
&wined3d_map_desc, NULL, wined3d_map_flags_from_d3d11_map_type(map_type))))
{
mapped_texture->pData = wined3d_map_desc.data;
@@ -384,7 +384,7 @@ static void STDMETHODCALLTYPE d3d10_texture2d_Unmap(ID3D10Texture2D *iface, UINT
TRACE("iface %p, sub_resource_idx %u.\n", iface, sub_resource_idx);
wined3d_mutex_lock();
- wined3d_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
+ wined3d_resource_sub_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
wined3d_mutex_unlock();
}
@@ -823,7 +823,7 @@ static HRESULT STDMETHODCALLTYPE d3d10_texture3d_Map(ID3D10Texture3D *iface, UIN
FIXME("Ignoring map_flags %#x.\n", map_flags);
wined3d_mutex_lock();
- if (SUCCEEDED(hr = wined3d_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
+ if (SUCCEEDED(hr = wined3d_resource_sub_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
&wined3d_map_desc, NULL, wined3d_map_flags_from_d3d11_map_type(map_type))))
{
mapped_texture->pData = wined3d_map_desc.data;
@@ -842,7 +842,7 @@ static void STDMETHODCALLTYPE d3d10_texture3d_Unmap(ID3D10Texture3D *iface, UINT
TRACE("iface %p, sub_resource_idx %u.\n", iface, sub_resource_idx);
wined3d_mutex_lock();
- wined3d_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
+ wined3d_resource_sub_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
wined3d_mutex_unlock();
}
diff --git a/dlls/d3d8/surface.c b/dlls/d3d8/surface.c
index 679f094..21f1438 100644
--- a/dlls/d3d8/surface.c
+++ b/dlls/d3d8/surface.c
@@ -234,7 +234,7 @@ static HRESULT WINAPI d3d8_surface_LockRect(IDirect3DSurface8 *iface,
box.back = 1;
}
- hr = wined3d_resource_map(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx,
+ hr = wined3d_resource_sub_resource_map(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx,
&map_desc, rect ? &box : NULL, flags);
wined3d_mutex_unlock();
@@ -260,7 +260,7 @@ static HRESULT WINAPI d3d8_surface_UnlockRect(IDirect3DSurface8 *iface)
TRACE("iface %p.\n", iface);
wined3d_mutex_lock();
- hr = wined3d_resource_unmap(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx);
+ hr = wined3d_resource_sub_resource_unmap(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx);
wined3d_mutex_unlock();
switch(hr)
diff --git a/dlls/d3d8/volume.c b/dlls/d3d8/volume.c
index f26e424..d1ee0b5 100644
--- a/dlls/d3d8/volume.c
+++ b/dlls/d3d8/volume.c
@@ -148,7 +148,7 @@ static HRESULT WINAPI d3d8_volume_LockBox(IDirect3DVolume8 *iface,
iface, locked_box, box, flags);
wined3d_mutex_lock();
- hr = wined3d_resource_map(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx,
+ hr = wined3d_resource_sub_resource_map(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx,
&map_desc, (const struct wined3d_box *)box, flags);
wined3d_mutex_unlock();
@@ -167,7 +167,7 @@ static HRESULT WINAPI d3d8_volume_UnlockBox(IDirect3DVolume8 *iface)
TRACE("iface %p.\n", iface);
wined3d_mutex_lock();
- hr = wined3d_resource_unmap(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx);
+ hr = wined3d_resource_sub_resource_unmap(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx);
wined3d_mutex_unlock();
return hr;
diff --git a/dlls/d3d9/surface.c b/dlls/d3d9/surface.c
index 833c1f4..54baf83 100644
--- a/dlls/d3d9/surface.c
+++ b/dlls/d3d9/surface.c
@@ -251,7 +251,7 @@ static HRESULT WINAPI d3d9_surface_LockRect(IDirect3DSurface9 *iface,
}
wined3d_mutex_lock();
- hr = wined3d_resource_map(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx,
+ hr = wined3d_resource_sub_resource_map(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx,
&map_desc, rect ? &box : NULL, flags);
wined3d_mutex_unlock();
@@ -272,7 +272,7 @@ static HRESULT WINAPI d3d9_surface_UnlockRect(IDirect3DSurface9 *iface)
TRACE("iface %p.\n", iface);
wined3d_mutex_lock();
- hr = wined3d_resource_unmap(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx);
+ hr = wined3d_resource_sub_resource_unmap(wined3d_texture_get_resource(surface->wined3d_texture), surface->sub_resource_idx);
wined3d_mutex_unlock();
switch(hr)
diff --git a/dlls/d3d9/volume.c b/dlls/d3d9/volume.c
index 52502bf..a81b6c7 100644
--- a/dlls/d3d9/volume.c
+++ b/dlls/d3d9/volume.c
@@ -148,7 +148,7 @@ static HRESULT WINAPI d3d9_volume_LockBox(IDirect3DVolume9 *iface,
iface, locked_box, box, flags);
wined3d_mutex_lock();
- hr = wined3d_resource_map(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx,
+ hr = wined3d_resource_sub_resource_map(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx,
&map_desc, (const struct wined3d_box *)box, flags);
wined3d_mutex_unlock();
@@ -167,7 +167,7 @@ static HRESULT WINAPI d3d9_volume_UnlockBox(IDirect3DVolume9 *iface)
TRACE("iface %p.\n", iface);
wined3d_mutex_lock();
- hr = wined3d_resource_unmap(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx);
+ hr = wined3d_resource_sub_resource_unmap(wined3d_texture_get_resource(volume->wined3d_texture), volume->sub_resource_idx);
wined3d_mutex_unlock();
return hr;
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index d466764..74be48d 100644
--- a/dlls/wined3d/resource.c
@ -57,7 +190,7 @@ index d466764..74be48d 100644
TRACE("resource %p, sub_resource_idx %u.\n", resource, sub_resource_idx);
diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec
index 7067e08..7c4ea7c 100644
index a7e625d..b6be230 100644
--- a/dlls/wined3d/wined3d.spec
+++ b/dlls/wined3d/wined3d.spec
@@ -182,10 +182,10 @@
@ -74,7 +207,7 @@ index 7067e08..7c4ea7c 100644
@ cdecl wined3d_rendertarget_view_create(ptr ptr ptr ptr ptr)
@ cdecl wined3d_rendertarget_view_create_from_surface(ptr ptr ptr ptr)
diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h
index 9c9258a..d859b6f 100644
index 2deb450..e25aa69 100644
--- a/include/wine/wined3d.h
+++ b/include/wine/wined3d.h
@@ -2422,11 +2422,11 @@ void __cdecl wined3d_resource_get_desc(const struct wined3d_resource *resource,

View File

@ -2358,7 +2358,7 @@ diff --git a/dlls/wined3d/vertexdeclaration.c b/dlls/wined3d/vertexdeclaration.c
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -2001,7 +2001,9 @@
@@ -2002,7 +2002,9 @@
escape.code = X11DRV_FLUSH_GL_DRAWABLE;
escape.gl_drawable = 0;
@ -2368,7 +2368,7 @@ diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
if ((gl = get_gl_drawable( WindowFromDC( ctx->hdc ), 0 )))
{
switch (gl->type)
@@ -2027,7 +2029,9 @@
@@ -2028,7 +2030,9 @@
escape.code = X11DRV_FLUSH_GL_DRAWABLE;
escape.gl_drawable = 0;

View File

@ -1,81 +0,0 @@
From bf1a093e98df52aa4576c93f3e0e165fdf73e1e4 Mon Sep 17 00:00:00 2001
From: Bruno Jesus <00cpxxx@gmail.com>
Date: Fri, 22 May 2015 22:42:53 -0300
Subject: include: Add stuff related to WSAPoll() (try 2)
try 2:
I found the solution to typedef the struct pollfd just like it's done
with fd_set.
---
include/winsock2.h | 34 ++++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/include/winsock2.h b/include/winsock2.h
index fa3d26b..c90d0f6 100644
--- a/include/winsock2.h
+++ b/include/winsock2.h
@@ -112,6 +112,31 @@ extern "C" {
#define SD_SEND 0x01
#define SD_BOTH 0x02
+/* Constants for WSAPoll() */
+#ifndef USE_WS_PREFIX
+#define POLLERR 0x0001
+#define POLLHUP 0x0002
+#define POLLNVAL 0x0004
+#define POLLWRNORM 0x0010
+#define POLLWRBAND 0x0020
+#define POLLRDNORM 0x0100
+#define POLLRDBAND 0x0200
+#define POLLPRI 0x0400
+#define POLLIN (POLLRDNORM|POLLRDBAND)
+#define POLLOUT (POLLWRNORM)
+#else
+#define WS_POLLERR 0x0001
+#define WS_POLLHUP 0x0002
+#define WS_POLLNVAL 0x0004
+#define WS_POLLWRNORM 0x0010
+#define WS_POLLWRBAND 0x0020
+#define WS_POLLRDNORM 0x0100
+#define WS_POLLRDBAND 0x0200
+#define WS_POLLPRI 0x0400
+#define WS_POLLIN (WS_POLLRDNORM|WS_POLLRDBAND)
+#define WS_POLLOUT (WS_POLLWRNORM)
+#endif
+
/* Constants for WSAIoctl() */
#ifdef USE_WS_PREFIX
#define WS_IOC_UNIX 0x00000000
@@ -259,6 +284,13 @@ typedef struct _WSAPROTOCOLCHAIN
#define SECURITY_PROTOCOL_NONE 0x0000
+typedef struct /*WS(pollfd)*/
+{
+ SOCKET fd;
+ SHORT events;
+ SHORT revents;
+} WSAPOLLFD;
+
#define WSAPROTOCOL_LEN 255
typedef struct _WSAPROTOCOL_INFOA
{
@@ -662,6 +694,7 @@ INT WINAPI WSALookupServiceNextW(HANDLE,DWORD,LPDWORD,LPWSAQUERYSETW);
int WINAPI WSANSPIoctl(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,LPWSACOMPLETION);
int WINAPI WSANtohl(SOCKET,ULONG,ULONG*);
int WINAPI WSANtohs(SOCKET,WS(u_short),WS(u_short)*);
+int WINAPI WSAPoll(WSAPOLLFD*,ULONG,int);
INT WINAPI WSAProviderConfigChange(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
int WINAPI WSARecv(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
int WINAPI WSARecvDisconnect(SOCKET,LPWSABUF);
@@ -736,6 +769,7 @@ typedef int (WINAPI *LPFN_WSANSPIOCTL)(HANDLE,DWORD,LPVOID,DWORD,LPVOID,DWORD,LP
typedef int (WINAPI *LPFN_WSANTOHL)(SOCKET,ULONG,ULONG*);
typedef int (WINAPI *LPFN_WSANTOHS)(SOCKET,WS(u_short),WS(u_short)*);
typedef INT (WINAPI *LPFN_WSAPROVIDERCONFIGCHANGE)(LPHANDLE,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
+typedef int (WINAPI *LPFN_WSAPOLL)(WSAPOLLFD*,ULONG,int);
typedef int (WINAPI *LPFN_WSARECV)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
typedef int (WINAPI *LPFN_WSARECVDISCONNECT)(SOCKET,LPWSABUF);
typedef int (WINAPI *LPFN_WSARECVFROM)(SOCKET,LPWSABUF,DWORD,LPDWORD,LPDWORD,struct WS(sockaddr)*,LPINT,LPWSAOVERLAPPED,LPWSAOVERLAPPED_COMPLETION_ROUTINE);
--
2.4.1

View File

@ -0,0 +1,32 @@
From 168d4c1da4c5b7ce71eb2d07bb3369f2c0ad5df7 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Thu, 5 Nov 2015 17:56:24 +0100
Subject: include: Remove check for __WINE_WNE_PORT_H in winsock2.h.
---
include/winsock2.h | 2 --
1 file changed, 2 deletions(-)
diff --git a/include/winsock2.h b/include/winsock2.h
index 461b90c..212352c 100644
--- a/include/winsock2.h
+++ b/include/winsock2.h
@@ -113,7 +113,6 @@ extern "C" {
#define SD_BOTH 0x02
/* Constants for WSAPoll() */
-#ifndef __WINE_WINE_PORT_H
#ifndef USE_WS_PREFIX
#define POLLERR 0x0001
#define POLLHUP 0x0002
@@ -137,7 +136,6 @@ extern "C" {
#define WS_POLLIN (WS_POLLRDNORM|WS_POLLRDBAND)
#define WS_POLLOUT (WS_POLLWRNORM)
#endif
-#endif
/* Constants for WSAIoctl() */
#ifdef USE_WS_PREFIX
--
2.6.2