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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 152983004: Fix RenderWidgetHostViewAura as observer of CompositorVSyncManager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: b7832f28 Initial. 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 | Annotate | Revision Log
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_aura.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_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 #include "ui/aura/client/window_tree_client.h" 60 #include "ui/aura/client/window_tree_client.h"
61 #include "ui/aura/env.h" 61 #include "ui/aura/env.h"
62 #include "ui/aura/root_window.h" 62 #include "ui/aura/root_window.h"
63 #include "ui/aura/window.h" 63 #include "ui/aura/window.h"
64 #include "ui/aura/window_observer.h" 64 #include "ui/aura/window_observer.h"
65 #include "ui/aura/window_tracker.h" 65 #include "ui/aura/window_tracker.h"
66 #include "ui/base/clipboard/scoped_clipboard_writer.h" 66 #include "ui/base/clipboard/scoped_clipboard_writer.h"
67 #include "ui/base/hit_test.h" 67 #include "ui/base/hit_test.h"
68 #include "ui/base/ime/input_method.h" 68 #include "ui/base/ime/input_method.h"
69 #include "ui/base/ui_base_types.h" 69 #include "ui/base/ui_base_types.h"
70 #include "ui/compositor/compositor_vsync_manager.h"
70 #include "ui/compositor/layer.h" 71 #include "ui/compositor/layer.h"
71 #include "ui/events/event.h" 72 #include "ui/events/event.h"
72 #include "ui/events/event_utils.h" 73 #include "ui/events/event_utils.h"
73 #include "ui/events/gestures/gesture_recognizer.h" 74 #include "ui/events/gestures/gesture_recognizer.h"
74 #include "ui/gfx/canvas.h" 75 #include "ui/gfx/canvas.h"
75 #include "ui/gfx/display.h" 76 #include "ui/gfx/display.h"
76 #include "ui/gfx/rect_conversions.h" 77 #include "ui/gfx/rect_conversions.h"
77 #include "ui/gfx/screen.h" 78 #include "ui/gfx/screen.h"
78 #include "ui/gfx/size_conversions.h" 79 #include "ui/gfx/size_conversions.h"
79 #include "ui/gfx/skia_util.h" 80 #include "ui/gfx/skia_util.h"
(...skipping 3233 matching lines...) Expand 10 before | Expand all | Expand 10 after
3313 host_->ScheduleComposite(); 3314 host_->ScheduleComposite();
3314 } 3315 }
3315 3316
3316 //////////////////////////////////////////////////////////////////////////////// 3317 ////////////////////////////////////////////////////////////////////////////////
3317 // RenderWidgetHostViewAura, private: 3318 // RenderWidgetHostViewAura, private:
3318 3319
3319 RenderWidgetHostViewAura::~RenderWidgetHostViewAura() { 3320 RenderWidgetHostViewAura::~RenderWidgetHostViewAura() {
3320 if (touch_editing_client_) 3321 if (touch_editing_client_)
3321 touch_editing_client_->OnViewDestroyed(); 3322 touch_editing_client_->OnViewDestroyed();
3322 3323
3324 if (vsync_manager_)
3325 vsync_manager_->RemoveObserver(this);
3326
3323 ImageTransportFactory::GetInstance()->RemoveObserver(this); 3327 ImageTransportFactory::GetInstance()->RemoveObserver(this);
3324 3328
3325 window_observer_.reset(); 3329 window_observer_.reset();
3326 if (window_->GetDispatcher()) 3330 if (window_->GetDispatcher())
3327 window_->GetDispatcher()->RemoveRootWindowObserver(this); 3331 window_->GetDispatcher()->RemoveRootWindowObserver(this);
3328 UnlockMouse(); 3332 UnlockMouse();
3329 if (popup_parent_host_view_) { 3333 if (popup_parent_host_view_) {
3330 DCHECK(popup_parent_host_view_->popup_child_host_view_ == NULL || 3334 DCHECK(popup_parent_host_view_->popup_child_host_view_ == NULL ||
3331 popup_parent_host_view_->popup_child_host_view_ == this); 3335 popup_parent_host_view_->popup_child_host_view_ == this);
3332 popup_parent_host_view_->popup_child_host_view_ = NULL; 3336 popup_parent_host_view_->popup_child_host_view_ = NULL;
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
3524 3528
3525 #if defined(OS_WIN) 3529 #if defined(OS_WIN)
3526 // The parent may have changed here. Ensure that the legacy window is 3530 // The parent may have changed here. Ensure that the legacy window is
3527 // reparented accordingly. 3531 // reparented accordingly.
3528 if (legacy_render_widget_host_HWND_) 3532 if (legacy_render_widget_host_HWND_)
3529 legacy_render_widget_host_HWND_->UpdateParent( 3533 legacy_render_widget_host_HWND_->UpdateParent(
3530 reinterpret_cast<HWND>(GetNativeViewId())); 3534 reinterpret_cast<HWND>(GetNativeViewId()));
3531 #endif 3535 #endif
3532 3536
3533 ui::Compositor* compositor = GetCompositor(); 3537 ui::Compositor* compositor = GetCompositor();
3534 if (compositor) 3538 if (compositor) {
piman 2014/02/13 01:44:36 You need to deregister yourself from vsync_manager
3535 compositor->vsync_manager()->AddObserver(this); 3539 vsync_manager_ = compositor->vsync_manager();
3540 vsync_manager_->AddObserver(this);
3541 }
3536 } 3542 }
3537 3543
3538 void RenderWidgetHostViewAura::RemovingFromRootWindow() { 3544 void RenderWidgetHostViewAura::RemovingFromRootWindow() {
3539 aura::client::CursorClient* cursor_client = 3545 aura::client::CursorClient* cursor_client =
3540 aura::client::GetCursorClient(window_->GetRootWindow()); 3546 aura::client::GetCursorClient(window_->GetRootWindow());
3541 if (cursor_client) 3547 if (cursor_client)
3542 cursor_client->RemoveObserver(this); 3548 cursor_client->RemoveObserver(this);
3543 3549
3544 DetachFromInputMethod(); 3550 DetachFromInputMethod();
3545 3551
3546 window_->GetDispatcher()->RemoveRootWindowObserver(this); 3552 window_->GetDispatcher()->RemoveRootWindowObserver(this);
3547 ui::Compositor* compositor = GetCompositor(); 3553 ui::Compositor* compositor = GetCompositor();
3548 if (current_surface_.get()) { 3554 if (current_surface_.get()) {
3549 // We can't get notification for commits after this point, which would 3555 // We can't get notification for commits after this point, which would
3550 // guarantee that the compositor isn't using an old texture any more, so 3556 // guarantee that the compositor isn't using an old texture any more, so
3551 // instead we force the layer to stop using any external resources which 3557 // instead we force the layer to stop using any external resources which
3552 // synchronizes with the compositor thread, and makes it safe to run the 3558 // synchronizes with the compositor thread, and makes it safe to run the
3553 // callback. 3559 // callback.
3554 window_->layer()->SetShowPaintedContent(); 3560 window_->layer()->SetShowPaintedContent();
3555 } 3561 }
3556 RunOnCommitCallbacks(); 3562 RunOnCommitCallbacks();
3557 resize_lock_.reset(); 3563 resize_lock_.reset();
3558 host_->WasResized(); 3564 host_->WasResized();
3559 3565
3560 if (compositor) { 3566 if (compositor && compositor->HasObserver(this))
3561 if (compositor->HasObserver(this)) 3567 compositor->RemoveObserver(this);
3562 compositor->RemoveObserver(this);
3563 compositor->vsync_manager()->RemoveObserver(this);
3564 }
3565 3568
3566 #if defined(OS_WIN) 3569 #if defined(OS_WIN)
3567 // Update the legacy window's parent temporarily to the desktop window. It 3570 // Update the legacy window's parent temporarily to the desktop window. It
3568 // will eventually get reparented to the right root. 3571 // will eventually get reparented to the right root.
3569 if (legacy_render_widget_host_HWND_) 3572 if (legacy_render_widget_host_HWND_)
3570 legacy_render_widget_host_HWND_->UpdateParent(::GetDesktopWindow()); 3573 legacy_render_widget_host_HWND_->UpdateParent(::GetDesktopWindow());
3571 #endif 3574 #endif
3572 } 3575 }
3573 3576
3574 ui::Compositor* RenderWidgetHostViewAura::GetCompositor() const { 3577 ui::Compositor* RenderWidgetHostViewAura::GetCompositor() const {
(...skipping 25 matching lines...) Expand all
3600 RenderWidgetHost* widget) { 3603 RenderWidgetHost* widget) {
3601 return new RenderWidgetHostViewAura(widget); 3604 return new RenderWidgetHostViewAura(widget);
3602 } 3605 }
3603 3606
3604 // static 3607 // static
3605 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) { 3608 void RenderWidgetHostViewPort::GetDefaultScreenInfo(WebScreenInfo* results) {
3606 GetScreenInfoForWindow(results, NULL); 3609 GetScreenInfoForWindow(results, NULL);
3607 } 3610 }
3608 3611
3609 } // namespace content 3612 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_aura.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698