DMUS_PMSG::dwType is the type of the message, but we are comparing it to curve types. We should be using DMUS_CURVE_PMSG::bType instead.
* * *
(I tried to write some test cases for this. I created a IDirectMusicPort implementation that checks the generated midi commands, but instead I cannot get Windows to generate any midi commands for CCCURVEs. )
-- v2: dmime: Fix handling of curve PMSG.
From: Yuxuan Shui yshui@codeweavers.com
DMUS_PMSG::dwType is the type of the message, but we are comparing it to curve types. We should be using DMUS_CURVE_PMSG::bType instead. --- dlls/dmime/performance.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c index 1d1da250cc3..bd596750f34 100644 --- a/dlls/dmime/performance.c +++ b/dlls/dmime/performance.c @@ -2087,7 +2087,7 @@ static HRESULT WINAPI performance_tool_ProcessPMsg(IDirectMusicTool *iface, DMUS_CURVE_PMSG *curve = (DMUS_CURVE_PMSG *)msg;
msg->mtTime += curve->nOffset; - switch (curve->dwType) + switch (curve->bType) { case DMUS_CURVET_CCCURVE: if (FAILED(hr = performance_send_midi_pmsg(This, msg, DMUS_PMSGF_MUSICTIME | DMUS_PMSGF_TOOL_IMMEDIATE, @@ -2096,7 +2096,13 @@ static HRESULT WINAPI performance_tool_ProcessPMsg(IDirectMusicTool *iface, break; case DMUS_CURVET_RPNCURVE: case DMUS_CURVET_NRPNCURVE: - FIXME("Unhandled curve type %#lx\n", curve->dwType); + case DMUS_CURVET_MATCURVE: + case DMUS_CURVET_PATCURVE: + case DMUS_CURVET_PBCURVE: + FIXME("Unhandled curve type %#x\n", curve->bType); + break; + default: + WARN("Invalid curve type %#x\n", curve->bType); break; }
force pushed to fix typo :face_palm:
This merge request was approved by Rémi Bernon.
Sorry for the delay got hit by covid and quarantined myself away.
Test failures are unrelated to the patch (clipboard.c, win.c and richole.c).
This merge request was approved by Michael Stefaniuc.