| OLD | NEW |
| 1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "login_manager/session_manager_service.h" | 5 #include "login_manager/session_manager_service.h" |
| 6 | 6 |
| 7 #include <dbus/dbus-glib-lowlevel.h> | 7 #include <dbus/dbus-glib-lowlevel.h> |
| 8 #include <errno.h> | 8 #include <errno.h> |
| 9 #include <glib.h> | 9 #include <glib.h> |
| 10 #include <grp.h> | 10 #include <grp.h> |
| (...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 if (session_started_) { | 321 if (session_started_) { |
| 322 DLOG(INFO) << "emitting D-Bus signal SessionStateChanged:stopped"; | 322 DLOG(INFO) << "emitting D-Bus signal SessionStateChanged:stopped"; |
| 323 if (signals_[kSignalSessionStateChanged]) { | 323 if (signals_[kSignalSessionStateChanged]) { |
| 324 g_signal_emit(session_manager_, | 324 g_signal_emit(session_manager_, |
| 325 signals_[kSignalSessionStateChanged], | 325 signals_[kSignalSessionStateChanged], |
| 326 0, "stopped", current_user_.c_str()); | 326 0, "stopped", current_user_.c_str()); |
| 327 } | 327 } |
| 328 } | 328 } |
| 329 | 329 |
| 330 // Even if we haven't gotten around to processing a persist task. | 330 // Even if we haven't gotten around to processing a persist task. |
| 331 store_->Persist(); | 331 base::WaitableEvent event(true, false); |
| 332 io_thread_.message_loop()->PostTask( |
| 333 FROM_HERE, NewRunnableMethod(this, |
| 334 &SessionManagerService::PersistStoreSync, |
| 335 &event)); |
| 336 event.Wait(); |
| 332 io_thread_.Stop(); | 337 io_thread_.Stop(); |
| 333 message_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 338 message_loop_->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
| 334 LOG(INFO) << "SessionManagerService quitting run loop"; | 339 LOG(INFO) << "SessionManagerService quitting run loop"; |
| 335 return true; | 340 return true; |
| 336 } | 341 } |
| 337 | 342 |
| 338 void SessionManagerService::RunChildren() { | 343 void SessionManagerService::RunChildren() { |
| 339 bootstat_log("chrome-exec"); | 344 bootstat_log("chrome-exec"); |
| 340 for (size_t i_child = 0; i_child < child_jobs_.size(); ++i_child) { | 345 for (size_t i_child = 0; i_child < child_jobs_.size(); ++i_child) { |
| 341 ChildJobInterface* child_job = child_jobs_[i_child]; | 346 ChildJobInterface* child_job = child_jobs_[i_child]; |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 | 907 |
| 903 void SessionManagerService::PersistWhitelist() { | 908 void SessionManagerService::PersistWhitelist() { |
| 904 LOG(INFO) << "Persisting Whitelist to disk."; | 909 LOG(INFO) << "Persisting Whitelist to disk."; |
| 905 bool what_happened = store_->Persist(); | 910 bool what_happened = store_->Persist(); |
| 906 message_loop_->PostTask( | 911 message_loop_->PostTask( |
| 907 FROM_HERE, NewRunnableMethod(this, &SessionManagerService::SendSignal, | 912 FROM_HERE, NewRunnableMethod(this, &SessionManagerService::SendSignal, |
| 908 chromium::kWhitelistChangeCompleteSignal, | 913 chromium::kWhitelistChangeCompleteSignal, |
| 909 what_happened)); | 914 what_happened)); |
| 910 } | 915 } |
| 911 | 916 |
| 917 void SessionManagerService::PersistStoreSync(base::WaitableEvent* event) { |
| 918 store_->Persist(); |
| 919 LOG(INFO) << "Persisted Store to disk."; |
| 920 event->Signal(); |
| 921 } |
| 922 |
| 912 void SessionManagerService::PersistStore() { | 923 void SessionManagerService::PersistStore() { |
| 913 LOG(INFO) << "Persisting Store to disk."; | 924 LOG(INFO) << "Persisting Store to disk."; |
| 914 bool what_happened = store_->Persist(); | 925 bool what_happened = store_->Persist(); |
| 915 message_loop_->PostTask( | 926 message_loop_->PostTask( |
| 916 FROM_HERE, NewRunnableMethod(this, &SessionManagerService::SendSignal, | 927 FROM_HERE, NewRunnableMethod(this, &SessionManagerService::SendSignal, |
| 917 chromium::kPropertyChangeCompleteSignal, | 928 chromium::kPropertyChangeCompleteSignal, |
| 918 what_happened)); | 929 what_happened)); |
| 919 } | 930 } |
| 920 | 931 |
| 921 // static | 932 // static |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1231 arg_list.push_back(args[i_arg]); | 1242 arg_list.push_back(args[i_arg]); |
| 1232 } | 1243 } |
| 1233 } | 1244 } |
| 1234 if (arg_list.size()) { | 1245 if (arg_list.size()) { |
| 1235 arg_lists.push_back(arg_list); | 1246 arg_lists.push_back(arg_list); |
| 1236 } | 1247 } |
| 1237 return arg_lists; | 1248 return arg_lists; |
| 1238 } | 1249 } |
| 1239 | 1250 |
| 1240 } // namespace login_manager | 1251 } // namespace login_manager |
| OLD | NEW |