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

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

Issue 165623002: Dynamically set CAOpenGLLAyer to be asynchronous (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unset needsDisplay_ in a more conservative place Created 6 years, 10 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 (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 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 /////////////////////////////////////////////////////////////////////////////// 401 ///////////////////////////////////////////////////////////////////////////////
402 // RenderWidgetHostViewMac, public: 402 // RenderWidgetHostViewMac, public:
403 403
404 RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget) 404 RenderWidgetHostViewMac::RenderWidgetHostViewMac(RenderWidgetHost* widget)
405 : render_widget_host_(RenderWidgetHostImpl::From(widget)), 405 : render_widget_host_(RenderWidgetHostImpl::From(widget)),
406 about_to_validate_and_paint_(false), 406 about_to_validate_and_paint_(false),
407 call_set_needs_display_in_rect_pending_(false), 407 call_set_needs_display_in_rect_pending_(false),
408 last_frame_was_accelerated_(false), 408 last_frame_was_accelerated_(false),
409 text_input_type_(ui::TEXT_INPUT_TYPE_NONE), 409 text_input_type_(ui::TEXT_INPUT_TYPE_NONE),
410 can_compose_inline_(true), 410 can_compose_inline_(true),
411 compositing_iosurface_layer_async_timer_(
412 FROM_HERE, base::TimeDelta::FromMilliseconds(200),
Avi (use Gerrit) 2014/02/14 02:11:29 ... you say 200ms here.
ccameron 2014/02/14 02:32:19 Changed to 250
413 this, &RenderWidgetHostViewMac::TimerSinceGotAcceleratedFrameFired),
411 allow_overlapping_views_(false), 414 allow_overlapping_views_(false),
412 use_core_animation_(false), 415 use_core_animation_(false),
413 pending_latency_info_delay_(0), 416 pending_latency_info_delay_(0),
414 pending_latency_info_delay_weak_ptr_factory_(this), 417 pending_latency_info_delay_weak_ptr_factory_(this),
415 is_loading_(false), 418 is_loading_(false),
416 weak_factory_(this), 419 weak_factory_(this),
417 fullscreen_parent_host_view_(NULL), 420 fullscreen_parent_host_view_(NULL),
418 underlay_view_has_drawn_(false), 421 underlay_view_has_drawn_(false),
419 overlay_view_weak_factory_(this), 422 overlay_view_weak_factory_(this),
420 software_frame_weak_ptr_factory_(this) { 423 software_frame_weak_ptr_factory_(this) {
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after
1398 // setNeedsDisplay will never display and we'll never ack if the window is 1401 // setNeedsDisplay will never display and we'll never ack if the window is
1399 // empty, so ack now and don't bother calling setNeedsDisplay below. 1402 // empty, so ack now and don't bother calling setNeedsDisplay below.
1400 return; 1403 return;
1401 } 1404 }
1402 1405
1403 // No need to draw the surface if we are inside a drawRect. It will be done 1406 // No need to draw the surface if we are inside a drawRect. It will be done
1404 // later. 1407 // later.
1405 if (!about_to_validate_and_paint_) { 1408 if (!about_to_validate_and_paint_) {
1406 if (use_core_animation_) { 1409 if (use_core_animation_) {
1407 DCHECK(compositing_iosurface_layer_); 1410 DCHECK(compositing_iosurface_layer_);
1408 [compositing_iosurface_layer_ setNeedsDisplay]; 1411 compositing_iosurface_layer_async_timer_.Reset();
1412 [compositing_iosurface_layer_ gotNewFrame];
1409 } else { 1413 } else {
1410 if (!DrawIOSurfaceWithoutCoreAnimation()) { 1414 if (!DrawIOSurfaceWithoutCoreAnimation()) {
1411 [cocoa_view_ setNeedsDisplay:YES]; 1415 [cocoa_view_ setNeedsDisplay:YES];
1412 GotAcceleratedCompositingError(); 1416 GotAcceleratedCompositingError();
1413 return; 1417 return;
1414 } 1418 }
1415 } 1419 }
1416 } 1420 }
1417 } 1421 }
1418 1422
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after
1896 // http://crbug.com/279472 1900 // http://crbug.com/279472
1897 if (!use_core_animation_) 1901 if (!use_core_animation_)
1898 [[cocoa_view_ window] disableScreenUpdatesUntilFlush]; 1902 [[cocoa_view_ window] disableScreenUpdatesUntilFlush];
1899 if (allow_overlapping_views_) 1903 if (allow_overlapping_views_)
1900 DestroyCompositedIOSurfaceAndLayer(kLeaveContextBoundToView); 1904 DestroyCompositedIOSurfaceAndLayer(kLeaveContextBoundToView);
1901 else 1905 else
1902 DestroyCompositedIOSurfaceAndLayer(kDestroyContext); 1906 DestroyCompositedIOSurfaceAndLayer(kDestroyContext);
1903 } 1907 }
1904 } 1908 }
1905 1909
1910 void RenderWidgetHostViewMac::TimerSinceGotAcceleratedFrameFired() {
1911 [compositing_iosurface_layer_ timerSinceGotNewFrameFired];
1912 }
1913
1906 void RenderWidgetHostViewMac::SetActive(bool active) { 1914 void RenderWidgetHostViewMac::SetActive(bool active) {
1907 if (render_widget_host_) { 1915 if (render_widget_host_) {
1908 render_widget_host_->SetActive(active); 1916 render_widget_host_->SetActive(active);
1909 if (active) { 1917 if (active) {
1910 if (HasFocus()) 1918 if (HasFocus())
1911 render_widget_host_->Focus(); 1919 render_widget_host_->Focus();
1912 } else { 1920 } else {
1913 render_widget_host_->Blur(); 1921 render_widget_host_->Blur();
1914 } 1922 }
1915 } 1923 }
(...skipping 2177 matching lines...) Expand 10 before | Expand all | Expand 10 after
4093 return YES; 4101 return YES;
4094 } 4102 }
4095 4103
4096 - (BOOL)isOpaque { 4104 - (BOOL)isOpaque {
4097 if (renderWidgetHostView_->use_core_animation_) 4105 if (renderWidgetHostView_->use_core_animation_)
4098 return YES; 4106 return YES;
4099 return [super isOpaque]; 4107 return [super isOpaque];
4100 } 4108 }
4101 4109
4102 @end 4110 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698