From c02834b7e3a8a2c3f1e6abbc85c18b6879156abb Mon Sep 17 00:00:00 2001 From: Aleric Inglewood Date: Fri, 11 May 2012 04:15:07 +0200 Subject: [PATCH] Use AIThreadSafeDC and _wat convention to simplify AIEvent. --- indra/newview/statemachine/aievent.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/indra/newview/statemachine/aievent.cpp b/indra/newview/statemachine/aievent.cpp index ec2901932..8682f7670 100644 --- a/indra/newview/statemachine/aievent.cpp +++ b/indra/newview/statemachine/aievent.cpp @@ -64,22 +64,8 @@ inline void AIRegisteredStateMachines::trigger(void) } // A list (array) with all AIRegisteredStateMachines maps, one for each event type. -struct AIRegisteredStateMachinesList { - AIThreadSafeSimple mRegisteredStateMachinesList[AIEvent::number_of_events]; - AIRegisteredStateMachinesList(void); - AIThreadSafeSimple& operator[](AIEvent::AIEvents event) { return mRegisteredStateMachinesList[event]; } -}; - -AIRegisteredStateMachinesList::AIRegisteredStateMachinesList(void) -{ - for (int event = 0; event < AIEvent::number_of_events; ++event) - { - new (&mRegisteredStateMachinesList[event]) AIRegisteredStateMachines; - } -} - -// Instantiate the list with all AIRegisteredStateMachines maps. -static AIRegisteredStateMachinesList registered_statemachines_list; +static AIThreadSafeSimpleDC registered_statemachines_list[AIEvent::number_of_events]; +typedef AIAccess registered_statemachines_wat; //----------------------------------------------------------------------------- // External API starts here. @@ -91,7 +77,7 @@ static AIRegisteredStateMachinesList registered_statemachines_list; void AIEvent::Register(AIEvents event, AIStateMachine* statemachine, bool one_shot) { statemachine->idle(); - AIAccess registered_statemachines_w(registered_statemachines_list[event]); + registered_statemachines_wat registered_statemachines_w(registered_statemachines_list[event]); registered_statemachines_w->Register(statemachine, one_shot); } @@ -99,7 +85,7 @@ void AIEvent::Register(AIEvents event, AIStateMachine* statemachine, bool one_sh // static void AIEvent::Unregister(AIEvents event, AIStateMachine* statemachine) { - AIAccess registered_statemachines_w(registered_statemachines_list[event]); + registered_statemachines_wat registered_statemachines_w(registered_statemachines_list[event]); registered_statemachines_w->Unregister(statemachine); } @@ -107,7 +93,7 @@ void AIEvent::Unregister(AIEvents event, AIStateMachine* statemachine) // static void AIEvent::trigger(AIEvents event) { - AIAccess registered_statemachines_w(registered_statemachines_list[event]); + registered_statemachines_wat registered_statemachines_w(registered_statemachines_list[event]); registered_statemachines_w->trigger(); }