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

Side by Side Diff: cc/output/copy_output_request.cc

Issue 99253004: cc: Allow copy requests to provide a texture. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: mailbox: Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/output/copy_output_request.h ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/output/copy_output_request.h" 5 #include "cc/output/copy_output_request.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback_helpers.h" 8 #include "base/callback_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "cc/output/copy_output_result.h" 10 #include "cc/output/copy_output_result.h"
11 #include "cc/resources/single_release_callback.h" 11 #include "cc/resources/single_release_callback.h"
12 #include "cc/resources/texture_mailbox.h" 12 #include "cc/resources/texture_mailbox.h"
13 #include "third_party/skia/include/core/SkBitmap.h" 13 #include "third_party/skia/include/core/SkBitmap.h"
14 14
15 namespace cc { 15 namespace cc {
16 16
17 // static
18 scoped_ptr<CopyOutputRequest> CopyOutputRequest::CreateRelayRequest(
19 const CopyOutputRequest& original_request,
20 const CopyOutputRequestCallback& result_callback) {
21 scoped_ptr<CopyOutputRequest> relay = CreateRequest(result_callback);
22 relay->force_bitmap_result_ = original_request.force_bitmap_result_;
23 relay->has_area_ = original_request.has_area_;
24 relay->area_ = original_request.area_;
25 relay->has_texture_mailbox_ = original_request.has_texture_mailbox_;
26 relay->texture_mailbox_ = original_request.texture_mailbox_;
27 return relay.Pass();
28 }
29
17 CopyOutputRequest::CopyOutputRequest() {} 30 CopyOutputRequest::CopyOutputRequest() {}
18 31
19 CopyOutputRequest::CopyOutputRequest( 32 CopyOutputRequest::CopyOutputRequest(
20 bool force_bitmap_result, 33 bool force_bitmap_result,
21 const CopyOutputRequestCallback& result_callback) 34 const CopyOutputRequestCallback& result_callback)
22 : force_bitmap_result_(force_bitmap_result), 35 : force_bitmap_result_(force_bitmap_result),
23 has_area_(false), 36 has_area_(false),
24 result_callback_(result_callback) { 37 has_texture_mailbox_(false),
25 } 38 result_callback_(result_callback) {}
26 39
27 CopyOutputRequest::~CopyOutputRequest() { 40 CopyOutputRequest::~CopyOutputRequest() {
28 if (!result_callback_.is_null()) 41 if (!result_callback_.is_null())
29 SendResult(CopyOutputResult::CreateEmptyResult().Pass()); 42 SendResult(CopyOutputResult::CreateEmptyResult().Pass());
30 } 43 }
31 44
32 void CopyOutputRequest::SendResult(scoped_ptr<CopyOutputResult> result) { 45 void CopyOutputRequest::SendResult(scoped_ptr<CopyOutputResult> result) {
33 base::ResetAndReturn(&result_callback_).Run(result.Pass()); 46 base::ResetAndReturn(&result_callback_).Run(result.Pass());
34 } 47 }
35 48
36 void CopyOutputRequest::SendEmptyResult() { 49 void CopyOutputRequest::SendEmptyResult() {
37 SendResult(CopyOutputResult::CreateEmptyResult().Pass()); 50 SendResult(CopyOutputResult::CreateEmptyResult().Pass());
38 } 51 }
39 52
40 void CopyOutputRequest::SendBitmapResult(scoped_ptr<SkBitmap> bitmap) { 53 void CopyOutputRequest::SendBitmapResult(scoped_ptr<SkBitmap> bitmap) {
41 SendResult(CopyOutputResult::CreateBitmapResult(bitmap.Pass()).Pass()); 54 SendResult(CopyOutputResult::CreateBitmapResult(bitmap.Pass()).Pass());
42 } 55 }
43 56
44 void CopyOutputRequest::SendTextureResult( 57 void CopyOutputRequest::SendTextureResult(
45 gfx::Size size, 58 gfx::Size size,
46 const TextureMailbox& texture_mailbox, 59 const TextureMailbox& texture_mailbox,
47 scoped_ptr<SingleReleaseCallback> release_callback) { 60 scoped_ptr<SingleReleaseCallback> release_callback) {
48 DCHECK(texture_mailbox.IsTexture()); 61 DCHECK(texture_mailbox.IsTexture());
49 SendResult(CopyOutputResult::CreateTextureResult( 62 SendResult(CopyOutputResult::CreateTextureResult(
50 size, texture_mailbox, release_callback.Pass())); 63 size, texture_mailbox, release_callback.Pass()));
51 } 64 }
52 65
66 void CopyOutputRequest::SetTextureMailbox(
67 const TextureMailbox& texture_mailbox) {
68 DCHECK(!force_bitmap_result_);
69 DCHECK(texture_mailbox.IsTexture());
70 has_texture_mailbox_ = true;
71 texture_mailbox_ = texture_mailbox;
72 }
73
53 } // namespace cc 74 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/copy_output_request.h ('k') | cc/output/gl_renderer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698