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

Side by Side Diff: ash/monitor/multi_monitor_manager.cc

Issue 9835068: Don't delete Primary root window and monitor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync Created 8 years, 9 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 | « ash/monitor/monitor_controller.cc ('k') | ash/monitor/multi_monitor_manager_unittest.cc » ('j') | 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 "ash/monitor/multi_monitor_manager.h" 5 #include "ash/monitor/multi_monitor_manager.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 83
84 if (monitors_.size() < new_monitors.size()) { 84 if (monitors_.size() < new_monitors.size()) {
85 // New monitors added 85 // New monitors added
86 for (size_t i = min; i < new_monitors.size(); ++i) { 86 for (size_t i = min; i < new_monitors.size(); ++i) {
87 Monitor* monitor = new Monitor(); 87 Monitor* monitor = new Monitor();
88 monitor->set_bounds(new_monitors[i]->bounds()); 88 monitor->set_bounds(new_monitors[i]->bounds());
89 monitors_.push_back(monitor); 89 monitors_.push_back(monitor);
90 NotifyMonitorAdded(monitor); 90 NotifyMonitorAdded(monitor);
91 } 91 }
92 } else { 92 } else {
93 // Monitors are removed. 93 // Monitors are removed. We keep the monitor for the primary
94 while (monitors_.size() > new_monitors.size()) { 94 // monitor (at index 0) because it needs the monitor information
95 // even if it doesn't exit.
96 while (monitors_.size() > new_monitors.size() && monitors_.size() > 1) {
95 Monitor* monitor = monitors_.back(); 97 Monitor* monitor = monitors_.back();
96 // Monitor object is deleted in OnWindowDestroying. 98 // Monitor object is deleted in OnWindowDestroying.
97 NotifyMonitorRemoved(monitor); 99 NotifyMonitorRemoved(monitor);
100 DCHECK(find(monitors_.begin(), monitors_.end(), monitor) ==
101 monitors_.end());
98 } 102 }
99 } 103 }
100 } 104 }
101 105
102 RootWindow* MultiMonitorManager::CreateRootWindowForMonitor( 106 RootWindow* MultiMonitorManager::CreateRootWindowForMonitor(
103 Monitor* monitor) { 107 Monitor* monitor) {
104 RootWindow* root_window = new RootWindow(monitor->bounds()); 108 RootWindow* root_window = new RootWindow(monitor->bounds());
105 root_window->AddObserver(this); 109 root_window->AddObserver(this);
106 root_window->AddRootWindowObserver(this); 110 root_window->AddRootWindowObserver(this);
107 root_window->SetProperty(kMonitorKey, monitor); 111 root_window->SetProperty(kMonitorKey, monitor);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 iter != monitors_.end(); ++iter) 203 iter != monitors_.end(); ++iter)
200 new_monitors.push_back(Copy(*iter)); 204 new_monitors.push_back(Copy(*iter));
201 new_monitors.push_back(Copy(monitors_.front())); 205 new_monitors.push_back(Copy(monitors_.front()));
202 OnNativeMonitorsChanged(new_monitors); 206 OnNativeMonitorsChanged(new_monitors);
203 STLDeleteContainerPointers(new_monitors.begin(), new_monitors.end()); 207 STLDeleteContainerPointers(new_monitors.begin(), new_monitors.end());
204 } 208 }
205 } 209 }
206 210
207 } // namespace internal 211 } // namespace internal
208 } // namespace ash 212 } // namespace ash
OLDNEW
« no previous file with comments | « ash/monitor/monitor_controller.cc ('k') | ash/monitor/multi_monitor_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698