// Called whenever the connection state of any PV changes: emits valuesChanged(), sizeChanged(), and stateChanged() as required. void REIXSXESMCPDataSourcePre2013::onConnectionStateChanged() { bool wasConnected = isConnected_; isConnected_ = imagePV_->isConnected() && resolutionXPV_->hasValues() && resolutionYPV_->hasValues(); // becoming disconnected... if(wasConnected && !isConnected_) { pixelsX_ = axes_[0].size = 0; pixelsY_ = axes_[1].size = 0; emitValuesChanged(); emitSizeChanged(); emitStateChanged(AMDataSource::InvalidFlag); AMErrorMon::report(AMErrorReport(this, AMErrorReport::Alert, -2, "Lost connection to MCP Detector " + imagePV_->pvName())); } // becoming connected... if(!wasConnected && isConnected_) { pixelsX_ = axes_[0].size = int(pow(2.0, double(resolutionXPV_->getInt()))); pixelsY_ = axes_[1].size = int(pow(2.0, double(resolutionYPV_->getInt()))); emitValuesChanged(); emitSizeChanged(); emitStateChanged(AMDataSource::ProcessingFlag); } }
void RtpBuffer::commitPacket() { quint16 fill = (m_data[m_last].sequenceNumber-m_data[m_first].sequenceNumber); if ((m_state == Filling) && (fill >= m_desiredFill)) { qDebug()<<Q_FUNC_INFO<<": start playing at: " << m_data[m_first].sequenceNumber << ", last: " << m_last << ": " << m_data[m_last].sequenceNumber; setState(Ready); m_mutex.unlock(); emitStateChanged(Ready); emit ready(); return; } else { m_mutex.unlock(); } }
const RtpPacket* RtpBuffer::takePacket() { RtpPacket* packet = NULL; m_mutex.lock(); if (m_state == Ready || m_state == Flushing) { // take from top, until free packet or flush packet = &(m_data[m_first]); // we might catch a packet which is marked as flush but is not received yet if (packet->flush) { qDebug()<<Q_FUNC_INFO<<": flush packet: " << packet->sequenceNumber; setState(Filling); packet->flush = false; } else { switch (packet->status) { case RtpPacket::PacketFree: qWarning()<<Q_FUNC_INFO<<": free packet: " << packet->sequenceNumber; setState(Empty); packet = NULL; break; case RtpPacket::PacketMissing: qWarning()<<Q_FUNC_INFO<< "missing packet: "<<packet->sequenceNumber<<", payload size: "<<packet->payloadSize; memcpy(packet->payload, m_silence, packet->payloadSize); case RtpPacket::PacketOk: if (m_first == m_last) { qDebug()<<Q_FUNC_INFO<<": buffer empty"; setState(Empty); } else { m_first = (m_first+1) % m_capacity; } packet->init(); break; default: qFatal(__func__); packet = NULL; } } } State currentState = m_state; m_mutex.unlock(); emitStateChanged(currentState); return packet; }
void FilterMessageType::setAllowedTypeAction(QAction* action) { mAllowedType = action->data().value<MessageType>(); emitStateChanged(); }
void FilterFriendOnline::onlineActionToggled(bool state) { enabled = state; emitStateChanged(); }