|
Krita Source Code Documentation
|
#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 |
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.
|
private |
Definition at line 44 of file KisSafeBlockingQueueConnectionProxy.h.
|
inline |
Definition at line 46 of file KisSafeBlockingQueueConnectionProxy.h.
References KisSafeBlockingQueueConnectionProxyPrivate::initProxyObject(), KisSafeBlockingQueueConnectionProxy< T >::m_destination, KisSafeBlockingQueueConnectionProxy< T >::m_source, and KisSafeBlockingQueueConnectionProxy< T >::start().
|
inlineprivate |
Definition at line 66 of file KisSafeBlockingQueueConnectionProxy.h.
References KIS_SAFE_ASSERT_RECOVER_RETURN, KisSafeBlockingQueueConnectionProxy< T >::m_function, and KisSafeBlockingQueueConnectionProxy< T >::m_value.
|
inline |
Definition at line 56 of file KisSafeBlockingQueueConnectionProxy.h.
References KIS_SAFE_ASSERT_RECOVER_NOOP, KisSafeBlockingQueueConnectionProxy< T >::m_destination, KisSafeBlockingQueueConnectionProxy< T >::m_source, KisSafeBlockingQueueConnectionProxy< T >::m_value, KisSafeBlockingQueueConnectionProxyPrivate::passBlockingSignalSafely(), and value().
|
private |
Definition at line 74 of file KisSafeBlockingQueueConnectionProxy.h.
|
private |
Definition at line 72 of file KisSafeBlockingQueueConnectionProxy.h.
|
private |
Definition at line 73 of file KisSafeBlockingQueueConnectionProxy.h.
|
private |
Definition at line 75 of file KisSafeBlockingQueueConnectionProxy.h.