aboutsummaryrefslogtreecommitdiffstats
path: root/tests/perf/encperf.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'tests/perf/encperf.cxx')
-rw-r--r--tests/perf/encperf.cxx11
1 files changed, 8 insertions, 3 deletions
diff --git a/tests/perf/encperf.cxx b/tests/perf/encperf.cxx
index 6bcb6f74..41c309c1 100644
--- a/tests/perf/encperf.cxx
+++ b/tests/perf/encperf.cxx
@@ -95,7 +95,7 @@ public:
virtual void setCursor(int, int, const rfb::Point&, const rdr::U8*);
virtual void framebufferUpdateStart();
virtual void framebufferUpdateEnd();
- virtual void dataRect(const rfb::Rect&, int);
+ virtual bool dataRect(const rfb::Rect&, int);
virtual void setColourMapEntries(int, int, rdr::U16*);
virtual void bell();
virtual void serverCutText(const char*);
@@ -159,6 +159,8 @@ void DummyOutStream::flush()
void DummyOutStream::overrun(size_t needed)
{
flush();
+ if (avail() < needed)
+ throw rdr::Exception("Insufficient dummy output buffer");
}
CConn::CConn(const char *filename)
@@ -241,12 +243,15 @@ void CConn::framebufferUpdateEnd()
encodeTime += getCpuCounter();
}
-void CConn::dataRect(const rfb::Rect &r, int encoding)
+bool CConn::dataRect(const rfb::Rect &r, int encoding)
{
- CConnection::dataRect(r, encoding);
+ if (!CConnection::dataRect(r, encoding))
+ return false;
if (encoding != rfb::encodingCopyRect) // FIXME
updates.add_changed(rfb::Region(r));
+
+ return true;
}
void CConn::setColourMapEntries(int, int, rdr::U16*)