get_global_event_queue()

This commit is contained in:
Dave Schuyler 2004-01-28 01:43:28 +00:00
parent cf0576549b
commit 5a1bca16fc
2 changed files with 14 additions and 5 deletions

View File

@ -47,9 +47,18 @@ EventQueue::
////////////////////////////////////////////////////////////////////
void EventQueue::
queue_event(CPT_Event event) {
#ifdef OLD_HAVE_IPC
nassertv(!event.is_null());
#ifdef OLD_HAVE_IPC
mutex_lock lock(_lock);
#endif
#endif
#if 0
// This is just some paranoid debug code. I had a problem where
// one of the events was going null while it was in the queue.
size_t limit = _queue.size();
while (limit--) {
nassertv(!_queue[limit].is_null());
}
#endif
if (_queue.full()) {
event_cat.error()
<< "Ignoring event " << *event << "; event queue full.\n";
@ -109,6 +118,7 @@ dequeue_event() {
// thread extracting events. The magic of circular buffers.
CPT_Event result = _queue.front();
_queue.pop_front();
nassertr(!result.is_null(), result);
return result;
}

View File

@ -24,7 +24,7 @@
#include "event.h"
#include "pt_Event.h"
#include <circBuffer.h>
#include "circBuffer.h"
#ifdef OLD_HAVE_IPC
#include <ipc_mutex.h>
@ -52,8 +52,7 @@ PUBLISHED:
bool is_queue_full() const;
CPT_Event dequeue_event();
INLINE static EventQueue *
get_global_event_queue();
INLINE static EventQueue *get_global_event_queue();
protected:
CircBuffer<CPT_Event, max_events> _queue;