Beispiel #1
0
void VncServer::invalidate(int viewNum, int x, int y, int w, int h, const VncServer::ViewParameters &param, bool lastView) {

    if (m_numClients - m_numRhrClients > 0) {
        std::cerr << "Non-RHR clients: " << m_numClients - m_numRhrClients << std::endl;
        rfbMarkRectAsModified(m_screen, x, y, w, h);
    }

    if (m_numRhrClients > 0) {
        encodeAndSend(viewNum, x, y, w, h, param, lastView);
    }
}
/**
 * @brief Begins a P2PPE Transmission with a prefix
 * @param[in] data The prefix data to send
 * @param[in] dataCount The number of prefix data bytes
 * @param[in] data The data to send
 * @param[in] dataCount The number of data bytes
 * @param[in] sendHandler The actual send function
 */
void P2PPE_TransmissionPrefixed(register const uint8_t*const prefix, register uint8_t prefixCount, register const uint8_t*const data, register uint8_t dataCount, register void (*sendHandler)(uint8_t dataByte))
{
	/* send the preamble */
	for (int i=0; i<DEFAULT_PREAMBLE_LENGTH; ++i)
	{
		sendHandler(default_preamble[i]);
	}
	
	/* send the header */
	sendHandler(SOH);
	sendHandler(dataCount + prefixCount);
	
	/* send the data frame */
#if 0
	sendHandler(STX);
#endif
	
	/* send prefix */
	for (int i=0; i<prefixCount; ++i)
	{
		register uint8_t byte = prefix[i];
		encodeAndSend(byte, sendHandler);
	}
	
	/* send data */
	for (int i=0; i<dataCount; ++i)
	{
		register uint8_t byte = data[i];	
		encodeAndSend(byte, sendHandler);
	}
	
	/* send data frame end */
#if 0
	sendHandler(ETX);
#endif
	sendHandler(EOT);
}