diff options
Diffstat (limited to 'common/rfb/DecodeManager.cxx')
-rw-r--r-- | common/rfb/DecodeManager.cxx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/common/rfb/DecodeManager.cxx b/common/rfb/DecodeManager.cxx index 3c1ddb41..ba2b2d2f 100644 --- a/common/rfb/DecodeManager.cxx +++ b/common/rfb/DecodeManager.cxx @@ -268,6 +268,23 @@ DecodeManager::QueueEntry* DecodeManager::DecodeThread::findEntry() } } + // For a partially ordered decoder we must ask the decoder for each + // pair of rectangles. + if (entry->decoder->flags & DecoderPartiallyOrdered) { + for (iter2 = manager->workQueue.begin(); iter2 != iter; ++iter2) { + if (entry->encoding != (*iter2)->encoding) + continue; + if (entry->decoder->doRectsConflict(entry->rect, + entry->bufferStream->data(), + entry->bufferStream->length(), + (*iter2)->rect, + (*iter2)->bufferStream->data(), + (*iter2)->bufferStream->length(), + *entry->cp)) + goto next; + } + } + // Check overlap with earlier rectangles if (!lockedRegion.intersect(entry->affectedRegion).is_empty()) goto next; |