mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2024-11-21 16:46:54 -08:00
Rebase against 85bd94f8705115ac0c35eac6ff7e2f3e59be924e
This commit is contained in:
parent
49d52336e1
commit
aca614eb8b
@ -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
|
||||
|
@ -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.
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user