mfplat: Implement Lock2DSize() for d3d11 buffers.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
81c7633154
commit
78ab395594
|
@ -1019,9 +1019,34 @@ static HRESULT WINAPI dxgi_surface_buffer_GetScanline0AndPitch(IMF2DBuffer2 *ifa
|
|||
static HRESULT WINAPI dxgi_surface_buffer_Lock2DSize(IMF2DBuffer2 *iface, MF2DBuffer_LockFlags flags,
|
||||
BYTE **scanline0, LONG *pitch, BYTE **buffer_start, DWORD *buffer_length)
|
||||
{
|
||||
FIXME("%p, %#x, %p, %p, %p, %p.\n", iface, flags, scanline0, pitch, buffer_start, buffer_length);
|
||||
struct buffer *buffer = impl_from_IMF2DBuffer2(iface);
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
return E_NOTIMPL;
|
||||
TRACE("%p, %#x, %p, %p, %p, %p.\n", iface, flags, scanline0, pitch, buffer_start, buffer_length);
|
||||
|
||||
if (!scanline0 || !pitch || !buffer_start || !buffer_length)
|
||||
return E_POINTER;
|
||||
|
||||
EnterCriticalSection(&buffer->cs);
|
||||
|
||||
if (buffer->_2d.linear_buffer)
|
||||
hr = MF_E_UNEXPECTED;
|
||||
else if (!buffer->_2d.locks++)
|
||||
hr = dxgi_surface_buffer_map(buffer);
|
||||
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
*scanline0 = buffer->dxgi_surface.map_desc.pData;
|
||||
*pitch = buffer->dxgi_surface.map_desc.RowPitch;
|
||||
if (buffer_start)
|
||||
*buffer_start = *scanline0;
|
||||
if (buffer_length)
|
||||
*buffer_length = buffer->dxgi_surface.map_desc.RowPitch * buffer->_2d.height;
|
||||
}
|
||||
|
||||
LeaveCriticalSection(&buffer->cs);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI dxgi_buffer_QueryInterface(IMFDXGIBuffer *iface, REFIID riid, void **obj)
|
||||
|
|
Loading…
Reference in New Issue