mirror of
https://github.com/status-im/realm-js.git
synced 2025-02-03 10:13:42 +00:00
Destroy all notifiers before closing realms in clear_cache()
This commit is contained in:
parent
e557babaad
commit
ad5db72767
@ -140,18 +140,19 @@ void RealmCoordinator::unregister_realm(Realm* realm)
|
|||||||
|
|
||||||
void RealmCoordinator::clear_cache()
|
void RealmCoordinator::clear_cache()
|
||||||
{
|
{
|
||||||
std::vector<SharedRealm> realms_to_close;
|
std::vector<WeakRealm> realms_to_close;
|
||||||
|
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(s_coordinator_mutex);
|
std::lock_guard<std::mutex> lock(s_coordinator_mutex);
|
||||||
|
|
||||||
// Gather a list of all of the realms which will be removed
|
|
||||||
for (auto& weak_coordinator : s_coordinators_per_path) {
|
for (auto& weak_coordinator : s_coordinators_per_path) {
|
||||||
auto coordinator = weak_coordinator.second.lock();
|
auto coordinator = weak_coordinator.second.lock();
|
||||||
if (!coordinator) {
|
if (!coordinator) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
coordinator->m_notifier = nullptr;
|
||||||
|
|
||||||
|
// Gather a list of all of the realms which will be removed
|
||||||
for (auto& cached_realm : coordinator->m_cached_realms) {
|
for (auto& cached_realm : coordinator->m_cached_realms) {
|
||||||
if (auto realm = cached_realm.realm()) {
|
if (auto realm = cached_realm.realm()) {
|
||||||
realms_to_close.push_back(realm);
|
realms_to_close.push_back(realm);
|
||||||
@ -164,8 +165,10 @@ void RealmCoordinator::clear_cache()
|
|||||||
|
|
||||||
// Close all of the previously cached Realms. This can't be done while
|
// Close all of the previously cached Realms. This can't be done while
|
||||||
// s_coordinator_mutex is held as it may try to re-lock it.
|
// s_coordinator_mutex is held as it may try to re-lock it.
|
||||||
for (auto& realm : realms_to_close) {
|
for (auto& weak_realm : realms_to_close) {
|
||||||
realm->close();
|
if (auto realm = weak_realm.lock()) {
|
||||||
|
realm->close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user