OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |