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

#include <kis_texture_tile_info_pool.h>

+ Inheritance diagram for KisTextureTileInfoPool:

Signals

void purge (int pixelSize, int numFrees)
 

Public Member Functions

int chunkSize (int pixelSize) const
 
void free (quint8 *ptr, int pixelSize)
 
 KisTextureTileInfoPool (int tileWidth, int tileHeight)
 
quint8 * malloc (int pixelSize)
 
void tryPurge (int pixelSize, int numFrees)
 
 ~KisTextureTileInfoPool ()
 

Private Attributes

QMutex m_mutex
 
QVector< KisTextureTileInfoPoolSingleSize * > m_pools
 
const int m_tileHeight
 
const int m_tileWidth
 
KisTextureTileInfoPoolWorkerm_worker
 

Detailed Description

A universal pool for keeping the openGL tile of different pixel sizes. The underlying pools are created for each pixel size on demand.

Definition at line 119 of file kis_texture_tile_info_pool.h.

Constructor & Destructor Documentation

◆ KisTextureTileInfoPool()

KisTextureTileInfoPool::KisTextureTileInfoPool ( int tileWidth,
int tileHeight )
inline

Definition at line 123 of file kis_texture_tile_info_pool.h.

124 : m_tileWidth(tileWidth),
125 m_tileHeight(tileHeight)
126 {
128 m_worker->moveToThread(QApplication::instance()->thread());
129 connect(this, SIGNAL(purge(int, int)), m_worker, SLOT(slotPurge(int, int)));
130 }
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
KisTextureTileInfoPoolWorker * m_worker
void purge(int pixelSize, int numFrees)

References connect().

◆ ~KisTextureTileInfoPool()

KisTextureTileInfoPool::~KisTextureTileInfoPool ( )
inline

Definition at line 132 of file kis_texture_tile_info_pool.h.

132 {
133 delete m_worker;
134 qDeleteAll(m_pools);
135 }
QVector< KisTextureTileInfoPoolSingleSize * > m_pools

Member Function Documentation

◆ chunkSize()

int KisTextureTileInfoPool::chunkSize ( int pixelSize) const
inline
Returns
the length of the chunks stored in the pool

Definition at line 169 of file kis_texture_tile_info_pool.h.

169 {
170 QMutexLocker l(&m_mutex);
171 return m_pools[pixelSize]->chunkSize();
172 }

◆ free()

void KisTextureTileInfoPool::free ( quint8 * ptr,
int pixelSize )
inline

Free a tile with the specified pixel size

Definition at line 158 of file kis_texture_tile_info_pool.h.

158 {
159 QMutexLocker l(&m_mutex);
160 KisTextureTileInfoPoolSingleSize *pool = m_pools[pixelSize];
161 if (pool->free(ptr)) {
162 Q_EMIT purge(pixelSize, pool->numFrees());
163 }
164 }

References KisTextureTileInfoPoolSingleSize::free(), and KisTextureTileInfoPoolSingleSize::numFrees().

◆ malloc()

quint8 * KisTextureTileInfoPool::malloc ( int pixelSize)
inline

Alloc a tile with the specified pixel size

Definition at line 140 of file kis_texture_tile_info_pool.h.

140 {
141 QMutexLocker l(&m_mutex);
142
143 if (m_pools.size() <= pixelSize) {
144 m_pools.resize(pixelSize + 1);
145 }
146
147 if (!m_pools[pixelSize]) {
148 m_pools[pixelSize] =
150 }
151
152 return m_pools[pixelSize]->malloc();
153 }

◆ purge

void KisTextureTileInfoPool::purge ( int pixelSize,
int numFrees )
signal

◆ tryPurge()

void KisTextureTileInfoPool::tryPurge ( int pixelSize,
int numFrees )
inline

Definition at line 174 of file kis_texture_tile_info_pool.h.

174 {
175 QMutexLocker l(&m_mutex);
176 m_pools[pixelSize]->tryPurge(numFrees);
177 }

Member Data Documentation

◆ m_mutex

QMutex KisTextureTileInfoPool::m_mutex
mutableprivate

Definition at line 183 of file kis_texture_tile_info_pool.h.

◆ m_pools

QVector<KisTextureTileInfoPoolSingleSize*> KisTextureTileInfoPool::m_pools
private

Definition at line 186 of file kis_texture_tile_info_pool.h.

◆ m_tileHeight

const int KisTextureTileInfoPool::m_tileHeight
private

Definition at line 185 of file kis_texture_tile_info_pool.h.

◆ m_tileWidth

const int KisTextureTileInfoPool::m_tileWidth
private

Definition at line 184 of file kis_texture_tile_info_pool.h.

◆ m_worker

KisTextureTileInfoPoolWorker* KisTextureTileInfoPool::m_worker
private

Definition at line 187 of file kis_texture_tile_info_pool.h.


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