void PollServerThread::run()
{
    extern volatile bool gPhoneScreenSyncOn;
    while ( !m_exit && gPhoneScreenSyncOn ) {
        if ( !connecting() ) {
            int n = WaitForMessage(m_rfbClient, 500);
            if ( n < 0 ) {
                m_exit = true;
                break;
            } else if ( n > 0 ) {
                emit messageArrived();
                m_lastMessageReceivedTimer.start();
            } else if ( checkConnection() ) {
                if ( ((ConnectionWindow *)parent())->connected() && m_lastMessageReceivedTimer.elapsed() > QVNCVIEWER_CONNPEND_TIMEOUT ) {
                    setCheckConnection(false);
                    m_rfbClient->updateRect.x = m_rfbClient->updateRect.y = 0;
                    m_rfbClient->updateRect.w = m_rfbClient->width;
                    m_rfbClient->updateRect.h = m_rfbClient->height;
                    SendIncrementalFramebufferUpdateRequest(m_rfbClient);
                }
            }
            QTest::qWait(0);
        } else  if ( connecting() ) {
            setCheckConnection(true);
            qApp->processEvents(QEventLoop::AllEvents, 10);
        }
    }

    emit connectionClosed();
}
void ConnectionWindow::setConnected(bool conn)
{
     m_connected = conn;
     if ( connected() ) {
         m_pollServerThread = new PollServerThread(m_rfbClient, this);
         connect(pollServerThread(), SIGNAL(messageArrived()), this, SLOT(messageArrived()), Qt::BlockingQueuedConnection);
         connect(pollServerThread(), SIGNAL(connectionClosed()), this, SLOT(connectionClosed()));
         switch ( surfaceType() ) {
         case QVNCVIEWER_SURFACE_RASTER:
         default:
             surfaceWidget()->setSurfaceSize(QSize(m_rfbClient->width, m_rfbClient->height));
             surfaceWidget()->setDefaultMessage(tr("Connected"));
             surfaceWidget()->update();
             surfaceWidget()->setFocus();
             break;
         }
         pollServerThread()->start();
         m_rfbClient->updateRect.x = m_rfbClient->updateRect.y = 0;
         m_rfbClient->updateRect.w = m_rfbClient->width;
         m_rfbClient->updateRect.h = m_rfbClient->height;
         SendIncrementalFramebufferUpdateRequest(m_rfbClient);
     } else {
         if ( pollServerThread() ) {
             pollServerThread()->disconnect();
             pollServerThread()->setExit(true);
             pollServerThread()->wait();
             delete pollServerThread();
             m_pollServerThread = 0;
         }
         switch ( surfaceType() ) {
         case QVNCVIEWER_SURFACE_RASTER:
         default:
             surfaceWidget()->clearSurface();
             surfaceWidget()->setDefaultMessage(tr("Disconnected"));
             surfaceWidget()->update();
             break;
         }
     }
}
Beispiel #3
0
/**
 * \brief put a message into the internal receive queue
 * \param message the message to be queued
 * \return true if message has been accepted else false
 *
 * called by messageHub to send a message
 *
 */
bool eveMessageChannel::queueMessage(eveMessage * message)
{

	QWriteLocker locker(&recLock);
	if (!acceptInput) return false;
	if (message->getPriority() == EVEMESSAGEPRIO_HIGH)
		receiveFastMessageList.append(message);
	else
		receiveMessageList.append(message);

	emit messageArrived();
	return true;
}
void DecoderBase::mapEnd()
{
    ATLAS_DEBUG(std::cout << "DecoderBase::mapEnd" << std::endl)
    assert(!m_maps.empty());
    assert(!m_state.empty());
    m_state.pop();
    switch (m_state.top()) {
        case STATE_MAP:
            {
                MapType map = std::move(m_maps.top());
                m_maps.pop();
                assert(!m_maps.empty());
                assert(!m_names.empty());
                m_maps.top().emplace(std::move(m_names.top()), std::move(map));
                m_names.pop();
            }
            break;
        case STATE_LIST:
            {
                assert(!m_lists.empty());
                m_lists.top().push_back(std::move(m_maps.top()));
                m_maps.pop();
            }
            break;
        case STATE_STREAM:
            {
                messageArrived(std::move(m_maps.top()));
                m_maps.pop();
            }
            break;
        default:
            {
                // MapType map = m_maps.top();
                m_maps.pop();
            }
            break;
    }
}
Beispiel #5
0
//eveMessageChannel::eveMessageChannel(QObject *parent): QObject(parent)
eveMessageChannel::eveMessageChannel(QObject *parent)
{
	acceptInput = true;
	unregistered = false;
	connect(this, SIGNAL(messageArrived()), this, SLOT(newQueuedMessage()) ,Qt::QueuedConnection);
}