// NOTE: Caller must setup and release thread-state - as we return a PyObject, // the caller must at least Py_DECREF it, so must hold the lock. PyObject *CPythonHandler::DoCallback( HANDLER_TYPE typ, PyObject *args ) { PyObject **ppcb; const char *cb_name; switch(typ) { case HANDLER_INIT: ppcb = &m_callback_init; cb_name = m_nameinit; break; case HANDLER_TERM: ppcb = &m_callback_term; cb_name = m_nameterm; break; default: ppcb = &m_callback_do; cb_name = m_namedo; break; } if (!CheckCallback(cb_name, ppcb)) return NULL; return PyObject_Call(*ppcb, args, NULL); }
void CInputManager::Update() { BEATS_PERFORMDETECT_START(NBDT::ePT_CaptureKeyboard); CKeyboard::GetInstance()->Capture(); BEATS_PERFORMDETECT_STOP(NBDT::ePT_CaptureKeyboard); BEATS_PERFORMDETECT_START(NBDT::ePT_CaptureMouse); CMouse::GetInstance()->Capture(); BEATS_PERFORMDETECT_STOP(NBDT::ePT_CaptureMouse); BEATS_PERFORMDETECT_START(NBDT::ePT_InputCallback); CheckCallback(); BEATS_PERFORMDETECT_STOP(NBDT::ePT_InputCallback); }