47 lines
1.2 KiB
C++
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();
|
||
|
}
|