| Index: remoting/client/chromoting_client.cc
 | 
| diff --git a/remoting/client/chromoting_client.cc b/remoting/client/chromoting_client.cc
 | 
| index 521a875a3874aaf6dda250580f5832a5883c20e3..74f631389582436ddb37bc8d74ea79a83e80e71e 100644
 | 
| --- a/remoting/client/chromoting_client.cc
 | 
| +++ b/remoting/client/chromoting_client.cc
 | 
| @@ -19,8 +19,8 @@ namespace remoting {
 | 
|  using protocol::AuthenticationMethod;
 | 
|  
 | 
|  ChromotingClient::QueuedVideoPacket::QueuedVideoPacket(
 | 
| -    const VideoPacket* packet, const base::Closure& done)
 | 
| -    : packet(packet), done(done) {
 | 
| +    scoped_ptr<VideoPacket> packet, const base::Closure& done)
 | 
| +    : packet(packet.release()), done(done) {
 | 
|  }
 | 
|  
 | 
|  ChromotingClient::QueuedVideoPacket::~QueuedVideoPacket() {
 | 
| @@ -78,6 +78,7 @@ void ChromotingClient::Stop(const base::Closure& shutdown_task) {
 | 
|  
 | 
|    // Drop all pending packets.
 | 
|    while(!received_packets_.empty()) {
 | 
| +    delete received_packets_.front().packet;
 | 
|      received_packets_.front().done.Run();
 | 
|      received_packets_.pop_front();
 | 
|    }
 | 
| @@ -103,7 +104,7 @@ ChromotingStats* ChromotingClient::GetStats() {
 | 
|    return &stats_;
 | 
|  }
 | 
|  
 | 
| -void ChromotingClient::ProcessVideoPacket(const VideoPacket* packet,
 | 
| +void ChromotingClient::ProcessVideoPacket(scoped_ptr<VideoPacket> packet,
 | 
|                                            const base::Closure& done) {
 | 
|    DCHECK(message_loop()->BelongsToCurrentThread());
 | 
|  
 | 
| @@ -132,7 +133,7 @@ void ChromotingClient::ProcessVideoPacket(const VideoPacket* packet,
 | 
|      stats_.round_trip_ms()->Record(round_trip_latency.InMilliseconds());
 | 
|    }
 | 
|  
 | 
| -  received_packets_.push_back(QueuedVideoPacket(packet, done));
 | 
| +  received_packets_.push_back(QueuedVideoPacket(packet.Pass(), done));
 | 
|    if (!packet_being_processed_)
 | 
|      DispatchPacket();
 | 
|  }
 | 
| @@ -150,7 +151,8 @@ void ChromotingClient::DispatchPacket() {
 | 
|      return;
 | 
|    }
 | 
|  
 | 
| -  const VideoPacket* packet = received_packets_.front().packet;
 | 
| +  scoped_ptr<VideoPacket> packet(received_packets_.front().packet);
 | 
| +  received_packets_.front().packet = NULL;
 | 
|    packet_being_processed_ = true;
 | 
|  
 | 
|    // Measure the latency between the last packet being received and presented.
 | 
| @@ -160,8 +162,9 @@ void ChromotingClient::DispatchPacket() {
 | 
|      decode_start = base::Time::Now();
 | 
|  
 | 
|    rectangle_decoder_->DecodePacket(
 | 
| -      packet, base::Bind(&ChromotingClient::OnPacketDone,
 | 
| -                         base::Unretained(this), last_packet, decode_start));
 | 
| +      packet.Pass(),
 | 
| +      base::Bind(&ChromotingClient::OnPacketDone, base::Unretained(this),
 | 
| +                 last_packet, decode_start));
 | 
|  }
 | 
|  
 | 
|  void ChromotingClient::OnConnectionState(
 | 
| 
 |