Removed first patch of series ws2_32_WriteWatches (accepted upstream).

This commit is contained in:
Sebastian Lackner 2015-03-19 20:23:42 +01:00
parent 5fe90fc2e8
commit 42b6978464
16 changed files with 150 additions and 241 deletions

1
debian/changelog vendored
View File

@ -28,6 +28,7 @@ wine-staging (1.7.39) UNRELEASED; urgency=low
* Removed patches to fix wrong return values of RtlFindActivationContextSectionString for NULL data (accepted upstream).
* Removed patch for server-PeekMessage tests (accepted upstream).
* Removed patch to only zero the buffer up 32767 bytes in GetTempPathW (accepted upstream).
* Removed first patch of series ws2_32_WriteWatches (accepted upstream).
-- Sebastian Lackner <sebastian@fds-team.de> Mon, 09 Mar 2015 16:52:35 +0100
wine-staging (1.7.38) unstable; urgency=low

View File

@ -1,4 +1,4 @@
From 9e5ef34f4cbfb381528750caabd4ba6a3da439f6 Mon Sep 17 00:00:00 2001
From fe342bf68517ea538ccde914094c744e3dfc5192 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 4 Oct 2014 02:56:08 +0200
Subject: ntdll: Properly handle PAGE_WRITECOPY protection. (try 5)
@ -39,10 +39,10 @@ index 75e91d5..3520546 100644
UnmapViewOfFile(base);
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index 17792e1..36d8836 100644
index 675e723..1744e35 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -179,8 +179,13 @@ static int VIRTUAL_GetUnixProt( BYTE vprot )
@@ -178,8 +178,13 @@ static int VIRTUAL_GetUnixProt( BYTE vprot )
{
if (vprot & VPROT_READ) prot |= PROT_READ;
if (vprot & VPROT_WRITE) prot |= PROT_WRITE | PROT_READ;
@ -57,7 +57,7 @@ index 17792e1..36d8836 100644
if (vprot & VPROT_WRITEWATCH) prot &= ~PROT_WRITE;
}
if (!prot) prot = PROT_NONE;
@@ -1532,13 +1537,18 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err )
@@ -1531,13 +1536,18 @@ NTSTATUS virtual_handle_fault( LPCVOID addr, DWORD err, BOOL on_signal_stack )
{
void *page = ROUND_ADDR( addr, page_mask );
BYTE *vprot = &view->prot[((const char *)page - (const char *)view->base) >> page_shift];
@ -78,8 +78,8 @@ index 17792e1..36d8836 100644
/* ignore fault if page is writable now */
if (VIRTUAL_GetUnixProt( *vprot ) & PROT_WRITE) ret = STATUS_SUCCESS;
}
@@ -1748,14 +1758,16 @@ SIZE_T CDECL wine_uninterrupted_write_memory( void *addr, const void *buffer, SI
* handle guard pages here. */
@@ -1746,14 +1756,16 @@ SIZE_T CDECL wine_uninterrupted_write_memory( void *addr, const void *buffer, SI
* exception. Similar to virtual_handle_fault. */
if (!(VIRTUAL_GetUnixProt( *p ) & PROT_WRITE))
{
- if (!(view->protect & VPROT_WRITEWATCH))
@ -100,5 +100,5 @@ index 17792e1..36d8836 100644
if (!(VIRTUAL_GetUnixProt( *p ) & PROT_WRITE))
break;
--
2.2.1
2.3.2

View File

@ -1191,11 +1191,9 @@ fi
# | include/winternl.h
# |
if test "$enable_ws2_32_WriteWatches" -eq 1; then
patch_apply ws2_32-WriteWatches/0001-ntdll-Handle-write-watches-in-virtual_uninterrupted_.patch
patch_apply ws2_32-WriteWatches/0002-ntdll-Expose-wine_uninterrupted_-read-write-_memory-.patch
patch_apply ws2_32-WriteWatches/0003-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch
patch_apply ws2_32-WriteWatches/0001-ntdll-Expose-wine_uninterrupted_-read-write-_memory-.patch
patch_apply ws2_32-WriteWatches/0002-ws2_32-Avoid-race-conditions-of-async-WSARecv-operat.patch
(
echo '+ { "Sebastian Lackner", "ntdll: Handle write watches in virtual_uninterrupted_write_memory.", 1 },';
echo '+ { "Sebastian Lackner", "ntdll: Expose wine_uninterrupted_[read|write]_memory as exports.", 1 },';
echo '+ { "Sebastian Lackner", "ws2_32: Avoid race-conditions of async WSARecv() operations with write watches.", 2 },';
) >> "$patchlist"

View File

@ -1,4 +1,4 @@
From bd0fc951470cce05795929f159a541c7ca84c318 Mon Sep 17 00:00:00 2001
From 6f4e0b9da2720ac9b3e37b419e5599cb0f0fb99d Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Fri, 8 Aug 2014 21:32:57 +0800
Subject: riched20: Implement IText{Selection, Range}::Set{Start, End}.
@ -9,10 +9,10 @@ Subject: riched20: Implement IText{Selection, Range}::Set{Start, End}.
2 files changed, 179 insertions(+), 8 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index c62998a..b16dd3f 100644
index 3818cfa..89a51ac 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -741,14 +741,27 @@ static HRESULT WINAPI ITextRange_fnGetStart(ITextRange *me, LONG *pcpFirst)
@@ -871,14 +871,27 @@ static HRESULT WINAPI ITextRange_fnGetStart(ITextRange *me, LONG *pcpFirst)
return S_OK;
}
@ -42,7 +42,7 @@ index c62998a..b16dd3f 100644
}
static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim)
@@ -764,14 +777,27 @@ static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim)
@@ -894,14 +907,27 @@ static HRESULT WINAPI ITextRange_fnGetEnd(ITextRange *me, LONG *pcpLim)
return S_OK;
}
@ -72,7 +72,7 @@ index c62998a..b16dd3f 100644
}
static HRESULT WINAPI ITextRange_fnGetFont(ITextRange *me, ITextFont **pFont)
@@ -1751,11 +1777,16 @@ static HRESULT WINAPI ITextSelection_fnGetStart(ITextSelection *me, LONG *pcpFir
@@ -1881,11 +1907,16 @@ static HRESULT WINAPI ITextSelection_fnGetStart(ITextSelection *me, LONG *pcpFir
static HRESULT WINAPI ITextSelection_fnSetStart(ITextSelection *me, LONG cpFirst)
{
ITextSelectionImpl *This = impl_from_ITextSelection(me);
@ -91,7 +91,7 @@ index c62998a..b16dd3f 100644
}
static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim)
@@ -1775,11 +1806,16 @@ static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim)
@@ -1905,11 +1936,16 @@ static HRESULT WINAPI ITextSelection_fnGetEnd(ITextSelection *me, LONG *pcpLim)
static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim)
{
ITextSelectionImpl *This = impl_from_ITextSelection(me);
@ -111,10 +111,10 @@ index c62998a..b16dd3f 100644
static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **pFont)
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index a89ee55..a0d0d17 100644
index b4fbaa1..5550e30 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1028,6 +1028,137 @@ static void test_IOleWindow_GetWindow(void)
@@ -1081,6 +1081,137 @@ static void test_IOleInPlaceSite_GetWindow(void)
release_interfaces(&w, &reOle, &txtDoc, NULL);
}
@ -252,7 +252,7 @@ index a89ee55..a0d0d17 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1040,12 +1171,16 @@ START_TEST(richole)
@@ -1093,12 +1224,16 @@ START_TEST(richole)
test_ITextSelection_GetText();
test_ITextSelection_GetChar();
test_ITextSelection_GetStart_GetEnd();
@ -268,7 +268,7 @@ index a89ee55..a0d0d17 100644
+ test_ITextRange_SetEnd();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,4 +1,4 @@
From b79278e3883ff38659fd4aaf6f9d9036f6d48956 Mon Sep 17 00:00:00 2001
From 602f1e247562b48297664865dbd676cb329f5257 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Mon, 11 Aug 2014 13:51:55 +0800
Subject: riched20: Stub for ITextFont interface and implement
@ -10,10 +10,10 @@ Subject: riched20: Stub for ITextFont interface and implement
2 files changed, 893 insertions(+), 4 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index b16dd3f..5612ff9 100644
index 89a51ac..eaf1c4d 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -46,10 +46,12 @@ DEFINE_GUID(IID_ITextHost2, 0x13e670f5,0x1a5a,0x11cf,0xab,0xeb,0x00,0xaa,0x00,0x
@@ -45,10 +45,12 @@ DEFINE_GUID(IID_ITextHost2, 0x13e670f5,0x1a5a,0x11cf,0xab,0xeb,0x00,0xaa,0x00,0x
DEFINE_GUID(IID_ITextDocument, 0x8cc497c0, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d);
DEFINE_GUID(IID_ITextRange, 0x8cc497c2, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d);
DEFINE_GUID(IID_ITextSelection, 0x8cc497c1, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d);
@ -26,7 +26,7 @@ index b16dd3f..5612ff9 100644
typedef struct IRichEditOleImpl {
IUnknown IUnknown_inner;
@@ -62,8 +64,19 @@ typedef struct IRichEditOleImpl {
@@ -61,8 +63,19 @@ typedef struct IRichEditOleImpl {
ITextSelectionImpl *txtSel;
IOleClientSiteImpl *clientSite;
struct list rangelist;
@ -63,7 +63,7 @@ index b16dd3f..5612ff9 100644
heap_free(This);
}
return ref;
@@ -548,6 +564,744 @@ static const IRichEditOleVtbl revt = {
@@ -678,6 +694,744 @@ static const IRichEditOleVtbl revt = {
IRichEditOle_fnImportDataObject
};
@ -808,7 +808,7 @@ index b16dd3f..5612ff9 100644
/* ITextRange interface */
static inline ITextRangeImpl *impl_from_ITextRange(ITextRange *iface)
{
@@ -800,14 +1554,42 @@ static HRESULT WINAPI ITextRange_fnSetEnd(ITextRange *me, LONG cpLim)
@@ -930,14 +1684,42 @@ static HRESULT WINAPI ITextRange_fnSetEnd(ITextRange *me, LONG cpLim)
return range_SetEnd(This->reOle->editor, cpLim, &This->start, &This->end);
}
@ -853,7 +853,7 @@ index b16dd3f..5612ff9 100644
}
static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont)
@@ -1821,11 +2603,24 @@ static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim)
@@ -1951,11 +2733,24 @@ static HRESULT WINAPI ITextSelection_fnSetEnd(ITextSelection *me, LONG cpLim)
static HRESULT WINAPI ITextSelection_fnGetFont(ITextSelection *me, ITextFont **pFont)
{
ITextSelectionImpl *This = impl_from_ITextSelection(me);
@ -880,7 +880,7 @@ index b16dd3f..5612ff9 100644
}
static HRESULT WINAPI ITextSelection_fnSetFont(ITextSelection *me, ITextFont *pFont)
@@ -2459,6 +3254,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p
@@ -2589,6 +3384,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p
}
TRACE("Created %p\n",reo);
list_init(&reo->rangelist);
@ -889,10 +889,10 @@ index b16dd3f..5612ff9 100644
reo->outer_unk = outer_unk;
else
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index a0d0d17..8673aa9 100644
index 5550e30..a2d1a11 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1159,6 +1159,97 @@ static void test_ITextSelection_SetEnd(void)
@@ -1212,6 +1212,97 @@ static void test_ITextSelection_SetEnd(void)
release_interfaces(&w, &reOle, &txtDoc, &txtSel);
}
@ -990,7 +990,7 @@ index a0d0d17..8673aa9 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1174,6 +1265,7 @@ START_TEST(richole)
@@ -1227,6 +1318,7 @@ START_TEST(richole)
test_ITextSelection_SetStart();
test_ITextSelection_SetEnd();
test_ITextSelection_Collapse();
@ -998,14 +998,14 @@ index a0d0d17..8673aa9 100644
test_ITextDocument_Range();
test_ITextRange_GetChar();
test_ITextRange_GetStart_GetEnd();
@@ -1181,6 +1273,7 @@ START_TEST(richole)
@@ -1234,6 +1326,7 @@ START_TEST(richole)
test_ITextRange_Collapse();
test_ITextRange_SetStart();
test_ITextRange_SetEnd();
+ test_ITextRange_GetFont();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,4 +1,4 @@
From a9fa015b0c2d9bcc66980fab03bc5417623f2718 Mon Sep 17 00:00:00 2001
From 094eeb4fd0d44d2af4440aed623ceaf30a5bf959 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Sun, 10 Aug 2014 22:17:57 +0800
Subject: riched20: Stub for ITextPara interface and implement
@ -10,10 +10,10 @@ Subject: riched20: Stub for ITextPara interface and implement
2 files changed, 729 insertions(+), 2 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index 5612ff9..b5069e4 100644
index eaf1c4d..d815142 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -47,11 +47,13 @@ DEFINE_GUID(IID_ITextDocument, 0x8cc497c0, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xa
@@ -46,11 +46,13 @@ DEFINE_GUID(IID_ITextDocument, 0x8cc497c0, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xa
DEFINE_GUID(IID_ITextRange, 0x8cc497c2, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d);
DEFINE_GUID(IID_ITextSelection, 0x8cc497c1, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d);
DEFINE_GUID(IID_ITextFont, 0x8cc497c3, 0xa1df, 0x11ce, 0x80, 0x98, 0x00, 0xaa, 0x00, 0x47, 0xbe, 0x5d);
@ -27,7 +27,7 @@ index 5612ff9..b5069e4 100644
typedef struct IRichEditOleImpl {
IUnknown IUnknown_inner;
@@ -65,8 +67,19 @@ typedef struct IRichEditOleImpl {
@@ -64,8 +66,19 @@ typedef struct IRichEditOleImpl {
IOleClientSiteImpl *clientSite;
struct list rangelist;
struct list fontlist;
@ -64,7 +64,7 @@ index 5612ff9..b5069e4 100644
heap_free(This);
}
return ref;
@@ -564,6 +580,641 @@ static const IRichEditOleVtbl revt = {
@@ -694,6 +710,641 @@ static const IRichEditOleVtbl revt = {
IRichEditOle_fnImportDataObject
};
@ -706,7 +706,7 @@ index 5612ff9..b5069e4 100644
/* ITextFont interface */
static inline ITextFontImpl *impl_from_ITextFont(ITextFont *iface)
{
@@ -1602,14 +2253,42 @@ static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont)
@@ -1732,14 +2383,42 @@ static HRESULT WINAPI ITextRange_fnSetFont(ITextRange *me, ITextFont *pFont)
return E_NOTIMPL;
}
@ -751,7 +751,7 @@ index 5612ff9..b5069e4 100644
}
static HRESULT WINAPI ITextRange_fnSetPara(ITextRange *me, ITextPara *pPara)
@@ -3255,6 +3934,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p
@@ -3385,6 +4064,7 @@ LRESULT CreateIRichEditOle(IUnknown *outer_unk, ME_TextEditor *editor, LPVOID *p
TRACE("Created %p\n",reo);
list_init(&reo->rangelist);
list_init(&reo->fontlist);
@ -760,10 +760,10 @@ index 5612ff9..b5069e4 100644
reo->outer_unk = outer_unk;
else
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index 8673aa9..afe8af9 100644
index a2d1a11..89b3839 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1250,6 +1250,52 @@ static void test_ITextSelection_GetFont(void)
@@ -1303,6 +1303,52 @@ static void test_ITextSelection_GetFont(void)
ITextFont_Release(txtFont);
}
@ -816,14 +816,14 @@ index 8673aa9..afe8af9 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1274,6 +1320,7 @@ START_TEST(richole)
@@ -1327,6 +1373,7 @@ START_TEST(richole)
test_ITextRange_SetStart();
test_ITextRange_SetEnd();
test_ITextRange_GetFont();
+ test_ITextRange_GetPara();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,4 +1,4 @@
From 481415ab4d8f622ef27182aecc0f4a0635cfb44d Mon Sep 17 00:00:00 2001
From 49d6ee6879df42615d3b8c97bd320382fb580585 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Wed, 13 Aug 2014 14:57:52 +0800
Subject: riched20: Fix ME_RunOfsFromCharOfs() when nCharOfs > strlen().

View File

@ -1,4 +1,4 @@
From 1a1ce59d29cd53547810110ba1e201b070ea23bc Mon Sep 17 00:00:00 2001
From d0ddbc33e67637ac5ea3d73720d1260d37899bf8 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Wed, 13 Aug 2014 15:40:11 +0800
Subject: riched20: Implement ITextRange::GetText.
@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::GetText.
2 files changed, 67 insertions(+), 21 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index b5069e4..e0a1d6e 100644
index d815142..12146ff 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -2043,14 +2043,40 @@ static HRESULT WINAPI ITextRange_fnInvoke(ITextRange *me, DISPID dispIdMember, R
@@ -2173,14 +2173,40 @@ static HRESULT WINAPI ITextRange_fnInvoke(ITextRange *me, DISPID dispIdMember, R
return E_NOTIMPL;
}
@ -55,7 +55,7 @@ index b5069e4..e0a1d6e 100644
}
static HRESULT WINAPI ITextRange_fnSetText(ITextRange *me, BSTR bstr)
@@ -3127,8 +3153,6 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr)
@@ -3257,8 +3283,6 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr)
{
ITextSelectionImpl *This = impl_from_ITextSelection(me);
ME_Cursor *start = NULL, *end = NULL;
@ -64,7 +64,7 @@ index b5069e4..e0a1d6e 100644
if (!This->reOle)
return CO_E_RELEASED;
@@ -3137,23 +3161,7 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr)
@@ -3267,23 +3291,7 @@ static HRESULT WINAPI ITextSelection_fnGetText(ITextSelection *me, BSTR *pbstr)
return E_INVALIDARG;
ME_GetSelection(This->reOle->editor, &start, &end);
@ -90,10 +90,10 @@ index b5069e4..e0a1d6e 100644
static HRESULT WINAPI ITextSelection_fnSetText(ITextSelection *me, BSTR bstr)
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index afe8af9..192ff90 100644
index 89b3839..33b777b 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1296,6 +1296,43 @@ static void test_ITextRange_GetPara(void)
@@ -1349,6 +1349,43 @@ static void test_ITextRange_GetPara(void)
ITextPara_Release(txtPara);
}
@ -137,14 +137,14 @@ index afe8af9..192ff90 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1321,6 +1358,7 @@ START_TEST(richole)
@@ -1374,6 +1411,7 @@ START_TEST(richole)
test_ITextRange_SetEnd();
test_ITextRange_GetFont();
test_ITextRange_GetPara();
+ test_ITextRange_GetText();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,4 +1,4 @@
From 1376e708ee270ff14de14cf761ee1965e6842c5e Mon Sep 17 00:00:00 2001
From d0269eafaac5cf25dfa223e1d9a9edd2572b3755 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Wed, 13 Aug 2014 17:17:14 +0800
Subject: riched20: Implement ITextRange::SetRange.
@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::SetRange.
2 files changed, 60 insertions(+), 17 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index e0a1d6e..fb6c5b0 100644
index 12146ff..cfe0138 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -2399,14 +2399,36 @@ static HRESULT WINAPI ITextRange_fnSetIndex(ITextRange *me, LONG Unit, LONG Inde
@@ -2529,14 +2529,36 @@ static HRESULT WINAPI ITextRange_fnSetIndex(ITextRange *me, LONG Unit, LONG Inde
return E_NOTIMPL;
}
@ -51,7 +51,7 @@ index e0a1d6e..fb6c5b0 100644
}
static HRESULT WINAPI ITextRange_fnInRange(ITextRange *me, ITextRange *pRange, LONG *pb)
@@ -3001,26 +3023,12 @@ ITextDocument_fnRange(ITextDocument* me, LONG cp1, LONG cp2,
@@ -3131,26 +3153,12 @@ ITextDocument_fnRange(ITextDocument* me, LONG cp1, LONG cp2,
ITextRange** ppRange)
{
IRichEditOleImpl *This = impl_from_ITextDocument(me);
@ -80,10 +80,10 @@ index e0a1d6e..fb6c5b0 100644
}
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index 192ff90..312fad7 100644
index 33b777b..a943393 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1333,6 +1333,40 @@ static void test_ITextRange_GetText(void)
@@ -1386,6 +1386,40 @@ static void test_ITextRange_GetText(void)
TEST_TXTRGE_GETTEXT(1, 1, NULL)
}
@ -124,14 +124,14 @@ index 192ff90..312fad7 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1359,6 +1393,7 @@ START_TEST(richole)
@@ -1412,6 +1446,7 @@ START_TEST(richole)
test_ITextRange_GetFont();
test_ITextRange_GetPara();
test_ITextRange_GetText();
+ test_ITextRange_SetRange();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,4 +1,4 @@
From 96742bfcb5ac8a1f95fee81246ef31c56c6613e5 Mon Sep 17 00:00:00 2001
From dd58c449f3fd930e7067f4910d82fc4a118cb585 Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Fri, 15 Aug 2014 14:27:21 +0800
Subject: riched20: Implement ITextRange::IsEqual.
@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::IsEqual.
2 files changed, 64 insertions(+), 2 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index fb6c5b0..ce1a2dd 100644
index cfe0138..73e1916 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -2451,14 +2451,29 @@ static HRESULT WINAPI ITextRange_fnInStory(ITextRange *me, ITextRange *pRange, L
@@ -2581,14 +2581,29 @@ static HRESULT WINAPI ITextRange_fnInStory(ITextRange *me, ITextRange *pRange, L
return E_NOTIMPL;
}
@ -45,10 +45,10 @@ index fb6c5b0..ce1a2dd 100644
static HRESULT WINAPI ITextRange_fnSelect(ITextRange *me)
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index 312fad7..d114fe2 100644
index a943393..6b1bada 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1367,6 +1367,52 @@ static void test_ITextRange_SetRange(void)
@@ -1420,6 +1420,52 @@ static void test_ITextRange_SetRange(void)
release_interfaces(&w, &reOle, &txtDoc, NULL);
}
@ -101,14 +101,14 @@ index 312fad7..d114fe2 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1394,6 +1440,7 @@ START_TEST(richole)
@@ -1447,6 +1493,7 @@ START_TEST(richole)
test_ITextRange_GetPara();
test_ITextRange_GetText();
test_ITextRange_SetRange();
+ test_ITextRange_IsEqual();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,4 +1,4 @@
From 96767fde7d9558498176d82d2b509b0b458c7762 Mon Sep 17 00:00:00 2001
From 5606c81aa12ad51c3028d7e48a419e5000a0053a Mon Sep 17 00:00:00 2001
From: Jactry Zeng <wine@jactry.com>
Date: Mon, 18 Aug 2014 14:38:50 +0800
Subject: riched20: Implement ITextRange::GetStoryLength.
@ -9,10 +9,10 @@ Subject: riched20: Implement ITextRange::GetStoryLength.
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/dlls/riched20/richole.c b/dlls/riched20/richole.c
index ce1a2dd..6def896 100644
index 73e1916..525c7c1 100644
--- a/dlls/riched20/richole.c
+++ b/dlls/riched20/richole.c
@@ -2333,8 +2333,10 @@ static HRESULT WINAPI ITextRange_fnGetStoryLength(ITextRange *me, LONG *pcch)
@@ -2463,8 +2463,10 @@ static HRESULT WINAPI ITextRange_fnGetStoryLength(ITextRange *me, LONG *pcch)
if (!This->reOle)
return CO_E_RELEASED;
@ -26,10 +26,10 @@ index ce1a2dd..6def896 100644
static HRESULT WINAPI ITextRange_fnGetStoryType(ITextRange *me, LONG *pValue)
diff --git a/dlls/riched20/tests/richole.c b/dlls/riched20/tests/richole.c
index d114fe2..4e662da 100644
index 6b1bada..4e1a5a6 100644
--- a/dlls/riched20/tests/richole.c
+++ b/dlls/riched20/tests/richole.c
@@ -1413,6 +1413,37 @@ static void test_ITextRange_IsEqual(void)
@@ -1466,6 +1466,37 @@ static void test_ITextRange_IsEqual(void)
release_interfaces(&w, &reOle, &txtDoc, NULL);
}
@ -67,14 +67,14 @@ index d114fe2..4e662da 100644
START_TEST(richole)
{
/* Must explicitly LoadLibrary(). The test has no references to functions in
@@ -1441,6 +1472,7 @@ START_TEST(richole)
@@ -1494,6 +1525,7 @@ START_TEST(richole)
test_ITextRange_GetText();
test_ITextRange_SetRange();
test_ITextRange_IsEqual();
+ test_ITextRange_GetStoryLength();
test_IOleClientSite_QueryInterface();
test_IOleWindow_GetWindow();
}
test_IOleInPlaceSite_GetWindow();
--
2.3.2

View File

@ -1,15 +1,15 @@
From 8442c70f08cd95cf592ec4232489ea93c5d0a038 Mon Sep 17 00:00:00 2001
From 950a0c1fd7d57bf0724135e3ffd7848182df59ee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Thu, 26 Feb 2015 23:21:26 +0100
Subject: shell32: Pass FILE_INFORMATION into SHNotify* functions.
Preparation of the progressbar work. Based on a patch by Huw Campbell.
---
dlls/shell32/shlfileop.c | 222 +++++++++++++++++++++++------------------------
1 file changed, 111 insertions(+), 111 deletions(-)
dlls/shell32/shlfileop.c | 201 +++++++++++++++++++++++------------------------
1 file changed, 98 insertions(+), 103 deletions(-)
diff --git a/dlls/shell32/shlfileop.c b/dlls/shell32/shlfileop.c
index ee40e39..ed8ff38 100644
index 08a0515..665e74c 100644
--- a/dlls/shell32/shlfileop.c
+++ b/dlls/shell32/shlfileop.c
@@ -59,16 +59,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(shell);
@ -380,37 +380,7 @@ index ee40e39..ed8ff38 100644
if (ret)
return ret;
@@ -1389,10 +1386,10 @@ static DWORD delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
return ERROR_SUCCESS;
}
-static void move_dir_to_dir(LPSHFILEOPSTRUCTW lpFileOp, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
+static void move_dir_to_dir(FILE_OPERATION *op, const FILE_ENTRY *feFrom, LPCWSTR szDestPath)
{
WCHAR szFrom[MAX_PATH], szTo[MAX_PATH];
- SHFILEOPSTRUCTW fileOp;
+ FILE_LIST flFromNew, flToNew;
static const WCHAR wildCardFiles[] = {'*','.','*',0};
@@ -1407,28 +1404,33 @@ static void move_dir_to_dir(LPSHFILEOPSTRUCTW lpFileOp, const FILE_ENTRY *feFrom
lstrcpyW(szTo, szDestPath);
szTo[lstrlenW(szDestPath) + 1] = '\0';
- fileOp = *lpFileOp;
- fileOp.pFrom = szFrom;
- fileOp.pTo = szTo;
+ ZeroMemory(&flFromNew, sizeof(FILE_LIST));
+ ZeroMemory(&flToNew, sizeof(FILE_LIST));
+
+ parse_file_list(&flFromNew, szFrom);
+ parse_file_list(&flToNew, szTo);
- SHFileOperationW(&fileOp);
+ move_files(op, FALSE, &flFromNew, &flToNew);
+
+ destroy_file_list(&flFromNew);
+ destroy_file_list(&flToNew);
@@ -1390,16 +1387,16 @@ static DWORD delete_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom)
}
/* moves a file or directory to another directory */
@ -420,14 +390,8 @@ index ee40e39..ed8ff38 100644
WCHAR szDestPath[MAX_PATH];
PathCombineW(szDestPath, feTo->szFullPath, feFrom->szFilename);
if (IsAttribFile(feFrom->attributes))
- SHNotifyMoveFileW(feFrom->szFullPath, szDestPath);
- else if (!(lpFileOp->fFlags & FOF_FILESONLY && feFrom->bFromWildcard))
- move_dir_to_dir(lpFileOp, feFrom, szDestPath);
+ SHNotifyMoveFileW(op, feFrom->szFullPath, szDestPath);
+ else if (!(op->req->fFlags & FOF_FILESONLY && feFrom->bFromWildcard))
+ move_dir_to_dir(op, feFrom, szDestPath);
- SHNotifyMoveFileW(feFrom->szFullPath, szDestPath);
+ SHNotifyMoveFileW(op, feFrom->szFullPath, szDestPath);
}
/* the FO_MOVE operation */
@ -436,7 +400,7 @@ index ee40e39..ed8ff38 100644
{
DWORD i;
INT mismatched = 0;
@@ -1441,14 +1443,12 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1412,14 +1409,12 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (!flTo->dwNumFiles)
return ERROR_FILE_NOT_FOUND;
@ -453,7 +417,7 @@ index ee40e39..ed8ff38 100644
flFrom->dwNumFiles > flTo->dwNumFiles)
{
return ERROR_CANCELLED;
@@ -1457,7 +1457,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1428,7 +1423,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (!PathFileExistsW(flTo->feFiles[0].szDirectory))
return ERROR_CANCELLED;
@ -462,7 +426,7 @@ index ee40e39..ed8ff38 100644
mismatched = flFrom->dwNumFiles - flTo->dwNumFiles;
fileDest = &flTo->feFiles[0];
@@ -1468,7 +1468,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1439,7 +1434,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
if (!PathFileExistsW(fileDest->szDirectory))
return ERROR_CANCELLED;
@ -471,7 +435,7 @@ index ee40e39..ed8ff38 100644
{
if (i >= flTo->dwNumFiles)
break;
@@ -1482,9 +1482,9 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1453,9 +1448,9 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
}
if (fileDest->bExists && IsAttribDir(fileDest->attributes))
@ -483,7 +447,7 @@ index ee40e39..ed8ff38 100644
}
if (mismatched > 0)
@@ -1499,7 +1499,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
@@ -1470,7 +1465,7 @@ static DWORD move_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, con
}
/* the FO_RENAME files */
@ -492,7 +456,7 @@ index ee40e39..ed8ff38 100644
{
const FILE_ENTRY *feFrom;
const FILE_ENTRY *feTo;
@@ -1521,7 +1521,7 @@ static DWORD rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
@@ -1492,7 +1487,7 @@ static DWORD rename_files(LPSHFILEOPSTRUCTW lpFileOp, const FILE_LIST *flFrom, c
if (feTo->bExists)
return ERROR_ALREADY_EXISTS;
@ -501,7 +465,7 @@ index ee40e39..ed8ff38 100644
}
/* alert the user if an unsupported flag is used */
@@ -1568,16 +1568,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
@@ -1539,16 +1534,16 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
switch (lpFileOp->wFunc)
{
case FO_COPY:
@ -523,5 +487,5 @@ index ee40e39..ed8ff38 100644
default:
ret = ERROR_INVALID_PARAMETER;
--
2.3.0
2.3.2

View File

@ -406,7 +406,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
float scale;
union
@@ -4091,7 +4122,11 @@
@@ -4084,7 +4115,11 @@
double y_offset = context->render_offscreen
? ((63.0 / 64.0) - (2.0 * y) - h) / h
: ((63.0 / 64.0) - (2.0 * y) - h) / -h;
@ -418,7 +418,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
state->render_states[WINED3D_RS_ZENABLE] : WINED3D_ZB_FALSE;
double z_scale = zenable ? 2.0f : 0.0f;
double z_offset = zenable ? -1.0f : 0.0f;
@@ -4415,9 +4450,15 @@
@@ -4408,9 +4443,15 @@
}
}
} else {
@ -434,7 +434,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
WARN("unsupported blending in openGl\n");
}
}
@@ -4769,7 +4810,11 @@
@@ -4762,7 +4803,11 @@
static void viewport_miscpart(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
@ -446,7 +446,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
const struct wined3d_gl_info *gl_info = context->gl_info;
struct wined3d_viewport vp = state->viewport;
@@ -4947,7 +4992,11 @@
@@ -4940,7 +4985,11 @@
}
else
{
@ -458,7 +458,7 @@ diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
UINT height;
UINT width;
@@ -5011,7 +5060,11 @@
@@ -5004,7 +5053,11 @@
void state_srgbwrite(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
{
@ -1104,7 +1104,7 @@ diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -3206,6 +3206,7 @@
@@ -3227,6 +3227,7 @@
/* case WINED3D_TTFF_COUNT1: Won't ever get here. */
case WINED3D_TTFF_COUNT2:
mat[2] = mat[6] = mat[10] = mat[14] = 0;
@ -1112,7 +1112,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
/* OpenGL divides the first 3 vertex coord by the 4th by default,
* which is essentially the same as D3DTTFF_PROJECTED. Make sure that
* the 4th coord evaluates to 1.0 to eliminate that.
@@ -3218,6 +3219,20 @@
@@ -3239,6 +3240,20 @@
* A more serious problem occurs if the app passes 4 coordinates in, and the
* 4th is != 1.0(opengl default). This would have to be fixed in draw_strided_slow
* or a replacement shader. */
@ -1133,7 +1133,7 @@ diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
default:
mat[3] = mat[7] = mat[11] = 0; mat[15] = 1;
}
@@ -3484,7 +3499,11 @@
@@ -3505,7 +3520,11 @@
unsigned int i;
DWORD ttff;
DWORD cop, aop, carg0, carg1, carg2, aarg0, aarg1, aarg2;
@ -1608,7 +1608,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
}
if (stateblock->changed.indices)
@@ -1339,6 +1350,7 @@
@@ -1334,6 +1345,7 @@
state->sampler_states[i][WINED3D_SAMP_ELEMENT_INDEX] = 0;
/* TODO: Vertex offset in the presampled displacement map. */
state->sampler_states[i][WINED3D_SAMP_DMAP_OFFSET] = 0;
@ -1616,7 +1616,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
state->textures[i] = NULL;
}
@@ -1356,6 +1368,19 @@
@@ -1351,6 +1363,19 @@
unsigned int i;
state->flags = flags;
@ -1636,7 +1636,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
for (i = 0; i < LIGHTMAP_SIZE; i++)
{
@@ -1373,6 +1398,7 @@
@@ -1368,6 +1393,7 @@
return E_OUTOFMEMORY;
}
@ -1644,7 +1644,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
if (!(state->fb.render_targets = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
sizeof(*state->fb.render_targets) * gl_info->limits.buffers)))
{
@@ -1382,6 +1408,7 @@
@@ -1377,6 +1403,7 @@
}
state->fb.rt_size = gl_info->limits.buffers;
@ -1652,7 +1652,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
if (flags & WINED3D_STATE_INIT_DEFAULT)
state_init_default(state, gl_info);
@@ -1392,6 +1419,7 @@
@@ -1387,6 +1414,7 @@
struct wined3d_device *device, enum wined3d_stateblock_type type)
{
HRESULT hr;
@ -1660,7 +1660,7 @@ diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
const struct wined3d_d3d_info *d3d_info = &device->adapter->d3d_info;
@@ -1399,6 +1427,14 @@
@@ -1394,6 +1422,14 @@
stateblock->device = device;
if (FAILED(hr = state_init(&stateblock->state, gl_info, d3d_info, 0)))
@ -1751,7 +1751,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
extern struct wined3d_settings wined3d_settings DECLSPEC_HIDDEN;
@@ -995,9 +1025,14 @@
@@ -996,9 +1026,14 @@
WORD use_map; /* MAX_ATTRIBS, 16 */
};
@ -1766,7 +1766,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) DECLSPEC_HIDDEN;
#define eps 1e-8f
@@ -1082,8 +1117,10 @@
@@ -1083,8 +1118,10 @@
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -1777,7 +1777,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
union wined3d_gl_query_object
@@ -1119,6 +1156,7 @@
@@ -1120,6 +1157,7 @@
struct list entry;
GLuint id;
struct wined3d_context *context;
@ -1785,7 +1785,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
UINT64 timestamp;
};
@@ -1154,6 +1192,12 @@
@@ -1155,6 +1193,12 @@
for (i = 0; i < min(dst->rt_size, src->rt_size); i++)
dst->render_targets[i] = src->render_targets[i];
}
@ -1798,7 +1798,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_context
{
@@ -1169,7 +1213,9 @@
@@ -1170,7 +1214,9 @@
DWORD dirtyArray[STATE_HIGHEST + 1]; /* Won't get bigger than that, a state is never marked dirty 2 times */
DWORD numDirtyEntries;
DWORD isStateDirty[STATE_HIGHEST / (sizeof(DWORD) * CHAR_BIT) + 1]; /* Bitmap to find out quickly if a state is dirty */
@ -1808,7 +1808,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_swapchain *swapchain;
struct wined3d_surface *current_rt;
@@ -1268,8 +1314,17 @@
@@ -1269,8 +1315,17 @@
GLfloat fog_coord_value;
GLfloat color[4], fogstart, fogend, fogcolor[4];
GLuint dummy_arbfp_prog;
@ -1826,7 +1826,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
typedef void (*APPLYSTATEFUNC)(struct wined3d_context *ctx, const struct wined3d_state *state, DWORD state_id);
@@ -1397,8 +1452,12 @@
@@ -1398,8 +1453,12 @@
void context_apply_blit_state(struct wined3d_context *context, const struct wined3d_device *device) DECLSPEC_HIDDEN;
BOOL context_apply_clear_state(struct wined3d_context *context, const struct wined3d_device *device,
UINT rt_count, const struct wined3d_fb_state *fb) DECLSPEC_HIDDEN;
@ -1839,7 +1839,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void context_apply_fbo_state_blit(struct wined3d_context *context, GLenum target,
struct wined3d_surface *render_target, struct wined3d_surface *depth_stencil, DWORD location) DECLSPEC_HIDDEN;
void context_active_texture(struct wined3d_context *context, const struct wined3d_gl_info *gl_info,
@@ -1947,7 +2006,11 @@
@@ -1948,7 +2007,11 @@
struct wined3d_state
{
DWORD flags;
@ -1851,7 +1851,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_vertex_declaration *vertex_declaration;
struct wined3d_stream_output stream_output[MAX_STREAM_OUT];
@@ -1992,6 +2055,7 @@
@@ -1993,6 +2056,7 @@
DWORD render_states[WINEHIGHEST_RENDER_STATE + 1];
};
@ -1859,7 +1859,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_gl_bo
{
GLuint name;
@@ -2000,6 +2064,7 @@
@@ -2001,6 +2065,7 @@
UINT size;
};
@ -1867,7 +1867,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
#define WINED3D_UNMAPPED_STAGE ~0U
/* Multithreaded flag. Removed from the public header to signal that
@@ -2055,11 +2120,23 @@
@@ -2056,11 +2121,23 @@
struct wined3d_rendertarget_view *back_buffer_view;
struct wined3d_swapchain **swapchains;
UINT swapchain_count;
@ -1891,7 +1891,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* For rendering to a texture using glCopyTexImage */
GLuint depth_blt_texture;
@@ -2070,6 +2147,9 @@
@@ -2071,6 +2148,9 @@
UINT xScreenSpace;
UINT yScreenSpace;
UINT cursorWidth, cursorHeight;
@ -1901,7 +1901,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HCURSOR hardwareCursor;
/* The Wine logo texture */
@@ -2101,6 +2181,7 @@
@@ -2102,6 +2182,7 @@
UINT message, WPARAM wparam, LPARAM lparam, WNDPROC proc) DECLSPEC_HIDDEN;
void device_resource_add(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@ -1909,7 +1909,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN;
void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN;
void device_exec_update_texture(struct wined3d_context *context, struct wined3d_texture *src_texture,
@@ -2112,6 +2193,11 @@
@@ -2113,6 +2194,11 @@
void device_create_dummy_textures(struct wined3d_device *device, struct wined3d_context *context) DECLSPEC_HIDDEN;
void device_delete_opengl_contexts_cs(struct wined3d_device *device,
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
@ -1921,7 +1921,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
{
@@ -2135,9 +2221,11 @@
@@ -2136,9 +2222,11 @@
ULONG (*resource_incref)(struct wined3d_resource *resource);
ULONG (*resource_decref)(struct wined3d_resource *resource);
void (*resource_unload)(struct wined3d_resource *resource);
@ -1933,7 +1933,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_resource
@@ -2160,6 +2248,7 @@
@@ -2161,6 +2249,7 @@
UINT depth;
UINT size;
DWORD priority;
@ -1941,7 +1941,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *heap_memory, *map_heap_memory, *user_memory, *bitmap_data;
UINT custom_row_pitch, custom_slice_pitch;
struct wined3d_gl_bo *buffer, *map_buffer;
@@ -2167,6 +2256,11 @@
@@ -2168,6 +2257,11 @@
DWORD locations;
LONG access_fence;
BOOL unmap_dirtify;
@ -1953,7 +1953,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *parent;
const struct wined3d_parent_ops *parent_ops;
@@ -2191,6 +2285,7 @@
@@ -2192,6 +2286,7 @@
void *parent, const struct wined3d_parent_ops *parent_ops,
const struct wined3d_resource_ops *resource_ops) DECLSPEC_HIDDEN;
void resource_unload(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@ -1961,7 +1961,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
DWORD wined3d_resource_access_from_location(DWORD location) DECLSPEC_HIDDEN;
BOOL wined3d_resource_allocate_sysmem(struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void wined3d_resource_changed(struct wined3d_resource *resource,
@@ -2237,6 +2332,15 @@
@@ -2238,6 +2333,15 @@
{
while(InterlockedCompareExchange(&resource->access_fence, 0, 0));
}
@ -1977,7 +1977,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* Tests show that the start address of resources is 32 byte aligned */
#define RESOURCE_ALIGNMENT 16
@@ -2314,7 +2418,9 @@
@@ -2315,7 +2419,9 @@
void wined3d_texture_apply_sampler_desc(struct wined3d_texture *texture,
const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_gl_info *gl_info) DECLSPEC_HIDDEN;
@ -1987,7 +1987,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_texture_bind(struct wined3d_texture *texture,
struct wined3d_context *context, BOOL srgb) DECLSPEC_HIDDEN;
void wined3d_texture_bind_and_dirtify(struct wined3d_texture *texture,
@@ -2348,9 +2454,16 @@
@@ -2349,9 +2455,16 @@
struct wined3d_resource resource;
struct wined3d_texture *container;
@ -2004,7 +2004,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
static inline struct wined3d_volume *volume_from_resource(struct wined3d_resource *resource)
@@ -2358,6 +2471,7 @@
@@ -2359,6 +2472,7 @@
return CONTAINING_RECORD(resource, struct wined3d_volume, resource);
}
@ -2012,7 +2012,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT wined3d_volume_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc,
unsigned int level, struct wined3d_volume **volume) DECLSPEC_HIDDEN;
void wined3d_volume_destroy(struct wined3d_volume *volume) DECLSPEC_HIDDEN;
@@ -2370,6 +2484,23 @@
@@ -2371,6 +2485,23 @@
struct wined3d_surface_dib
{
HBITMAP DIBsection;
@ -2036,7 +2036,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
UINT bitmap_size;
};
@@ -2395,7 +2526,11 @@
@@ -2396,7 +2527,11 @@
struct wined3d_surface_ops
{
HRESULT (*surface_private_setup)(struct wined3d_surface *surface);
@ -2048,7 +2048,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_surface
@@ -2403,12 +2538,25 @@
@@ -2404,12 +2539,25 @@
struct wined3d_resource resource;
const struct wined3d_surface_ops *surface_ops;
struct wined3d_texture *container;
@ -2074,7 +2074,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
GLuint rb_multisample;
GLuint rb_resolved;
GLenum texture_target;
@@ -2452,10 +2600,19 @@
@@ -2453,10 +2601,19 @@
GLenum surface_get_gl_buffer(const struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context,
unsigned int *width, unsigned int *height) DECLSPEC_HIDDEN;
@ -2094,7 +2094,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void surface_modify_ds_location(struct wined3d_surface *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN;
void surface_prepare_rb(struct wined3d_surface *surface,
const struct wined3d_gl_info *gl_info, BOOL multisample) DECLSPEC_HIDDEN;
@@ -2467,6 +2624,7 @@
@@ -2468,6 +2625,7 @@
const struct wined3d_gl_info *gl_info, void *mem, unsigned int pitch) DECLSPEC_HIDDEN;
HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point,
struct wined3d_surface *src_surface, const RECT *src_rect) DECLSPEC_HIDDEN;
@ -2102,7 +2102,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc,
GLenum target, unsigned int level, unsigned int layer, DWORD flags,
struct wined3d_surface **surface) DECLSPEC_HIDDEN;
@@ -2485,6 +2643,21 @@
@@ -2486,6 +2644,21 @@
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
void surface_flip(struct wined3d_surface *front, struct wined3d_surface *back) DECLSPEC_HIDDEN;
@ -2124,7 +2124,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* Surface flags: */
#define SFLAG_DIBSECTION 0x00000001 /* Has a DIB section attached for GetDC. */
@@ -2530,8 +2703,10 @@
@@ -2531,8 +2704,10 @@
BOOL half_float_conv_needed;
};
@ -2135,7 +2135,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_saved_states
{
DWORD transform[(HIGHEST_TRANSFORMSTATE >> 5) + 1];
@@ -2599,6 +2774,7 @@
@@ -2600,6 +2775,7 @@
void stateblock_init_contained_states(struct wined3d_stateblock *stateblock) DECLSPEC_HIDDEN;
void state_cleanup(struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -2143,7 +2143,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
HRESULT state_init(struct wined3d_state *state, const struct wined3d_gl_info *gl_info,
const struct wined3d_d3d_info *d3d_info, DWORD flags) DECLSPEC_HIDDEN;
void state_unbind_resources(struct wined3d_state *state) DECLSPEC_HIDDEN;
@@ -2649,6 +2825,32 @@
@@ -2650,6 +2826,32 @@
void wined3d_cs_destroy(struct wined3d_cs *cs) DECLSPEC_HIDDEN;
void wined3d_cs_switch_onscreen_ds(struct wined3d_cs *cs, struct wined3d_context *context,
struct wined3d_surface *depth_stencil) DECLSPEC_HIDDEN;
@ -2176,7 +2176,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_clear(struct wined3d_cs *cs, DWORD rect_count, const RECT *rects,
DWORD flags, const struct wined3d_color *color, float depth, DWORD stencil) DECLSPEC_HIDDEN;
@@ -2696,6 +2898,7 @@
@@ -2697,6 +2899,7 @@
void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
struct wined3d_vertex_declaration *declaration) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;
@ -2184,7 +2184,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, const float *constants,
UINT vector4f_count, enum wined3d_shader_type type) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_consts_b(struct wined3d_cs *cs, UINT start_register,
@@ -2755,6 +2958,7 @@
@@ -2756,6 +2959,7 @@
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void wined3d_cs_emit_getdc(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void wined3d_cs_emit_releasedc(struct wined3d_cs *cs, struct wined3d_surface *surface) DECLSPEC_HIDDEN;
@ -2192,7 +2192,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
@@ -2769,8 +2973,12 @@
@@ -2770,8 +2974,12 @@
struct wined3d_query_ops
{
HRESULT (*query_get_data)(struct wined3d_query *query, void *data, DWORD data_size, DWORD flags);
@ -2205,7 +2205,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_query
@@ -2784,12 +2992,16 @@
@@ -2785,12 +2993,16 @@
enum wined3d_query_type type;
DWORD data_size;
void *extendedData;
@ -2222,7 +2222,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/* TODO: Add tests and support for FLOAT16_4 POSITIONT, D3DCOLOR position, other
* fixed function semantics as D3DCOLOR or FLOAT16 */
@@ -2816,7 +3028,9 @@
@@ -2817,7 +3029,9 @@
GLenum buffer_object_usage;
GLenum buffer_type_hint;
DWORD flags;
@ -2232,7 +2232,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
void *map_ptr;
struct wined3d_map_range *maps;
@@ -2841,11 +3055,15 @@
@@ -2842,11 +3056,15 @@
BYTE *buffer_get_sysmem(struct wined3d_buffer *This, struct wined3d_context *context) DECLSPEC_HIDDEN;
void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_context *context,
const struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -2248,7 +2248,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_rendertarget_view
{
@@ -2883,8 +3101,10 @@
@@ -2884,8 +3102,10 @@
return surface_from_resource(resource);
}
@ -2259,7 +2259,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
struct wined3d_shader_resource_view
{
LONG refcount;
@@ -2897,8 +3117,12 @@
@@ -2898,8 +3118,12 @@
struct wined3d_swapchain_ops
{
void (*swapchain_present)(struct wined3d_swapchain *swapchain, const RECT *src_rect,
@ -2272,7 +2272,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
};
struct wined3d_swapchain
@@ -2938,8 +3162,10 @@
@@ -2939,8 +3163,10 @@
HDC swapchain_get_backup_dc(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void swapchain_update_draw_bindings(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void swapchain_update_render_to_fbo(struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
@ -2283,7 +2283,7 @@ diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
/*****************************************************************************
* Utility function prototypes
@@ -3158,7 +3384,9 @@
@@ -3157,7 +3383,9 @@
void shader_generate_main(const struct wined3d_shader *shader, struct wined3d_shader_buffer *buffer,
const struct wined3d_shader_reg_maps *reg_maps, const DWORD *byte_code, void *backend_ctx) DECLSPEC_HIDDEN;
BOOL shader_match_semantic(const char *semantic_name, enum wined3d_decl_usage usage) DECLSPEC_HIDDEN;
@ -4508,7 +4508,7 @@ diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
--- a/dlls/wined3d/glsl_shader.c
+++ b/dlls/wined3d/glsl_shader.c
@@ -950,8 +950,15 @@
@@ -961,8 +961,15 @@
const struct wined3d_shader_reg_maps *reg_maps, const struct shader_glsl_ctx_priv *ctx_priv)
{
const struct wined3d_shader_version *version = &reg_maps->shader_version;
@ -4524,7 +4524,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
unsigned int i, extra_constants_needed = 0;
const struct wined3d_shader_lconst *lconst;
const char *prefix;
@@ -1189,7 +1196,11 @@
@@ -1200,7 +1207,11 @@
{
UINT in_count = min(vec4_varyings(version->major, gl_info), shader->limits->packed_input);
@ -4536,7 +4536,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
shader_addline(buffer, "varying vec4 %s_link[%u];\n", prefix, in_count);
shader_addline(buffer, "vec4 %s_in[%u];\n", prefix, in_count);
}
@@ -1230,6 +1241,7 @@
@@ -1241,6 +1252,7 @@
}
else
{
@ -4544,7 +4544,7 @@ diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c
/* This happens because we do not have proper tracking of the
* constant registers that are actually used, only the max
* limit of the shader version.
@@ -1238,6 +1250,23 @@
@@ -1249,6 +1261,23 @@
* it and just create the uniform.
*/
FIXME("Cannot find a free uniform for vpos correction params\n");

View File

@ -1,54 +0,0 @@
From 67e51503f973289b85c526eb05d76d78f7bd337e Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Sat, 3 Jan 2015 19:11:40 +0100
Subject: ntdll: Handle write watches in virtual_uninterrupted_write_memory.
---
dlls/ntdll/virtual.c | 30 +++++++++++++++++++++++++-----
1 file changed, 25 insertions(+), 5 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index 4c4c05d..8823164 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1730,12 +1730,32 @@ SIZE_T virtual_uninterrupted_write_memory( void *addr, const void *buffer, SIZE_
{
if (!(view->protect & VPROT_SYSTEM))
{
- void *page = ROUND_ADDR( addr, page_mask );
- BYTE *p = view->prot + (((const char *)page - (const char *)view->base) >> page_shift);
-
- while (bytes_written < size && (VIRTUAL_GetUnixProt( *p++ ) & PROT_WRITE))
+ while (bytes_written < size)
{
- SIZE_T block_size = min( size, page_size - ((UINT_PTR)addr & page_mask) );
+ void *page = ROUND_ADDR( addr, page_mask );
+ BYTE *p = view->prot + (((const char *)page - (const char *)view->base) >> page_shift);
+ SIZE_T block_size;
+
+ /* If the page is not writeable then check for write watches
+ * before giving up. This can be done without raising a real
+ * exception. Similar to virtual_handle_fault, but we can't
+ * handle guard pages here. */
+ if (!(VIRTUAL_GetUnixProt( *p ) & PROT_WRITE))
+ {
+ if (!(view->protect & VPROT_WRITEWATCH))
+ break;
+
+ if (*p & VPROT_WRITEWATCH)
+ {
+ *p &= ~VPROT_WRITEWATCH;
+ VIRTUAL_SetProt( view, page, page_size, *p );
+ }
+ /* ignore fault if page is writable now */
+ if (!(VIRTUAL_GetUnixProt( *p ) & PROT_WRITE))
+ break;
+ }
+
+ block_size = min( size, page_size - ((UINT_PTR)addr & page_mask) );
memcpy( addr, buffer, block_size );
addr = (void *)((char *)addr + block_size);
--
2.2.1