9 #ifndef __PDG_EventQueue_h__
10 #define __PDG_EventQueue_h__
25 #define PDG_EVENT_QUEUE_STATS 0
90 {
return myIsConsolidateEvents; }
94 { myIsConsolidateEvents = consolidate; }
126 struct DeferredEmitterUpdate
133 EmitterUpdate myType;
137 using EventInfo = std::pair<
140 using EventQueue = UT_ConcurrentQueue<EventInfo>;
144 using EmitterUpdateArray = UT_ConcurrentVector<DeferredEmitterUpdate>;
153 const EventArray& events);
161 const EventArray& myEvents;
172 bool addEventHandler(
176 void removeEventHandler(
179 void removeAllEventHandlers(
182 void findEventHandlers(
186 void processQueueStats(
int print_limit);
188 const EventInfo& info,
190 void processEvents();
193 { myPauseRequests.add(1); }
195 { myPauseRequests.add(-1); }
197 static void* runThread(
void*
param);
201 EmitterArrayMap myEmitters;
202 EmitterUpdateArray myEmitterUpdates;
203 ActiveEmitter myActiveEmitter;
207 #if PDG_EVENT_QUEUE_STATS
208 exint myDropEventCount;
209 exint myQueuedEventCount;
210 exint myPoppedEventCount;
211 exint myProcessedEventCount;
212 exint myQueueLogTime;
215 exint myEmitterMapSize;
216 exint myProcessSleepTime;
219 bool myIsTerminating;
222 bool myIsConsolidateEvents;
bool isConsolidateEvents() const
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the queue
#define UT_ConcurrentHashMap
void setConsolidateEvents(bool consolidate)
Configures the event consolidation flag.
void pause(int delay) noexcept
ScopedPause(PDG_EventQueue *queue)
ImageBuf OIIO_API add(Image_or_Const A, Image_or_Const B, ROI roi={}, int nthreads=0)
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter