Browse Source

Client side support for continuous updates.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4805 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v1.1.90
Pierre Ossman 12 years ago
parent
commit
aa73c89d77
2 changed files with 20 additions and 7 deletions
  1. 19
    7
      vncviewer/CConn.cxx
  2. 1
    0
      vncviewer/CConn.h

+ 19
- 7
vncviewer/CConn.cxx View File

@@ -72,7 +72,7 @@ CConn::CConn(const char* vncServerName)
pendingPFChange(false),
currentEncoding(encodingTight), lastServerEncoding((unsigned int)-1),
formatChange(false), encodingChange(false),
firstUpdate(true), pendingUpdate(false),
firstUpdate(true), pendingUpdate(false), continuousUpdates(false),
forceNonincremental(true), supportsSyncFence(false)
{
setShared(::shared);
@@ -306,8 +306,8 @@ void CConn::framebufferUpdateEnd()
if (firstUpdate) {
int width, height;

// We need fences to make extra update requests "safe".
// See fence() for the next step.
// We need fences to make extra update requests and continuous
// updates "safe". See fence() for the next step.
if (cp.supportsFence)
writer()->writeFence(fenceFlagRequest | fenceFlagSyncNext, 0, NULL);

@@ -448,8 +448,15 @@ void CConn::fence(rdr::U32 flags, unsigned len, const char data[])

if (len == 0) {
// Initial probe
if (flags & fenceFlagSyncNext)
if (flags & fenceFlagSyncNext) {
supportsSyncFence = true;

if (cp.supportsContinuousUpdates) {
vlog.info(_("Enabling continuous updates"));
continuousUpdates = true;
writer()->writeEnableContinuousUpdates(true, 0, 0, cp.width, cp.height);
}
}
} else {
// Pixel format change
rdr::MemInStream memStream(data, len);
@@ -477,6 +484,9 @@ void CConn::resizeFramebuffer()
if (!desktop)
return;

if (continuousUpdates)
writer()->writeEnableContinuousUpdates(true, 0, 0, cp.width, cp.height);

desktop->resizeFramebuffer(cp.width, cp.height);
}

@@ -609,9 +619,11 @@ void CConn::requestNewUpdate()

checkEncodings();

pendingUpdate = true;
writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height),
!forceNonincremental);
if (forceNonincremental || !continuousUpdates) {
pendingUpdate = true;
writer()->writeFramebufferUpdateRequest(Rect(0, 0, cp.width, cp.height),
!forceNonincremental);
}
forceNonincremental = false;
}

+ 1
- 0
vncviewer/CConn.h View File

@@ -107,6 +107,7 @@ private:

bool firstUpdate;
bool pendingUpdate;
bool continuousUpdates;

bool forceNonincremental;


Loading…
Cancel
Save