Commit 17613e0a authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

mfplat: Use current stream position when async request is made.

parent 5c052b69
...@@ -2013,6 +2013,7 @@ struct async_stream_op ...@@ -2013,6 +2013,7 @@ struct async_stream_op
const BYTE *src; const BYTE *src;
BYTE *dest; BYTE *dest;
} u; } u;
QWORD position;
ULONG requested_length; ULONG requested_length;
ULONG actual_length; ULONG actual_length;
IMFAsyncResult *caller; IMFAsyncResult *caller;
...@@ -2087,6 +2088,7 @@ static HRESULT bytestream_create_io_request(struct bytestream *stream, enum asyn ...@@ -2087,6 +2088,7 @@ static HRESULT bytestream_create_io_request(struct bytestream *stream, enum asyn
op->IUnknown_iface.lpVtbl = &async_stream_op_vtbl; op->IUnknown_iface.lpVtbl = &async_stream_op_vtbl;
op->refcount = 1; op->refcount = 1;
op->u.src = data; op->u.src = data;
op->position = stream->position;
op->requested_length = size; op->requested_length = size;
op->type = type; op->type = type;
if (FAILED(hr = MFCreateAsyncResult((IUnknown *)&stream->IMFByteStream_iface, callback, state, &op->caller))) if (FAILED(hr = MFCreateAsyncResult((IUnknown *)&stream->IMFByteStream_iface, callback, state, &op->caller)))
...@@ -2645,7 +2647,7 @@ static HRESULT WINAPI bytestream_stream_read_callback_Invoke(IMFAsyncCallback *i ...@@ -2645,7 +2647,7 @@ static HRESULT WINAPI bytestream_stream_read_callback_Invoke(IMFAsyncCallback *i
op = impl_async_stream_op_from_IUnknown(object); op = impl_async_stream_op_from_IUnknown(object);
position.QuadPart = stream->position; position.QuadPart = op->position;
if (SUCCEEDED(hr = IStream_Seek(stream->stream, position, STREAM_SEEK_SET, NULL))) if (SUCCEEDED(hr = IStream_Seek(stream->stream, position, STREAM_SEEK_SET, NULL)))
{ {
if (SUCCEEDED(hr = IStream_Read(stream->stream, op->u.dest, op->requested_length, &op->actual_length))) if (SUCCEEDED(hr = IStream_Read(stream->stream, op->u.dest, op->requested_length, &op->actual_length)))
...@@ -2676,7 +2678,7 @@ static HRESULT WINAPI bytestream_stream_write_callback_Invoke(IMFAsyncCallback * ...@@ -2676,7 +2678,7 @@ static HRESULT WINAPI bytestream_stream_write_callback_Invoke(IMFAsyncCallback *
op = impl_async_stream_op_from_IUnknown(object); op = impl_async_stream_op_from_IUnknown(object);
position.QuadPart = stream->position; position.QuadPart = op->position;
if (SUCCEEDED(hr = IStream_Seek(stream->stream, position, STREAM_SEEK_SET, NULL))) if (SUCCEEDED(hr = IStream_Seek(stream->stream, position, STREAM_SEEK_SET, NULL)))
{ {
if (SUCCEEDED(hr = IStream_Write(stream->stream, op->u.src, op->requested_length, &op->actual_length))) if (SUCCEEDED(hr = IStream_Write(stream->stream, op->u.src, op->requested_length, &op->actual_length)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment