Skip to content

Commit

Permalink
Hotfixer: Revert 1fceb121 and use Derek's implementation instead to f…
Browse files Browse the repository at this point in the history
…ix a regression leading to crashes in some mfplat games.
  • Loading branch information
Tk-Glitch committed Feb 1, 2021
1 parent 08d9e13 commit 8583e4f
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
8 changes: 8 additions & 0 deletions wine-tkg-git/wine-tkg-patches/hotfixes/hotfixer
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,14 @@ else
fi
fi

# Multiple games making use of mfplat broke with 1fceb1213992b79aa7f1a5dc0a72ab3756ee524d
# Prevent crashing in multiple affected games with Derek's implementation: https://raw.githubusercontent.com/wine-staging/wine-staging/0ae7315541c8847d902c9e458a928c4df5520ba6/patches/mfplat-streaming-support/0033-HACK-Switch-between-all-selection-streams-on-MF_SOUR.patch
if ( cd "${srcdir}"/"${_winesrcdir}" && git merge-base --is-ancestor 1fceb1213992b79aa7f1a5dc0a72ab3756ee524d HEAD ); then
warning "Hotfix: Fix for mfplat breakage in some games"
_hotfix_mainlinereverts+=(1fceb1213992b79aa7f1a5dc0a72ab3756ee524d)
_hotfixes+=("$_where"/wine-tkg-patches/hotfixes/mfplat/mfplat-derek-hotfix)
fi

# Autoconf 2.70 fix for legacy trees - https://github.com/wine-mirror/wine/commit/d7645b67c350f7179a1eba749ec4524c74948d86
if ( cd "${srcdir}"/"${_winesrcdir}" && ! git merge-base --is-ancestor d7645b67c350f7179a1eba749ec4524c74948d86 HEAD ); then
warning "Hotfix: Fix for legacy trees when using autoconf 2.70"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
From d087bd05fe0f24fdce30b355b7f574e7006aec7b Mon Sep 17 00:00:00 2001
From: Derek Lesho <dlesho@codeweavers.com>
Date: Tue, 12 May 2020 16:48:52 -0500
Subject: [PATCH 33/45] HACK: Switch between all selection streams on
MF_SOURCE_READER_ANY_STREAM.

---
dlls/mfreadwrite/reader.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/dlls/mfreadwrite/reader.c b/dlls/mfreadwrite/reader.c
index 9d86a5a0f8f..41880fa3289 100644
--- a/dlls/mfreadwrite/reader.c
+++ b/dlls/mfreadwrite/reader.c
@@ -1046,7 +1046,29 @@ static HRESULT source_reader_get_stream_read_index(struct source_reader *reader,
{
/* Cycle through all selected streams once, next pick first selected. */
if (FAILED(hr = source_reader_get_first_selected_stream(reader, STREAM_FLAG_REQUESTED_ONCE, stream_index)))
- hr = source_reader_get_first_selected_stream(reader, 0, stream_index);
+ {
+ //hr = source_reader_get_first_selected_stream(reader, 0, stream_index);
+ static int last_selection = -1;
+ int i;
+ BOOL selected;
+
+ for (i = 0; i < (int) reader->stream_count; ++i)
+ {
+ source_reader_get_stream_selection(reader, i, &selected);
+ if (selected && i > last_selection)
+ {
+ last_selection = i;
+ *stream_index = i;
+ hr = S_OK;
+ break;
+ }
+ }
+ if (i == reader->stream_count)
+ {
+ hr = source_reader_get_first_selected_stream(reader, 0, stream_index);
+ last_selection = hr == S_OK ? *stream_index : -1;
+ }
+ }
}
return hr;
default:
--
2.28.0


0 comments on commit 8583e4f

Please sign in to comment.