Files
cef/cef3/libcef/browser/browser_message_loop.cc
Marshall Greenblatt 599f83d4d7 Create 1180 release branch for CEF3.
git-svn-id: https://chromiumembedded.googlecode.com/svn/branches/1180@718 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
2012-06-28 18:57:49 +00:00

47 lines
1.2 KiB
C++

// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
// reserved. Use of this source code is governed by a BSD-style license that can
// be found in the LICENSE file.
#include "libcef/browser/browser_message_loop.h"
CefBrowserMessageLoop::CefBrowserMessageLoop()
: is_iterating_(true) {
}
CefBrowserMessageLoop::~CefBrowserMessageLoop() {
#if defined(OS_MACOSX)
// On Mac the MessageLoop::AutoRunState scope in Run() never exits so clear
// the state_ variable to avoid an assertion in the MessageLoop destructor.
state_ = NULL;
#endif
}
// static
CefBrowserMessageLoop* CefBrowserMessageLoop::current() {
MessageLoop* loop = MessageLoop::current();
DCHECK_EQ(MessageLoop::TYPE_UI, loop->type());
return static_cast<CefBrowserMessageLoop*>(loop);
}
bool CefBrowserMessageLoop::DoIdleWork() {
bool valueToRet = inherited::DoIdleWork();
if (is_iterating_)
pump_->Quit();
return valueToRet;
}
// Do a single interation of the UI message loop.
void CefBrowserMessageLoop::DoMessageLoopIteration() {
#if defined(OS_MACOSX)
Run();
#else
RunWithDispatcher(NULL);
#endif
}
// Run the UI message loop.
void CefBrowserMessageLoop::RunMessageLoop() {
is_iterating_ = false;
DoMessageLoopIteration();
}