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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 310183002: Ack swap buffers after a timeout (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Incorporate review feedback Created 6 years, 6 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
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_mac.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/renderer_host/render_widget_host_view_mac.h" 5 #include "content/browser/renderer_host/render_widget_host_view_mac.h"
6 6
7 #import <objc/runtime.h> 7 #import <objc/runtime.h>
8 #include <QuartzCore/QuartzCore.h> 8 #include <QuartzCore/QuartzCore.h>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 2340 matching lines...) Expand 10 before | Expand all | Expand 10 after
2351 SendPendingLatencyInfoToHost(); 2351 SendPendingLatencyInfoToHost();
2352 } 2352 }
2353 } 2353 }
2354 2354
2355 void RenderWidgetHostViewMac::AddPendingSwapAck( 2355 void RenderWidgetHostViewMac::AddPendingSwapAck(
2356 int32 route_id, int gpu_host_id, int32 renderer_id) { 2356 int32 route_id, int gpu_host_id, int32 renderer_id) {
2357 // Note that multiple un-acked swaps can come in the event of a GPU process 2357 // Note that multiple un-acked swaps can come in the event of a GPU process
2358 // loss. Drop the old acks. 2358 // loss. Drop the old acks.
2359 pending_swap_ack_.reset(new PendingSwapAck( 2359 pending_swap_ack_.reset(new PendingSwapAck(
2360 route_id, gpu_host_id, renderer_id)); 2360 route_id, gpu_host_id, renderer_id));
2361
2362 // A trace value of 2 indicates that there is a pending swap ack. See
2363 // CompositingIOSurfaceLayer's canDrawInCGLContext for other value meanings.
2364 TRACE_COUNTER_ID1("browser", "PendingSwapAck",
2365 compositing_iosurface_layer_.get(), 2);
2366 } 2361 }
2367 2362
2368 void RenderWidgetHostViewMac::SendPendingSwapAck() { 2363 void RenderWidgetHostViewMac::SendPendingSwapAck() {
2369 if (!pending_swap_ack_) 2364 if (!pending_swap_ack_)
2370 return; 2365 return;
2371 2366
2372 AcceleratedSurfaceMsg_BufferPresented_Params ack_params; 2367 AcceleratedSurfaceMsg_BufferPresented_Params ack_params;
2373 ack_params.sync_point = 0; 2368 ack_params.sync_point = 0;
2374 ack_params.renderer_id = pending_swap_ack_->renderer_id; 2369 ack_params.renderer_id = pending_swap_ack_->renderer_id;
2375 RenderWidgetHostImpl::AcknowledgeBufferPresent(pending_swap_ack_->route_id, 2370 RenderWidgetHostImpl::AcknowledgeBufferPresent(pending_swap_ack_->route_id,
2376 pending_swap_ack_->gpu_host_id, 2371 pending_swap_ack_->gpu_host_id,
2377 ack_params); 2372 ack_params);
2378 pending_swap_ack_.reset(); 2373 pending_swap_ack_.reset();
2379 TRACE_COUNTER_ID1("browser", "PendingSwapAck", this, 0);
2380 } 2374 }
2381 2375
2382 void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() { 2376 void RenderWidgetHostViewMac::PauseForPendingResizeOrRepaintsAndDraw() {
2383 if (!render_widget_host_ || render_widget_host_->is_hidden()) 2377 if (!render_widget_host_ || render_widget_host_->is_hidden())
2384 return; 2378 return;
2385 2379
2386 // Pausing for the overlay/underlay view prevents the other one from receiving 2380 // Pausing for the overlay/underlay view prevents the other one from receiving
2387 // frames. This may lead to large delays, causing overlaps. 2381 // frames. This may lead to large delays, causing overlaps.
2388 // See crbug.com/352020. 2382 // See crbug.com/352020.
2389 if (underlay_view_ || overlay_view_) 2383 if (underlay_view_ || overlay_view_)
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
2479 //////////////////////////////////////////////////////////////////////////////// 2473 ////////////////////////////////////////////////////////////////////////////////
2480 // CompositingIOSurfaceLayerClient, public: 2474 // CompositingIOSurfaceLayerClient, public:
2481 2475
2482 void RenderWidgetHostViewMac::AcceleratedLayerDidDrawFrame(bool succeeded) { 2476 void RenderWidgetHostViewMac::AcceleratedLayerDidDrawFrame(bool succeeded) {
2483 SendPendingLatencyInfoToHost(); 2477 SendPendingLatencyInfoToHost();
2484 SendPendingSwapAck(); 2478 SendPendingSwapAck();
2485 if (!succeeded) 2479 if (!succeeded)
2486 GotAcceleratedCompositingError(); 2480 GotAcceleratedCompositingError();
2487 } 2481 }
2488 2482
2489 bool RenderWidgetHostViewMac::AcceleratedLayerHasNotAckedPendingFrame() const {
2490 return pending_swap_ack_;
2491 }
2492
2493 } // namespace content 2483 } // namespace content
2494 2484
2495 // RenderWidgetHostViewCocoa --------------------------------------------------- 2485 // RenderWidgetHostViewCocoa ---------------------------------------------------
2496 2486
2497 @implementation RenderWidgetHostViewCocoa 2487 @implementation RenderWidgetHostViewCocoa
2498 @synthesize selectedRange = selectedRange_; 2488 @synthesize selectedRange = selectedRange_;
2499 @synthesize suppressNextEscapeKeyUp = suppressNextEscapeKeyUp_; 2489 @synthesize suppressNextEscapeKeyUp = suppressNextEscapeKeyUp_;
2500 @synthesize markedRange = markedRange_; 2490 @synthesize markedRange = markedRange_;
2501 2491
2502 - (id)initWithRenderWidgetHostViewMac:(RenderWidgetHostViewMac*)r { 2492 - (id)initWithRenderWidgetHostViewMac:(RenderWidgetHostViewMac*)r {
(...skipping 1881 matching lines...) Expand 10 before | Expand all | Expand 10 after
4384 4374
4385 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding 4375 // "-webkit-app-region: drag | no-drag" is implemented on Mac by excluding
4386 // regions that are not draggable. (See ControlRegionView in 4376 // regions that are not draggable. (See ControlRegionView in
4387 // native_app_window_cocoa.mm). This requires the render host view to be 4377 // native_app_window_cocoa.mm). This requires the render host view to be
4388 // draggable by default. 4378 // draggable by default.
4389 - (BOOL)mouseDownCanMoveWindow { 4379 - (BOOL)mouseDownCanMoveWindow {
4390 return YES; 4380 return YES;
4391 } 4381 }
4392 4382
4393 @end 4383 @end
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_mac.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698