[PATCH 1/2] amstream: Store parent as struct ddraw_stream in ddraw stream sample.
Gijs Vermeulen
gijsvrm at gmail.com
Tue Jun 23 09:58:05 CDT 2020
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
dlls/amstream/ddrawstream.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/dlls/amstream/ddrawstream.c b/dlls/amstream/ddrawstream.c
index c471a66200..5c0203e76b 100644
--- a/dlls/amstream/ddrawstream.c
+++ b/dlls/amstream/ddrawstream.c
@@ -28,9 +28,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(amstream);
static const WCHAR sink_id[] = L"I{A35FF56A-9FDA-11D0-8FDF-00C04FD9189D}";
-static HRESULT ddrawstreamsample_create(IDirectDrawMediaStream *parent, IDirectDrawSurface *surface,
- const RECT *rect, IDirectDrawStreamSample **ddraw_stream_sample);
-
struct ddraw_stream
{
IAMMediaStream IAMMediaStream_iface;
@@ -51,6 +48,9 @@ struct ddraw_stream
AM_MEDIA_TYPE mt;
};
+static HRESULT ddrawstreamsample_create(struct ddraw_stream *parent, IDirectDrawSurface *surface,
+ const RECT *rect, IDirectDrawStreamSample **ddraw_stream_sample);
+
static inline struct ddraw_stream *impl_from_IAMMediaStream(IAMMediaStream *iface)
{
return CONTAINING_RECORD(iface, struct ddraw_stream, IAMMediaStream_iface);
@@ -401,12 +401,14 @@ static HRESULT WINAPI ddraw_IDirectDrawMediaStream_SetDirectDraw(IDirectDrawMedi
}
static HRESULT WINAPI ddraw_IDirectDrawMediaStream_CreateSample(IDirectDrawMediaStream *iface,
- IDirectDrawSurface *surface, const RECT *rect, DWORD dwFlags,
- IDirectDrawStreamSample **ppSample)
+ IDirectDrawSurface *surface, const RECT *rect, DWORD flags,
+ IDirectDrawStreamSample **sample)
{
- TRACE("(%p)->(%p,%s,%x,%p)\n", iface, surface, wine_dbgstr_rect(rect), dwFlags, ppSample);
+ struct ddraw_stream *stream = impl_from_IDirectDrawMediaStream(iface);
+
+ TRACE("stream %p, surface %p, rect %s, flags %x, sample %p.\n", stream, surface, wine_dbgstr_rect(rect), flags, sample);
- return ddrawstreamsample_create(iface, surface, rect, ppSample);
+ return ddrawstreamsample_create(stream, surface, rect, sample);
}
static HRESULT WINAPI ddraw_IDirectDrawMediaStream_GetTimePerFrame(IDirectDrawMediaStream *iface,
@@ -959,7 +961,7 @@ struct ddraw_sample
{
IDirectDrawStreamSample IDirectDrawStreamSample_iface;
LONG ref;
- IMediaStream *parent;
+ struct ddraw_stream *parent;
IDirectDrawSurface *surface;
RECT rect;
};
@@ -1011,7 +1013,6 @@ static ULONG WINAPI ddraw_sample_Release(IDirectDrawStreamSample *iface)
{
if (sample->surface)
IDirectDrawSurface_Release(sample->surface);
- IMediaStream_Release(sample->parent);
HeapFree(GetProcessHeap(), 0, sample);
}
@@ -1102,7 +1103,7 @@ static const struct IDirectDrawStreamSampleVtbl DirectDrawStreamSample_Vtbl =
ddraw_sample_SetRect
};
-static HRESULT ddrawstreamsample_create(IDirectDrawMediaStream *parent, IDirectDrawSurface *surface,
+static HRESULT ddrawstreamsample_create(struct ddraw_stream *parent, IDirectDrawSurface *surface,
const RECT *rect, IDirectDrawStreamSample **ddraw_stream_sample)
{
struct ddraw_sample *object;
@@ -1116,8 +1117,7 @@ static HRESULT ddrawstreamsample_create(IDirectDrawMediaStream *parent, IDirectD
object->IDirectDrawStreamSample_iface.lpVtbl = &DirectDrawStreamSample_Vtbl;
object->ref = 1;
- object->parent = (IMediaStream*)parent;
- IMediaStream_AddRef(object->parent);
+ object->parent = parent;
if (surface)
{
@@ -1129,7 +1129,7 @@ static HRESULT ddrawstreamsample_create(IDirectDrawMediaStream *parent, IDirectD
DDSURFACEDESC desc;
IDirectDraw *ddraw;
- hr = IDirectDrawMediaStream_GetDirectDraw(parent, &ddraw);
+ hr = IDirectDrawMediaStream_GetDirectDraw(&parent->IDirectDrawMediaStream_iface, &ddraw);
if (FAILED(hr))
{
IDirectDrawStreamSample_Release(&object->IDirectDrawStreamSample_iface);
--
2.27.0
More information about the wine-devel
mailing list