mirror of
git://source.winehq.org/git/wine.git
synced 2024-09-15 06:21:15 +00:00
windows.gaming.input: Query IGameController interface in TryGetFactoryControllerFromGameController.
This commit is contained in:
parent
eab7b95bab
commit
c0877844e7
|
@ -1184,13 +1184,13 @@ static void test_windows_gaming_input(void)
|
||||||
|
|
||||||
IGameController_Release( tmp_game_controller );
|
IGameController_Release( tmp_game_controller );
|
||||||
|
|
||||||
next:
|
|
||||||
hr = IRawGameControllerStatics_FromGameController( statics, custom_controller.IGameController_outer, &tmp_raw_controller );
|
hr = IRawGameControllerStatics_FromGameController( statics, custom_controller.IGameController_outer, &tmp_raw_controller );
|
||||||
ok( hr == S_OK, "FromGameController returned %#lx\n", hr );
|
ok( hr == S_OK, "FromGameController returned %#lx\n", hr );
|
||||||
todo_wine
|
todo_wine
|
||||||
ok( tmp_raw_controller == raw_controller, "got controller %p\n", tmp_raw_controller );
|
ok( tmp_raw_controller == raw_controller, "got controller %p\n", tmp_raw_controller );
|
||||||
if (tmp_raw_controller) IRawGameController_Release( tmp_raw_controller );
|
if (tmp_raw_controller) IRawGameController_Release( tmp_raw_controller );
|
||||||
|
|
||||||
|
next:
|
||||||
IGameController_Release( game_controller );
|
IGameController_Release( game_controller );
|
||||||
IRawGameController_Release( raw_controller );
|
IRawGameController_Release( raw_controller );
|
||||||
SetEvent( stop_event );
|
SetEvent( stop_event );
|
||||||
|
|
|
@ -5092,9 +5092,8 @@ static void test_windows_gaming_input(void)
|
||||||
|
|
||||||
hr = IRawGameControllerStatics_FromGameController( controller_statics, (IGameController *)raw_controller, &tmp_raw_controller );
|
hr = IRawGameControllerStatics_FromGameController( controller_statics, (IGameController *)raw_controller, &tmp_raw_controller );
|
||||||
ok( hr == S_OK, "FromGameController returned %#lx\n", hr );
|
ok( hr == S_OK, "FromGameController returned %#lx\n", hr );
|
||||||
todo_wine
|
|
||||||
ok( tmp_raw_controller == raw_controller, "got unexpected IGameController interface\n" );
|
ok( tmp_raw_controller == raw_controller, "got unexpected IGameController interface\n" );
|
||||||
if (tmp_raw_controller) IRawGameController_Release( tmp_raw_controller );
|
IRawGameController_Release( tmp_raw_controller );
|
||||||
|
|
||||||
IGameController_Release( game_controller );
|
IGameController_Release( game_controller );
|
||||||
IRawGameController_Release( raw_controller );
|
IRawGameController_Release( raw_controller );
|
||||||
|
|
|
@ -372,14 +372,18 @@ statics2_TryGetFactoryControllerFromGameController( IGameControllerFactoryManage
|
||||||
IGameController *controller, IGameController **value )
|
IGameController *controller, IGameController **value )
|
||||||
{
|
{
|
||||||
struct controller *entry, *other;
|
struct controller *entry, *other;
|
||||||
|
IGameController *tmp_controller;
|
||||||
BOOL found = FALSE;
|
BOOL found = FALSE;
|
||||||
|
|
||||||
TRACE( "iface %p, factory %p, controller %p, value %p.\n", iface, factory, controller, value );
|
TRACE( "iface %p, factory %p, controller %p, value %p.\n", iface, factory, controller, value );
|
||||||
|
|
||||||
|
/* Spider Man Remastered passes a IRawGameController instead of IGameController, query the iface again */
|
||||||
|
if (FAILED(IGameController_QueryInterface( controller, &IID_IGameController, (void **)&tmp_controller ))) goto done;
|
||||||
|
|
||||||
EnterCriticalSection( &manager_cs );
|
EnterCriticalSection( &manager_cs );
|
||||||
|
|
||||||
LIST_FOR_EACH_ENTRY( entry, &controller_list, struct controller, entry )
|
LIST_FOR_EACH_ENTRY( entry, &controller_list, struct controller, entry )
|
||||||
if ((found = &entry->IGameController_iface == controller)) break;
|
if ((found = &entry->IGameController_iface == tmp_controller)) break;
|
||||||
|
|
||||||
if (!found) WARN( "Failed to find controller %p\n", controller );
|
if (!found) WARN( "Failed to find controller %p\n", controller );
|
||||||
else
|
else
|
||||||
|
@ -392,6 +396,9 @@ statics2_TryGetFactoryControllerFromGameController( IGameControllerFactoryManage
|
||||||
|
|
||||||
LeaveCriticalSection( &manager_cs );
|
LeaveCriticalSection( &manager_cs );
|
||||||
|
|
||||||
|
IGameController_Release( tmp_controller );
|
||||||
|
|
||||||
|
done:
|
||||||
if (!found) *value = NULL;
|
if (!found) *value = NULL;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue