diff options
author | zwer <zwer@1f4bef6d-8e0a-0410-8695-e467da8aaccf> | 2006-05-18 22:31:29 +0000 |
---|---|---|
committer | zwer <zwer@1f4bef6d-8e0a-0410-8695-e467da8aaccf> | 2006-05-18 22:31:29 +0000 |
commit | 4997e77df1855b2403318bdc0bebdf9d01f484c0 (patch) | |
tree | 912f21aeb1dd2d4de14fc1ce25714b797f1e8a59 | |
parent | a4a6b7d5c3062c0c3df59c0f35dd79fcd6c3bc7c (diff) | |
download | vdr-plugin-ffnetdev-4997e77df1855b2403318bdc0bebdf9d01f484c0.tar.gz vdr-plugin-ffnetdev-4997e77df1855b2403318bdc0bebdf9d01f484c0.tar.bz2 |
- fixed two bugs
git-svn-id: svn://svn.berlios.de/ffnetdev/trunk@22 1f4bef6d-8e0a-0410-8695-e467da8aaccf
-rw-r--r-- | osdworker.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/osdworker.c b/osdworker.c index 5e93646..7a0788a 100644 --- a/osdworker.c +++ b/osdworker.c @@ -56,6 +56,8 @@ cOSDWorker::cOSDWorker(void) ClientFormat.trueColour = 0; m_bOSDisClear = true; m_bColorsChanged = false; + + CreateSendBuffer(720 * 576); } cOSDWorker::~cOSDWorker() { @@ -209,14 +211,24 @@ bool cOSDWorker::SendScreen(int x1, int y1, int x2, int y2) if ((m_Instance->state==HANDSHAKE_OK) && (m_Instance->m_pEncoder != NULL) && (x1 || x2 || y1 || y2 || (m_Instance->m_pOsdBitmap->Dirty(x1, y1, x2, y2)))) { + dsyslog("[ffnetdev] VNC: Rect x/y/w/h %d/%d/%d/%d\n", x1, y1, x2-x1, y2-y1); + + if ((x2-x1) * (y2-y1) == 0) + { + dsyslog("[ffnetdev] VNC: zero size rect - ignoring\n"); + + return false; + } + rfbFramebufferUpdateMsg fu; struct timeval curtime; gettimeofday(&curtime, 0); curtime.tv_sec = curtime.tv_sec - (((int)curtime.tv_sec / 1000000) * 1000000); - if ((curtime.tv_sec * 1000 + (curtime.tv_usec / 1000) < m_Instance->m_lasttime.tv_sec * 1000 + (m_Instance->m_lasttime.tv_usec / 1000) + 100) || - (m_Instance->m_pEncoder == NULL)) + if (curtime.tv_sec * 1000 + (curtime.tv_usec / 1000) < m_Instance->m_lasttime.tv_sec * 1000 + (m_Instance->m_lasttime.tv_usec / 1000) + 100) { m_Instance->m_lasttime = curtime; + dsyslog("[ffnetdev] VNC: updatetime to short - ignoring\n"); + return false; } else @@ -236,9 +248,9 @@ bool cOSDWorker::SendScreen(int x1, int y1, int x2, int y2) fu.type=rfbFramebufferUpdate; fu.nRects=Swap16IfLE(1); OSDWrite((unsigned char*)&fu, sz_rfbFramebufferUpdateMsg); - int BufferSize = m_Instance->m_pEncoder->RequiredBuffSize(x2-x1, y2-y1); - m_Instance->CreateSendBuffer(BufferSize); - BufferSize = m_Instance->m_pEncoder->EncodeRect((BYTE*)(m_Instance->m_pOsdBitmap->Data(0, 0)), m_Instance->m_pSendBuffer, rect); + //int BufferSize = m_Instance->m_pEncoder->RequiredBuffSize(x2-x1, y2-y1); + //m_Instance->CreateSendBuffer(BufferSize); + int BufferSize = m_Instance->m_pEncoder->EncodeRect((BYTE*)(m_Instance->m_pOsdBitmap->Data(0, 0)), m_Instance->m_pSendBuffer, rect); #ifdef DEBUG fprintf(stderr, "[ffnetdev] VNC: Send OSD Data %d Bytes\n", BufferSize); #endif |