Example #1
0
int CMessageHandler::sendMessage(int nType, int nCommand, unsigned long int nId, int nDataLen, const void* pData)
{
	int nRet;
	MESSAGE_BUF *pBuf;

	pBuf = new MESSAGE_BUF;

	pBuf->mtype = nType;
	pBuf->nCommand = nCommand;
	pBuf->nId = nId;

	memset(pBuf->cData, 0, sizeof(pBuf->cData));
	if (NULL != pData && nDataLen <= DATA_LEN && 0 < nDataLen)
	{
		memcpy(pBuf->cData, pData, nDataLen);
		pBuf->nDataLen = nDataLen;
	}

	if (-1 == msgsnd(getMsqid(), pBuf, getBufLength(), /*IPC_NOWAIT*/0))
	{
		perror("msgsnd");
		nRet = -1;
	}
	else
	{
		nRet = getBufLength();
	}

	delete pBuf;

	return nRet;
}
Example #2
0
int CMessageHandler::recvMessage(void **pbuf)
{
	ssize_t recvSize = 0;

	if (NULL == *pbuf)
		return -1;

	if (-1 == getRecvEvent())
	{
		_DBG("invalid receive event id, not set");
		return -1;
	}

	recvSize = msgrcv(getMsqid(), *pbuf, getBufLength(), getRecvEvent(), 0);

	if (0 > recvSize)
	{
		if (errno == EINTR)
		{
			_DBG("[Message] get EINTR");
			return -2;
		}
		perror("msgrcv");
		return -1;
	}

	return recvSize;
}
Example #3
0
BYTE * D3D9Grabber::getImageData(BYTE * buf, RECT &rect)
{
    D3DLOCKED_RECT blockedRect;

    m_d3Device->GetFrontBufferData(0, m_surface);
    m_surface->LockRect(&blockedRect, &rect, D3DLOCK_READONLY);
    CopyMemory(buf, blockedRect.pBits, getBufLength(rect));
    m_surface->UnlockRect();
    return buf;
}
Example #4
0
QList<QRgb> D3D9Grabber::grabWidgetsColors(QList<GrabWidget *> &widgets)
{
    QList<QRgb> result;
    m_rect = getEffectiveRect(widgets);
    if(m_rect.bottom > QApplication::desktop()->height())
        m_rect.bottom = QApplication::desktop()->height();
    if(m_rect.right > QApplication::desktop()->width())
        m_rect.right = QApplication::desktop()->width();
    int bufLengthNeeded = getBufLength(m_rect);
    if (bufLengthNeeded > m_bufLength)
    {
        if(m_buf != NULL)
            free(m_buf);
        m_buf = (BYTE *)malloc(bufLengthNeeded);
        m_bufLength = bufLengthNeeded;
    }
    getImageData(m_buf, m_rect);
    for(int i = 0; i < widgets.size(); i++)
    {
        GrabWidget * widget = widgets[i];
        result.append(getColor(widget->x(), widget->y(), widget->width(), widget->height()));
    }
    return result;
}