* more asserts to find issues
* limit number of exceptions displayed
* reset() function (there was an issue with not cleaned up values)
* using CSimConnectObjects and adjustments for the previous changes
* located in context since context owns matcher object
* call from GUI
* some code formatting to indicate the cross simulator slots connected in runtime
refs #780
* utility function if web data are already available
* moved setOwnAircraftModel as reverseLookupAndUpdateOwnAircraftModel to CSimulatorCommon
* reverseLookupAndUpdateOwnAircraftModel also handles async lookup when data are not yet available
* removed context ps_allSwiftWebDataRead reverse lookup, done in CSimulatorCommon now
* function for default model and situation in context (so they can be reused as in login component)
* use CDatabaseUtils::consolidateOwnAircraftModelWithDbData for lookup
* added signatures for completer string (when send via context size matters)
* support of all instaled models in completer
* added BLACKMISC_EXPORT in model cache classes
* discovered during testing, signal is not used (since we now use model set)
* renamed context signal to "modelSetChanged"
* prepared context for message settings
In same step cleaned up contexts a bit
* added function for model set strings
* renamed functions to getModelSet... instead of installed models (the set is smaller and is what we want to use with DBus)
* signal when debug/log flags changed
* removed some \copydoc
* allow to enable/disable rev.lookup/matching messages
* removed reload model function (dangling)
* changed signature of ownAircraftModelChanged to model
* added function for a reverse lookup of a model (string->model) and use it when model changed
* renamed function to updateByLocalFileNames
All model matching will be done simulator independent in
CContextSimulator. The simulator specific part is kept in the model
set.
This also caused the signal modelMatchingCompleted to be renamed to
aircraftRenderingChanged, since the name wasn't accurate anymore.
Both getInstalledModels(), getInstalledModelsCount() and iconForModel()
were removed from the ISimulator interface.
refs #765
The reason for moving the implementation out from CSoundGenerator into
its own class is, because CSoundGenerator was a very complex and
obscure class. It mixed many tasks in one place. CSelcalPlayer
is designed to play SELCALs only.
The following design changes have been made, compared to CSoundGenerator:
* Use pull mode instead of push mode. QBuffer is used as the QIODevice and
is a wrapper around QByteArray. Therefore it is not necessary to
implement our own QIODevice.
* Internally it uses a CThreadedSelcalPlayer to relieve the load of the
main thread. CThreadedSelcalPlayer inherits CContinuousWorker, no
low level QThread implementation was necessary.
* Push mode was not implemented.
* It is important that the QAudioOutput is allocated in the worker thread.
QAudioOutput allocates internal objects, which cannot be moved to
the worker thread.
* Data caching. The generated seclal audio data is cached.
refs #736
When a plugin is loaded, existing aircrafts should not be added
immediatly, but as soon as the simulator is simulating.
CContextSimulator also handles now the case that no simulator is
attached and all aircraft slots are now doing nothing instead of
raising an assert.
refs #549
CPluginManagerSimulator::createListener returns nullptr if no
listener could be created, e.g. because the plugin could not be loaded
due to missing dependencies. Handle this scenario properly instead of
raising an assert.
refs #669
Change MetarSet to MetarList:
CMetarSet was implemented as a collection. This only makes sense for values which have one member variable only or hardly ever change. METARs often change and therefore a collection didn’t make much sense.
Additional profiling showed that a sequence has better algorithmic performance.