Index: aura/desktop.cc |
diff --git a/aura/desktop.cc b/aura/desktop.cc |
index b0ffbad17452686af4bd277892b8b750238e9e6b..8473287add758d55798a3efb9cbf3660ba85d60b 100644 |
--- a/aura/desktop.cc |
+++ b/aura/desktop.cc |
@@ -17,8 +17,10 @@ namespace aura { |
Desktop* Desktop::instance_ = NULL; |
Desktop::Desktop() |
- : host_(aura::DesktopHost::Create(gfx::Rect(200, 200, 1024, 768))) { |
- compositor_ = ui::Compositor::Create(host_->GetAcceleratedWidget(), |
+ : host_(aura::DesktopHost::Create(gfx::Rect(200, 200, 1024, 768))), |
+ ALLOW_THIS_IN_INITIALIZER_LIST(schedule_paint_(this)), |
+ main_loop_(new MessageLoop(MessageLoop::TYPE_UI)) { |
+ compositor_ = ui::Compositor::Create(this, host_->GetAcceleratedWidget(), |
host_->GetSize()); |
host_->SetDesktop(this); |
DCHECK(compositor_.get()); |
@@ -38,7 +40,6 @@ void Desktop::SetSize(const gfx::Size& size) { |
void Desktop::Run() { |
Show(); |
- MessageLoop main_message_loop(MessageLoop::TYPE_UI); |
sky
2011/09/06 20:10:07
I actually just had problems with this too and was
sadrul
2011/09/06 21:50:11
I have made the change so callers create and own t
|
MessageLoopForUI::current()->Run(host_); |
} |
@@ -56,6 +57,13 @@ bool Desktop::OnKeyEvent(const KeyEvent& event) { |
return window_->HandleKeyEvent(event); |
} |
+void Desktop::ScheduleCompositorPaint() { |
+ if (schedule_paint_.empty()) { |
+ MessageLoop::current()->PostTask(FROM_HERE, |
+ schedule_paint_.NewRunnableMethod(&Desktop::Draw)); |
+ } |
+} |
+ |
// static |
Desktop* Desktop::GetInstance() { |
if (!instance_) { |