Commit Graph

15 Commits

Author SHA1 Message Date
Drake Arconis
2f2e1fbe8f Major breaking changes 2016-01-16 08:05:47 -05:00
Aleric Inglewood
b1e406731d Merge remote-tracking branch 'singu/master' 2014-08-25 18:39:46 +02:00
Aleric Inglewood
8c6d51cb71 No longer support DEBUG_CURLIO when libcwd isn't installed. 2014-08-25 17:58:45 +02:00
Shyotl
0e86b696c5 Added more verbose statemachine debug output. 2014-08-18 00:54:01 -05:00
Aleric Inglewood
53e26d4909 Compile fix for -DDEBUG_CURLIO
Since that fakes the libcwd macros, this is needed to compile
the recent change that allows to only turn on debugging output
for certain statemachine objects when DEBUG_CURLIO is defined,
but libcwd is not used (CWDEBUG is undefined).
2013-11-21 01:28:16 +01:00
Aleric Inglewood
9db6bc0557 Add AIStateMachine::mSMDebug
The patch is exclusively libcwd related.

Turns off output from statemachines to dc::statemachine by default.
Allows to turn on the debug output on a per statemachine basis (at
compile time).
2013-10-15 22:29:52 +02:00
Aleric Inglewood
e12aaa3f5f Compile warning fix. 2013-04-20 05:06:30 +02:00
Aleric Inglewood
9fb3fe21bc Compile warning fix. 2013-04-20 05:03:17 +02:00
Aleric Inglewood
e0aa3489f8 Fix for AIStateMachineThread (LLThreadSafeRefCount: deleting non-zero reference)
This fixes
https://code.google.com/p/singularity-viewer/issues/detail?id=736

The problem was that we need to keep the 'user' derived THREAD_IMPL
alive in the thread, and therefore used an LLPointer<THREAD_IMPL>
(as base class of AIStateMachineThread<THREAD_IMPL>), and therefore
THREAD_IMPL, derived from AIThreadImpl had to be derived from
LLThreadSafeRefCount. However, AIStateMachineThread<THREAD_IMPL> also
needed to be a statemachine of itself and is derived from
AIStateMachineThreadBase derived from AIStateMachine which is ALSO
derived from LLThreadSafeRefCount - that in this case wasn't really
needed. An attempt to deactive it by calling ref() from the constructor
of AIStateMachineThreadBase failed on the fact that LLThreadSafeRefCount
insists that its ref count mRef is exactly zero when it is being
deleted.

The chosen solution is to remove the ref count from AIThreadImpl and use
the LLThreadSafeRefCount base class of AIStateMachineThreadBase. The
result is that not only THREAD_IMPL, but also the state machine object
is kept alive, but that doesn't seem like a problem.

Thus, instead of passing a AIThreadImpl* to
AIStateMachineThreadBase::Thread, we now pass a
AIStateMachineThreadBase* to it to keep the whole of the
AIStateMachineThread<THREAD_IMPL> object alive, which has a THREAD_IMPL
as member now. This member then can be accessed through a virtual
function impl(). Another result of this change is that the 'user' (the
class derived from AIThreadImpl, THREAD_IMPL) now has to deal with the
LLPointer, and use LLPointer<AIStateMachineThread<THREAD_IMPL> >
instead of just AIStateMachineThread<THREAD_IMPL> and also allocate
this object himself. The access from there then changes into a -> to
access the state machine (as opposed to a .) and ->thread_impl() to
access the THREAD_IMPL object (as opposed to a ->).
2013-04-20 04:28:23 +02:00
Aleric Inglewood
c4dceaf3e9 Rewrite of AIStateMachine, version 2. 2013-03-06 03:26:43 +01:00
Aleric Inglewood
9203b24eb9 Remove AIStateMachineThreadBase* argument from AIThreadImpl constructor.
Also removes the use of 'this' to initialize base classes, which led to
a compiler warning on vs2010.
2013-01-30 03:44:02 +01:00
Aleric Inglewood
7ba0b6482c Fix example code. 2013-01-29 20:49:53 +01:00
Aleric Inglewood
d5ed31ca9b Allow passing a name to underlaying LLThread in debug mode. 2013-01-29 20:44:14 +01:00
Aleric Inglewood
ebac80b5b7 Fix termination race condition. 2013-01-27 20:52:21 +01:00
Aleric Inglewood
c528a15e95 Added AIStateMachineThread 2013-01-26 19:19:09 +01:00