Finish working with localstorage before ~AuthSession.

This commit is contained in:
John Preston 2019-06-22 12:36:35 +02:00
parent f877bf7a46
commit dc102bd9e8
3 changed files with 10 additions and 3 deletions

View File

@ -228,7 +228,7 @@ bool Instance::isQuitPrevent() {
if (!_currentCall) {
return false;
}
LOG(("Calls::Instance prevents quit, saving drafts..."));
LOG(("Calls::Instance prevents quit, hanging up a call..."));
return true;
}

View File

@ -103,6 +103,10 @@ Application::~Application() {
_window.reset();
_mediaView.reset();
// This can call writeMap() that serializes AuthSession.
// In case it gets called after authSessionDestroy() we get missing data.
Local::finish();
// Some MTP requests can be cancelled from data clearing.
authSessionDestroy();
@ -126,7 +130,6 @@ Application::~Application() {
Media::Player::finish(_audio.get());
style::stopManager();
Local::finish();
Global::finish();
ThirdParty::finish();

View File

@ -709,6 +709,8 @@ AuthSessionSettings &GetStoredAuthSessionCache() {
void _writeMap(WriteMapWhen when = WriteMapWhen::Soon);
void _writeLocations(WriteMapWhen when = WriteMapWhen::Soon) {
Expects(_manager != nullptr);
if (when != WriteMapWhen::Now) {
_manager->writeLocations(when == WriteMapWhen::Fast);
return;
@ -2398,6 +2400,8 @@ ReadMapState _readMap(const QByteArray &pass) {
}
void _writeMap(WriteMapWhen when) {
Expects(_manager != nullptr);
if (when != WriteMapWhen::Now) {
_manager->writeMap(when == WriteMapWhen::Fast);
return;
@ -2530,7 +2534,7 @@ void finish() {
_writeMap(WriteMapWhen::Now);
_manager->finish();
_manager->deleteLater();
_manager = 0;
_manager = nullptr;
delete base::take(_localLoader);
}
}