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

#include <kis_thread_safe_signal_compressor.h>

+ Inheritance diagram for KisThreadSafeSignalCompressor:

Public Slots

void setDelay (int delay)
 
void start ()
 
void stop ()
 

Signals

void internalRequestSignal ()
 
void internalSetDelay (int delay)
 
void internalStopSignal ()
 
void timeout ()
 

Public Member Functions

bool isActive () const
 
 KisThreadSafeSignalCompressor (int delay, KisSignalCompressor::Mode mode)
 

Private Attributes

KisSignalCompressorm_compressor
 

Detailed Description

A special class which works exactly like KisSignalCompressor, but supports calling start() method from within the context of another thread. If it happens, it posts a message to Qt's event loop and the start() signal is delivered when event loop gets executes again.

WARNING: After creation this object moves itself into the main thread, so one must not delete it explicitly. Use deleteLater() instead. Moving into another thread is another reason why it cannot have parent QObject.

Definition at line 27 of file kis_thread_safe_signal_compressor.h.

Constructor & Destructor Documentation

◆ KisThreadSafeSignalCompressor()

KisThreadSafeSignalCompressor::KisThreadSafeSignalCompressor ( int delay,
KisSignalCompressor::Mode mode )

Definition at line 12 of file kis_thread_safe_signal_compressor.cpp.

13 : m_compressor(new KisSignalCompressor(delay, mode, this))
14{
15 connect(this, SIGNAL(internalRequestSignal()), m_compressor, SLOT(start()), Qt::AutoConnection);
16 connect(this, SIGNAL(internalStopSignal()), m_compressor, SLOT(stop()), Qt::AutoConnection);
17 connect(this, SIGNAL(internalSetDelay(int)), m_compressor, SLOT(setDelay(int)), Qt::AutoConnection);
18 connect(m_compressor, SIGNAL(timeout()), SIGNAL(timeout()));
19
20 // due to this line the object *must not* be deleted explicitly!
21 this->setObjectName("KisThreadSafeSignalCompressor");
22 this->moveToThread(QApplication::instance()->thread());
23}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void internalSetDelay(int delay)

References connect(), internalRequestSignal(), internalSetDelay(), internalStopSignal(), m_compressor, setDelay(), start(), stop(), and timeout().

Member Function Documentation

◆ internalRequestSignal

void KisThreadSafeSignalCompressor::internalRequestSignal ( )
signal

◆ internalSetDelay

void KisThreadSafeSignalCompressor::internalSetDelay ( int delay)
signal

◆ internalStopSignal

void KisThreadSafeSignalCompressor::internalStopSignal ( )
signal

◆ isActive()

bool KisThreadSafeSignalCompressor::isActive ( ) const

Definition at line 25 of file kis_thread_safe_signal_compressor.cpp.

26{
27 return m_compressor->isActive();
28}

References KisSignalCompressor::isActive(), and m_compressor.

◆ setDelay

void KisThreadSafeSignalCompressor::setDelay ( int delay)
slot

Definition at line 30 of file kis_thread_safe_signal_compressor.cpp.

31{
32 Q_EMIT internalSetDelay(delay);
33}

References internalSetDelay().

◆ start

void KisThreadSafeSignalCompressor::start ( )
slot

Definition at line 35 of file kis_thread_safe_signal_compressor.cpp.

36{
37 Q_EMIT internalRequestSignal();
38}

References internalRequestSignal().

◆ stop

void KisThreadSafeSignalCompressor::stop ( )
slot

Definition at line 40 of file kis_thread_safe_signal_compressor.cpp.

41{
42 Q_EMIT internalStopSignal();
43}

References internalStopSignal().

◆ timeout

void KisThreadSafeSignalCompressor::timeout ( )
signal

Member Data Documentation

◆ m_compressor

KisSignalCompressor* KisThreadSafeSignalCompressor::m_compressor
private

Definition at line 47 of file kis_thread_safe_signal_compressor.h.


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