Browse Source

get_global_event_queue()

Dave Schuyler 22 years ago
parent
commit
5a1bca16fc
2 changed files with 14 additions and 5 deletions
  1. 12 2
      panda/src/event/eventQueue.cxx
  2. 2 3
      panda/src/event/eventQueue.h

+ 12 - 2
panda/src/event/eventQueue.cxx

@@ -47,9 +47,18 @@ EventQueue::
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void EventQueue::
 void EventQueue::
 queue_event(CPT_Event event) {
 queue_event(CPT_Event event) {
-#ifdef OLD_HAVE_IPC
+  nassertv(!event.is_null());
+  #ifdef OLD_HAVE_IPC
   mutex_lock lock(_lock);
   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()) {
   if (_queue.full()) {
     event_cat.error()
     event_cat.error()
       << "Ignoring event " << *event << "; event queue full.\n";
       << "Ignoring event " << *event << "; event queue full.\n";
@@ -109,6 +118,7 @@ dequeue_event() {
   // thread extracting events.  The magic of circular buffers.
   // thread extracting events.  The magic of circular buffers.
   CPT_Event result = _queue.front();
   CPT_Event result = _queue.front();
   _queue.pop_front();
   _queue.pop_front();
+  nassertr(!result.is_null(), result);
   return result;
   return result;
 }
 }
 
 

+ 2 - 3
panda/src/event/eventQueue.h

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