evr/sample: Implement SetDirectXManager().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
529eb28488
commit
a6512b32ef
|
@ -21,6 +21,8 @@
|
||||||
#include "evr.h"
|
#include "evr.h"
|
||||||
#include "mfapi.h"
|
#include "mfapi.h"
|
||||||
#include "mferror.h"
|
#include "mferror.h"
|
||||||
|
#include "d3d9.h"
|
||||||
|
#include "dxva2api.h"
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "wine/heap.h"
|
#include "wine/heap.h"
|
||||||
|
@ -108,6 +110,7 @@ struct sample_allocator
|
||||||
|
|
||||||
IMFVideoSampleAllocatorNotify *callback;
|
IMFVideoSampleAllocatorNotify *callback;
|
||||||
unsigned int free_samples;
|
unsigned int free_samples;
|
||||||
|
IDirect3DDeviceManager9 *device_manager;
|
||||||
CRITICAL_SECTION cs;
|
CRITICAL_SECTION cs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -168,6 +171,8 @@ static ULONG WINAPI sample_allocator_Release(IMFVideoSampleAllocator *iface)
|
||||||
{
|
{
|
||||||
if (allocator->callback)
|
if (allocator->callback)
|
||||||
IMFVideoSampleAllocatorNotify_Release(allocator->callback);
|
IMFVideoSampleAllocatorNotify_Release(allocator->callback);
|
||||||
|
if (allocator->device_manager)
|
||||||
|
IDirect3DDeviceManager9_Release(allocator->device_manager);
|
||||||
DeleteCriticalSection(&allocator->cs);
|
DeleteCriticalSection(&allocator->cs);
|
||||||
heap_free(allocator);
|
heap_free(allocator);
|
||||||
}
|
}
|
||||||
|
@ -178,9 +183,27 @@ static ULONG WINAPI sample_allocator_Release(IMFVideoSampleAllocator *iface)
|
||||||
static HRESULT WINAPI sample_allocator_SetDirectXManager(IMFVideoSampleAllocator *iface,
|
static HRESULT WINAPI sample_allocator_SetDirectXManager(IMFVideoSampleAllocator *iface,
|
||||||
IUnknown *manager)
|
IUnknown *manager)
|
||||||
{
|
{
|
||||||
FIXME("%p, %p.\n", iface, manager);
|
struct sample_allocator *allocator = impl_from_IMFVideoSampleAllocator(iface);
|
||||||
|
IDirect3DDeviceManager9 *device_manager = NULL;
|
||||||
|
HRESULT hr;
|
||||||
|
|
||||||
return E_NOTIMPL;
|
TRACE("%p, %p.\n", iface, manager);
|
||||||
|
|
||||||
|
if (manager && FAILED(hr = IUnknown_QueryInterface(manager, &IID_IDirect3DDeviceManager9,
|
||||||
|
(void **)&device_manager)))
|
||||||
|
{
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnterCriticalSection(&allocator->cs);
|
||||||
|
|
||||||
|
if (allocator->device_manager)
|
||||||
|
IDirect3DDeviceManager9_Release(allocator->device_manager);
|
||||||
|
allocator->device_manager = device_manager;
|
||||||
|
|
||||||
|
LeaveCriticalSection(&allocator->cs);
|
||||||
|
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI sample_allocator_UninitializeSampleAllocator(IMFVideoSampleAllocator *iface)
|
static HRESULT WINAPI sample_allocator_UninitializeSampleAllocator(IMFVideoSampleAllocator *iface)
|
||||||
|
|
Loading…
Reference in New Issue