Index: dbus/bus.h |
=================================================================== |
--- dbus/bus.h (revision 99666) |
+++ dbus/bus.h (working copy) |
@@ -13,7 +13,6 @@ |
#include "base/callback.h" |
#include "base/memory/ref_counted.h" |
-#include "base/memory/scoped_ptr.h" |
#include "base/synchronization/waitable_event.h" |
#include "base/threading/platform_thread.h" |
#include "base/tracked_objects.h" |
@@ -22,6 +21,7 @@ |
namespace base { |
class Thread; |
+class MessageLoopProxy; |
} |
namespace dbus { |
@@ -35,15 +35,15 @@ |
// For asynchronous operations such as an asynchronous method call, the |
// bus object will use a message loop to monitor the underlying file |
// descriptor used for D-Bus communication. By default, the bus will use |
-// the current thread's MessageLoopForIO. If |dbus_thread| option is |
-// specified, the bus will use the D-Bus thread's message loop. |
+// the current thread's MessageLoopForIO. If |dbus_thread_message_loop_proxy| |
+// option is specified, the bus will use that message loop instead. |
// |
// THREADING |
// |
// In the D-Bus library, we use the two threads: |
// |
// - The origin thread: the thread that created the Bus object. |
-// - The D-Bus thread: the thread supplied by |dbus_thread| option. |
+// - The D-Bus thread: the thread servicing |dbus_thread_message_loop_proxy|. |
// |
// The origin thread is usually Chrome's UI thread. The D-Bus thread is |
// usually a dedicated thread for the D-Bus library. |
@@ -79,9 +79,11 @@ |
// bus.GetObjectProxy(service_name, object_path); |
// |
// dbus::MethodCall method_call(interface_name, method_name); |
-// dbus::Response response; |
-// bool success = |
-// object_proxy.CallMethodAndBlock(&method_call, timeout_ms, &response); |
+// scoped_ptr<dbus::Response> response( |
+// object_proxy.CallMethodAndBlock(&method_call, timeout_ms)); |
+// if (response.get() != NULL) { // Success. |
+// ... |
+// } |
// |
// Asynchronous method call: |
// |
@@ -154,14 +156,14 @@ |
BusType bus_type; // SESSION by default. |
ConnectionType connection_type; // PRIVATE by default. |
- // If the thread is set, the bus object will use the message loop |
- // attached to the thread to process asynchronous operations. |
+ // If dbus_thread_message_loop_proxy is set, the bus object will use that |
+ // message loop to process asynchronous operations. |
// |
- // The thread should meet the following requirements: |
+ // The thread servicing the message loop proxy should meet the following |
+ // requirements: |
// 1) Already running. |
// 2) Has a MessageLoopForIO. |
- // 3) Outlives the bus. |
- base::Thread* dbus_thread; // NULL by default. |
+ scoped_refptr<base::MessageLoopProxy> dbus_thread_message_loop_proxy; |
}; |
// Creates a Bus object. The actual connection will be established when |
@@ -430,13 +432,12 @@ |
void* data); |
const BusType bus_type_; |
const ConnectionType connection_type_; |
- base::Thread* dbus_thread_; |
+ scoped_refptr<base::MessageLoopProxy> dbus_thread_message_loop_proxy_; |
base::WaitableEvent on_shutdown_; |
DBusConnection* connection_; |
MessageLoop* origin_loop_; |
base::PlatformThreadId origin_thread_id_; |
- base::PlatformThreadId dbus_thread_id_; |
std::set<std::string> owned_service_names_; |
// The following sets are used to check if rules/object_paths/filters |