| OLD | NEW | 
|    1 // Copyright 2015 The Chromium Authors. All rights reserved. |    1 // Copyright 2015 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 "content/browser/android/synchronous_compositor_host.h" |    5 #include "content/browser/android/synchronous_compositor_host.h" | 
|    6  |    6  | 
|    7 #include <utility> |    7 #include <utility> | 
|    8  |    8  | 
|    9 #include "base/command_line.h" |    9 #include "base/command_line.h" | 
|   10 #include "base/containers/hash_tables.h" |   10 #include "base/containers/hash_tables.h" | 
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  169   } |  169   } | 
|  170  |  170  | 
|  171  private: |  171  private: | 
|  172   DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); |  172   DISALLOW_COPY_AND_ASSIGN(ScopedSetSkCanvas); | 
|  173 }; |  173 }; | 
|  174  |  174  | 
|  175 } |  175 } | 
|  176  |  176  | 
|  177 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { |  177 bool SynchronousCompositorHost::DemandDrawSwInProc(SkCanvas* canvas) { | 
|  178   SyncCompositorCommonRendererParams common_renderer_params; |  178   SyncCompositorCommonRendererParams common_renderer_params; | 
|  179   bool success = false; |  179   base::Optional<cc::CompositorFrameMetadata> metadata; | 
|  180   std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |  | 
|  181   ScopedSetSkCanvas set_sk_canvas(canvas); |  180   ScopedSetSkCanvas set_sk_canvas(canvas); | 
|  182   SyncCompositorDemandDrawSwParams params;  // Unused. |  181   SyncCompositorDemandDrawSwParams params;  // Unused. | 
|  183   { |  182   { | 
|  184     base::ThreadRestrictions::ScopedAllowWait wait; |  183     base::ThreadRestrictions::ScopedAllowWait wait; | 
|  185     if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |  184     if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 
|  186             routing_id_, params, &success, &common_renderer_params, |  185             routing_id_, params, &common_renderer_params, &metadata))) { | 
|  187             frame.get()))) { |  | 
|  188       return false; |  186       return false; | 
|  189     } |  187     } | 
|  190   } |  188   } | 
|  191   if (!success) |  189   if (!metadata) | 
|  192     return false; |  190     return false; | 
|  193   ProcessCommonParams(common_renderer_params); |  191   ProcessCommonParams(common_renderer_params); | 
|  194   UpdateFrameMetaData(std::move(frame->metadata)); |  192   UpdateFrameMetaData(std::move(*metadata)); | 
|  195   return true; |  193   return true; | 
|  196 } |  194 } | 
|  197  |  195  | 
|  198 class SynchronousCompositorHost::ScopedSendZeroMemory { |  196 class SynchronousCompositorHost::ScopedSendZeroMemory { | 
|  199  public: |  197  public: | 
|  200   ScopedSendZeroMemory(SynchronousCompositorHost* host) : host_(host) {} |  198   ScopedSendZeroMemory(SynchronousCompositorHost* host) : host_(host) {} | 
|  201   ~ScopedSendZeroMemory() { host_->SendZeroMemory(); } |  199   ~ScopedSendZeroMemory() { host_->SendZeroMemory(); } | 
|  202  |  200  | 
|  203  private: |  201  private: | 
|  204   SynchronousCompositorHost* const host_; |  202   SynchronousCompositorHost* const host_; | 
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  236   DCHECK_EQ(kRGBA_8888_SkColorType, info.colorType()); |  234   DCHECK_EQ(kRGBA_8888_SkColorType, info.colorType()); | 
|  237   size_t stride = info.minRowBytes(); |  235   size_t stride = info.minRowBytes(); | 
|  238   size_t buffer_size = info.getSafeSize(stride); |  236   size_t buffer_size = info.getSafeSize(stride); | 
|  239   if (!buffer_size) |  237   if (!buffer_size) | 
|  240     return false;  // Overflow. |  238     return false;  // Overflow. | 
|  241  |  239  | 
|  242   SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); |  240   SetSoftwareDrawSharedMemoryIfNeeded(stride, buffer_size); | 
|  243   if (!software_draw_shm_) |  241   if (!software_draw_shm_) | 
|  244     return false; |  242     return false; | 
|  245  |  243  | 
|  246   std::unique_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); |  244   base::Optional<cc::CompositorFrameMetadata> metadata; | 
|  247   SyncCompositorCommonRendererParams common_renderer_params; |  245   SyncCompositorCommonRendererParams common_renderer_params; | 
|  248   bool success = false; |  | 
|  249   { |  246   { | 
|  250     base::ThreadRestrictions::ScopedAllowWait wait; |  247     base::ThreadRestrictions::ScopedAllowWait wait; | 
|  251     if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( |  248     if (!sender_->Send(new SyncCompositorMsg_DemandDrawSw( | 
|  252             routing_id_, params, &success, &common_renderer_params, |  249             routing_id_, params, &common_renderer_params, &metadata))) { | 
|  253             frame.get()))) { |  | 
|  254       return false; |  250       return false; | 
|  255     } |  251     } | 
|  256   } |  252   } | 
|  257   ScopedSendZeroMemory send_zero_memory(this); |  253   ScopedSendZeroMemory send_zero_memory(this); | 
|  258   if (!success) |  254   if (!metadata) | 
|  259     return false; |  255     return false; | 
|  260  |  256  | 
|  261   ProcessCommonParams(common_renderer_params); |  257   ProcessCommonParams(common_renderer_params); | 
|  262   UpdateFrameMetaData(std::move(frame->metadata)); |  258   UpdateFrameMetaData(std::move(*metadata)); | 
|  263  |  259  | 
|  264   SkBitmap bitmap; |  260   SkBitmap bitmap; | 
|  265   if (!bitmap.installPixels(info, software_draw_shm_->shm.memory(), stride)) |  261   if (!bitmap.installPixels(info, software_draw_shm_->shm.memory(), stride)) | 
|  266     return false; |  262     return false; | 
|  267  |  263  | 
|  268   { |  264   { | 
|  269     TRACE_EVENT0("browser", "DrawBitmap"); |  265     TRACE_EVENT0("browser", "DrawBitmap"); | 
|  270     canvas->save(); |  266     canvas->save(); | 
|  271     canvas->resetMatrix(); |  267     canvas->resetMatrix(); | 
|  272     canvas->drawBitmap(bitmap, 0, 0); |  268     canvas->drawBitmap(bitmap, 0, 0); | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  420   if (params.page_scale_factor) { |  416   if (params.page_scale_factor) { | 
|  421     client_->UpdateRootLayerState( |  417     client_->UpdateRootLayerState( | 
|  422         this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), |  418         this, gfx::ScrollOffsetToVector2dF(params.total_scroll_offset), | 
|  423         gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), |  419         gfx::ScrollOffsetToVector2dF(params.max_scroll_offset), | 
|  424         params.scrollable_size, params.page_scale_factor, |  420         params.scrollable_size, params.page_scale_factor, | 
|  425         params.min_page_scale_factor, params.max_page_scale_factor); |  421         params.min_page_scale_factor, params.max_page_scale_factor); | 
|  426   } |  422   } | 
|  427 } |  423 } | 
|  428  |  424  | 
|  429 }  // namespace content |  425 }  // namespace content | 
| OLD | NEW |