Reflecting discussed changes for interpolation performance refs #386

(based on FSX testing)
* Only send changed situation to SIM
* Split sending of parts / situations
* Only send parts with a reduced frequency (means slower as positions)
* Mark geodetic height as null for default values (the value is usually unavailable)
* Fixed altitude to MSL for network data
* Trace which aircrafts support aircraft parts via network
* Renamed insert_fron push_front (as proposed by Roland)

Status quo / lessons learnt
* On slower PCs jitter is still noticed for interpolated aircraft.
* Running interpolation in an independent process (aka core, not in GUI) reduced load dependencies
  => it seems to make sense to run driver in own thread
* The onGround flag in parts seems clumsy as it required to retrieve parts for position updates
* In interpolation performance really matters
This commit is contained in:
Klaus Basan
2015-02-26 21:47:28 +01:00
parent ca6cd9c063
commit eca8c5b637
21 changed files with 376 additions and 320 deletions

View File

@@ -234,6 +234,12 @@ namespace BlackMisc
*/
void push_back(const T &value) { Q_ASSERT(pimpl()); pimpl()->push_back(value); }
/*!
* \brief Insert as first element.
* \pre The sequence must be initialized.
*/
void push_front(const T &value) { insert(begin(), value); }
/*!
* \brief Move-appends an element at the end of the sequence.
* \pre The sequence must be initialized.
@@ -272,12 +278,6 @@ namespace BlackMisc
*/
void insert(T &&value) { push_back(std::move(value)); }
/*!
* \brief Insert as first element.
* \pre The sequence must be initialized.
*/
void insert_front(const T &value) { insert(begin(), value); }
/*!
* \brief Synonym for push_back.
* \pre The sequence must be initialized.
@@ -376,7 +376,7 @@ namespace BlackMisc
*/
int applyIf(const CPropertyIndexVariantMap &pattern, const CPropertyIndexVariantMap &newValues, bool skipEqualValues = false)
{
return applyIf([ & ](const T &value) { return value == pattern; }, newValues, skipEqualValues);
return applyIf([ & ](const T & value) { return value == pattern; }, newValues, skipEqualValues);
}
/*!