Rebase against 85bd94f8705115ac0c35eac6ff7e2f3e59be924e

This commit is contained in:
Alistair Leslie-Hughes 2020-02-17 08:44:15 +11:00
parent 49d52336e1
commit aca614eb8b
6 changed files with 57 additions and 283 deletions

View File

@ -1,174 +0,0 @@
From a649a14676b8b57019021021f9b1c3474c88f129 Mon Sep 17 00:00:00 2001
From: Michael Stefaniuc <mstefani@winehq.org>
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 <mstefani@winehq.org>
---
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

View File

@ -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.

View File

@ -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 <lucianposton@pm.me>
Date: Sun, 20 May 2018 21:40:39 -0700
Subject: [PATCH] dwrite: Test IDWriteTextFormat with nonexistent font
Signed-off-by: Lucian Poston <lucianposton@pm.me>
---
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

View File

@ -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 <lucianposton@pm.me>
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 <lucianposton@pm.me>
---
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

View File

@ -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 <lucianposton@pm.me>
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 <lucianposton@pm.me>
---
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

View File

@ -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: