Browse Source

Move copy rect handling to EncodeManager

No need to spread things out. Keep all of the handling in a single
place to make things clearer.
tags/v1.9.90
Pierre Ossman 6 years ago
parent
commit
a114c343bc

+ 5
- 1
common/rfb/EncodeManager.cxx View File

@@ -325,6 +325,9 @@ void EncodeManager::doUpdate(bool allowLossy, const Region& changed_,

changed = changed_;

if (!conn->client.useCopyRect)
changed.assign_union(copied);

/*
* We need to render the cursor seperately as it has its own
* magical pixel buffer, so split it out from the changed region.
@@ -344,7 +347,8 @@ void EncodeManager::doUpdate(bool allowLossy, const Region& changed_,

conn->writer()->writeFramebufferUpdateStart(nRects);

writeCopyRects(copied, copyDelta);
if (conn->client.useCopyRect)
writeCopyRects(copied, copyDelta);

/*
* We start by searching for solid rects, which are then removed

+ 1
- 16
common/rfb/UpdateTracker.cxx View File

@@ -60,32 +60,17 @@ void ClippingUpdateTracker::add_copied(const Region &dest, const Point &delta) {

// SimpleUpdateTracker

SimpleUpdateTracker::SimpleUpdateTracker(bool use_copyrect) {
copy_enabled = use_copyrect;
SimpleUpdateTracker::SimpleUpdateTracker() {
}

SimpleUpdateTracker::~SimpleUpdateTracker() {
}

void SimpleUpdateTracker::enable_copyrect(bool enable) {
if (!enable && copy_enabled) {
add_changed(copied);
copied.clear();
}
copy_enabled=enable;
}

void SimpleUpdateTracker::add_changed(const Region &region) {
changed.assign_union(region);
}

void SimpleUpdateTracker::add_copied(const Region &dest, const Point &delta) {
// Do we support copyrect?
if (!copy_enabled) {
add_changed(dest);
return;
}

// Is there anything to do?
if (dest.is_empty()) return;


+ 1
- 4
common/rfb/UpdateTracker.h View File

@@ -68,11 +68,9 @@ namespace rfb {

class SimpleUpdateTracker : public UpdateTracker {
public:
SimpleUpdateTracker(bool use_copyrect=true);
SimpleUpdateTracker();
virtual ~SimpleUpdateTracker();

virtual void enable_copyrect(bool enable);

virtual void add_changed(const Region &region);
virtual void add_copied(const Region &dest, const Point &delta);
virtual void subtract(const Region& region);
@@ -94,7 +92,6 @@ namespace rfb {
Region changed;
Region copied;
Point copy_delta;
bool copy_enabled;
};

}

+ 1
- 3
common/rfb/VNCSConnectionST.cxx View File

@@ -49,7 +49,7 @@ VNCSConnectionST::VNCSConnectionST(VNCServerST* server_, network::Socket *s,
inProcessMessages(false),
pendingSyncFence(false), syncFence(false), fenceFlags(0),
fenceDataLen(0), fenceData(NULL), congestionTimer(this),
losslessTimer(this), server(server_), updates(false),
losslessTimer(this), server(server_),
updateRenderedCursor(false), removeRenderedCursor(false),
continuousUpdates(false), encodeManager(this), pointerEventTime(0),
clientHasCursor(false),
@@ -972,8 +972,6 @@ void VNCSConnectionST::writeDataUpdate()
bool needNewUpdateInfo;
const RenderedCursor *cursor;

updates.enable_copyrect(client.useCopyRect);

// See what the client has requested (if anything)
if (continuousUpdates)
req = cuRegion.union_(requested);

Loading…
Cancel
Save