Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: remoting/client/chromoting_client.cc

Issue 10440107: Replace ScopedThreadProxy with MessageLoopProxy & WeakPtrs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use correct TaskRunner reference, and copy instance reference in lock. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/client/chromoting_client.h ('k') | remoting/client/plugin/chromoting_instance.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/chromoting_client.cc
diff --git a/remoting/client/chromoting_client.cc b/remoting/client/chromoting_client.cc
index a28b887b84a7b86cc3f7783a091b92e40071de0c..a545244168d9c2808f5dee671ef0ba9f3f1fec81 100644
--- a/remoting/client/chromoting_client.cc
+++ b/remoting/client/chromoting_client.cc
@@ -40,7 +40,7 @@ ChromotingClient::ChromotingClient(const ClientConfig& config,
client_done_(client_done),
packet_being_processed_(false),
last_sequence_number_(0),
- thread_proxy_(context_->network_message_loop()) {
+ weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
}
ChromotingClient::~ChromotingClient() {
@@ -56,6 +56,9 @@ void ChromotingClient::Start(
config_.authentication_tag,
config_.shared_secret, config_.authentication_methods));
+ // Create a WeakPtr to ourself for to use for all posted tasks.
+ weak_ptr_ = weak_factory_.GetWeakPtr();
+
connection_->Connect(xmpp_proxy, config_.local_jid, config_.host_jid,
config_.host_public_key, transport_factory.Pass(),
authenticator.Pass(), this, this, this, this);
@@ -69,7 +72,7 @@ void ChromotingClient::Stop(const base::Closure& shutdown_task) {
if (!message_loop()->BelongsToCurrentThread()) {
message_loop()->PostTask(
FROM_HERE, base::Bind(&ChromotingClient::Stop,
- base::Unretained(this), shutdown_task));
+ weak_ptr_, shutdown_task));
return;
}
@@ -81,7 +84,7 @@ void ChromotingClient::Stop(const base::Closure& shutdown_task) {
}
connection_->Disconnect(base::Bind(&ChromotingClient::OnDisconnected,
- base::Unretained(this), shutdown_task));
+ weak_ptr_, shutdown_task));
}
void ChromotingClient::OnDisconnected(const base::Closure& shutdown_task) {
@@ -191,7 +194,7 @@ base::MessageLoopProxy* ChromotingClient::message_loop() {
void ChromotingClient::OnPacketDone(bool last_packet,
base::Time decode_start) {
if (!message_loop()->BelongsToCurrentThread()) {
- thread_proxy_.PostTask(FROM_HERE, base::Bind(
+ message_loop()->PostTask(FROM_HERE, base::Bind(
&ChromotingClient::OnPacketDone, base::Unretained(this),
last_packet, decode_start));
return;
@@ -215,8 +218,8 @@ void ChromotingClient::OnPacketDone(bool last_packet,
void ChromotingClient::Initialize() {
if (!message_loop()->BelongsToCurrentThread()) {
- thread_proxy_.PostTask(FROM_HERE, base::Bind(
- &ChromotingClient::Initialize, base::Unretained(this)));
+ message_loop()->PostTask(FROM_HERE, base::Bind(
+ &ChromotingClient::Initialize, weak_ptr_));
return;
}
« no previous file with comments | « remoting/client/chromoting_client.h ('k') | remoting/client/plugin/chromoting_instance.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698