summaryrefslogtreecommitdiffstats
path: root/remoting/protocol/protobuf_video_writer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'remoting/protocol/protobuf_video_writer.cc')
-rw-r--r--remoting/protocol/protobuf_video_writer.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/remoting/protocol/protobuf_video_writer.cc b/remoting/protocol/protobuf_video_writer.cc
index 88941c4..26b0f95 100644
--- a/remoting/protocol/protobuf_video_writer.cc
+++ b/remoting/protocol/protobuf_video_writer.cc
@@ -17,16 +17,20 @@ namespace remoting {
namespace protocol {
ProtobufVideoWriter::ProtobufVideoWriter(base::MessageLoopProxy* message_loop)
- : buffered_writer_(new BufferedSocketWriter(message_loop)) {
+ : session_(NULL),
+ buffered_writer_(new BufferedSocketWriter(message_loop)) {
}
-ProtobufVideoWriter::~ProtobufVideoWriter() { }
+ProtobufVideoWriter::~ProtobufVideoWriter() {
+ Close();
+}
void ProtobufVideoWriter::Init(protocol::Session* session,
const InitializedCallback& callback) {
+ session_ = session;
initialized_callback_ = callback;
- session->CreateStreamChannel(
+ session_->CreateStreamChannel(
kVideoChannelName,
base::Bind(&ProtobufVideoWriter::OnChannelReady, base::Unretained(this)));
}
@@ -48,6 +52,10 @@ void ProtobufVideoWriter::OnChannelReady(net::StreamSocket* socket) {
void ProtobufVideoWriter::Close() {
buffered_writer_->Close();
channel_.reset();
+ if (session_) {
+ session_->CancelChannelCreation(kVideoChannelName);
+ session_ = NULL;
+ }
}
void ProtobufVideoWriter::ProcessVideoPacket(const VideoPacket* packet,