Compare commits

...

37 Commits
v8.8 ... v8.11

Author SHA1 Message Date
Alistair Leslie-Hughes
fcff74d6c6 Release v8.11 2023-06-25 10:25:00 +10:00
Alistair Leslie-Hughes
22ba0ef2a3 Added ntdll_reg_flush patchset 2023-06-24 10:47:34 +10:00
Alistair Leslie-Hughes
95679a2f40 Added winemenubuilder-associations patchset 2023-06-24 09:47:29 +10:00
Alistair Leslie-Hughes
a7a75d0d06 Updated vkd3d-latest to 1.8 2023-06-23 14:16:58 +10:00
Alistair Leslie-Hughes
e930be3974 Rebase against 9285aa5bb1338d8e2c1ac6b95974182b3f4881a9. 2023-06-23 14:14:59 +10:00
Alistair Leslie-Hughes
d7080ec990 Rebase against 81859c9af70aa5ed6da3060488d1815a3607c291. 2023-06-22 14:19:23 +10:00
Alistair Leslie-Hughes
22d9eec489 Rebase against 5da3827d863ae43f8367cdafbeba73cec7cdee3d. 2023-06-21 08:23:37 +10:00
Alistair Leslie-Hughes
eb5a19f4fd Rebase against 272f712b605174e946da1dc65f927a23ee92a572. 2023-06-16 08:55:47 +10:00
Alistair Leslie-Hughes
db6b479557 Rebase against 766448f8ffe51b83105bd0795a5cbc7b8f7c8894. 2023-06-14 10:59:42 +10:00
Alistair Leslie-Hughes
f14d68c258 Drop winemenubuilder-Desktop_Icon_Path patchset 2023-06-13 14:04:26 +10:00
Alistair Leslie-Hughes
117d2b2107 Rebase against c7431990d815e664cf22267142b76cc59f21d192. 2023-06-13 14:03:24 +10:00
Dmitry Timoshkov
8273be2218 Updated gdiplus-Performance-Improvements patchset. 2023-06-13 07:55:27 +10:00
Alistair Leslie-Hughes
adda594159 Release v8.10 2023-06-10 15:46:29 +10:00
Alistair Leslie-Hughes
710e29cc68 Updated vkd3d-latest patchset 2023-06-10 10:59:31 +10:00
Alistair Leslie-Hughes
6c167535e3 Added dnsapi_dns_records patchset 2023-06-09 14:43:49 +10:00
Aida JonikenÄ—
e9b0c33d65 msxml3-FreeThreadedXMLHTTP60: Initialize request_body_size when creating the XML HTTP request.
This fixes a crash in TeamTalk 5.
2023-06-08 12:35:13 -05:00
Alistair Leslie-Hughes
d44a516142 Updated vkd3d-latest patchset 2023-06-08 14:12:14 +10:00
Alistair Leslie-Hughes
453c5cda07 Added oleaut32-default-pic-size patchset 2023-06-08 13:27:09 +10:00
Alistair Leslie-Hughes
d3d87f1a2c Rebase against 07d0f1f0c0bbd744f5f107f82b702a891e41c2eb. 2023-06-08 09:21:24 +10:00
Alistair Leslie-Hughes
42e2a72d37 Added d3dx9-sprite-state patchset 2023-06-07 08:26:53 +10:00
Alistair Leslie-Hughes
d7bbcc7ad9 Updated vkd3d-latest 2023-06-07 08:13:06 +10:00
Alistair Leslie-Hughes
4625289771 Updated vkd3d-latest patchset 2023-06-02 10:31:36 +10:00
Alistair Leslie-Hughes
cda4a1e125 Updated winex11-_NET_ACTIVE_WINDOW patchset 2023-06-02 09:14:30 +10:00
Alistair Leslie-Hughes
1039d808e2 Rebase against 6b0836e3f157318b00effc1de563da4d4b0d16b8. 2023-06-01 14:58:39 +10:00
Alistair Leslie-Hughes
6173bd8b0d Rebase against 7ed63c30e8dee3509c52e11230470be2dcfe6cf5. 2023-05-31 11:01:58 +10:00
Zebediah Figura
ba6e2398d7 Rebase against d0d472bb3e8680e286e404a73fceb29cebe85b73. 2023-05-29 16:33:43 -05:00
Alistair Leslie-Hughes
2dcacd0dbf Release v8.9.1 2023-05-29 07:26:53 +10:00
Alistair Leslie-Hughes
1039396c8e Updated vkd3d-latest patchset
Fix the mingw mac build.
2023-05-28 21:36:15 +10:00
Alistair Leslie-Hughes
f8cc3baab3 Release v8.9 2023-05-28 14:38:27 +10:00
Alistair Leslie-Hughes
7665942477 Added vkd3d-latest patchset 2023-05-28 11:14:22 +10:00
Alistair Leslie-Hughes
0cd181d0ce Rebase against c293cd781fb4b330b7d93171501134f86a5138b8. 2023-05-26 09:22:33 +10:00
Alistair Leslie-Hughes
a580edefe1 Rebase against e10da7ab2e3d151c8347802600862aa608672f6f. 2023-05-25 10:07:30 +10:00
Alistair Leslie-Hughes
fe6cfefe64 Add release script 2023-05-24 12:07:27 +10:00
Alistair Leslie-Hughes
6900845545 Rebase against f266dc094a9b4fbe95792ed706891609901834e3. 2023-05-24 12:06:20 +10:00
Paul Gofman
3e3ebf5cfc Update and reenable ntdll-ForceBottomUpAlloc. 2023-05-19 13:48:16 -06:00
Paul Gofman
f48794a9ce Update and reenable ntdll-Placeholders. 2023-05-19 13:45:49 -06:00
Alistair Leslie-Hughes
27397d1764 Rebase against d54e7cd51db7d3def7dab549a547b1b6bf7573e2. 2023-05-16 10:07:12 +10:00
83 changed files with 33258 additions and 2027 deletions

View File

@@ -0,0 +1,127 @@
From cf47173eec41f4427248796a781e3aa4463a79db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=C5=82=20Mu=C5=BCy=C5=82o?= <galtgendo@o2.pl>
Date: Wed, 7 Jun 2023 08:17:59 +1000
Subject: [PATCH] d3dx9: Improve handling of Sprite render states
---
dlls/d3dx9_36/sprite.c | 76 +++++++++++++++++++++++-------------------
1 file changed, 41 insertions(+), 35 deletions(-)
diff --git a/dlls/d3dx9_36/sprite.c b/dlls/d3dx9_36/sprite.c
index 1a072e52cda..0ce2ab977f3 100644
--- a/dlls/d3dx9_36/sprite.c
+++ b/dlls/d3dx9_36/sprite.c
@@ -193,7 +193,7 @@ static HRESULT WINAPI d3dx9_sprite_SetWorldViewLH(ID3DXSprite *iface,
}
/* Helper function */
-static void set_states(struct d3dx9_sprite *object)
+static void set_states(struct d3dx9_sprite *object, DWORD flags)
{
D3DXMATRIX mat;
D3DVIEWPORT9 vp;
@@ -204,32 +204,35 @@ static void set_states(struct d3dx9_sprite *object)
IDirect3DDevice9_SetNPatchMode(object->device, 0.0f);
/* Render states */
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHABLENDENABLE, TRUE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAFUNC, D3DCMP_GREATER);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAREF, 0x00);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHATESTENABLE, object->alphacmp_caps);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_BLENDOP, D3DBLENDOP_ADD);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPING, TRUE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPLANEENABLE, 0);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA | D3DCOLORWRITEENABLE_BLUE |
- D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_RED);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_CULLMODE, D3DCULL_NONE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_ENABLEADAPTIVETESSELLATION, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_FILLMODE, D3DFILL_SOLID);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_FOGENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_LIGHTING, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_RANGEFOGENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SEPARATEALPHABLENDENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SPECULARENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRGBWRITEENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_STENCILENABLE, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_VERTEXBLEND, FALSE);
- IDirect3DDevice9_SetRenderState(object->device, D3DRS_WRAP0, 0);
+ if (!(flags & D3DXSPRITE_DONOTMODIFY_RENDERSTATE))
+ {
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHABLENDENABLE, TRUE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAFUNC, D3DCMP_GREATER);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHAREF, 0x00);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ALPHATESTENABLE, object->alphacmp_caps);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_BLENDOP, D3DBLENDOP_ADD);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPING, TRUE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_CLIPPLANEENABLE, 0);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_ALPHA | D3DCOLORWRITEENABLE_BLUE |
+ D3DCOLORWRITEENABLE_GREEN | D3DCOLORWRITEENABLE_RED);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_CULLMODE, D3DCULL_NONE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_ENABLEADAPTIVETESSELLATION, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_FILLMODE, D3DFILL_SOLID);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_FOGENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_LIGHTING, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_RANGEFOGENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SEPARATEALPHABLENDENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SPECULARENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_SRGBWRITEENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_STENCILENABLE, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_VERTEXBLEND, FALSE);
+ IDirect3DDevice9_SetRenderState(object->device, D3DRS_WRAP0, 0);
+ }
/* Texture stage states */
IDirect3DDevice9_SetTextureStageState(object->device, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
@@ -266,12 +269,15 @@ static void set_states(struct d3dx9_sprite *object)
IDirect3DDevice9_SetSamplerState(object->device, 0, D3DSAMP_SRGBTEXTURE, 0);
/* Matrices */
- D3DXMatrixIdentity(&mat);
- IDirect3DDevice9_SetTransform(object->device, D3DTS_WORLD, &mat);
- IDirect3DDevice9_SetTransform(object->device, D3DTS_VIEW, &object->view);
- IDirect3DDevice9_GetViewport(object->device, &vp);
- D3DXMatrixOrthoOffCenterLH(&mat, vp.X+0.5f, (float)vp.Width+vp.X+0.5f, (float)vp.Height+vp.Y+0.5f, vp.Y+0.5f, vp.MinZ, vp.MaxZ);
- IDirect3DDevice9_SetTransform(object->device, D3DTS_PROJECTION, &mat);
+ if (!(flags & D3DXSPRITE_OBJECTSPACE))
+ {
+ D3DXMatrixIdentity(&mat);
+ IDirect3DDevice9_SetTransform(object->device, D3DTS_WORLD, &mat);
+ IDirect3DDevice9_SetTransform(object->device, D3DTS_VIEW, &object->view);
+ IDirect3DDevice9_GetViewport(object->device, &vp);
+ D3DXMatrixOrthoOffCenterLH(&mat, vp.X+0.5f, (float)vp.Width+vp.X+0.5f, (float)vp.Height+vp.Y+0.5f, vp.Y+0.5f, vp.MinZ, vp.MaxZ);
+ IDirect3DDevice9_SetTransform(object->device, D3DTS_PROJECTION, &mat);
+ }
}
static HRESULT WINAPI d3dx9_sprite_Begin(ID3DXSprite *iface, DWORD flags)
@@ -317,7 +323,7 @@ D3DXSPRITE_SORT_TEXTURE: sort by texture (so that it doesn't change too often)
hr=IDirect3DDevice9_BeginStateBlock(This->device);
if(hr!=D3D_OK) return hr;
- set_states(This);
+ set_states(This, flags);
IDirect3DDevice9_SetVertexDeclaration(This->device, This->vdecl);
IDirect3DDevice9_SetStreamSource(This->device, 0, NULL, 0, sizeof(struct sprite_vertex));
@@ -330,7 +336,7 @@ D3DXSPRITE_SORT_TEXTURE: sort by texture (so that it doesn't change too often)
}
/* Apply device state */
- set_states(This);
+ set_states(This, flags);
This->flags=flags;
This->ready=TRUE;
--
2.40.1

View File

@@ -0,0 +1 @@
Fixes: [54034] d3dx9: Improve sprite rendering state handling.

View File

@@ -1,4 +1,4 @@
From f78fc333748a6c4f664bb10ee2115c86690b3b16 Mon Sep 17 00:00:00 2001
From e9f5c886b6b40ca77eb1dd7f0d21bbdc483b7a95 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Mon, 6 Oct 2014 05:06:06 +0200
Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR.
@@ -9,12 +9,12 @@ Subject: [PATCH] dbghelp: Always check for debug symbols in BINDIR.
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/dlls/dbghelp/Makefile.in b/dlls/dbghelp/Makefile.in
index 22be2612eeb..2e11bb2b62d 100644
index 74647820126..9f0aad2fc4f 100644
--- a/dlls/dbghelp/Makefile.in
+++ b/dlls/dbghelp/Makefile.in
@@ -2,7 +2,7 @@ MODULE = dbghelp.dll
IMPORTLIB = dbghelp
IMPORTS = $(ZLIB_PE_LIBS)
IMPORTS = kernelbase $(ZLIB_PE_LIBS)
EXTRAINCL = $(ZLIB_PE_CFLAGS)
-EXTRADEFS = -D_IMAGEHLP_SOURCE_
+EXTRADEFS = -D_IMAGEHLP_SOURCE_ -DBINDIR="L\"${bindir}\""
@@ -22,10 +22,10 @@ index 22be2612eeb..2e11bb2b62d 100644
C_SRCS = \
diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c
index 3c1e225e195..4468f7fa4ed 100644
index a2a60752a68..a2bca11048f 100644
--- a/dlls/dbghelp/elf_module.c
+++ b/dlls/dbghelp/elf_module.c
@@ -1445,6 +1445,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
@@ -1457,6 +1457,7 @@ static BOOL elf_search_and_load_file(struct process* pcs, const WCHAR* filename,
load_elf.elf_info = elf_info;
ret = search_unix_path(filename, process_getenv(pcs, L"LD_LIBRARY_PATH"), elf_load_file_cb, &load_elf)
@@ -34,5 +34,5 @@ index 3c1e225e195..4468f7fa4ed 100644
}
--
2.39.1
2.40.1

View File

@@ -0,0 +1,96 @@
From fcf816014b4f7ce60b544f5a50a5a88ade3b055b Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 1 Jun 2023 14:30:10 +0300
Subject: [PATCH] dnsapi/tests: Add some tests for DNS_TYPE_SRV messages.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/dnsapi/tests/record.c | 65 ++++++++++++++++++++++++++++++++++++++
1 file changed, 65 insertions(+)
diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c
index 20738de3618..8abcdadaacc 100644
--- a/dlls/dnsapi/tests/record.c
+++ b/dlls/dnsapi/tests/record.c
@@ -193,6 +193,28 @@ static BYTE msg_types[] = /* various record types */
/* KEY */ 0xc0, 0x0c, 0x00, 0x19, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x00, 0x06, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
/* TXT */ 0x01, 't', 0x01, 'x', 0x00, 0x00, 0x10, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x00, 0x09, 0x02, 'z', 'y', 0x00, 0x04, 'X', 'Y', 0xc3, 0xa9
};
+static BYTE msg_question_srv[] = /* SRV question only */
+{
+ 0x12, 0x34, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 5,'_','l','d','a','p',4,'_','t','c','p',2,'d','c',6,'_','m','s','d','c','s',6,'w','i','n','e','h','q',3,'o','r','g',0x00,0x00,0x00,0x21,0x00
+};
+static BYTE msg_answer_srv[] = /* SRV answer only */
+{
+ 0x12, 0x34, 0x81, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 5,'_','l','d','a','p',4,'_','t','c','p',2,'d','c',6,'_','m','s','d','c','s',6,'w','i','n','e','h','q',3,'o','r','g',0x00,
+ 0x00,0x21,0x00,0x01,0x04,0x05,0x06,0x07,
+ 0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x85,
+ 2,'d','c',6,'w','i','n','e','h','q',3,'o','r','g',0x00
+};
+static BYTE msg_full_srv[] = /* SRV question + answer */
+{
+ 0x12, 0x34, 0x81, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 5,'_','l','d','a','p',4,'_','t','c','p',2,'d','c',6,'_','m','s','d','c','s',6,'w','i','n','e','h','q',3,'o','r','g',0x00,
+ 0x00,0x21,0x00,0x01,
+ 0xc0,0x0c,0x00,0x21,0x00,0x01,0x04,0x05,0x06,0x07,
+ 0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x85,
+ 2,'d','c',6,'w','i','n','e','h','q',3,'o','r','g',0x00
+};
static void test_DnsExtractRecordsFromMessage(void)
{
@@ -200,6 +222,49 @@ static void test_DnsExtractRecordsFromMessage(void)
DNS_RECORDA *rec, *r;
DNS_RECORDW *recW, *rW;
+ rec = NULL;
+ ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_full_srv, sizeof(msg_full_srv), &rec );
+ todo_wine
+ ok( !ret, "failed %ld\n", ret );
+ todo_wine
+ ok( rec != NULL, "record not set\n" );
+ if (!rec) goto next;
+ ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
+ ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
+ ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
+ ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
+ todo_wine
+ ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
+ ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
+ ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
+ ok( !rec->pNext, "next record %p\n", rec->pNext );
+ DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
+
+next:
+ rec = (void *)0xdeadbeef;
+ ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_question_srv, sizeof(msg_question_srv), &rec );
+ ok( !ret, "failed %ld\n", ret );
+ ok( !rec, "record %p\n", rec );
+
+ rec = NULL;
+ ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_answer_srv, sizeof(msg_answer_srv), &rec );
+ todo_wine
+ ok( !ret, "failed %ld\n", ret );
+ todo_wine
+ ok( rec != NULL, "record not set\n" );
+ if (!rec) goto next2;
+ ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
+ ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
+ ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
+ ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
+ todo_wine
+ ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
+ ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
+ ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
+ ok( !rec->pNext, "next record %p\n", rec->pNext );
+ DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
+
+next2:
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_empty, sizeof(msg_empty) - 1, &rec );
ok( ret == ERROR_INVALID_PARAMETER || broken(ret == DNS_ERROR_BAD_PACKET) /* win7 */,
"failed %ld\n", ret );
--
2.40.1

View File

@@ -0,0 +1,72 @@
From 3c5ac02e18d5898d68c01f6a58996dc47e5582db Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 1 Jun 2023 14:32:55 +0300
Subject: [PATCH] dnsapi: Accept name records of exact size at the end of the
packet.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/dnsapi/record.c | 2 +-
dlls/dnsapi/tests/record.c | 8 --------
2 files changed, 1 insertion(+), 9 deletions(-)
diff --git a/dlls/dnsapi/record.c b/dlls/dnsapi/record.c
index 01786842b73..cfd55a44852 100644
--- a/dlls/dnsapi/record.c
+++ b/dlls/dnsapi/record.c
@@ -199,7 +199,7 @@ static const BYTE *get_name( const BYTE *base, const BYTE *end, const BYTE *ptr,
return NULL;
}
}
- if (ptr >= end) return NULL;
+ if (ptr > end) return NULL;
if (out == name) *out++ = '.';
*out = 0;
return next ? next : ptr;
diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c
index 8abcdadaacc..340d10f6024 100644
--- a/dlls/dnsapi/tests/record.c
+++ b/dlls/dnsapi/tests/record.c
@@ -224,11 +224,8 @@ static void test_DnsExtractRecordsFromMessage(void)
rec = NULL;
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_full_srv, sizeof(msg_full_srv), &rec );
- todo_wine
ok( !ret, "failed %ld\n", ret );
- todo_wine
ok( rec != NULL, "record not set\n" );
- if (!rec) goto next;
ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
@@ -240,7 +237,6 @@ static void test_DnsExtractRecordsFromMessage(void)
ok( !rec->pNext, "next record %p\n", rec->pNext );
DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
-next:
rec = (void *)0xdeadbeef;
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_question_srv, sizeof(msg_question_srv), &rec );
ok( !ret, "failed %ld\n", ret );
@@ -248,11 +244,8 @@ next:
rec = NULL;
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_answer_srv, sizeof(msg_answer_srv), &rec );
- todo_wine
ok( !ret, "failed %ld\n", ret );
- todo_wine
ok( rec != NULL, "record not set\n" );
- if (!rec) goto next2;
ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
@@ -264,7 +257,6 @@ next:
ok( !rec->pNext, "next record %p\n", rec->pNext );
DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
-next2:
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_empty, sizeof(msg_empty) - 1, &rec );
ok( ret == ERROR_INVALID_PARAMETER || broken(ret == DNS_ERROR_BAD_PACKET) /* win7 */,
"failed %ld\n", ret );
--
2.40.1

View File

@@ -0,0 +1,49 @@
From 623038324e863d3438243f75f5726291e5ee3ac2 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Thu, 1 Jun 2023 14:48:23 +0300
Subject: [PATCH] dnsapi: Set correct wDataLength for DNS_TYPE_SRV records.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/dnsapi/record.c | 4 ++++
dlls/dnsapi/tests/record.c | 2 --
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/dlls/dnsapi/record.c b/dlls/dnsapi/record.c
index cfd55a44852..1b4cbfeac0f 100644
--- a/dlls/dnsapi/record.c
+++ b/dlls/dnsapi/record.c
@@ -1046,6 +1046,10 @@ static DNS_STATUS extract_rdata( const BYTE *base, const BYTE *end, const BYTE *
if (!get_name( base, end, pos, name )) return DNS_ERROR_BAD_PACKET;
if (!(r->Data.SRV.pNameTarget = strdupX( name, in, out ))) return ERROR_NOT_ENOUGH_MEMORY;
r->wDataLength = sizeof(DNS_SRV_DATAA);
+ if (out == DnsCharSetUnicode)
+ r->wDataLength += (wcslen( (const WCHAR *)r->Data.SRV.pNameTarget ) + 1) * sizeof(WCHAR);
+ else
+ r->wDataLength += strlen( r->Data.SRV.pNameTarget ) + 1;
break;
case DNS_TYPE_HINFO:
diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c
index 340d10f6024..d340c064554 100644
--- a/dlls/dnsapi/tests/record.c
+++ b/dlls/dnsapi/tests/record.c
@@ -230,7 +230,6 @@ static void test_DnsExtractRecordsFromMessage(void)
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
- todo_wine
ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
@@ -250,7 +249,6 @@ static void test_DnsExtractRecordsFromMessage(void)
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
- todo_wine
ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
--
2.40.1

View File

@@ -0,0 +1 @@
Fixes: [54998] - DnsQuery(DNS_TYPE_SRV) fails to parse some of the server answers

View File

@@ -1,4 +1,4 @@
From f4e3bbf1a91a5a99d703d3fee9a81a5c5089ab79 Mon Sep 17 00:00:00 2001
From 5bc649eecc617214650f5af105f3ae6b6fae5a11 Mon Sep 17 00:00:00 2001
From: Mark Harmstone <mark@harmstone.com>
Date: Fri, 27 Mar 2015 20:48:19 +0000
Subject: [PATCH] dsound: Support getting and setting EAX buffer properties.
@@ -11,12 +11,12 @@ Subject: [PATCH] dsound: Support getting and setting EAX buffer properties.
4 files changed, 72 insertions(+)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index b7a0fb26c4b..0aff7c96842 100644
index 5c8c495bfe4..ede6d9f1ba1 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1127,6 +1127,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
return DSERR_OUTOFMEMORY;
}
@@ -1107,6 +1107,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
dsb->sec_mixpos = 0;
dsb->state = STATE_STOPPED;
+ dsb->eax.reverb_mix = EAX_REVERBMIX_USEDISTANCE;
+
@@ -39,7 +39,7 @@ index c90d82d9a3f..2ee83b94ff9 100644
}
#endif
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index a11379f0f88..9b537ad80a5 100644
index 021844c414d..7a89b047b42 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -177,6 +177,8 @@ struct IDirectSoundBufferImpl
@@ -52,7 +52,7 @@ index a11379f0f88..9b537ad80a5 100644
};
diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c
index cdd03becbee..3931681d295 100644
index 13471aec3a9..03b6e0a9813 100644
--- a/dlls/dsound/eax.c
+++ b/dlls/dsound/eax.c
@@ -178,6 +178,38 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
@@ -134,5 +134,5 @@ index cdd03becbee..3931681d295 100644
}
--
2.33.0
2.40.1

View File

@@ -1,4 +1,4 @@
From 42c58e406220e9351337b079ae44364fbc39365d Mon Sep 17 00:00:00 2001
From e484e3dc512eacc9708c245a9e64372428bc1875 Mon Sep 17 00:00:00 2001
From: Mark Harmstone <mark@harmstone.com>
Date: Fri, 27 Mar 2015 20:58:37 +0000
Subject: [PATCH] dsound: Add EAX init and free stubs.
@@ -10,11 +10,11 @@ Subject: [PATCH] dsound: Add EAX init and free stubs.
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index 22b23c9f877..72e96765883 100644
index ede6d9f1ba1..309d632397a 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1152,6 +1152,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
DSOUND_RecalcVolPan(&(dsb->volpan));
@@ -1145,6 +1145,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
}
InitializeSRWLock(&dsb->lock);
+ if (dsb->device->eax.using_eax)
@@ -22,7 +22,7 @@ index 22b23c9f877..72e96765883 100644
/* register buffer */
err = DirectSoundDevice_AddBuffer(device, dsb);
@@ -1193,6 +1195,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
@@ -1186,6 +1188,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
free(This->filters);
}
@@ -32,7 +32,7 @@ index 22b23c9f877..72e96765883 100644
free(This);
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 09566b28a12..703b5da8225 100644
index 7a89b047b42..c5e84f07763 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -240,6 +240,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
@@ -97,5 +97,5 @@ index 03b6e0a9813..91438efc335 100644
HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
--
2.39.2
2.40.1

View File

@@ -1,22 +1,22 @@
From 271f43a1fafb19e1404b05ec597b504ecad74784 Mon Sep 17 00:00:00 2001
From d4094baaba721220b0a81170d1f9e6c276dae4ae Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 12:09:22 -0500
Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores.
---
dlls/ntdll/Makefile.in | 1 +
dlls/ntdll/unix/esync.c | 271 +++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.c | 270 +++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.h | 35 +++++
dlls/ntdll/unix/loader.c | 2 +
dlls/ntdll/unix/server.c | 4 +-
dlls/ntdll/unix/sync.c | 4 +
server/esync.c | 1 +
7 files changed, 316 insertions(+), 2 deletions(-)
7 files changed, 315 insertions(+), 2 deletions(-)
create mode 100644 dlls/ntdll/unix/esync.c
create mode 100644 dlls/ntdll/unix/esync.h
diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in
index 07688a5fcf6..4e490c475a2 100644
index f8ca3e689ec..82af2152595 100644
--- a/dlls/ntdll/Makefile.in
+++ b/dlls/ntdll/Makefile.in
@@ -47,6 +47,7 @@ C_SRCS = \
@@ -29,10 +29,10 @@ index 07688a5fcf6..4e490c475a2 100644
unix/loadorder.c \
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
new file mode 100644
index 00000000000..9e1ef7d8afd
index 00000000000..7be4e03fa34
--- /dev/null
+++ b/dlls/ntdll/unix/esync.c
@@ -0,0 +1,271 @@
@@ -0,0 +1,270 @@
+/*
+ * eventfd-based synchronization objects
+ *
@@ -73,7 +73,6 @@ index 00000000000..9e1ef7d8afd
+
+#include "ntstatus.h"
+#define WIN32_NO_STATUS
+#define NONAMELESSUNION
+#include "windef.h"
+#include "winternl.h"
+#include "wine/server.h"
@@ -346,10 +345,10 @@ index 00000000000..a50a755149a
+
+extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 35f2e5f986f..4d95c29ab24 100644
index 5b8b6962b4a..92855f7cccc 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -89,6 +89,7 @@
@@ -87,6 +87,7 @@
#include "winioctl.h"
#include "winternl.h"
#include "unix_private.h"
@@ -357,7 +356,7 @@ index 35f2e5f986f..4d95c29ab24 100644
#include "wine/list.h"
#include "wine/debug.h"
@@ -2188,6 +2189,7 @@ static void start_main_thread(void)
@@ -2055,6 +2056,7 @@ static void start_main_thread(void)
signal_alloc_thread( teb );
dbg_init();
startup_info_size = server_init_process();
@@ -366,10 +365,10 @@ index 35f2e5f986f..4d95c29ab24 100644
init_cpu_info();
init_files();
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index b7d8733f2bc..8cd5f0474e6 100644
index 227784448d3..99563e43cc3 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -106,7 +106,7 @@ sigset_t server_block_set; /* signals to block during server calls */
@@ -103,7 +103,7 @@ sigset_t server_block_set; /* signals to block during server calls */
static int fd_socket = -1; /* socket to exchange file descriptors with the server */
static int initial_cwd = -1;
static pid_t server_pid;
@@ -378,7 +377,7 @@ index b7d8733f2bc..8cd5f0474e6 100644
/* atomically exchange a 64-bit value */
static inline LONG64 interlocked_xchg64( LONG64 *dest, LONG64 val )
@@ -834,7 +834,7 @@ void wine_server_send_fd( int fd )
@@ -907,7 +907,7 @@ void wine_server_send_fd( int fd )
*
* Receive a file descriptor passed from the server.
*/
@@ -388,10 +387,10 @@ index b7d8733f2bc..8cd5f0474e6 100644
struct iovec vec;
struct msghdr msghdr;
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 9112572c67d..c5f30428f79 100644
index d1e4e5ee111..b5299c323e3 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -64,6 +64,7 @@
@@ -63,6 +63,7 @@
#include "wine/server.h"
#include "wine/debug.h"
#include "unix_private.h"
@@ -399,7 +398,7 @@ index 9112572c67d..c5f30428f79 100644
WINE_DEFAULT_DEBUG_CHANNEL(sync);
@@ -273,6 +274,9 @@ NTSTATUS WINAPI NtCreateSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJ
@@ -272,6 +273,9 @@ NTSTATUS WINAPI NtCreateSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJ
if (max <= 0 || initial < 0 || initial > max) return STATUS_INVALID_PARAMETER;
if ((ret = alloc_object_attributes( attr, &objattr, &len ))) return ret;
@@ -410,7 +409,7 @@ index 9112572c67d..c5f30428f79 100644
{
req->access = access;
diff --git a/server/esync.c b/server/esync.c
index b9dbfa322bc..99e57eca44c 100644
index 35b4833fd4c..75ef586df30 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -41,6 +41,7 @@
@@ -422,5 +421,5 @@ index b9dbfa322bc..99e57eca44c 100644
int do_esync(void)
{
--
2.38.1
2.40.1

View File

@@ -1,4 +1,4 @@
From 0d55971a114d650b7826e01e43ccd3a60597fefd Mon Sep 17 00:00:00 2001
From 61e2cd91e7eb3654e6663a44d950f40808c4f30b Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:01:56 -0500
Subject: [PATCH] server: Create eventfd file descriptors for message queues.
@@ -8,10 +8,10 @@ Subject: [PATCH] server: Create eventfd file descriptors for message queues.
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c
index b6decc521e9..23fb338924e 100644
index 0aa8888d646..e29764f7870 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -41,6 +41,7 @@
@@ -42,6 +42,7 @@
#include "process.h"
#include "request.h"
#include "user.h"
@@ -19,7 +19,7 @@ index b6decc521e9..23fb338924e 100644
#define WM_NCMOUSEFIRST WM_NCMOUSEMOVE
#define WM_NCMOUSELAST (WM_NCMOUSEFIRST+(WM_MOUSELAST-WM_MOUSEFIRST))
@@ -142,6 +143,7 @@ struct msg_queue
@@ -143,6 +144,7 @@ struct msg_queue
timeout_t last_get_msg; /* time of last get message call */
int keystate_lock; /* owns an input keystate lock */
unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */
@@ -27,7 +27,7 @@ index b6decc521e9..23fb338924e 100644
};
struct hotkey
@@ -158,6 +160,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
@@ -159,6 +161,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
static int msg_queue_add_queue( struct object *obj, struct wait_queue_entry *entry );
static void msg_queue_remove_queue( struct object *obj, struct wait_queue_entry *entry );
static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entry );
@@ -35,7 +35,7 @@ index b6decc521e9..23fb338924e 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry );
static void msg_queue_destroy( struct object *obj );
static void msg_queue_poll_event( struct fd *fd, int event );
@@ -173,7 +176,7 @@ static const struct object_ops msg_queue_ops =
@@ -174,7 +177,7 @@ static const struct object_ops msg_queue_ops =
msg_queue_add_queue, /* add_queue */
msg_queue_remove_queue, /* remove_queue */
msg_queue_signaled, /* signaled */
@@ -44,7 +44,7 @@ index b6decc521e9..23fb338924e 100644
msg_queue_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -313,12 +316,16 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -314,12 +317,16 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
queue->last_get_msg = current_time;
queue->keystate_lock = 0;
queue->ignore_post_msg = 0;
@@ -70,8 +70,8 @@ index b6decc521e9..23fb338924e 100644
+ esync_clear( queue->esync_fd );
}
/* check whether msg is a keyboard message */
@@ -1046,6 +1056,13 @@ static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entr
/* check if message is matched by the filter */
@@ -1040,6 +1050,13 @@ static int msg_queue_signaled( struct object *obj, struct wait_queue_entry *entr
return ret || is_signaled( queue );
}
@@ -85,7 +85,7 @@ index b6decc521e9..23fb338924e 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry )
{
struct msg_queue *queue = (struct msg_queue *)obj;
@@ -1090,6 +1107,7 @@ static void msg_queue_destroy( struct object *obj )
@@ -1084,6 +1101,7 @@ static void msg_queue_destroy( struct object *obj )
release_object( queue->input );
if (queue->hooks) release_object( queue->hooks );
if (queue->fd) release_object( queue->fd );
@@ -93,7 +93,7 @@ index b6decc521e9..23fb338924e 100644
}
static void msg_queue_poll_event( struct fd *fd, int event )
@@ -2485,6 +2503,9 @@ DECL_HANDLER(set_queue_mask)
@@ -2458,6 +2476,9 @@ DECL_HANDLER(set_queue_mask)
if (req->skip_wait) queue->wake_mask = queue->changed_mask = 0;
else wake_up( &queue->obj, 0 );
}
@@ -103,7 +103,7 @@ index b6decc521e9..23fb338924e 100644
}
}
@@ -2498,6 +2519,9 @@ DECL_HANDLER(get_queue_status)
@@ -2471,6 +2492,9 @@ DECL_HANDLER(get_queue_status)
reply->wake_bits = queue->wake_bits;
reply->changed_bits = queue->changed_bits;
queue->changed_bits &= ~req->clear_bits;
@@ -113,7 +113,7 @@ index b6decc521e9..23fb338924e 100644
}
else reply->wake_bits = reply->changed_bits = 0;
}
@@ -2746,6 +2770,10 @@ DECL_HANDLER(get_message)
@@ -2717,6 +2741,10 @@ DECL_HANDLER(get_message)
queue->wake_mask = req->wake_mask;
queue->changed_mask = req->changed_mask;
set_error( STATUS_PENDING ); /* FIXME */
@@ -125,5 +125,5 @@ index b6decc521e9..23fb338924e 100644
found_msg:
--
2.35.1
2.40.1

View File

@@ -1,29 +0,0 @@
From f7c317dac3581075e75168ce50c4523973422384 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sun, 5 Mar 2017 12:55:51 +0800
Subject: gdiplus: Change the order of x/y loops in the scaler.
This improves performance by about 5%.
---
dlls/gdiplus/graphics.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 142b68115e..02d699b00b 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -3043,9 +3043,9 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
y_dx = dst_to_src_points[2].X - dst_to_src_points[0].X;
y_dy = dst_to_src_points[2].Y - dst_to_src_points[0].Y;
- for (x=dst_area.left; x<dst_area.right; x++)
+ for (y=dst_area.top; y<dst_area.bottom; y++)
{
- for (y=dst_area.top; y<dst_area.bottom; y++)
+ for (x=dst_area.left; x<dst_area.right; x++)
{
GpPointF src_pointf;
ARGB *dst_color;
--
2.11.0

View File

@@ -1,65 +0,0 @@
From 04aee185cec481587e66fd410cf6ed2b6b6e2f90 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sun, 5 Mar 2017 13:07:43 +0800
Subject: gdiplus: Change multiplications by additions in the x/y scaler loops.
This should imrove performance when floating point math will be replaced
by fixed point calculations.
---
dlls/gdiplus/graphics.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 02d699b00b..ef26887d14 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -3026,6 +3026,8 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
if (do_resampling)
{
+ REAL delta_xx, delta_xy, delta_yx, delta_yy;
+
/* Transform the bits as needed to the destination. */
dst_data = dst_dyn_data = heap_alloc_zero(sizeof(ARGB) * (dst_area.right - dst_area.left) * (dst_area.bottom - dst_area.top));
if (!dst_data)
@@ -3043,15 +3045,21 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
y_dx = dst_to_src_points[2].X - dst_to_src_points[0].X;
y_dy = dst_to_src_points[2].Y - dst_to_src_points[0].Y;
+ delta_yy = dst_area.top * y_dy;
+ delta_yx = dst_area.top * y_dx;
+
for (y=dst_area.top; y<dst_area.bottom; y++)
{
+ delta_xx = dst_area.left * x_dx;
+ delta_xy = dst_area.left * x_dy;
+
for (x=dst_area.left; x<dst_area.right; x++)
{
GpPointF src_pointf;
ARGB *dst_color;
- src_pointf.X = dst_to_src_points[0].X + x * x_dx + y * y_dx;
- src_pointf.Y = dst_to_src_points[0].Y + x * x_dy + y * y_dy;
+ src_pointf.X = dst_to_src_points[0].X + delta_xx + delta_yx;
+ src_pointf.Y = dst_to_src_points[0].Y + delta_xy + delta_yy;
dst_color = (ARGB*)(dst_data + dst_stride * (y - dst_area.top) + sizeof(ARGB) * (x - dst_area.left));
@@ -3060,7 +3068,13 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
imageAttributes, interpolation, offset_mode);
else
*dst_color = 0;
+
+ delta_xx += x_dx;
+ delta_yx += y_dx;
}
+
+ delta_xy += x_dy;
+ delta_yy += y_dy;
}
}
else
--
2.11.0

View File

@@ -1,18 +1,20 @@
From f1b82c151d064eeafe234cdd95a4b29d7000232a Mon Sep 17 00:00:00 2001
From bfd7f078bd023915fb857e37fedf2e557df48c9b Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sun, 5 Mar 2017 13:18:21 +0800
Subject: gdiplus: Remove ceilf/floorf calls from bilinear scaler. (v2)
This improves performance by about 55%.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/gdiplus/graphics.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index ef26887d14..58cfebb923 100644
index 835c2889bd1..4e286f959e5 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -526,7 +526,7 @@ static ARGB blend_colors(ARGB start, ARGB end, REAL position)
@@ -603,7 +603,7 @@ static ARGB blend_colors(ARGB start, ARGB end, REAL position)
INT start_a, end_a, final_a;
INT pos;
@@ -21,7 +23,7 @@ index ef26887d14..58cfebb923 100644
start_a = ((start >> 24) & 0xff) * (pos ^ 0xff);
end_a = ((end >> 24) & 0xff) * pos;
@@ -928,6 +928,11 @@ static ARGB sample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT wi
@@ -1009,6 +1009,11 @@ static ARGB sample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT wi
return ((DWORD*)(bits))[(x - src_rect->X) + (y - src_rect->Y) * src_rect->Width];
}
@@ -33,7 +35,7 @@ index ef26887d14..58cfebb923 100644
static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT width,
UINT height, GpPointF *point, GDIPCONST GpImageAttributes *attributes,
InterpolationMode interpolation, PixelOffsetMode offset_mode)
@@ -948,12 +953,12 @@ static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT
@@ -1029,12 +1034,12 @@ static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT
ARGB top, bottom;
float x_offset;
@@ -53,5 +55,5 @@ index ef26887d14..58cfebb923 100644
if (leftx == rightx && topy == bottomy)
return sample_bitmap_pixel(src_rect, bits, width, height,
--
2.11.0
2.38.1

View File

@@ -1,18 +1,20 @@
From 37b9499d8da295cd8819d85e9a563629ef13f22e Mon Sep 17 00:00:00 2001
From ae562535926a6c2524c6d227f9ebf45a0d477c65 Mon Sep 17 00:00:00 2001
From: Dmitry Timoshkov <dmitry@baikal.ru>
Date: Sun, 5 Mar 2017 14:34:51 +0800
Subject: gdiplus: Prefer using pre-multiplied ARGB data in the scaler.
This further improves performance by about 20%.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
---
dlls/gdiplus/graphics.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++--
dlls/gdiplus/graphics.c | 94 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 91 insertions(+), 3 deletions(-)
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index 58cfebb923..bdee2e8318 100644
index 4e286f959e5..0233f5c6429 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -521,6 +521,17 @@ static GpStatus alpha_blend_pixels(GpGraphics *graphics, INT dst_x, INT dst_y,
@@ -598,6 +598,17 @@ static GpStatus alpha_blend_pixels(GpGraphics *graphics, INT dst_x, INT dst_y,
return alpha_blend_pixels_hrgn(graphics, dst_x, dst_y, src, src_width, src_height, src_stride, NULL, fmt);
}
@@ -30,7 +32,7 @@ index 58cfebb923..bdee2e8318 100644
static ARGB blend_colors(ARGB start, ARGB end, REAL position)
{
INT start_a, end_a, final_a;
@@ -1002,6 +1013,75 @@ static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT
@@ -1083,6 +1094,75 @@ static ARGB resample_bitmap_pixel(GDIPCONST GpRect *src_rect, LPBYTE bits, UINT
}
}
@@ -106,7 +108,7 @@ index 58cfebb923..bdee2e8318 100644
static REAL intersect_line_scanline(const GpPointF *p1, const GpPointF *p2, REAL y)
{
return (p1->X - p2->X) * (p2->Y - y) / (p2->Y - p1->Y) + p2->X;
@@ -3010,8 +3090,10 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
@@ -3216,8 +3296,10 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
lockeddata.Scan0 = src_data;
if (!do_resampling && bitmap->format == PixelFormat32bppPARGB)
lockeddata.PixelFormat = apply_image_attributes(imageAttributes, NULL, 0, 0, 0, ColorAdjustTypeBitmap, bitmap->format);
@@ -118,10 +120,10 @@ index 58cfebb923..bdee2e8318 100644
stat = GdipBitmapLockBits(bitmap, &src_area, ImageLockModeRead|ImageLockModeUserInputBuf,
lockeddata.PixelFormat, &lockeddata);
@@ -3069,8 +3151,14 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
dst_color = (ARGB*)(dst_data + dst_stride * (y - dst_area.top) + sizeof(ARGB) * (x - dst_area.left));
if (src_pointf.X >= srcx && src_pointf.X < srcx + srcwidth && src_pointf.Y >= srcy && src_pointf.Y < srcy+srcheight)
@@ -3285,8 +3367,14 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
{
if (src_pointf.X >= srcx && src_pointf.X < srcx + srcwidth &&
src_pointf.Y >= srcy && src_pointf.Y < srcy + srcheight)
- *dst_color = resample_bitmap_pixel(&src_area, src_data, bitmap->width, bitmap->height, &src_pointf,
- imageAttributes, interpolation, offset_mode);
+ {
@@ -132,9 +134,9 @@ index 58cfebb923..bdee2e8318 100644
+ *dst_color = resample_bitmap_pixel_premult(&src_area, src_data, bitmap->width, bitmap->height, &src_pointf,
+ imageAttributes, interpolation, offset_mode);
+ }
else
*dst_color = 0;
dst_color++;
}
}
--
2.11.0
2.38.1

View File

@@ -1 +1,2 @@
Fixes: Improve performance of bilinear bitmap scaling

View File

@@ -1,4 +1,4 @@
From 2a1229098b39f923ff6e9a13bde05e161c797b0a Mon Sep 17 00:00:00 2001
From 7dff09756ebc13c38695050b9de271a84c2ea7b6 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 9 Jul 2019 14:13:28 +1000
Subject: [PATCH] user32: Do not enumerate the registry in
@@ -25,11 +25,11 @@ index 8f3cd8acae7..072f1fab23a 100644
{
SendMessageTimeoutW(handle, WM_DEVICECHANGE, flags, (LPARAM)header, SMTO_ABORTIFHUNG, 2000, NULL);
diff --git a/dlls/user32/tests/input.c b/dlls/user32/tests/input.c
index 8f3d5750c2f..3bdfd042e85 100644
index 197a82db251..6385ef002b9 100644
--- a/dlls/user32/tests/input.c
+++ b/dlls/user32/tests/input.c
@@ -5091,6 +5091,40 @@ static void test_EnableMouseInPointer( char **argv, BOOL enable )
CloseHandle( info.hProcess );
@@ -5369,6 +5369,40 @@ static void test_ClipCursor( char **argv )
if (!EqualRect( &rect, &virtual_rect )) ok_ret( 1, ClipCursor( NULL ) );
}
+static void test_GetKeyboardLayoutList(void)
@@ -69,7 +69,7 @@ index 8f3d5750c2f..3bdfd042e85 100644
START_TEST(input)
{
char **argv;
@@ -5142,6 +5176,7 @@ START_TEST(input)
@@ -5413,6 +5447,7 @@ START_TEST(input)
test_GetRawInputBuffer();
test_RegisterRawInputDevices();
test_rawinput(argv[0]);
@@ -78,10 +78,10 @@ index 8f3d5750c2f..3bdfd042e85 100644
if(pGetMouseMovePointsEx)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c
index 11bb129134c..9864d80ceff 100644
index 22f371969b9..e0a0bd332ed 100644
--- a/dlls/win32u/input.c
+++ b/dlls/win32u/input.c
@@ -1250,11 +1250,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
@@ -1257,11 +1257,7 @@ HKL WINAPI NtUserActivateKeyboardLayout( HKL layout, UINT flags )
*/
UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
{
@@ -94,7 +94,7 @@ index 11bb129134c..9864d80ceff 100644
HKL layout;
TRACE_(keyboard)( "size %d, layouts %p.\n", size, layouts );
@@ -1268,33 +1264,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
@@ -1275,33 +1271,6 @@ UINT WINAPI NtUserGetKeyboardLayoutList( INT size, HKL *layouts )
if (size && layouts)
{
layouts[count - 1] = layout;
@@ -129,5 +129,5 @@ index 11bb129134c..9864d80ceff 100644
return count;
--
2.39.2
2.40.1

View File

@@ -1,17 +1,17 @@
From ca9c7d377e3e5e9689d67fbb9622ac1554442cdc Mon Sep 17 00:00:00 2001
From 19e3e3de97851559f2b5d67582e8b58606a4d7ff Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Thu, 5 Jan 2023 14:36:08 +1100
Subject: [PATCH 3/4] msxml3: Copy body size to request object
Subject: [PATCH] msxml3: Copy body size to request object
Dont assume that the data needs to be convert
NOTE: should use SetProperty value.
---
dlls/msxml3/httprequest.c | 44 ++++++++++++++++++++++++++-------------
1 file changed, 30 insertions(+), 14 deletions(-)
dlls/msxml3/httprequest.c | 46 +++++++++++++++++++++++++++------------
1 file changed, 32 insertions(+), 14 deletions(-)
diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index d8360680411..48ed444576e 100644
index d8360680411..e7e66dec202 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -117,6 +117,7 @@ typedef struct
@@ -39,21 +39,21 @@ index d8360680411..48ed444576e 100644
+ UINT i, cp = CP_ACP;
+
+ for (i = 0; i < len; i++)
+ {
{
- cp = CP_UTF8;
- break;
+ if (str[i] > 127)
+ {
+ cp = CP_UTF8;
+ break;
+ }
+ }
}
+ size = WideCharToMultiByte(cp, 0, str, len, NULL, 0, NULL, NULL);
+ if (!(ptr = heap_alloc(size)))
{
- cp = CP_UTF8;
- break;
+ {
+ heap_free(bsc);
+ return E_OUTOFMEMORY;
}
+ }
+ WideCharToMultiByte(cp, 0, str, len, ptr, size, NULL, NULL);
+ if (cp == CP_UTF8) This->use_utf8_content = TRUE;
}
@@ -86,6 +86,15 @@ index d8360680411..48ed444576e 100644
}
hr = httprequest_send(&This->req, body_v);
@@ -2624,6 +2640,8 @@ static void init_httprequest(httprequest *req)
req->threshold = 0x100;
req->enterrprised_id = 0;
req->max_connections = 10;
+
+ req->request_body_size = 0;
}
HRESULT XMLHTTPRequest_create(void **obj)
--
2.39.0
2.40.1

View File

@@ -1,4 +1,4 @@
From 5814a4b9c7d4dec027b0c2dd29822664aa56ada1 Mon Sep 17 00:00:00 2001
From 5a81a28605ec0b32b020c84032e3f4a35d0e4768 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 14 Jan 2020 21:39:23 +0300
Subject: [PATCH] ntdll: Increase step after failed map attempt in
@@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Increase step after failed map attempt in
1 file changed, 1 insertion(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 84a4e331ad7..a63882023e6 100644
index 2e61e8ba22f..039007f6a9b 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -1327,6 +1327,7 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
@@ -1336,6 +1336,7 @@ static void* try_map_free_area( void *base, void *end, ptrdiff_t step,
step == 0)
break;
start = (char *)start + step;
@@ -21,5 +21,5 @@ index 84a4e331ad7..a63882023e6 100644
return NULL;
--
2.38.1
2.40.1

View File

@@ -1,4 +1,4 @@
From b1e6d32e7dc3bac93419f3a573f509ee6e1177b2 Mon Sep 17 00:00:00 2001
From b7c39298824976bbbc8788b60aa4195f3815d3b9 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Thu, 23 Jul 2020 18:40:39 +0300
Subject: [PATCH] ntdll: Increase free ranges view block size on 64 bit.
@@ -8,10 +8,10 @@ Subject: [PATCH] ntdll: Increase free ranges view block size on 64 bit.
1 file changed, 4 insertions(+)
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index a63882023e6..83909f57d4a 100644
index 039007f6a9b..82a0a91cf14 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -205,7 +205,11 @@ static BYTE *pages_vprot;
@@ -212,7 +212,11 @@ static BYTE *pages_vprot;
#endif
static struct file_view *view_block_start, *view_block_end, *next_free_view;
@@ -24,5 +24,5 @@ index a63882023e6..83909f57d4a 100644
static void *preload_reserve_end;
static BOOL force_exec_prot; /* whether to force PROT_EXEC on all PROT_READ mmaps */
--
2.38.1
2.40.1

Some files were not shown because too many files have changed in this diff Show More