gdi32: Implement D3DKMTCloseAdapter.

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Zhiyi Zhang 2019-06-05 23:18:44 +08:00 committed by Alexandre Julliard
parent d37030528e
commit 344556f7d5
3 changed files with 25 additions and 5 deletions

View file

@ -5,7 +5,7 @@
@ stdcall D3D11CreateDevice(ptr long ptr long ptr long long ptr ptr ptr)
@ stdcall D3D11CreateDeviceAndSwapChain(ptr long ptr long ptr long long ptr ptr ptr ptr ptr)
@ stdcall D3D11On12CreateDevice(ptr long ptr long ptr long long ptr ptr ptr)
@ stub D3DKMTCloseAdapter
@ stdcall D3DKMTCloseAdapter(ptr) gdi32.D3DKMTCloseAdapter
@ stub D3DKMTCreateAllocation
@ stub D3DKMTCreateContext
@ stub D3DKMTCreateDevice

View file

@ -1279,8 +1279,28 @@ NTSTATUS WINAPI D3DKMTEscape( const void *pData )
*/
NTSTATUS WINAPI D3DKMTCloseAdapter( const D3DKMT_CLOSEADAPTER *desc )
{
FIXME("(%p): stub\n", desc);
return STATUS_SUCCESS;
NTSTATUS status = STATUS_INVALID_PARAMETER;
struct d3dkmt_adapter *adapter;
TRACE("(%p)\n", desc);
if (!desc || !desc->hAdapter)
return STATUS_INVALID_PARAMETER;
EnterCriticalSection( &driver_section );
LIST_FOR_EACH_ENTRY( adapter, &d3dkmt_adapters, struct d3dkmt_adapter, entry )
{
if (adapter->handle == desc->hAdapter)
{
list_remove( &adapter->entry );
heap_free( adapter );
status = STATUS_SUCCESS;
break;
}
}
LeaveCriticalSection( &driver_section );
return status;
}
/******************************************************************************

View file

@ -179,11 +179,11 @@ static void test_D3DKMTCloseAdapter(void)
/* Invalid parameters */
status = pD3DKMTCloseAdapter(NULL);
todo_wine ok(status == STATUS_INVALID_PARAMETER, "Got unexpected return code %#x.\n", status);
ok(status == STATUS_INVALID_PARAMETER, "Got unexpected return code %#x.\n", status);
memset(&close_adapter_desc, 0, sizeof(close_adapter_desc));
status = pD3DKMTCloseAdapter(&close_adapter_desc);
todo_wine ok(status == STATUS_INVALID_PARAMETER, "Got unexpected return code %#x.\n", status);
ok(status == STATUS_INVALID_PARAMETER, "Got unexpected return code %#x.\n", status);
}
static void test_D3DKMTCreateDevice(void)