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

Side by Side Diff: ash/display/display_controller.cc

Issue 145313003: Implement cursor compositing mode on Ash (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix linux_aura build. 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
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/display/display_controller.h" 5 #include "ash/display/display_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <map> 9 #include <map>
10 10
11 #include "ash/ash_switches.h" 11 #include "ash/ash_switches.h"
12 #include "ash/display/cursor_window_controller.h"
12 #include "ash/display/display_layout_store.h" 13 #include "ash/display/display_layout_store.h"
13 #include "ash/display/display_manager.h" 14 #include "ash/display/display_manager.h"
14 #include "ash/display/mirror_window_controller.h" 15 #include "ash/display/mirror_window_controller.h"
15 #include "ash/display/root_window_transformers.h" 16 #include "ash/display/root_window_transformers.h"
16 #include "ash/display/virtual_keyboard_window_controller.h" 17 #include "ash/display/virtual_keyboard_window_controller.h"
17 #include "ash/host/root_window_host_factory.h" 18 #include "ash/host/root_window_host_factory.h"
18 #include "ash/root_window_controller.h" 19 #include "ash/root_window_controller.h"
19 #include "ash/root_window_settings.h" 20 #include "ash/root_window_settings.h"
20 #include "ash/screen_util.h" 21 #include "ash/screen_util.h"
21 #include "ash/shell.h" 22 #include "ash/shell.h"
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 bool DisplayController::DisplayChangeLimiter::IsThrottled() const { 210 bool DisplayController::DisplayChangeLimiter::IsThrottled() const {
210 return base::Time::Now() < throttle_timeout_; 211 return base::Time::Now() < throttle_timeout_;
211 } 212 }
212 213
213 //////////////////////////////////////////////////////////////////////////////// 214 ////////////////////////////////////////////////////////////////////////////////
214 // DisplayController 215 // DisplayController
215 216
216 DisplayController::DisplayController() 217 DisplayController::DisplayController()
217 : primary_root_window_for_replace_(NULL), 218 : primary_root_window_for_replace_(NULL),
218 focus_activation_store_(new internal::FocusActivationStore()), 219 focus_activation_store_(new internal::FocusActivationStore()),
220 cursor_window_controller_(new internal::CursorWindowController(false)),
219 mirror_window_controller_(new internal::MirrorWindowController), 221 mirror_window_controller_(new internal::MirrorWindowController),
220 virtual_keyboard_window_controller_( 222 virtual_keyboard_window_controller_(
221 new internal::VirtualKeyboardWindowController) { 223 new internal::VirtualKeyboardWindowController) {
222 #if defined(OS_CHROMEOS) 224 #if defined(OS_CHROMEOS)
223 CommandLine* command_line = CommandLine::ForCurrentProcess(); 225 CommandLine* command_line = CommandLine::ForCurrentProcess();
224 if (!command_line->HasSwitch(switches::kAshDisableDisplayChangeLimiter) && 226 if (!command_line->HasSwitch(switches::kAshDisableDisplayChangeLimiter) &&
225 base::SysInfo::IsRunningOnChromeOS()) 227 base::SysInfo::IsRunningOnChromeOS())
226 limiter_.reset(new DisplayChangeLimiter); 228 limiter_.reset(new DisplayChangeLimiter);
227 #endif 229 #endif
228 // Reset primary display to make sure that tests don't use 230 // Reset primary display to make sure that tests don't use
(...skipping 13 matching lines...) Expand all
242 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanging()); 244 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanging());
243 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanged()); 245 FOR_EACH_OBSERVER(Observer, observers_, OnDisplayConfigurationChanged());
244 } 246 }
245 } 247 }
246 248
247 void DisplayController::Shutdown() { 249 void DisplayController::Shutdown() {
248 // Unset the display manager's delegate here because 250 // Unset the display manager's delegate here because
249 // DisplayManager outlives DisplayController. 251 // DisplayManager outlives DisplayController.
250 Shell::GetInstance()->display_manager()->set_delegate(NULL); 252 Shell::GetInstance()->display_manager()->set_delegate(NULL);
251 253
254 cursor_window_controller_.reset();
252 mirror_window_controller_.reset(); 255 mirror_window_controller_.reset();
253 virtual_keyboard_window_controller_.reset(); 256 virtual_keyboard_window_controller_.reset();
254 257
255 Shell::GetScreen()->RemoveObserver(this); 258 Shell::GetScreen()->RemoveObserver(this);
256 // Delete all root window controllers, which deletes root window 259 // Delete all root window controllers, which deletes root window
257 // from the last so that the primary root window gets deleted last. 260 // from the last so that the primary root window gets deleted last.
258 for (std::map<int64, aura::Window*>::const_reverse_iterator it = 261 for (std::map<int64, aura::Window*>::const_reverse_iterator it =
259 root_windows_.rbegin(); it != root_windows_.rend(); ++it) { 262 root_windows_.rbegin(); it != root_windows_.rend(); ++it) {
260 internal::RootWindowController* controller = 263 internal::RootWindowController* controller =
261 internal::GetRootWindowController(it->second); 264 internal::GetRootWindowController(it->second);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 base::Unretained(this))); 396 base::Unretained(this)));
394 } else { 397 } else {
395 SetPrimaryDisplay(ScreenUtil::GetSecondaryDisplay()); 398 SetPrimaryDisplay(ScreenUtil::GetSecondaryDisplay());
396 } 399 }
397 #else 400 #else
398 SetPrimaryDisplay(ScreenUtil::GetSecondaryDisplay()); 401 SetPrimaryDisplay(ScreenUtil::GetSecondaryDisplay());
399 #endif 402 #endif
400 } 403 }
401 } 404 }
402 405
406 void DisplayController::EnableCompositedCursor(aura::Window* container) {
407 cursor_window_controller_->InitCursorWindow(container);
408 }
409
403 void DisplayController::SetPrimaryDisplayId(int64 id) { 410 void DisplayController::SetPrimaryDisplayId(int64 id) {
404 DCHECK_NE(gfx::Display::kInvalidDisplayID, id); 411 DCHECK_NE(gfx::Display::kInvalidDisplayID, id);
405 if (id == gfx::Display::kInvalidDisplayID || primary_display_id == id) 412 if (id == gfx::Display::kInvalidDisplayID || primary_display_id == id)
406 return; 413 return;
407 414
408 const gfx::Display& display = GetDisplayManager()->GetDisplayForId(id); 415 const gfx::Display& display = GetDisplayManager()->GetDisplayForId(id);
409 if (display.is_valid()) 416 if (display.is_valid())
410 SetPrimaryDisplay(display); 417 SetPrimaryDisplay(display);
411 } 418 }
412 419
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 std::string name = 742 std::string name =
736 root_windows[i] == primary ? "aura_root_0" : "aura_root_x"; 743 root_windows[i] == primary ? "aura_root_0" : "aura_root_x";
737 gfx::AcceleratedWidget xwindow = 744 gfx::AcceleratedWidget xwindow =
738 root_windows[i]->GetDispatcher()->host()->GetAcceleratedWidget(); 745 root_windows[i]->GetDispatcher()->host()->GetAcceleratedWidget();
739 XStoreName(gfx::GetXDisplay(), xwindow, name.c_str()); 746 XStoreName(gfx::GetXDisplay(), xwindow, name.c_str());
740 } 747 }
741 #endif 748 #endif
742 } 749 }
743 750
744 } // namespace ash 751 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698