void vfeSession::StateChanged (pov_frontend::State NewState) { if (NewState == kReady || NewState == kStopping) if (m_BackendState > kReady) RenderStopped () ; if (NewState == kRendering) m_StartTime = GetTimestamp(); m_BackendState = NewState ; NotifyEvent(stBackendStateChanged); }
bool vfeSession::ProcessCancelRender (void) { if (m_Frontend->GetState () > kReady) { try { m_Frontend->Stop () ; } catch (pov_base::Exception& e) { if (e.codevalid() && e.code() == kNotNowErr) { Delay (100) ; return (m_Frontend->GetState() == kReady); } if (m_Frontend->GetState () > kReady) { // TODO FIXME // char str [256] ; // sprintf (str, "Failed to send stop rendering message (%s)", e.what()) ; // MessageBox (NULL, str, "POVMS error", MB_OK | MB_ICONEXCLAMATION) ; Delay (100) ; return (m_Frontend->GetState () == kReady); } } } else { if (m_Frontend->GetState () == kReady) { // we possibly have an anamolous situation // TODO FIXME // MessageBox (NULL, "Warning: had to force state to stopped", "Cancel Render", MB_OK | MB_ICONEXCLAMATION) ; RenderStopped(); } } return (true); }