From 9de5343501ea2e20b367222bf01ee52d850340ab Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Mon, 10 Feb 2014 18:53:56 +0000 Subject: [PATCH] cefclient: Move router initialization to the UI thread to be compatible with multi-threaded-message-loop. git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1609 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- tests/cefclient/client_handler.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/tests/cefclient/client_handler.cpp b/tests/cefclient/client_handler.cpp index 15a56aa53..11c1bf591 100644 --- a/tests/cefclient/client_handler.cpp +++ b/tests/cefclient/client_handler.cpp @@ -98,16 +98,6 @@ ClientHandler::ClientHandler() m_StopHwnd(NULL), m_ReloadHwnd(NULL), m_bFocusOnEditableField(false) { - // Create the browser-side router for query handling. - CefMessageRouterConfig config; - message_router_ = CefMessageRouterBrowserSide::Create(config); - - // Register handlers with the router. - CreateMessageHandlers(message_handler_set_); - MessageHandlerSet::const_iterator it = message_handler_set_.begin(); - for (; it != message_handler_set_.end(); ++it) - message_router_->AddHandler(*(it), false); - // Read command line settings. CefRefPtr command_line = CefCommandLine::GetGlobalCommandLine(); @@ -308,6 +298,18 @@ bool ClientHandler::OnBeforePopup(CefRefPtr browser, void ClientHandler::OnAfterCreated(CefRefPtr browser) { REQUIRE_UI_THREAD(); + if (!message_router_) { + // Create the browser-side router for query handling. + CefMessageRouterConfig config; + message_router_ = CefMessageRouterBrowserSide::Create(config); + + // Register handlers with the router. + CreateMessageHandlers(message_handler_set_); + MessageHandlerSet::const_iterator it = message_handler_set_.begin(); + for (; it != message_handler_set_.end(); ++it) + message_router_->AddHandler(*(it), false); + } + // Disable mouse cursor change if requested via the command-line flag. if (m_bMouseCursorChangeDisabled) browser->GetHost()->SetMouseCursorChangeDisabled(true);