16#define CALL_MEMBER(obj, pmf) ((obj).*(pmf))
27 Action(
void (*f)(
void*),
void*
p, quint64 paramSize) :
func(f)
30 memcpy(&
param,
p, paramSize);
46 if (
tmp.isEmpty())
return;
48 if (force ||
tmp.size() > 4096) {
52 while (
tmp.pop(action)) {
58 while (
tmp.pop(action)) {
77 static void thunk(
void* param)
79 Closure* self = (Closure*) param;
84 Closure closure = {pmf,
target};
KisMagneticGraph::vertex_descriptor target(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
void mergeFrom(KisLocklessStack< T > &other)
KisLocklessStack< Action > m_pendingActions
void releasePoolSafely(KisLocklessStack< Action > *pool, bool force=false)
QAtomicInt m_rawPointerUsers
void lockRawPointerAccess()
bool sanityRawPointerAccessLocked() const
void enqueue(void(T::*pmf)(), T *target, bool migration=false)
KisLocklessStack< Action > m_migrationReclaimActions
void unlockRawPointerAccess()
typedef void(QOPENGLF_APIENTRYP PFNGLINVALIDATEBUFFERDATAPROC)(GLuint buffer)
#define CALL_MEMBER(obj, pmf)
Action(void(*f)(void *), void *p, quint64 paramSize)