LRESULT CALLBACK FB::WinMessageWindow::_WinProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { if (uMsg == WM_ASYNCTHREADINVOKE) { FBLOG_TRACE("PluginWindow", "Running async function call"); FB::AsyncFunctionCall *evt = static_cast<FB::AsyncFunctionCall*>((void*)lParam); evt->func(evt->userData); delete evt; return S_OK; } return DefWindowProc(hWnd, uMsg, wParam, lParam); }
bool FB::WinMessageWindow::DefaultWinProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lResult ) { if (uMsg == WM_ASYNCTHREADINVOKE) { FBLOG_TRACE("PluginWindow", "Running async function call"); FB::AsyncFunctionCall *evt = static_cast<FB::AsyncFunctionCall*>((void*)lParam); evt->func(evt->userData); delete evt; lResult = S_OK; return true; } return false; }
void FB::BrowserHost::AsyncHtmlLog(void *logReq) { FB::AsyncLogRequest *req = (FB::AsyncLogRequest*)logReq; try { FB::DOM::WindowPtr window = req->m_host->getDOMWindow(); if (window->getJSObject()->HasProperty("console")) { FB::JSObjectPtr obj = window->getProperty<FB::JSObjectPtr>("console"); printf("Logging: %s\n", req->m_msg.c_str()); obj->Invoke("log", FB::variant_list_of(req->m_msg)); } } catch (const std::exception &) { // printf("Exception: %s\n", e.what()); // Fail silently; logging should not require success. FBLOG_TRACE("BrowserHost", "Logging to browser console failed"); return; } delete req; }