Chromium Code Reviews| 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 "ui/wm/core/window_animations.h" | 5 #include "ui/wm/core/window_animations.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 105 window_->parent()->layer()->StackAbove( | 105 window_->parent()->layer()->StackAbove( |
| 106 layer_owner_->root(), topmost_transient_child->layer()); | 106 layer_owner_->root(), topmost_transient_child->layer()); |
| 107 } | 107 } |
| 108 } | 108 } |
| 109 } | 109 } |
| 110 | 110 |
| 111 protected: | 111 protected: |
| 112 // Invoked when the hiding animation is completed. It will delete | 112 // Invoked when the hiding animation is completed. It will delete |
| 113 // 'this', and no operation should be made on this object after this | 113 // 'this', and no operation should be made on this object after this |
| 114 // point. | 114 // point. |
| 115 void OnAnimationCompleted() { | 115 void OnAnimationCompleted() { |
|
sky
2014/06/27 22:32:56
I would have thought we end up here. What particul
| |
| 116 // Window may have been destroyed by this point. | 116 // Window may have been destroyed by this point. |
| 117 if (window_) { | 117 if (window_) { |
| 118 aura::client::AnimationHost* animation_host = | 118 aura::client::AnimationHost* animation_host = |
| 119 aura::client::GetAnimationHost(window_); | 119 aura::client::GetAnimationHost(window_); |
| 120 if (animation_host) | 120 if (animation_host) |
| 121 animation_host->OnWindowHidingAnimationCompleted(); | 121 animation_host->OnWindowHidingAnimationCompleted(); |
| 122 window_->RemoveObserver(this); | |
| 123 } | 122 } |
| 124 delete this; | 123 delete this; |
| 125 } | 124 } |
| 126 | 125 |
| 127 private: | 126 private: |
| 128 // Invoked when the window is destroyed (or destroying). | 127 // Invoked when the window is destroyed (or destroying). |
| 129 void WindowInvalid() { | 128 void WindowInvalid() { |
| 130 layer_owner_->root()->SuppressPaint(); | 129 layer_owner_->root()->SuppressPaint(); |
| 131 | 130 delete this; |
| 132 window_->RemoveObserver(this); | |
| 133 window_ = NULL; | |
| 134 } | 131 } |
| 135 | 132 |
| 136 aura::Window* window_; | 133 aura::Window* window_; |
| 137 | 134 |
| 138 // The owner of detached layers. | 135 // The owner of detached layers. |
| 139 scoped_ptr<ui::LayerTreeOwner> layer_owner_; | 136 scoped_ptr<ui::LayerTreeOwner> layer_owner_; |
| 140 | 137 |
| 141 DISALLOW_COPY_AND_ASSIGN(HidingWindowAnimationObserverBase); | 138 DISALLOW_COPY_AND_ASSIGN(HidingWindowAnimationObserverBase); |
| 142 }; | 139 }; |
| 143 | 140 |
| (...skipping 505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 649 } | 646 } |
| 650 | 647 |
| 651 bool WindowAnimationsDisabled(aura::Window* window) { | 648 bool WindowAnimationsDisabled(aura::Window* window) { |
| 652 return (!gfx::Animation::ShouldRenderRichAnimation() || (window && | 649 return (!gfx::Animation::ShouldRenderRichAnimation() || (window && |
| 653 window->GetProperty(aura::client::kAnimationsDisabledKey)) || | 650 window->GetProperty(aura::client::kAnimationsDisabledKey)) || |
| 654 CommandLine::ForCurrentProcess()->HasSwitch( | 651 CommandLine::ForCurrentProcess()->HasSwitch( |
| 655 switches::kWindowAnimationsDisabled)); | 652 switches::kWindowAnimationsDisabled)); |
| 656 } | 653 } |
| 657 | 654 |
| 658 } // namespace wm | 655 } // namespace wm |
| OLD | NEW |