Loading init/property_service.cpp +27 −23 Original line number Diff line number Diff line Loading @@ -117,7 +117,6 @@ static bool accept_messages = false; static std::mutex accept_messages_lock; static std::thread property_service_thread; static std::thread property_service_for_system_thread; static std::mutex set_property_lock; static std::unique_ptr<PersistWriteThread> persist_write_thread; Loading Loading @@ -395,7 +394,11 @@ static std::optional<uint32_t> PropertySet(const std::string& name, const std::s return {PROP_ERROR_INVALID_VALUE}; } auto lock = std::lock_guard{set_property_lock}; if (name == "sys.powerctl") { // No action here - NotifyPropertyChange will trigger the appropriate action, and since this // can come to the second thread, we mustn't call out to the __system_property_* functions // which support multiple readers but only one mutator. } else { prop_info* pi = (prop_info*)__system_property_find(name.c_str()); if (pi != nullptr) { // ro.* properties are actually "write-once". Loading @@ -422,6 +425,7 @@ static std::optional<uint32_t> PropertySet(const std::string& name, const std::s } WritePersistentProperty(name, value); } } NotifyPropertyChange(name, value); return {PROP_SUCCESS}; Loading Loading
init/property_service.cpp +27 −23 Original line number Diff line number Diff line Loading @@ -117,7 +117,6 @@ static bool accept_messages = false; static std::mutex accept_messages_lock; static std::thread property_service_thread; static std::thread property_service_for_system_thread; static std::mutex set_property_lock; static std::unique_ptr<PersistWriteThread> persist_write_thread; Loading Loading @@ -395,7 +394,11 @@ static std::optional<uint32_t> PropertySet(const std::string& name, const std::s return {PROP_ERROR_INVALID_VALUE}; } auto lock = std::lock_guard{set_property_lock}; if (name == "sys.powerctl") { // No action here - NotifyPropertyChange will trigger the appropriate action, and since this // can come to the second thread, we mustn't call out to the __system_property_* functions // which support multiple readers but only one mutator. } else { prop_info* pi = (prop_info*)__system_property_find(name.c_str()); if (pi != nullptr) { // ro.* properties are actually "write-once". Loading @@ -422,6 +425,7 @@ static std::optional<uint32_t> PropertySet(const std::string& name, const std::s } WritePersistentProperty(name, value); } } NotifyPropertyChange(name, value); return {PROP_SUCCESS}; Loading