[PATCH v2] amstream: Simulate IDirectDrawStreamSampleImpl_Update return values.
Anastasios Simeonidis
symeonidis at csd.auth.gr
Sun Dec 2 06:55:45 CST 2018
Simulate a successful stream playback so that apps don't get stuck
when trying to play a media file using the DirectShow api.
Signed-off-by: Anastasios Simeonidis <symeonidis at csd.auth.gr>
---
dlls/amstream/mediastream.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/amstream/mediastream.c b/dlls/amstream/mediastream.c
index bc61597502..633ba91591 100644
--- a/dlls/amstream/mediastream.c
+++ b/dlls/amstream/mediastream.c
@@ -1196,6 +1196,8 @@ typedef struct {
IMediaStream *parent;
IDirectDrawSurface *surface;
RECT rect;
+ // FIXME: Implement IDirectDrawStreamSampleImpl_Update.
+ int workaround;
} IDirectDrawStreamSampleImpl;
static inline IDirectDrawStreamSampleImpl *impl_from_IDirectDrawStreamSample(IDirectDrawStreamSample *iface)
@@ -1279,9 +1281,15 @@ static HRESULT WINAPI IDirectDrawStreamSampleImpl_SetSampleTimes(IDirectDrawStre
static HRESULT WINAPI IDirectDrawStreamSampleImpl_Update(IDirectDrawStreamSample *iface, DWORD flags, HANDLE event,
PAPCFUNC func_APC, DWORD APC_data)
{
+ IDirectDrawStreamSampleImpl *This = impl_from_IDirectDrawStreamSample(iface);
+
FIXME("(%p)->(%x,%p,%p,%u): stub\n", iface, flags, event, func_APC, APC_data);
- return S_OK;
+ // Simulate successful playback.
+ int count = (This->workaround + 1) % 300;
+ This->workaround = count;
+
+ return (count == 299) ? MS_S_ENDOFSTREAM : S_OK;
}
static HRESULT WINAPI IDirectDrawStreamSampleImpl_CompletionStatus(IDirectDrawStreamSample *iface, DWORD flags, DWORD milliseconds)
@@ -1404,8 +1412,9 @@ static HRESULT ddrawstreamsample_create(IDirectDrawMediaStream *parent, IDirectD
SetRect(&object->rect, 0, 0, desc.dwWidth, desc.dwHeight);
}
- *ddraw_stream_sample = &object->IDirectDrawStreamSample_iface;
+ object->workaround = 0;
+ *ddraw_stream_sample = &object->IDirectDrawStreamSample_iface;
return S_OK;
}
--
2.19.2
More information about the wine-devel
mailing list