fix for android - create notifier after opening realm

This commit is contained in:
Ari Lazier 2016-05-13 14:55:36 -07:00
parent 0ce3cdf81d
commit 78f74211b1
1 changed files with 12 additions and 11 deletions

View File

@ -65,18 +65,8 @@ std::shared_ptr<Realm> RealmCoordinator::get_realm(Realm::Config config)
{
std::lock_guard<std::mutex> lock(m_realm_mutex);
auto realm = std::make_shared<Realm>(std::move(config));
if ((!m_config.read_only && !m_notifier) || (m_config.read_only && m_weak_realm_notifiers.empty())) {
m_config = config;
if (!config.read_only && !m_notifier && config.automatic_change_notifications) {
try {
m_notifier = std::make_unique<ExternalCommitHelper>(*this);
}
catch (std::system_error const& ex) {
throw RealmFileException(RealmFileException::Kind::AccessError, config.path, ex.code().message());
}
}
}
else {
if (m_config.read_only != config.read_only) {
@ -114,7 +104,18 @@ std::shared_ptr<Realm> RealmCoordinator::get_realm(Realm::Config config)
}
}
auto realm = std::make_shared<Realm>(std::move(config));
realm->init(shared_from_this());
if (!config.read_only && !m_notifier && config.automatic_change_notifications) {
try {
m_notifier = std::make_unique<ExternalCommitHelper>(*this);
}
catch (std::system_error const& ex) {
throw RealmFileException(RealmFileException::Kind::AccessError, config.path, ex.code().message());
}
}
m_weak_realm_notifiers.emplace_back(realm, m_config.cache);
return realm;
}