mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 01:50:12 +02:00
fix script engine shutdown
This commit is contained in:
parent
f013b9af2b
commit
300dd39abf
6 changed files with 7 additions and 25 deletions
|
@ -268,7 +268,7 @@ void Stats::updateStats(bool force) {
|
||||||
STAT_UPDATE(audioNoiseGate, audioClient->getNoiseGateOpen() ? "Open" : "Closed");
|
STAT_UPDATE(audioNoiseGate, audioClient->getNoiseGateOpen() ? "Open" : "Closed");
|
||||||
{
|
{
|
||||||
int localInjectors = audioClient->getNumLocalInjectors();
|
int localInjectors = audioClient->getNumLocalInjectors();
|
||||||
int nonLocalInjectors = DependencyManager::get<AudioInjectorManager>()->getNumInjectors();
|
size_t nonLocalInjectors = DependencyManager::get<AudioInjectorManager>()->getNumInjectors();
|
||||||
STAT_UPDATE(audioInjectors, QVector2D(localInjectors, nonLocalInjectors));
|
STAT_UPDATE(audioInjectors, QVector2D(localInjectors, nonLocalInjectors));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -87,9 +87,11 @@ public:
|
||||||
void restart();
|
void restart();
|
||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
void finishLocalInjection();
|
|
||||||
void finishNetworkInjection();
|
void finishNetworkInjection();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void finishLocalInjection();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void finished();
|
void finished();
|
||||||
void restarting();
|
void restarting();
|
||||||
|
|
|
@ -46,16 +46,6 @@ ScriptAudioInjector* AudioScriptingInterface::playSystemSound(SharedSoundPointer
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptAudioInjector* AudioScriptingInterface::playSound(SharedSoundPointer sound, const AudioInjectorOptions& injectorOptions) {
|
ScriptAudioInjector* AudioScriptingInterface::playSound(SharedSoundPointer sound, const AudioInjectorOptions& injectorOptions) {
|
||||||
if (QThread::currentThread() != thread()) {
|
|
||||||
ScriptAudioInjector* injector = NULL;
|
|
||||||
|
|
||||||
BLOCKING_INVOKE_METHOD(this, "playSound",
|
|
||||||
Q_RETURN_ARG(ScriptAudioInjector*, injector),
|
|
||||||
Q_ARG(SharedSoundPointer, sound),
|
|
||||||
Q_ARG(const AudioInjectorOptions&, injectorOptions));
|
|
||||||
return injector;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sound) {
|
if (sound) {
|
||||||
// stereo option isn't set from script, this comes from sound metadata or filename
|
// stereo option isn't set from script, this comes from sound metadata or filename
|
||||||
AudioInjectorOptions optionsCopy = injectorOptions;
|
AudioInjectorOptions optionsCopy = injectorOptions;
|
||||||
|
|
|
@ -19,13 +19,6 @@ QScriptValue injectorToScriptValue(QScriptEngine* engine, ScriptAudioInjector* c
|
||||||
return QScriptValue(QScriptValue::NullValue);
|
return QScriptValue(QScriptValue::NullValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
// when the script goes down we want to cleanup the injector
|
|
||||||
QObject::connect(engine, &QScriptEngine::destroyed, DependencyManager::get<AudioInjectorManager>().data(), [&] {
|
|
||||||
qCDebug(scriptengine) << "Script was shutdown, stopping an injector";
|
|
||||||
// FIXME: this doesn't work and leaves the injectors lying around
|
|
||||||
//DependencyManager::get<AudioInjectorManager>()->stop(in->_injector);
|
|
||||||
});
|
|
||||||
|
|
||||||
return engine->newQObject(in, QScriptEngine::ScriptOwnership);
|
return engine->newQObject(in, QScriptEngine::ScriptOwnership);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -260,12 +260,7 @@ bool ScriptEngine::isDebugMode() const {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
ScriptEngine::~ScriptEngine() {
|
ScriptEngine::~ScriptEngine() {}
|
||||||
QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines);
|
|
||||||
if (scriptEngines) {
|
|
||||||
scriptEngines->removeScriptEngine(qSharedPointerCast<ScriptEngine>(sharedFromThis()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScriptEngine::disconnectNonEssentialSignals() {
|
void ScriptEngine::disconnectNonEssentialSignals() {
|
||||||
disconnect();
|
disconnect();
|
||||||
|
|
|
@ -591,6 +591,8 @@ void ScriptEngines::onScriptFinished(const QString& rawScriptURL, ScriptEnginePo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
removeScriptEngine(engine);
|
||||||
|
|
||||||
if (removed && !_isReloading) {
|
if (removed && !_isReloading) {
|
||||||
// Update settings with removed script
|
// Update settings with removed script
|
||||||
saveScripts();
|
saveScripts();
|
||||||
|
|
Loading…
Reference in a new issue