void WebSocketWorker::doRead() { if (!m_isRunning) return; if (!m_webSocketServer.IsRunning() || !m_socket->isOpen()) { CloseConnection(); return; } if (m_webSocketMode) { ProcessFrames(m_socket); } else { if (!ProcessHandshake(m_socket)) SendClose(kCloseProtocolError); } if (!m_webSocketMode) { LOG(VB_HTTP, LOG_WARNING, "WebSocketServer: Timed out waiting for connection upgrade"); CloseConnection(); } }
void wxStackWalker::Walk(size_t skip, size_t maxDepth) { // read all frames required SaveStack(maxDepth); // process them ProcessFrames(skip); // cleanup FreeStack(); }
void FrameStart() { ProcessFrames(); SFrame frame; frame.num = m_Profiler.GetFrameNumber(); frame.timeStart = m_Profiler.GetTime(); m_Frames.push_back(frame); RegionEnter("frame"); }
void ShowStackInDialog() { ProcessFrames(0); for ( wxVector<Frame>::const_iterator it = m_frames.begin(); it != m_frames.end(); ++it ) { gtk_assert_dialog_append_stack_frame(m_dlg, it->name.utf8_str(), it->file.utf8_str(), it->line); } m_frames.clear(); }
void FrameStart() { ProcessFrames(); SFrame frame; frame.num = m_Profiler.GetFrameNumber(); // On (at least) some NVIDIA Windows drivers, when GPU-bound, or when // vsync enabled and not CPU-bound, the first glGet* call at the start // of a frame appears to trigger a wait (to stop the GPU getting too // far behind, or to wait for the vsync period). // That will be this GL_TIMESTAMP get, which potentially distorts the // reported results. So we'll only do it fairly rarely, and for most // frames we'll just assume the clocks don't drift much const double RESYNC_PERIOD = 1.0; // seconds double now = m_Profiler.GetTime(); if (m_Frames.empty() || now > m_Frames.back().syncTimeStart + RESYNC_PERIOD) { PROFILE2("profile timestamp resync"); pglGetInteger64v(GL_TIMESTAMP, &frame.syncTimestampStart); ogl_WarnIfError(); frame.syncTimeStart = m_Profiler.GetTime(); // (Have to do GetTime again after GL_TIMESTAMP, because GL_TIMESTAMP // might wait a while before returning its now-current timestamp) } else { // Reuse the previous frame's sync data frame.syncTimeStart = m_Frames[m_Frames.size()-1].syncTimeStart; frame.syncTimestampStart = m_Frames[m_Frames.size()-1].syncTimestampStart; } m_Frames.push_back(frame); RegionEnter("frame"); }