9 #ifndef __PDG_EventQueue_h__
10 #define __PDG_EventQueue_h__
26 #define PDG_EVENT_QUEUE_STATS 0
91 {
return myIsConsolidateEvents; }
95 { myIsConsolidateEvents = consolidate; }
127 struct DeferredEmitterUpdate
134 EmitterUpdate myType;
138 using EventInfo = std::pair<
141 using EventQueue = UT_ConcurrentQueue<EventInfo>;
145 using EmitterUpdateArray = UT_ConcurrentVector<DeferredEmitterUpdate>;
154 const EventArray& events);
162 const EventArray& myEvents;
173 bool addEventHandler(
177 void removeEventHandler(
180 void removeAllEventHandlers(
183 void findEventHandlers(
187 void processQueueStats(
int print_limit);
189 const EventInfo& info,
191 void processEvents();
194 { myPauseRequests.add(1); }
196 { myPauseRequests.add(-1); }
198 static void* runThread(
void*
param);
202 EmitterArrayMap myEmitters;
203 EmitterUpdateArray myEmitterUpdates;
204 ActiveEmitter myActiveEmitter;
208 #if PDG_EVENT_QUEUE_STATS
209 exint myDropEventCount;
210 exint myQueuedEventCount;
211 exint myPoppedEventCount;
212 exint myProcessedEventCount;
213 exint myQueueLogTime;
216 exint myEmitterMapSize;
217 exint myProcessSleepTime;
220 bool myIsTerminating;
223 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
tbb::concurrent_hash_map< K, T, H, A > 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