diff --git a/patches/dmime-PChannel-range/0003-dmime-Implement-IDirectMusicPerformance8_PChannelInf.patch b/patches/dmime-PChannel-range/0003-dmime-Implement-IDirectMusicPerformance8_PChannelInf.patch deleted file mode 100644 index a012532e..00000000 --- a/patches/dmime-PChannel-range/0003-dmime-Implement-IDirectMusicPerformance8_PChannelInf.patch +++ /dev/null @@ -1,174 +0,0 @@ -From a649a14676b8b57019021021f9b1c3474c88f129 Mon Sep 17 00:00:00 2001 -From: Michael Stefaniuc -Date: Thu, 19 Dec 2019 23:20:20 +0100 -Subject: [PATCH 3/3] dmime: Implement IDirectMusicPerformance8_PChannelInfo() - -NOT FOR THE FREEZE ==> DEFER - -Not needed for the bugs referenced in patch 1 but to validate the tests -from patch 2. - -Signed-off-by: Michael Stefaniuc ---- - dlls/dmime/performance.c | 31 ++++++++++++++++++++++--------- - dlls/dmime/tests/performance.c | 24 +++++++++++------------- - 2 files changed, 33 insertions(+), 22 deletions(-) - -diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c -index 2124c1fe35..9f489f5e36 100644 ---- a/dlls/dmime/performance.c -+++ b/dlls/dmime/performance.c -@@ -701,18 +701,29 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel(IDirectMusicPe - } - - static HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo(IDirectMusicPerformance8 *iface, -- DWORD PChannel, IDirectMusicPort **port, DWORD *group, DWORD *MChannel) -+ DWORD pchannel, IDirectMusicPort **port, DWORD *group, DWORD *channel) - { - IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface); -- DMUS_PORTPARAMS8 port_params; -- GUID default_port; -+ struct pchannel_block *block; -+ struct wine_rb_entry *entry; -+ DWORD block_num = pchannel / 16; -+ unsigned int index = pchannel % 16; - -- FIXME("(%p)->(%d, %p, %p, %p): stub\n", This, PChannel, port, group, MChannel); -+ TRACE("(%p)->(%d, %p, %p, %p)\n", This, pchannel, port, group, channel); - -- port_params.dwSize = sizeof(DMUS_PORTPARAMS8); -- port_params.dwValidParams = 0; -- IDirectMusic8_GetDefaultPort(This->dmusic, &default_port); -- IDirectMusic8_CreatePort(This->dmusic, &default_port, &port_params, port, NULL); -+ entry = wine_rb_get(&This->pchannels, &block_num); -+ if (!entry) -+ return E_INVALIDARG; -+ block = WINE_RB_ENTRY_VALUE(entry, struct pchannel_block, entry); -+ -+ if (port) { -+ *port = block->pchannel[index].port; -+ IDirectMusicPort_AddRef(*port); -+ } -+ if (group) -+ *group = block->pchannel[index].group; -+ if (channel) -+ *channel = block->pchannel[index].channel; - - return S_OK; - } -@@ -1102,7 +1113,9 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath(IDire - return E_INVALIDARG; - } - -- /* FIXME: Should we create one secondary buffer for each PChannel? */ -+ /* FIXME: Create a proper port with enough dwGroups for the PChannels */ -+ IDirectMusicPerformance8_AddPort(iface, NULL); -+ - hr = IDirectSound_CreateSoundBuffer(This->dsound, &desc, &buffer, NULL); - if (FAILED(hr)) - return DSERR_BUFFERLOST; -diff --git a/dlls/dmime/tests/performance.c b/dlls/dmime/tests/performance.c -index 4c340252aa..adc20224c0 100644 ---- a/dlls/dmime/tests/performance.c -+++ b/dlls/dmime/tests/performance.c -@@ -101,9 +101,9 @@ static HRESULT test_InitAudio(void) - - port = NULL; - hr = IDirectMusicPerformance8_PChannelInfo(performance, 128, &port, NULL, NULL); -- todo_wine ok(hr == E_INVALIDARG, "PChannelInfo failed, got %08x\n", hr); -+ ok(hr == E_INVALIDARG, "PChannelInfo failed, got %08x\n", hr); - hr = IDirectMusicPerformance8_PChannelInfo(performance, 127, &port, NULL, NULL); -- ok(hr == S_OK, "PChannelInfo failed, got %08x\n", hr); -+ todo_wine ok(hr == S_OK, "PChannelInfo failed, got %08x\n", hr); - hr = IDirectMusicPerformance8_PChannelInfo(performance, 0, &port, NULL, NULL); - ok(hr == S_OK, "PChannelInfo failed, got %08x\n", hr); - ok(port != NULL, "IDirectMusicPort not set\n"); -@@ -129,7 +129,7 @@ static HRESULT test_InitAudio(void) - hr = IDirectMusicPerformance8_InitAudio(performance, NULL, NULL, NULL, 0, 64, 0, NULL); - ok(hr == S_OK, "InitAudio failed: %08x\n", hr); - hr = IDirectMusicPerformance8_PChannelInfo(performance, 0, &port, NULL, NULL); -- todo_wine ok(hr == E_INVALIDARG, "PChannelInfo failed, got %08x\n", hr); -+ ok(hr == E_INVALIDARG, "PChannelInfo failed, got %08x\n", hr); - destroy_performance(performance, NULL, NULL); - - /* Refcounts for auto generated dmusic and dsound */ -@@ -344,7 +344,7 @@ static void test_pchannel(void) - hr = IDirectMusicPerformance8_Init(perf, NULL, NULL, NULL); - ok(hr == S_OK, "Init failed: %08x\n", hr); - hr = IDirectMusicPerformance8_PChannelInfo(perf, 0, &port, NULL, NULL); -- todo_wine ok(hr == E_INVALIDARG && !port, "PChannelInfo failed, got %08x, %p\n", hr, port); -+ ok(hr == E_INVALIDARG && !port, "PChannelInfo failed, got %08x, %p\n", hr, port); - - /* Add default port. Sets PChannels 0-15 to the corresponding channels in group 1 */ - hr = IDirectMusicPerformance8_AddPort(perf, NULL); -@@ -355,18 +355,16 @@ static void test_pchannel(void) - ok(hr == S_OK && port, "PChannelInfo failed, got %08x, %p\n", hr, port); - for (i = 1; i < 16; i++) { - hr = IDirectMusicPerformance8_PChannelInfo(perf, i, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port == port2 && group == 1 && channel == i, -+ ok(hr == S_OK && port == port2 && group == 1 && channel == i, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - } - - /* Unset PChannels fail to retrieve */ -- todo_wine { - hr = IDirectMusicPerformance8_PChannelInfo(perf, 16, &port2, NULL, NULL); - ok(hr == E_INVALIDARG, "PChannelInfo failed, got %08x, %p\n", hr, port); - hr = IDirectMusicPerformance8_PChannelInfo(perf, MAXDWORD - 16, &port2, NULL, NULL); - ok(hr == E_INVALIDARG, "PChannelInfo failed, got %08x, %p\n", hr, port); -- } - - /* Channel group 0 can be set just fine */ - hr = IDirectMusicPerformance8_AssignPChannel(perf, 0, port, 0, 0); -@@ -375,7 +373,7 @@ static void test_pchannel(void) - ok(hr == S_OK, "AssignPChannelBlock failed, got %08x\n", hr); - for (i = 1; i < 16; i++) { - hr = IDirectMusicPerformance8_PChannelInfo(perf, i, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port == port2 && group == 0 && channel == i, -+ ok(hr == S_OK && port == port2 && group == 0 && channel == i, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - } -@@ -406,7 +404,7 @@ static void test_pchannel(void) - hr = IDirectMusicPerformance8_AssignPChannel(perf, i, port, 1, 7); - ok(hr == S_OK, "AssignPChannel failed, got %08x\n", hr); - hr = IDirectMusicPerformance8_PChannelInfo(perf, i, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port2 == port && group == 1 && channel == 7, -+ ok(hr == S_OK && port2 == port && group == 1 && channel == 7, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - } -@@ -416,7 +414,7 @@ static void test_pchannel(void) - ok(hr == S_OK, "AssignPChannelBlock failed, got %08x\n", hr); - for (i = MAXDWORD - 47; i < MAXDWORD - 31; i++) { - hr = IDirectMusicPerformance8_PChannelInfo(perf, i, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port2 == port && group == 0 && channel == i % 16, -+ ok(hr == S_OK && port2 == port && group == 0 && channel == i % 16, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - } -@@ -425,17 +423,17 @@ static void test_pchannel(void) - hr = IDirectMusicPerformance8_AssignPChannel(perf, 4711, port, 1, 13); - ok(hr == S_OK, "AssignPChannel failed, got %08x\n", hr); - hr = IDirectMusicPerformance8_PChannelInfo(perf, 4711, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port2 == port && group == 1 && channel == 13, -+ ok(hr == S_OK && port2 == port && group == 1 && channel == 13, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - group = channel = 0xdeadbeef; - hr = IDirectMusicPerformance8_PChannelInfo(perf, 4712, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port2 == port && group == 0 && channel == 8, -+ ok(hr == S_OK && port2 == port && group == 0 && channel == 8, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - group = channel = 0xdeadbeef; - hr = IDirectMusicPerformance8_PChannelInfo(perf, 4719, &port2, &group, &channel); -- todo_wine ok(hr == S_OK && port2 == port && group == 0 && channel == 15, -+ ok(hr == S_OK && port2 == port && group == 0 && channel == 15, - "PChannelInfo failed, got %08x, %p, %u, %u\n", hr, port2, group, channel); - IDirectMusicPort_Release(port2); - --- -2.17.1 - diff --git a/patches/dmime-PChannel-range/definition b/patches/dmime-PChannel-range/definition deleted file mode 100644 index b68b54e2..00000000 --- a/patches/dmime-PChannel-range/definition +++ /dev/null @@ -1,3 +0,0 @@ -Fixes: [17766] Empire Earth crashes on start without native directmusic -Fixes: [24740] Trinklet Supreme crashes on startup -Fixes: [31562] Stop crash when using lithtech game engine. diff --git a/patches/dwrite-FontFallback/0001-dwrite-Test-IDWriteTextFormat-with-nonexistent-font.patch b/patches/dwrite-FontFallback/0001-dwrite-Test-IDWriteTextFormat-with-nonexistent-font.patch index a3d3f205..e0de1973 100644 --- a/patches/dwrite-FontFallback/0001-dwrite-Test-IDWriteTextFormat-with-nonexistent-font.patch +++ b/patches/dwrite-FontFallback/0001-dwrite-Test-IDWriteTextFormat-with-nonexistent-font.patch @@ -1,33 +1,26 @@ -From 947b2e9978e50d159f8bc368aa1d5e967c1ad593 Mon Sep 17 00:00:00 2001 +From b1690a5bc6ea4cf670f3117f8caf9e229cd1f47d Mon Sep 17 00:00:00 2001 From: Lucian Poston Date: Sun, 20 May 2018 21:40:39 -0700 Subject: [PATCH] dwrite: Test IDWriteTextFormat with nonexistent font Signed-off-by: Lucian Poston --- - dlls/dwrite/tests/layout.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) + dlls/dwrite/tests/layout.c | 45 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c -index 8337ce7..03da3c0 100644 +index d19f91311db..d89ccc9d995 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c -@@ -30,6 +30,7 @@ - #include "wine/test.h" - - static const WCHAR tahomaW[] = {'T','a','h','o','m','a',0}; -+static const WCHAR nonExistentFontW[] = {'B','l','a','h','!',0}; - static const WCHAR enusW[] = {'e','n','-','u','s',0}; - - struct testanalysissink -@@ -3311,6 +3312,51 @@ todo_wine +@@ -3290,6 +3290,51 @@ todo_wine + ok(metrics.lineCount == 1, "Unexpected line count %u.\n", metrics.lineCount); IDWriteTextLayout_Release(layout); - IDWriteTextFormat_Release(format); ++ IDWriteTextFormat_Release(format); + + /* nonexistent font */ -+ hr = IDWriteFactory_CreateTextFormat(factory, nonExistentFontW, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, -+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format); ++ hr = IDWriteFactory_CreateTextFormat(factory, L"Blah!", NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, ++ DWRITE_FONT_STRETCH_NORMAL, 10.0, L"en-us", &format); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = IDWriteFactory_CreateTextLayout(factory, strW, 4, format, 500.0, 1000.0, &layout); @@ -68,10 +61,9 @@ index 8337ce7..03da3c0 100644 + + IDWriteTextLayout_Release(layout); + -+ IDWriteTextFormat_Release(format); + IDWriteTextFormat_Release(format); IDWriteFactory_Release(factory); } - -- -1.9.1 +2.17.1 diff --git a/patches/dwrite-FontFallback/0002-dwrite-Test-GetMetrics-with-custom-fontcollection.patch b/patches/dwrite-FontFallback/0002-dwrite-Test-GetMetrics-with-custom-fontcollection.patch index a6f13b94..1b377316 100644 --- a/patches/dwrite-FontFallback/0002-dwrite-Test-GetMetrics-with-custom-fontcollection.patch +++ b/patches/dwrite-FontFallback/0002-dwrite-Test-GetMetrics-with-custom-fontcollection.patch @@ -1,18 +1,27 @@ -From 22fd0a86b6be3d2e203beee7a0b55f717f32436b Mon Sep 17 00:00:00 2001 +From 6242434571910c686887b51cbbee8f6cb9b83389 Mon Sep 17 00:00:00 2001 From: Lucian Poston Date: Wed, 23 May 2018 00:01:42 -0700 -Subject: [PATCH 2/6] dwrite: Test GetMetrics with custom fontcollection +Subject: [PATCH] dwrite: Test GetMetrics with custom fontcollection Signed-off-by: Lucian Poston --- - dlls/dwrite/tests/layout.c | 278 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 278 insertions(+) + dlls/dwrite/tests/layout.c | 280 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 279 insertions(+), 1 deletion(-) diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c -index 4198b8a1b1..7542cad8d7 100644 +index d89ccc9d995..bf003376f86 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c -@@ -4489,6 +4489,7 @@ static void test_SetWordWrapping(void) +@@ -3297,7 +3297,7 @@ todo_wine + DWRITE_FONT_STRETCH_NORMAL, 10.0, L"en-us", &format); + ok(hr == S_OK, "got 0x%08x\n", hr); + +- hr = IDWriteFactory_CreateTextLayout(factory, strW, 4, format, 500.0, 1000.0, &layout); ++ hr = IDWriteFactory_CreateTextLayout(factory, L"A", 4, format, 500.0, 1000.0, &layout); + ok(hr == S_OK, "got 0x%08x\n", hr); + + count = 0; +@@ -4480,6 +4480,7 @@ static void test_SetWordWrapping(void) /* Collection dedicated to fallback testing */ static const WCHAR g_blahfontW[] = {'B','l','a','h',0}; @@ -20,7 +29,7 @@ index 4198b8a1b1..7542cad8d7 100644 static HRESULT WINAPI fontcollection_QI(IDWriteFontCollection *iface, REFIID riid, void **obj) { if (IsEqualIID(riid, &IID_IDWriteFontCollection) || IsEqualIID(riid, &IID_IUnknown)) { -@@ -4548,6 +4549,9 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface +@@ -4541,6 +4542,9 @@ static HRESULT WINAPI fontcollection_FindFamilyName(IDWriteFontCollection *iface *index = 123456; *exists = TRUE; return S_OK; @@ -30,7 +39,7 @@ index 4198b8a1b1..7542cad8d7 100644 } ok(0, "unexpected call, name %s\n", wine_dbgstr_w(name)); return E_NOTIMPL; -@@ -5568,6 +5572,279 @@ static void test_GetOverhangMetrics(void) +@@ -5781,6 +5785,279 @@ todo_wine { IDWriteFactory_Release(factory); } @@ -53,7 +62,7 @@ index 4198b8a1b1..7542cad8d7 100644 + /* font is in font collection */ + hr = IDWriteFactory_CreateTextFormat(factory, g_blahfontW, &fallbackcollection, + DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, -+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format); ++ DWRITE_FONT_STRETCH_NORMAL, 10.0, L"en-us", &format); + ok(hr == S_OK, "got 0x%08x\n", hr); + + /* text is mapped by fontfallback */ @@ -157,7 +166,7 @@ index 4198b8a1b1..7542cad8d7 100644 + /* font not in font collection */ + hr = IDWriteFactory_CreateTextFormat(factory, g_fontNotInCollectionW, &fallbackcollection, + DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, -+ DWRITE_FONT_STRETCH_NORMAL, 10.0, enusW, &format); ++ DWRITE_FONT_STRETCH_NORMAL, 10.0, L"en-us", &format); + ok(hr == S_OK, "got 0x%08x\n", hr); + + /* text is mapped by fontfallback */ @@ -310,7 +319,7 @@ index 4198b8a1b1..7542cad8d7 100644 START_TEST(layout) { IDWriteFactory *factory; -@@ -5601,6 +5878,7 @@ START_TEST(layout) +@@ -5814,6 +6091,7 @@ START_TEST(layout) test_SetFontStretch(); test_SetStrikethrough(); test_GetMetrics(); @@ -319,5 +328,5 @@ index 4198b8a1b1..7542cad8d7 100644 test_SetDrawingEffect(); test_GetLineMetrics(); -- -2.18.0 +2.17.1 diff --git a/patches/dwrite-FontFallback/0004-dwrite-Use-font-fallback-when-mapping-characters.patch b/patches/dwrite-FontFallback/0004-dwrite-Use-font-fallback-when-mapping-characters.patch index 54269625..79e9c246 100644 --- a/patches/dwrite-FontFallback/0004-dwrite-Use-font-fallback-when-mapping-characters.patch +++ b/patches/dwrite-FontFallback/0004-dwrite-Use-font-fallback-when-mapping-characters.patch @@ -1,20 +1,20 @@ -From add69d1d24330592891222674844dccf104d6d73 Mon Sep 17 00:00:00 2001 +From 593683720fbef744c46cdc9051eb9703d4279819 Mon Sep 17 00:00:00 2001 From: Lucian Poston Date: Mon, 21 May 2018 18:13:00 -0700 -Subject: [PATCH 4/6] dwrite: Use font fallback when mapping characters +Subject: [PATCH] dwrite: Use font fallback when mapping characters Signed-off-by: Lucian Poston --- - dlls/dwrite/analyzer.c | 77 +++++++++++++++++++++++------- + dlls/dwrite/analyzer.c | 77 +++++++++++++++++++++++++++++--------- dlls/dwrite/layout.c | 6 +++ - dlls/dwrite/tests/layout.c | 97 +++++++++++++------------------------- - 3 files changed, 98 insertions(+), 82 deletions(-) + dlls/dwrite/tests/layout.c | 70 +++++++++------------------------- + 3 files changed, 83 insertions(+), 70 deletions(-) diff --git a/dlls/dwrite/analyzer.c b/dlls/dwrite/analyzer.c -index 8d553c6d56..21da783fe6 100644 +index a418081d491..06a3934d229 100644 --- a/dlls/dwrite/analyzer.c +++ b/dlls/dwrite/analyzer.c -@@ -2078,6 +2078,7 @@ static HRESULT fallback_get_fallback_font(struct dwrite_fontfallback *fallback, +@@ -2053,6 +2053,7 @@ static HRESULT fallback_get_fallback_font(struct dwrite_fontfallback *fallback, IDWriteFont **mapped_font) { const struct fallback_mapping *mapping; @@ -22,7 +22,7 @@ index 8d553c6d56..21da783fe6 100644 HRESULT hr; UINT32 i; -@@ -2089,9 +2090,15 @@ static HRESULT fallback_get_fallback_font(struct dwrite_fontfallback *fallback, +@@ -2064,9 +2065,15 @@ static HRESULT fallback_get_fallback_font(struct dwrite_fontfallback *fallback, return E_FAIL; } @@ -39,7 +39,7 @@ index 8d553c6d56..21da783fe6 100644 weight, style, stretch, mapped_font); if (hr == S_OK) { TRACE("Created fallback font using family %s.\n", debugstr_w(mapping->families[i])); -@@ -2148,32 +2155,66 @@ static HRESULT WINAPI fontfallback_MapCharacters(IDWriteFontFallback *iface, IDW +@@ -2123,32 +2130,66 @@ static HRESULT WINAPI fontfallback_MapCharacters(IDWriteFontFallback1 *iface, ID if (basefamily && *basefamily) { hr = create_matching_font(basecollection, basefamily, weight, style, stretch, ret_font); @@ -124,10 +124,10 @@ index 8d553c6d56..21da783fe6 100644 heap_free(buff); return hr; diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c -index 65e0a57678..df3f3beabb 100644 +index 76ea23ba66b..da1261f3dc8 100644 --- a/dlls/dwrite/layout.c +++ b/dlls/dwrite/layout.c -@@ -878,6 +878,12 @@ static HRESULT layout_resolve_fonts(struct dwrite_textlayout *layout) +@@ -882,6 +882,12 @@ static HRESULT layout_resolve_fonts(struct dwrite_textlayout *layout) goto fatal; } @@ -141,10 +141,10 @@ index 65e0a57678..df3f3beabb 100644 IDWriteFont_Release(font); if (FAILED(hr)) { diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c -index c8f3f5a00f..430bb1f0eb 100644 +index 68a6413b2e8..65bbaa71d93 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c -@@ -3310,35 +3310,23 @@ todo_wine +@@ -3302,35 +3302,23 @@ todo_wine count = 0; hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count); @@ -180,7 +180,7 @@ index c8f3f5a00f..430bb1f0eb 100644 ok(metrics.lineCount == 1, "got %u\n", metrics.lineCount); IDWriteTextLayout_Release(layout); -@@ -4637,16 +4625,13 @@ static void test_MapCharacters(void) +@@ -4624,12 +4612,9 @@ static void test_MapCharacters(void) font = NULL; hr = IDWriteFontFallback_MapCharacters(fallback, &analysissource, 0, 1, NULL, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, &mappedlength, &font, &scale); @@ -191,16 +191,9 @@ index c8f3f5a00f..430bb1f0eb 100644 ok(scale == 1.0f, "got %f\n", scale); -todo_wine ok(font != NULL, "got %p\n", font); --if (font) { -- IDWriteFont_Release(font); --} -+ if (font) { -+ IDWriteFont_Release(font); -+ } - /* same latin text, full length */ - g_source = strW; - mappedlength = 0; -@@ -4654,16 +4639,13 @@ if (font) { + if (font) { + IDWriteFont_Release(font); +@@ -4641,16 +4626,13 @@ if (font) { font = NULL; hr = IDWriteFontFallback_MapCharacters(fallback, &analysissource, 0, 3, NULL, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, &mappedlength, &font, &scale); @@ -220,7 +213,7 @@ index c8f3f5a00f..430bb1f0eb 100644 /* string 'a\x3058b' */ g_source = str2W; mappedlength = 0; -@@ -4671,38 +4653,32 @@ if (font) { +@@ -4658,38 +4640,32 @@ if (font) { font = NULL; hr = IDWriteFontFallback_MapCharacters(fallback, &analysissource, 0, 3, NULL, NULL, DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, &mappedlength, &font, &scale); @@ -270,7 +263,7 @@ index c8f3f5a00f..430bb1f0eb 100644 /* Try with explicit collection, Tahoma will be forced. */ /* 1. Latin part */ g_source = str2W; -@@ -4725,7 +4701,10 @@ if (font) { +@@ -4712,7 +4688,10 @@ if (font) { IDWriteLocalizedStrings_Release(strings); IDWriteFont_Release(font); @@ -282,37 +275,15 @@ index c8f3f5a00f..430bb1f0eb 100644 g_source = str2W; mappedlength = 0; scale = 0.0f; -@@ -4735,17 +4714,19 @@ if (font) { +@@ -4722,7 +4701,6 @@ if (font) { ok(hr == S_OK, "got 0x%08x\n", hr); ok(mappedlength == 1, "got %u\n", mappedlength); ok(scale == 1.0f, "got %f\n", scale); - ok(font != NULL, "got %p\n", font); -- exists = FALSE; -- hr = IDWriteFont_GetInformationalStrings(font, DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, &strings, &exists); -- ok(hr == S_OK && exists, "got 0x%08x, exists %d\n", hr, exists); -- hr = IDWriteLocalizedStrings_GetString(strings, 0, buffW, ARRAY_SIZE(buffW)); -- ok(hr == S_OK, "got 0x%08x\n", hr); --todo_wine -- ok(lstrcmpW(buffW, tahomaW), "%s\n", wine_dbgstr_w(buffW)); -- IDWriteLocalizedStrings_Release(strings); -- IDWriteFont_Release(font); -+ if (!font) { -+ skip("Missing system font for Japanese.\n"); -+ } else { -+ exists = FALSE; -+ hr = IDWriteFont_GetInformationalStrings(font, DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, &strings, &exists); -+ ok(hr == S_OK && exists, "got 0x%08x, exists %d\n", hr, exists); -+ hr = IDWriteLocalizedStrings_GetString(strings, 0, buffW, ARRAY_SIZE(buffW)); -+ ok(hr == S_OK, "got 0x%08x\n", hr); -+ ok(lstrcmpW(buffW, tahomaW), "%s\n", wine_dbgstr_w(buffW)); -+ IDWriteLocalizedStrings_Release(strings); -+ IDWriteFont_Release(font); -+ } - - IDWriteFontFallback_Release(fallback); - IDWriteFactory2_Release(factory2); -@@ -5708,34 +5689,22 @@ static void test_GetMetrics_with_custom_fontcollection(void) + exists = FALSE; + hr = IDWriteFont_GetInformationalStrings(font, DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES, &strings, &exists); +@@ -5916,34 +5894,22 @@ static void test_GetMetrics_with_custom_fontcollection(void) ok(hr == S_OK, "got 0x%08x\n", hr); count = 9999; hr = IDWriteTextLayout_GetClusterMetrics(layout, clusters, 4, &count); @@ -348,5 +319,5 @@ index c8f3f5a00f..430bb1f0eb 100644 IDWriteTextLayout_Release(layout); -- -2.18.0 +2.17.1 diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 7d62ca74..99564861 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "7332de64a5a204cc285bdc1f8768d3217103b7dd" + echo "85bd94f8705115ac0c35eac6ff7e2f3e59be924e" } # Show version information @@ -127,7 +127,6 @@ patch_enable_all () enable_dinput_reconnect_joystick="$1" enable_dinput_remap_joystick="$1" enable_directmanipulation_new_dll="$1" - enable_dmime_PChannel_range="$1" enable_dsdmo_new_dll="$1" enable_dsound_EAX="$1" enable_dsound_Fast_Mixer="$1" @@ -494,9 +493,6 @@ patch_enable () directmanipulation-new-dll) enable_directmanipulation_new_dll="$2" ;; - dmime-PChannel-range) - enable_dmime_PChannel_range="$2" - ;; dsdmo-new-dll) enable_dsdmo_new_dll="$2" ;; @@ -2990,23 +2986,6 @@ if test "$enable_directmanipulation_new_dll" -eq 1; then ) >> "$patchlist" fi -# Patchset dmime-PChannel-range -# | -# | This patchset fixes the following Wine bugs: -# | * [#17766] Empire Earth crashes on start without native directmusic -# | * [#24740] Trinklet Supreme crashes on startup -# | * [#31562] Stop crash when using lithtech game engine. -# | -# | Modified files: -# | * dlls/dmime/performance.c, dlls/dmime/tests/performance.c -# | -if test "$enable_dmime_PChannel_range" -eq 1; then - patch_apply dmime-PChannel-range/0003-dmime-Implement-IDirectMusicPerformance8_PChannelInf.patch - ( - printf '%s\n' '+ { "Michael Stefaniuc", "dmime: Implement IDirectMusicPerformance8_PChannelInfo().", 1 },'; - ) >> "$patchlist" -fi - # Patchset dsdmo-new-dll # | # | This patchset fixes the following Wine bugs: