1
0
Fork 0
This commit is contained in:
James Turner 2010-11-24 20:57:56 +00:00
parent df35559246
commit ce8ca7853c
2 changed files with 18 additions and 12 deletions

View file

@ -306,6 +306,8 @@ FGIO::init()
// SG_LOG( SG_IO, SG_INFO, "I/O Channel initialization, " << // SG_LOG( SG_IO, SG_INFO, "I/O Channel initialization, " <<
// globals->get_channel_options_list()->size() << " requests." ); // globals->get_channel_options_list()->size() << " requests." );
_realDeltaTime = fgGetNode("/sim/time/delta-realtime-sec");
FGProtocol *p; FGProtocol *p;
// we could almost do this in a single step except pushing a valid // we could almost do this in a single step except pushing a valid
@ -339,30 +341,31 @@ FGIO::reinit()
// process any IO channel work // process any IO channel work
void void
FGIO::update( double delta_time_sec ) FGIO::update( double /* delta_time_sec */ )
{ {
// cout << "processing I/O channels" << endl; // use wall-clock, not simulation, delta time, so that network
// cout << " Elapsed time = " << delta_time_sec << endl; // protocols update when the simulation is paused
// see http://code.google.com/p/flightgear-bugs/issues/detail?id=125
double delta_time_sec = _realDeltaTime->getDoubleValue();
ProtocolVec::iterator i = io_channels.begin(); ProtocolVec::iterator i = io_channels.begin();
ProtocolVec::iterator end = io_channels.end(); ProtocolVec::iterator end = io_channels.end();
for (; i != end; ++i ) { for (; i != end; ++i ) {
FGProtocol* p = *i; FGProtocol* p = *i;
if (!p->is_enabled()) {
if ( p->is_enabled() ) { continue;
}
p->dec_count_down( delta_time_sec ); p->dec_count_down( delta_time_sec );
double dt = 1 / p->get_hz(); double dt = 1 / p->get_hz();
if ( p->get_count_down() < 0.33 * dt ) { if ( p->get_count_down() < 0.33 * dt ) {
p->process(); p->process();
p->inc_count(); p->inc_count();
while ( p->get_count_down() < 0.33 * dt ) { while ( p->get_count_down() < 0.33 * dt ) {
p->inc_count_down( dt ); p->inc_count_down( dt );
} }
// double ave = elapsed_time / p->get_count(); } // of channel processing
// cout << " ave rate = " << ave << endl; } // of io_channels iteration
}
}
}
} }
void void

View file

@ -27,6 +27,7 @@
#include <simgear/compiler.h> #include <simgear/compiler.h>
#include <simgear/structure/subsystem_mgr.hxx> #include <simgear/structure/subsystem_mgr.hxx>
#include <simgear/props/props.hxx>
#include <vector> #include <vector>
#include <string> #include <string>
@ -58,6 +59,8 @@ private:
typedef std::vector< FGProtocol* > ProtocolVec; typedef std::vector< FGProtocol* > ProtocolVec;
ProtocolVec io_channels; ProtocolVec io_channels;
SGPropertyNode_ptr _realDeltaTime;
}; };