frame_consumer_proxy.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "remoting/client/frame_consumer_proxy.h" 6 7#include "base/bind.h" 8#include "base/location.h" 9#include "base/single_thread_task_runner.h" 10#include "ppapi/cpp/image_data.h" 11 12namespace remoting { 13 14FrameConsumerProxy::FrameConsumerProxy( 15 scoped_refptr<base::SingleThreadTaskRunner> task_runner) 16 : task_runner_(task_runner) { 17} 18 19void FrameConsumerProxy::ApplyBuffer(const SkISize& view_size, 20 const SkIRect& clip_area, 21 pp::ImageData* buffer, 22 const SkRegion& region) { 23 if (!task_runner_->BelongsToCurrentThread()) { 24 task_runner_->PostTask(FROM_HERE, base::Bind( 25 &FrameConsumerProxy::ApplyBuffer, this, 26 view_size, clip_area, buffer, region)); 27 return; 28 } 29 30 if (frame_consumer_) 31 frame_consumer_->ApplyBuffer(view_size, clip_area, buffer, region); 32} 33 34void FrameConsumerProxy::ReturnBuffer(pp::ImageData* buffer) { 35 if (!task_runner_->BelongsToCurrentThread()) { 36 task_runner_->PostTask(FROM_HERE, base::Bind( 37 &FrameConsumerProxy::ReturnBuffer, this, buffer)); 38 return; 39 } 40 41 if (frame_consumer_) 42 frame_consumer_->ReturnBuffer(buffer); 43} 44 45void FrameConsumerProxy::SetSourceSize(const SkISize& source_size, 46 const SkIPoint& source_dpi) { 47 if (!task_runner_->BelongsToCurrentThread()) { 48 task_runner_->PostTask(FROM_HERE, base::Bind( 49 &FrameConsumerProxy::SetSourceSize, this, source_size, source_dpi)); 50 return; 51 } 52 53 if (frame_consumer_) 54 frame_consumer_->SetSourceSize(source_size, source_dpi); 55} 56 57void FrameConsumerProxy::Attach( 58 const base::WeakPtr<FrameConsumer>& frame_consumer) { 59 DCHECK(task_runner_->BelongsToCurrentThread()); 60 DCHECK(frame_consumer_ == NULL); 61 frame_consumer_ = frame_consumer; 62} 63 64FrameConsumerProxy::~FrameConsumerProxy() { 65} 66 67} // namespace remoting 68