summaryrefslogtreecommitdiffstats
path: root/dbus/exported_object.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/exported_object.cc')
-rw-r--r--dbus/exported_object.cc40
1 files changed, 13 insertions, 27 deletions
diff --git a/dbus/exported_object.cc b/dbus/exported_object.cc
index de25168..e4a1641 100644
--- a/dbus/exported_object.cc
+++ b/dbus/exported_object.cc
@@ -224,13 +224,12 @@ DBusHandlerResult ExportedObject::HandleMessage(
method_call.release(),
start_time));
} else {
- // If the D-Bus thread is not used, just call the method directly.
- MethodCall* released_method_call = method_call.release();
- iter->second.Run(released_method_call,
- base::Bind(&ExportedObject::SendResponse,
- this,
- start_time,
- released_method_call));
+ // If the D-Bus thread is not used, just call the method directly. We
+ // don't need the complicated logic to wait for the method call to be
+ // complete.
+ // |response| will be deleted in OnMethodCompleted().
+ Response* response = iter->second.Run(method_call.get());
+ OnMethodCompleted(method_call.release(), response, start_time);
}
// It's valid to say HANDLED here, and send a method response at a later
@@ -242,27 +241,14 @@ void ExportedObject::RunMethod(MethodCallCallback method_call_callback,
MethodCall* method_call,
base::TimeTicks start_time) {
bus_->AssertOnOriginThread();
- method_call_callback.Run(method_call,
- base::Bind(&ExportedObject::SendResponse,
- this,
- start_time,
- method_call));
-}
-void ExportedObject::SendResponse(base::TimeTicks start_time,
- MethodCall* method_call,
- Response* response) {
- DCHECK(method_call);
- if (bus_->HasDBusThread()) {
- bus_->PostTaskToDBusThread(FROM_HERE,
- base::Bind(&ExportedObject::OnMethodCompleted,
- this,
- method_call,
- response,
- start_time));
- } else {
- OnMethodCompleted(method_call, response, start_time);
- }
+ Response* response = method_call_callback.Run(method_call);
+ bus_->PostTaskToDBusThread(FROM_HERE,
+ base::Bind(&ExportedObject::OnMethodCompleted,
+ this,
+ method_call,
+ response,
+ start_time));
}
void ExportedObject::OnMethodCompleted(MethodCall* method_call,