Index: remoting/ios/bridge/frame_consumer_bridge.cc |
diff --git a/remoting/ios/bridge/frame_consumer_bridge.cc b/remoting/ios/bridge/frame_consumer_bridge.cc |
deleted file mode 100644 |
index fbc96066d38fcd91276278dc888ced77f76d0e7d..0000000000000000000000000000000000000000 |
--- a/remoting/ios/bridge/frame_consumer_bridge.cc |
+++ /dev/null |
@@ -1,88 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "remoting/ios/bridge/frame_consumer_bridge.h" |
- |
-#include "base/bind.h" |
-#include "base/logging.h" |
-#include "base/synchronization/waitable_event.h" |
-#include "remoting/base/util.h" |
-#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h" |
- |
-namespace remoting { |
- |
-FrameConsumerBridge::FrameConsumerBridge(OnFrameCallback callback) |
- : callback_(callback), frame_producer_(NULL) {} |
- |
-FrameConsumerBridge::~FrameConsumerBridge() { |
- // The producer should now return any pending buffers. At this point, however, |
- // the buffers are returned via tasks which may not be scheduled before the |
- // producer, so we free all the buffers once the producer's queue is empty. |
- // And the scheduled tasks will die quietly. |
- if (frame_producer_) { |
- base::WaitableEvent done_event(true, false); |
- frame_producer_->RequestReturnBuffers(base::Bind( |
- &base::WaitableEvent::Signal, base::Unretained(&done_event))); |
- done_event.Wait(); |
- } |
-} |
- |
-void FrameConsumerBridge::Initialize(FrameProducer* producer) { |
- DCHECK(!frame_producer_); |
- frame_producer_ = producer; |
- DCHECK(frame_producer_); |
-} |
- |
-void FrameConsumerBridge::ApplyBuffer(const webrtc::DesktopSize& view_size, |
- const webrtc::DesktopRect& clip_area, |
- webrtc::DesktopFrame* buffer, |
- const webrtc::DesktopRegion& region, |
- const webrtc::DesktopRegion& shape) { |
- DCHECK(frame_producer_); |
- if (!view_size_.equals(view_size)) { |
- // Drop the frame, since the data belongs to the previous generation, |
- // before SetSourceSize() called SetOutputSizeAndClip(). |
- ReturnBuffer(buffer); |
- return; |
- } |
- |
- // This call completes synchronously. |
- callback_.Run(view_size, buffer, region); |
- |
- // Recycle |buffer| by returning it to |frame_producer_| as the next buffer |
- frame_producer_->DrawBuffer(buffer); |
-} |
- |
-void FrameConsumerBridge::ReturnBuffer(webrtc::DesktopFrame* buffer) { |
- DCHECK(frame_producer_); |
- ScopedVector<webrtc::DesktopFrame>::iterator it = |
- std::find(buffers_.begin(), buffers_.end(), buffer); |
- |
- DCHECK(it != buffers_.end()); |
- buffers_.erase(it); |
-} |
- |
-void FrameConsumerBridge::SetSourceSize(const webrtc::DesktopSize& source_size, |
- const webrtc::DesktopVector& dpi) { |
- DCHECK(frame_producer_); |
- view_size_ = source_size; |
- webrtc::DesktopRect clip_area = webrtc::DesktopRect::MakeSize(view_size_); |
- frame_producer_->SetOutputSizeAndClip(view_size_, clip_area); |
- |
- // Now that the size is well known, ask the producer to start drawing |
- DrawWithNewBuffer(); |
-} |
- |
-FrameConsumerBridge::PixelFormat FrameConsumerBridge::GetPixelFormat() { |
- return FORMAT_RGBA; |
-} |
- |
-void FrameConsumerBridge::DrawWithNewBuffer() { |
- DCHECK(frame_producer_); |
- webrtc::DesktopFrame* buffer = new webrtc::BasicDesktopFrame(view_size_); |
- buffers_.push_back(buffer); |
- frame_producer_->DrawBuffer(buffer); |
-} |
- |
-} // namespace remoting |