How does RealVNC know when to make a screen capture

Corné Beerse cbeerse "at" lycos.nl
Wed Jan 7 10:27:01 2004


Castelier Serge (RBFM/ASQ1) * wrote:

> Thank you for your response Corne.
> 
> If you make screen captures of the entire screen at small intervalls ( say
> 50ms), you'll use a lot of processor time on a Win32 PC.

I don't know. The major cpu usage is in the compression.

> 
> VNC apparently doesn't need a lot of processor time. That's why I gather VNC
> only makes screen captures of the screen areas which have changed.
> Unfortunately it's not clear to me how it's done. Is the screen divided in a
> certain number of regions ( say 10),that screens captures of each region are
> made, and if something new happens in some of the regionx, the server only
> makes screen captures of the regions where something has changed?

I'm sorry but I'm not that deep into the vnc source, definitly not on M$Winodws. 
  I only use it and twiggle a little with the polling settings.

Since I did that because I was on a low bandwith connection, I saw the slow update.

Some (10) years ago, I was a developper and I do know how to read source code 
but currently I don't take the time to do so, definitly not for something I 
don't need to twiggle with.

> 
> If so, how does VNC know that something has changed on the screen ? If you
> only wait until a keyboard or mouve events occurs you can miss changes on
> your screen.

On M$, vnc does not know if something has changed, the comparision takes way to 
much resources (memory and processor power) It expects things to be changed (or 
not). I don't know what meganism triggers that, I do know it has some flaws, 
specially if tools are not written using the standard M$Windows libraries.

> 
> Could you help me ?

no.

btw: in the archives (discussed a couple of months ago) there was a little tool 
called rfbcounter or rfbclock or such. It just generates pictures and you can 
view that with a vncviewer. It was all verry basic code but nice and small to 
start learning the vnc concept. See if you can find that.


CBee

> 
> 
> Thank you in advance
> 
> Serge
> 
> -----Message d'origine----- De : Corni Beerse [mailto:cbeerse "at" lycos.nl] 
> Envoyi : mardi 6 janvier 2004 17:30 @ : Castelier Serge (RBFM/ASQ1) *;
> vnc-list "at" realvnc.com Objet : Re: How does RealVNC know when to make a screen
> capture
> 
> 
> Castelier Serge (RBFM/ASQ1) * wrote:
> 
>> Hello
>> 
>> I downloaded the source code of VNC and had a look at it.
>> 
>> Apparently VNC makes screen captures for a Win32 PC by using API's such as 
>> GetDIBits(). But it's not clear to me how the server part of the
>> application knows that something has changed on the screen of the PC.
>> Furthermore ,I don't
> 
> 
> It does not know that. That's why you can configure several polling options
> in the vncserver. It just peeks at some regular interval or when it expects 
> differences (like mouse or keyboard actions).
> 
> 
>> know if VNC makes a screen capture of the entire screen or just of the part
>>  that has been changed.
> 
> 
> That's also one of the polling options.
> 
> 
>> I saw in the source code that regions are beeing used with API's such as 
>> GetRegionData() and I gather VNC is using regions to determine which part
>> of the screen has to be refreshed, but I'm not  familiar with regions and I
>>  didn't manage to understand how it works.
> 
> 
> In the end, I expect/experienced it does just some matrix over the polled
> area and sends the updated rectangles. I don't know for sure.
> 
> 
>> Can anyone help me ?
>> 
>> Thank you in advance
>> 
>> Serge Castelier _______________________________________________ VNC-List
>> mailing list VNC-List "at" realvnc.com To remove yourself from the list visit: 
>> http://www.realvnc.com/mailman/listinfo/vnc-list