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

Side by Side Diff: ash/wm/video_detector.cc

Issue 464643003: Stop painting when receiving delegated frame (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix crashes Created 6 years, 4 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
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 "ash/wm/video_detector.h" 5 #include "ash/wm/video_detector.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h" 8 #include "ash/shell_window_ids.h"
9 #include "ash/wm/window_state.h" 9 #include "ash/wm/window_state.h"
10 #include "ui/aura/env.h" 10 #include "ui/aura/env.h"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 } 77 }
78 78
79 void VideoDetector::RemoveObserver(VideoDetectorObserver* observer) { 79 void VideoDetector::RemoveObserver(VideoDetectorObserver* observer) {
80 observers_.RemoveObserver(observer); 80 observers_.RemoveObserver(observer);
81 } 81 }
82 82
83 void VideoDetector::OnWindowInitialized(aura::Window* window) { 83 void VideoDetector::OnWindowInitialized(aura::Window* window) {
84 observer_manager_.Add(window); 84 observer_manager_.Add(window);
85 } 85 }
86 86
87 void VideoDetector::OnWindowPaintScheduled(aura::Window* window, 87 void VideoDetector::OnDelegatedFrameDamage(
88 const gfx::Rect& region) { 88 aura::Window* window,
89 const gfx::Rect& damage_rect_in_dip) {
89 if (is_shutting_down_) 90 if (is_shutting_down_)
90 return; 91 return;
91 linked_ptr<WindowInfo>& info = window_infos_[window]; 92 linked_ptr<WindowInfo>& info = window_infos_[window];
92 if (!info.get()) 93 if (!info.get())
93 info.reset(new WindowInfo); 94 info.reset(new WindowInfo);
94 95
95 base::TimeTicks now = 96 base::TimeTicks now =
96 !now_for_test_.is_null() ? now_for_test_ : base::TimeTicks::Now(); 97 !now_for_test_.is_null() ? now_for_test_ : base::TimeTicks::Now();
97 if (info->RecordUpdateAndCheckForVideo(region, now)) 98 if (info->RecordUpdateAndCheckForVideo(damage_rect_in_dip, now))
98 MaybeNotifyObservers(window, now); 99 MaybeNotifyObservers(window, now);
99 } 100 }
100 101
101 void VideoDetector::OnWindowDestroyed(aura::Window* window) { 102 void VideoDetector::OnWindowDestroyed(aura::Window* window) {
102 window_infos_.erase(window); 103 window_infos_.erase(window);
103 observer_manager_.Remove(window); 104 observer_manager_.Remove(window);
104 } 105 }
105 106
106 void VideoDetector::OnAppTerminating() { 107 void VideoDetector::OnAppTerminating() {
107 // Stop checking video activity once the shutdown 108 // Stop checking video activity once the shutdown
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 } 146 }
146 } 147 }
147 148
148 FOR_EACH_OBSERVER(VideoDetectorObserver, 149 FOR_EACH_OBSERVER(VideoDetectorObserver,
149 observers_, 150 observers_,
150 OnVideoDetected(fullscreen_window_exists)); 151 OnVideoDetected(fullscreen_window_exists));
151 last_observer_notification_time_ = now; 152 last_observer_notification_time_ = now;
152 } 153 }
153 154
154 } // namespace ash 155 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698