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 combination of the method's name 'signalStartupAutomatically'
and the default argument, I completely misunderstood the purpose
of the method in case the argument was skipped.
'a.signalStartupAutomatically()' actually disabled automatic signaling.
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
The Mac OS/X event loop complained that system event processing took
too much time and disabled event taps. This commit speeds up system
event handling by connecting CInputManager with a queued connection.
This calls all (potentially expensive) hotkey actions asynchronously.
Up to now the UI appearance on all platforms was aligned as much as
possible with stylesheets. Since the base widget styles still were
platform dependent defaults, there were many small differences in
details and controls. Some of them were even broken. Instead of
trying to tweak all platform specific styles, default to one on all
platforms. This guarantees that the UI is truly cross platform and
all styles and fixes cover all platforms at the same time.
For users who want to change the default style, they have now a gui
setting. But it is strongly recommended to stick with the default.
refs #683
Crash handler launches an external crash handler executable called
swift_crashpad_handler. It monitores the parent process and produces
a local dump in case of a crash.
For release builds, the dump is also uploaded to a crash report server.
refs #490
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
* view already filter incomplete data
* as result, info object count values are aligned with data eventually parsed (which will allow to detect changes by comparing counts)
* smaller adjustments to allow airlines with designator
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