Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSafeBlockingQueueConnectionProxy< T > Class Template Reference

#include <KisSafeBlockingQueueConnectionProxy.h>

Public Member Functions

 KisSafeBlockingQueueConnectionProxy (CallbackFunction function)
 
void start (T value)
 

Private Types

using CallbackFunction = std::function<void (T)>
 

Private Member Functions

void fakeSlotTimeout ()
 

Private Attributes

SignalToFunctionProxy m_destination
 
CallbackFunction m_function
 
FunctionToSignalProxy m_source
 
QQueue< T > m_value
 

Detailed Description

template<typename T>
class KisSafeBlockingQueueConnectionProxy< T >

A special class for safe forwarding of blocking-queued signal to the GUI thread.

The class automatically resolves deadlocks when GUI thread blocks on the image. This tie-breaking algorithm is implemented via KisBusyWaitBroker.

Usage:

   \code{.cpp}

   // create the proxy
   KisSafeBlockingQueueConnectionProxy<QTransform> proxy(
       std::bind(&KisShapeLayer::slotTransformShapes, shapeLayer));

   // Q_EMIT synchronous signal with deadlock-avoidance
   proxy.start(QTransform::fromScale(0.5, 0.5));

   \endcode

Definition at line 42 of file KisSafeBlockingQueueConnectionProxy.h.

Member Typedef Documentation

◆ CallbackFunction

template<typename T >
using KisSafeBlockingQueueConnectionProxy< T >::CallbackFunction = std::function<void (T)>
private

Definition at line 44 of file KisSafeBlockingQueueConnectionProxy.h.

Constructor & Destructor Documentation

◆ KisSafeBlockingQueueConnectionProxy()

Definition at line 46 of file KisSafeBlockingQueueConnectionProxy.h.

References KisSafeBlockingQueueConnectionProxyPrivate::initProxyObject(), KisSafeBlockingQueueConnectionProxy< T >::m_destination, KisSafeBlockingQueueConnectionProxy< T >::m_source, and KisSafeBlockingQueueConnectionProxy< T >::start().

Member Function Documentation

◆ fakeSlotTimeout()

◆ start()

template<typename T >
void KisSafeBlockingQueueConnectionProxy< T >::start ( T value)
inline

Member Data Documentation

◆ m_destination

template<typename T >
SignalToFunctionProxy KisSafeBlockingQueueConnectionProxy< T >::m_destination
private

Definition at line 74 of file KisSafeBlockingQueueConnectionProxy.h.

◆ m_function

template<typename T >
CallbackFunction KisSafeBlockingQueueConnectionProxy< T >::m_function
private

Definition at line 72 of file KisSafeBlockingQueueConnectionProxy.h.

◆ m_source

template<typename T >
FunctionToSignalProxy KisSafeBlockingQueueConnectionProxy< T >::m_source
private

Definition at line 73 of file KisSafeBlockingQueueConnectionProxy.h.

◆ m_value

template<typename T >
QQueue<T> KisSafeBlockingQueueConnectionProxy< T >::m_value
private

Definition at line 75 of file KisSafeBlockingQueueConnectionProxy.h.


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