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

Side by Side Diff: content/browser/compositor/software_browser_compositor_output_surface.cc

Issue 2402173002: cc: Get rid of PostSwapBuffersComplete. (Closed)
Patch Set: postswap: . Created 4 years, 2 months 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/compositor/software_browser_compositor_output_surface. h" 5 #include "content/browser/compositor/software_browser_compositor_output_surface. h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h"
9 #include "base/location.h" 10 #include "base/location.h"
10 #include "base/memory/ref_counted.h" 11 #include "base/memory/ref_counted.h"
11 #include "base/threading/thread_task_runner_handle.h" 12 #include "base/threading/thread_task_runner_handle.h"
12 #include "base/time/time.h" 13 #include "base/time/time.h"
13 #include "build/build_config.h" 14 #include "build/build_config.h"
14 #include "cc/output/output_surface_client.h" 15 #include "cc/output/output_surface_client.h"
15 #include "cc/output/output_surface_frame.h" 16 #include "cc/output/output_surface_frame.h"
16 #include "cc/output/software_output_device.h" 17 #include "cc/output/software_output_device.h"
17 #include "content/browser/renderer_host/render_widget_host_impl.h" 18 #include "content/browser/renderer_host/render_widget_host_impl.h"
18 #include "ui/events/latency_info.h" 19 #include "ui/events/latency_info.h"
19 #include "ui/gfx/vsync_provider.h" 20 #include "ui/gfx/vsync_provider.h"
20 21
21 namespace content { 22 namespace content {
22 23
23 SoftwareBrowserCompositorOutputSurface::SoftwareBrowserCompositorOutputSurface( 24 SoftwareBrowserCompositorOutputSurface::SoftwareBrowserCompositorOutputSurface(
24 std::unique_ptr<cc::SoftwareOutputDevice> software_device, 25 std::unique_ptr<cc::SoftwareOutputDevice> software_device,
25 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager, 26 const scoped_refptr<ui::CompositorVSyncManager>& vsync_manager,
26 cc::SyntheticBeginFrameSource* begin_frame_source) 27 cc::SyntheticBeginFrameSource* begin_frame_source,
28 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
27 : BrowserCompositorOutputSurface(std::move(software_device), 29 : BrowserCompositorOutputSurface(std::move(software_device),
28 vsync_manager, 30 vsync_manager,
29 begin_frame_source), 31 begin_frame_source),
32 task_runner_(std::move(task_runner)),
30 weak_factory_(this) {} 33 weak_factory_(this) {}
31 34
32 SoftwareBrowserCompositorOutputSurface:: 35 SoftwareBrowserCompositorOutputSurface::
33 ~SoftwareBrowserCompositorOutputSurface() { 36 ~SoftwareBrowserCompositorOutputSurface() {
34 } 37 }
35 38
36 void SoftwareBrowserCompositorOutputSurface::EnsureBackbuffer() { 39 void SoftwareBrowserCompositorOutputSurface::EnsureBackbuffer() {
37 software_device()->EnsureBackbuffer(); 40 software_device()->EnsureBackbuffer();
38 } 41 }
39 42
40 void SoftwareBrowserCompositorOutputSurface::DiscardBackbuffer() { 43 void SoftwareBrowserCompositorOutputSurface::DiscardBackbuffer() {
41 software_device()->DiscardBackbuffer(); 44 software_device()->DiscardBackbuffer();
42 } 45 }
43 46
44 void SoftwareBrowserCompositorOutputSurface::BindFramebuffer() { 47 void SoftwareBrowserCompositorOutputSurface::BindFramebuffer() {
45 // Not used for software surfaces. 48 // Not used for software surfaces.
46 NOTREACHED(); 49 NOTREACHED();
47 } 50 }
48 51
49 void SoftwareBrowserCompositorOutputSurface::SwapBuffers( 52 void SoftwareBrowserCompositorOutputSurface::SwapBuffers(
50 cc::OutputSurfaceFrame frame) { 53 cc::OutputSurfaceFrame frame) {
51 base::TimeTicks swap_time = base::TimeTicks::Now(); 54 base::TimeTicks swap_time = base::TimeTicks::Now();
52 for (auto& latency : frame.latency_info) { 55 for (auto& latency : frame.latency_info) {
53 latency.AddLatencyNumberWithTimestamp( 56 latency.AddLatencyNumberWithTimestamp(
54 ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, 0, 0, swap_time, 1); 57 ui::INPUT_EVENT_GPU_SWAP_BUFFER_COMPONENT, 0, 0, swap_time, 1);
55 latency.AddLatencyNumberWithTimestamp( 58 latency.AddLatencyNumberWithTimestamp(
56 ui::INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT, 0, 0, 59 ui::INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT, 0, 0,
57 swap_time, 1); 60 swap_time, 1);
58 } 61 }
59 base::ThreadTaskRunnerHandle::Get()->PostTask( 62 task_runner_->PostTask(FROM_HERE,
60 FROM_HERE, base::Bind(&RenderWidgetHostImpl::CompositorFrameDrawn, 63 base::Bind(&RenderWidgetHostImpl::CompositorFrameDrawn,
61 frame.latency_info)); 64 frame.latency_info));
62 65
63 gfx::VSyncProvider* vsync_provider = software_device()->GetVSyncProvider(); 66 gfx::VSyncProvider* vsync_provider = software_device()->GetVSyncProvider();
64 if (vsync_provider) { 67 if (vsync_provider) {
65 vsync_provider->GetVSyncParameters(base::Bind( 68 vsync_provider->GetVSyncParameters(base::Bind(
66 &BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu, 69 &BrowserCompositorOutputSurface::OnUpdateVSyncParametersFromGpu,
67 weak_factory_.GetWeakPtr())); 70 weak_factory_.GetWeakPtr()));
68 } 71 }
69 PostSwapBuffersComplete(); 72
73 task_runner_->PostTask(
74 FROM_HERE,
75 base::Bind(&SoftwareBrowserCompositorOutputSurface::SwapBuffersCallback,
76 weak_factory_.GetWeakPtr()));
77 }
78
79 void SoftwareBrowserCompositorOutputSurface::SwapBuffersCallback() {
80 client_->DidSwapBuffersComplete();
70 } 81 }
71 82
72 bool SoftwareBrowserCompositorOutputSurface::IsDisplayedAsOverlayPlane() const { 83 bool SoftwareBrowserCompositorOutputSurface::IsDisplayedAsOverlayPlane() const {
73 return false; 84 return false;
74 } 85 }
75 86
76 unsigned SoftwareBrowserCompositorOutputSurface::GetOverlayTextureId() const { 87 unsigned SoftwareBrowserCompositorOutputSurface::GetOverlayTextureId() const {
77 return 0; 88 return 0;
78 } 89 }
79 90
80 bool SoftwareBrowserCompositorOutputSurface::SurfaceIsSuspendForRecycle() 91 bool SoftwareBrowserCompositorOutputSurface::SurfaceIsSuspendForRecycle()
81 const { 92 const {
82 return false; 93 return false;
83 } 94 }
84 95
85 GLenum 96 GLenum
86 SoftwareBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() { 97 SoftwareBrowserCompositorOutputSurface::GetFramebufferCopyTextureFormat() {
87 // Not used for software surfaces. 98 // Not used for software surfaces.
88 NOTREACHED(); 99 NOTREACHED();
89 return 0; 100 return 0;
90 } 101 }
91 102
92 void SoftwareBrowserCompositorOutputSurface::OnGpuSwapBuffersCompleted(
93 const std::vector<ui::LatencyInfo>& latency_info,
94 gfx::SwapResult result,
95 const gpu::GpuProcessHostedCALayerTreeParamsMac* params_mac) {
96 NOTREACHED();
97 }
98
99 #if defined(OS_MACOSX) 103 #if defined(OS_MACOSX)
100 void SoftwareBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle( 104 void SoftwareBrowserCompositorOutputSurface::SetSurfaceSuspendedForRecycle(
101 bool suspended) { 105 bool suspended) {
102 } 106 }
103 #endif 107 #endif
104 108
105 } // namespace content 109 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698