#include <map>
#include "ash/ash_switches.h"
+#include "ash/display/cursor_window_controller.h"
#include "ash/display/display_layout_store.h"
#include "ash/display/display_manager.h"
#include "ash/display/mirror_window_controller.h"
#include "ash/display/root_window_transformers.h"
#include "ash/display/virtual_keyboard_window_controller.h"
-#include "ash/host/root_window_host_factory.h"
+#include "ash/host/window_tree_host_factory.h"
#include "ash/root_window_controller.h"
#include "ash/root_window_settings.h"
#include "ash/screen_util.h"
#include "ui/aura/window_property.h"
#include "ui/aura/window_tracker.h"
#include "ui/compositor/compositor.h"
+#include "ui/compositor/compositor_vsync_manager.h"
#include "ui/gfx/display.h"
#include "ui/gfx/screen.h"
scoped_ptr<aura::RootWindowTransformer> transformer(
internal::CreateRootWindowTransformerForDisplay(root->window(), display));
root->host()->SetRootWindowTransformer(transformer.Pass());
+
+ internal::DisplayMode mode;
+ if (GetDisplayManager()->GetSelectedModeForDisplayId(display.id(), &mode) &&
+ mode.refresh_rate > 0.0f) {
+ root->host()->compositor()->vsync_manager()->SetAuthoritativeVSyncInterval(
+ base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond /
+ mode.refresh_rate));
+ }
}
} // namespace
DisplayController::DisplayController()
: primary_root_window_for_replace_(NULL),
focus_activation_store_(new internal::FocusActivationStore()),
- mirror_window_controller_(new internal::MirrorWindowController),
+ cursor_window_controller_(new internal::CursorWindowController()),
+ mirror_window_controller_(new internal::MirrorWindowController()),
virtual_keyboard_window_controller_(
new internal::VirtualKeyboardWindowController) {
#if defined(OS_CHROMEOS)
// DisplayManager outlives DisplayController.
Shell::GetInstance()->display_manager()->set_delegate(NULL);
+ cursor_window_controller_.reset();
mirror_window_controller_.reset();
virtual_keyboard_window_controller_.reset();
display.id(),
root->host()->GetBounds())) {
mirror_window_controller_->UpdateWindow();
+ cursor_window_controller_->UpdateContainer();
}
}
switch (GetDisplayManager()->second_display_mode()) {
case internal::DisplayManager::MIRRORING:
mirror_window_controller_->UpdateWindow(info);
+ cursor_window_controller_->UpdateContainer();
virtual_keyboard_window_controller_->Close();
break;
case internal::DisplayManager::VIRTUAL_KEYBOARD:
mirror_window_controller_->Close();
+ cursor_window_controller_->UpdateContainer();
virtual_keyboard_window_controller_->UpdateWindow(info);
break;
case internal::DisplayManager::EXTENDED:
void DisplayController::CloseNonDesktopDisplay() {
mirror_window_controller_->Close();
+ cursor_window_controller_->UpdateContainer();
virtual_keyboard_window_controller_->Close();
}
GetDisplayManager()->GetDisplayInfo(display.id());
const gfx::Rect& bounds_in_native = display_info.bounds_in_native();
aura::RootWindow::CreateParams params(bounds_in_native);
- params.host = Shell::GetInstance()->root_window_host_factory()->
+ params.host = Shell::GetInstance()->window_tree_host_factory()->
CreateWindowTreeHost(bounds_in_native);
aura::RootWindow* root_window = new aura::RootWindow(params);
root_window->window()->SetName(
root_window->AddRootWindowObserver(this);
internal::InitRootWindowSettings(root_window->window())->display_id =
display.id();
- root_window->Init();
+ root_window->host()->InitHost();
root_windows_[display.id()] = root_window->window();
SetDisplayPropertiesOnHostWindow(root_window, display);