mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
Properly kill all calls in ~Core
This commit is contained in:
parent
1753f750b3
commit
0fd489fbba
|
@ -26,6 +26,7 @@
|
|||
#include "src/avatarbroadcaster.h"
|
||||
#include "src/profile.h"
|
||||
#include "corefile.h"
|
||||
#include "src/video/camerasource.h"
|
||||
|
||||
#include <tox/tox.h>
|
||||
|
||||
|
@ -117,6 +118,15 @@ Core::~Core()
|
|||
coreThread->wait(500);
|
||||
}
|
||||
|
||||
for (ToxCall call : calls)
|
||||
{
|
||||
if (!call.active)
|
||||
continue;
|
||||
hangupCall(call.callId);
|
||||
if (call.camera)
|
||||
delete call.camera;
|
||||
}
|
||||
|
||||
deadifyTox();
|
||||
|
||||
delete[] videobuf;
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "src/audiofilterer.h"
|
||||
#endif
|
||||
#include "src/misc/settings.h"
|
||||
#include <assert.h>
|
||||
#include <QDebug>
|
||||
#include <QTimer>
|
||||
|
||||
|
@ -228,6 +229,7 @@ void Core::cancelCall(int32_t callId, uint32_t friendId)
|
|||
|
||||
void Core::cleanupCall(int32_t callId)
|
||||
{
|
||||
assert(calls[callId].active);
|
||||
qDebug() << QString("cleaning up call %1").arg(callId);
|
||||
calls[callId].active = false;
|
||||
disconnect(calls[callId].sendAudioTimer,0,0,0);
|
||||
|
|
|
@ -286,7 +286,7 @@ void Settings::save(bool writePersonal)
|
|||
return (void) QMetaObject::invokeMethod(&getInstance(), "save",
|
||||
Q_ARG(bool, writePersonal));
|
||||
|
||||
QString filePath = getSettingsDirPath()+globalSettingsFile;
|
||||
QString filePath = getSettingsDirPath();
|
||||
save(filePath, writePersonal);
|
||||
}
|
||||
|
||||
|
@ -301,14 +301,15 @@ void Settings::save(QString path, bool writePersonal)
|
|||
#endif
|
||||
saveGlobal(path);
|
||||
|
||||
if (writePersonal) // Core::switchConfiguration
|
||||
if (writePersonal)
|
||||
savePersonal(path);
|
||||
}
|
||||
|
||||
void Settings::saveGlobal(QString path)
|
||||
{
|
||||
QMutexLocker locker{&bigLock};
|
||||
qDebug() << "Saving settings in " + path;
|
||||
path += globalSettingsFile;
|
||||
qDebug() << "Saving settings at " + path;
|
||||
|
||||
QSettings s(path, QSettings::IniFormat);
|
||||
|
||||
|
@ -417,7 +418,7 @@ void Settings::savePersonal(QString path)
|
|||
|
||||
qDebug() << "Saving personal settings in " << path;
|
||||
|
||||
QSettings ps(QFileInfo(path).dir().filePath(currentProfile + ".ini"), QSettings::IniFormat);
|
||||
QSettings ps(path + currentProfile + ".ini", QSettings::IniFormat);
|
||||
ps.beginGroup("Friends");
|
||||
ps.beginWriteArray("Friend", friendLst.size());
|
||||
int index = 0;
|
||||
|
@ -552,10 +553,9 @@ bool Settings::getMakeToxPortable() const
|
|||
void Settings::setMakeToxPortable(bool newValue)
|
||||
{
|
||||
QMutexLocker locker{&bigLock};
|
||||
QFile(getSettingsDirPath()+globalSettingsFile).remove();
|
||||
makeToxPortable = newValue;
|
||||
save(globalSettingsFile); // Commit to the portable file that we don't want to use it
|
||||
if (!newValue) // Update the new file right now if not already done
|
||||
save();
|
||||
save(false);
|
||||
}
|
||||
|
||||
bool Settings::getAutorun() const
|
||||
|
|
|
@ -19,7 +19,9 @@ Profile::Profile(QString name, QString password, bool isNewProfile)
|
|||
: name{name}, password{password},
|
||||
newProfile{isNewProfile}, isRemoved{false}
|
||||
{
|
||||
Settings::getInstance().setCurrentProfile(name);
|
||||
Settings& s = Settings::getInstance();
|
||||
s.setCurrentProfile(name);
|
||||
s.save(false);
|
||||
HistoryKeeper::resetInstance();
|
||||
|
||||
coreThread = new QThread();
|
||||
|
|
Loading…
Reference in New Issue
Block a user