Krita Source Code Documentation
Loading...
Searching...
No Matches
KisCanvasUpdatesCompressor Class Reference

#include <kis_canvas_updates_compressor.h>

Public Member Functions

bool putUpdateInfo (KisUpdateInfoSP info)
 
void takeUpdateInfo (KisUpdateInfoList &list)
 

Private Attributes

QMutex m_mutex
 
KisUpdateInfoList m_updatesList
 

Detailed Description

Definition at line 18 of file kis_canvas_updates_compressor.h.

Member Function Documentation

◆ putUpdateInfo()

bool KisCanvasUpdatesCompressor::putUpdateInfo ( KisUpdateInfoSP info)

We should always remove the overridden update and put 'info' to the end of the queue. Otherwise, the updates will become reordered and the canvas may have tiles artifacts with "outdated" data

Definition at line 9 of file kis_canvas_updates_compressor.cpp.

10{
11 const int levelOfDetail = info->levelOfDetail();
12 const QRect newUpdateRect = info->dirtyImageRect();
13 if (newUpdateRect.isEmpty()) return false;
14
15 QMutexLocker l(&m_mutex);
16
17 if (info->canBeCompressed()) {
18 KisUpdateInfoList::iterator it = m_updatesList.begin();
19 while (it != m_updatesList.end()) {
20 if ((*it)->canBeCompressed() &&
21 levelOfDetail == (*it)->levelOfDetail() &&
22 newUpdateRect.contains((*it)->dirtyImageRect())) {
23
29 it = m_updatesList.erase(it);
30 } else {
31 ++it;
32 }
33 }
34 }
35
36 m_updatesList.append(info);
37
38 return m_updatesList.size() <= 1;
39}

References m_mutex, and m_updatesList.

◆ takeUpdateInfo()

void KisCanvasUpdatesCompressor::takeUpdateInfo ( KisUpdateInfoList & list)

Definition at line 41 of file kis_canvas_updates_compressor.cpp.

42{
43 KIS_SAFE_ASSERT_RECOVER(list.isEmpty()) { list.clear(); }
44
45 QMutexLocker l(&m_mutex);
46 m_updatesList.swap(list);
47}
#define KIS_SAFE_ASSERT_RECOVER(cond)
Definition kis_assert.h:126

References KIS_SAFE_ASSERT_RECOVER, m_mutex, and m_updatesList.

Member Data Documentation

◆ m_mutex

QMutex KisCanvasUpdatesCompressor::m_mutex
private

Definition at line 25 of file kis_canvas_updates_compressor.h.

◆ m_updatesList

KisUpdateInfoList KisCanvasUpdatesCompressor::m_updatesList
private

Definition at line 26 of file kis_canvas_updates_compressor.h.


The documentation for this class was generated from the following files: