bool initial = argc > 2 && naTrue(args[2]);
FGNasalListener *nl = new FGNasalListener(node, handler, this,
- gcSave(handler));
+ gcSave(handler), _listenerId);
node->addChangeListener(nl, initial);
_listener[_listenerId] = nl;
// FGNasalListener class.
FGNasalListener::FGNasalListener(SGPropertyNode_ptr node, naRef handler,
- FGNasalSys* nasal, int key) :
+ FGNasalSys* nasal, int key, int id) :
_node(node),
_handler(handler),
_gcKey(key),
+ _id(id),
_nas(nasal),
_active(0),
_dead(false)
if(_active || _dead)
return;
+ SG_LOG(SG_NASAL, SG_DEBUG, "trigger listener #" << _id);
_active++;
_nas->_cmdArg = node;
_nas->call(_handler, naNil());
class FGNasalListener : public SGPropertyChangeListener {
public:
FGNasalListener(SGPropertyNode_ptr node, naRef handler,
- FGNasalSys* nasal, int key);
+ FGNasalSys* nasal, int key, int id);
~FGNasalListener();
void valueChanged(SGPropertyNode* node);
SGPropertyNode_ptr _node;
naRef _handler;
int _gcKey;
+ int _id;
FGNasalSys* _nas;
unsigned int _active;
bool _dead;