From: David Flynn <[email protected]>

Signed-off-by: David Flynn <[email protected]>
---
 schroedinger/schrodecoder.c |   73 ++++++++++++++++++++++++++++++++++++-------
 schroedinger/schrodecoder.h |   10 +++++-
 schroedinger/schroencoder.c |   31 ++++++++----------
 schroedinger/schroengine.c  |   30 +++++++++---------
 schroedinger/schroqueue.c   |   69 +++++------------------------------------
 schroedinger/schroqueue.h   |   16 ++--------
 6 files changed, 109 insertions(+), 120 deletions(-)

diff --git a/schroedinger/schrodecoder.c b/schroedinger/schrodecoder.c
index e0b9134..e3e7efd 100644
--- a/schroedinger/schrodecoder.c
+++ b/schroedinger/schrodecoder.c
@@ -392,7 +392,7 @@ schro_decoder_get_picture_number (SchroDecoder *decoder)
 void
 schro_decoder_add_output_picture (SchroDecoder *decoder, SchroFrame *frame)
 {
-  schro_queue_add (decoder->output_queue, frame, 0);
+  schro_queue_add (decoder->output_queue, frame);
 }
 
 /**
@@ -473,7 +473,7 @@ schro_decoder_pull_is_ready_locked (SchroDecoder *decoder)
   if (decoder->coded_order) {
     picture = schro_queue_peek (decoder->picture_queue);
   } else {
-    picture = schro_queue_find (decoder->picture_queue,
+    picture = schro_picturequeue_find (decoder->picture_queue,
         decoder->next_frame_number);
   }
   if (!picture && !decoder->flushing &&
@@ -523,11 +523,11 @@ schro_decoder_pull (SchroDecoder *decoder)
   if (decoder->coded_order) {
     picture = schro_queue_peek (decoder->picture_queue);
   } else {
-    picture = schro_queue_find (decoder->picture_queue, 
decoder->next_frame_number);
+    picture = schro_picturequeue_find (decoder->picture_queue, 
decoder->next_frame_number);
   }
   if (picture) {
     if (picture->stages[SCHRO_DECODER_STAGE_DONE].is_done) {
-      schro_queue_remove (decoder->picture_queue, picture->picture_number);
+      schro_picturequeue_remove (decoder->picture_queue, 
picture->picture_number);
     } else {
       picture = NULL;
     }
@@ -601,7 +601,7 @@ schro_decoder_get_status_locked (SchroDecoder *decoder)
   if (decoder->coded_order) {
     next_picture = schro_queue_peek (decoder->picture_queue);
   } else {
-    next_picture = schro_queue_find (decoder->picture_queue, 
decoder->next_frame_number);
+    next_picture = schro_picturequeue_find (decoder->picture_queue, 
decoder->next_frame_number);
   }
   if (decoder->flushing && next_picture == NULL) {
     if (decoder->end_of_stream) {
@@ -635,7 +635,7 @@ schro_decoder_dump (SchroDecoder *decoder)
 
   SCHRO_ERROR("index, picture_number, busy, state, needed_state, working");
   for(i=0;i<decoder->picture_queue->n;i++){
-    SchroPicture *picture = decoder->picture_queue->elements[i].data;
+    SchroPicture *picture = decoder->picture_queue->elements[i];
 
     SCHRO_ERROR("%d: %d %d %04x %04x %04x",
         i, picture->picture_number,
@@ -866,7 +866,7 @@ schro_decoder_iterate_picture (SchroDecoder *decoder, 
SchroBuffer *buffer)
 
   schro_async_lock (decoder->async);
   SCHRO_DEBUG("adding %d to queue", picture->picture_number);
-  schro_queue_add (decoder->picture_queue, picture, picture->picture_number);
+  schro_queue_add (decoder->picture_queue, picture);
   schro_async_signal_scheduler (decoder->async);
   schro_async_unlock (decoder->async);
 
@@ -994,7 +994,7 @@ schro_decoder_async_schedule (SchroDecoder *decoder,
   }
 
   for(i=0;i<decoder->picture_queue->n;i++){
-    SchroPicture *picture = decoder->picture_queue->elements[i].data;
+    SchroPicture *picture = decoder->picture_queue->elements[i];
     void *func = NULL;
     int stage = 0;
 
@@ -2724,8 +2724,7 @@ schro_decoder_reference_add (SchroDecoder *decoder, 
SchroPicture *picture)
     SCHRO_ERROR("auto-retiring reference picture");
     schro_queue_pop (decoder->reference_queue);
   }
-  schro_queue_add (decoder->reference_queue, schro_picture_ref(picture),
-      picture->picture_number);
+  schro_queue_add (decoder->reference_queue, schro_picture_ref(picture));
 }
 
 static SchroPicture *
@@ -2733,7 +2732,7 @@ schro_decoder_reference_get (SchroDecoder *decoder,
     SchroPictureNumber picture_number)
 {
   SCHRO_DEBUG("getting %d", picture_number);
-  return schro_queue_find (decoder->reference_queue, picture_number);
+  return schro_picturequeue_find (decoder->reference_queue, picture_number);
 }
 
 static void
@@ -2741,7 +2740,7 @@ schro_decoder_reference_retire (SchroDecoder *decoder,
     SchroPictureNumber picture_number)
 {
   SCHRO_DEBUG("retiring %d", picture_number);
-  schro_queue_delete (decoder->reference_queue, picture_number);
+  schro_picturequeue_delete (decoder->reference_queue, picture_number);
 }
 
 static void
@@ -2754,3 +2753,53 @@ schro_decoder_error (SchroDecoder *decoder, const char 
*s)
   }
 }
 
+SchroPicture *
+schro_picturequeue_find (SchroPictureQueue *queue, SchroPictureNumber 
picture_number)
+{
+  int i;
+
+  for(i=0;i<queue->n;i++){
+    if (((SchroPicture*)queue->elements[i])->picture_number == picture_number) 
{
+      return queue->elements[i];
+    }
+  }
+
+  return NULL;
+}
+
+void
+schro_picturequeue_delete (SchroQueue *queue, SchroPictureNumber 
picture_number)
+{
+  int i;
+
+  for(i=0;i<queue->n;i++){
+    if (((SchroPicture*)queue->elements[i])->picture_number == picture_number) 
{
+      if (queue->free) {
+        queue->free(queue->elements[i]);
+      }
+      memmove (queue->elements + i, queue->elements + i + 1,
+          sizeof(SchroQueueElement)*(queue->n - i - 1));
+      queue->n--;
+      return;
+    }
+  }
+}
+
+SchroPicture *
+schro_picturequeue_remove (SchroQueue *queue, SchroPictureNumber 
picture_number)
+{
+  int i;
+  void *ret;
+
+  for(i=0;i<queue->n;i++){
+    if (((SchroPicture*)queue->elements[i])->picture_number == picture_number) 
{
+      ret = queue->elements[i];
+      memmove (queue->elements + i, queue->elements + i + 1,
+          sizeof(SchroQueueElement)*(queue->n - i - 1));
+      queue->n--;
+      return ret;
+    }
+  }
+
+  return NULL;
+}
diff --git a/schroedinger/schrodecoder.h b/schroedinger/schrodecoder.h
index c37de5e..d138f65 100644
--- a/schroedinger/schrodecoder.h
+++ b/schroedinger/schrodecoder.h
@@ -16,6 +16,7 @@ SCHRO_BEGIN_DECLS
 
 typedef struct _SchroDecoder SchroDecoder;
 typedef struct _SchroPicture SchroPicture;
+typedef SchroQueue SchroPictureQueue;
 
 #ifdef SCHRO_ENABLE_UNSTABLE_API
 
@@ -51,8 +52,8 @@ struct _SchroDecoder {
   int level;
   SchroVideoFormat video_format;
 
-  SchroQueue *frame_queue;
-  SchroQueue *picture_queue;
+  SchroPictureQueue *frame_queue;
+  SchroPictureQueue *picture_queue;
 
   int queue_depth;
   int end_of_stream;
@@ -173,6 +174,11 @@ SchroPicture * schro_picture_new (SchroDecoder *decoder);
 SchroPicture * schro_picture_ref (SchroPicture *picture);
 void schro_picture_unref (SchroPicture *picture);
 
+/* Picture queue search functions */
+SchroPicture *schro_picturequeue_find (SchroPictureQueue *queue, 
SchroPictureNumber picture_number);
+void schro_picturequeue_delete (SchroPictureQueue *queue, SchroPictureNumber 
picture_number);
+SchroPicture *schro_picturequeue_remove (SchroPictureQueue *queue, 
SchroPictureNumber picture_number);
+
 int schro_decoder_iterate_picture (SchroDecoder *decoder, SchroBuffer *buffer);
 void schro_decoder_parse_picture (SchroPicture *picture);
 void schro_decoder_parse_picture_header (SchroPicture *picture);
diff --git a/schroedinger/schroencoder.c b/schroedinger/schroencoder.c
index 493c5c6..35d0ce7 100644
--- a/schroedinger/schroencoder.c
+++ b/schroedinger/schroencoder.c
@@ -536,8 +536,7 @@ schro_encoder_push_frame_full (SchroEncoder *encoder, 
SchroFrame *frame, void *p
       SCHRO_ERROR("push when queue full");
       SCHRO_ASSERT(0);
     }
-    schro_queue_add (encoder->frame_queue, encoder_frame,
-        encoder_frame->frame_number);
+    schro_queue_add (encoder->frame_queue, encoder_frame);
     schro_async_signal_scheduler (encoder->async);
     schro_async_unlock (encoder->async);
   } else {
@@ -579,10 +578,8 @@ schro_encoder_push_frame_full (SchroEncoder *encoder, 
SchroFrame *frame, void *p
       SCHRO_ERROR("push when queue full");
       SCHRO_ASSERT(0);
     }
-    schro_queue_add (encoder->frame_queue, encoder_frame1,
-        encoder_frame1->frame_number);
-    schro_queue_add (encoder->frame_queue, encoder_frame2,
-        encoder_frame2->frame_number);
+    schro_queue_add (encoder->frame_queue, encoder_frame1);
+    schro_queue_add (encoder->frame_queue, encoder_frame2);
     schro_async_signal_scheduler (encoder->async);
     schro_async_unlock (encoder->async);
   }
@@ -595,7 +592,7 @@ schro_encoder_pull_is_ready_locked (SchroEncoder *encoder)
 
   for(i=0;i<encoder->frame_queue->n;i++){
     SchroEncoderFrame *frame;
-    frame = encoder->frame_queue->elements[i].data;
+    frame = encoder->frame_queue->elements[i];
     if (frame->slot == encoder->output_slot &&
         (frame->stages[SCHRO_ENCODER_FRAME_STAGE_DONE].is_done)) {
       return TRUE;
@@ -616,7 +613,7 @@ schro_encoder_shift_frame_queue (SchroEncoder *encoder)
   SchroEncoderFrame *frame;
 
   while (!schro_queue_is_empty(encoder->frame_queue)) {
-    frame = encoder->frame_queue->elements[0].data;
+    frame = encoder->frame_queue->elements[0];
     if (!(frame->stages[SCHRO_ENCODER_FRAME_STAGE_FREE].is_done)) {
       break;
     }
@@ -729,7 +726,7 @@ schro_encoder_pull_full (SchroEncoder *encoder, int 
*presentation_frame,
   schro_async_lock (encoder->async);
   for(i=0;i<encoder->frame_queue->n;i++){
     SchroEncoderFrame *frame;
-    frame = encoder->frame_queue->elements[i].data;
+    frame = encoder->frame_queue->elements[i];
     if (frame->slot == encoder->output_slot &&
         (frame->stages[SCHRO_ENCODER_FRAME_STAGE_DONE].is_done)) {
       int is_picture = FALSE;
@@ -885,7 +882,7 @@ schro_encoder_end_of_stream (SchroEncoder *encoder)
   if (encoder->frame_queue->n > 0) {
     SchroEncoderFrame *encoder_frame;
 
-    encoder_frame = 
encoder->frame_queue->elements[encoder->frame_queue->n-1].data;
+    encoder_frame = encoder->frame_queue->elements[encoder->frame_queue->n-1];
     encoder_frame->last_frame = TRUE;
   }
   schro_async_unlock (encoder->async);
@@ -1151,7 +1148,7 @@ schro_encoder_wait (SchroEncoder *encoder)
 
       SCHRO_WARNING ("deadlock?  kicking scheduler");
       for(i=0;i<encoder->frame_queue->n;i++){
-        SchroEncoderFrame *frame = encoder->frame_queue->elements[i].data;
+        SchroEncoderFrame *frame = encoder->frame_queue->elements[i];
         SCHRO_WARNING("%d: %d %d %d %d %04x", i, frame->frame_number,
             frame->picture_number_ref[0], frame->picture_number_ref[1],
             frame->busy, 0 /*frame->state*/);
@@ -1300,7 +1297,7 @@ schro_encoder_async_schedule (SchroEncoder *encoder, 
SchroExecDomain exec_domain
   SCHRO_INFO("iterate %d", encoder->completed_eos);
 
   for(i=0;i<encoder->frame_queue->n;i++) {
-    frame = encoder->frame_queue->elements[i].data;
+    frame = encoder->frame_queue->elements[i];
     SCHRO_DEBUG("analyse i=%d picture=%d state=%d busy=%d", i,
         frame->frame_number, 0 /*frame->state*/, frame->busy);
 
@@ -1316,7 +1313,7 @@ schro_encoder_async_schedule (SchroEncoder *encoder, 
SchroExecDomain exec_domain
   }
 
   for(i=0;i<encoder->frame_queue->n;i++) {
-    frame = encoder->frame_queue->elements[i].data;
+    frame = encoder->frame_queue->elements[i];
     if (frame->frame_number == encoder->gop_picture) {
       encoder->handle_gop (encoder, i);
       break;
@@ -1327,7 +1324,7 @@ schro_encoder_async_schedule (SchroEncoder *encoder, 
SchroExecDomain exec_domain
    * first for reference pictures, then for non-ref. */
   for(ref = 1; ref >= 0; ref--){
     for(i=0;i<encoder->frame_queue->n;i++) {
-      frame = encoder->frame_queue->elements[i].data;
+      frame = encoder->frame_queue->elements[i];
       SCHRO_DEBUG("backref i=%d picture=%d state=%d busy=%d", i,
           frame->frame_number, 0 /*frame->state*/, frame->busy);
 
@@ -1373,7 +1370,7 @@ schro_encoder_async_schedule (SchroEncoder *encoder, 
SchroExecDomain exec_domain
   }
 
   for(i=0;i<encoder->frame_queue->n;i++) {
-    frame = encoder->frame_queue->elements[i].data;
+    frame = encoder->frame_queue->elements[i];
     if (frame->slot == encoder->quant_slot) {
       int ret;
       ret = encoder->handle_quants (encoder, i);
@@ -1383,7 +1380,7 @@ schro_encoder_async_schedule (SchroEncoder *encoder, 
SchroExecDomain exec_domain
 
   for(ref = 1; ref >= 0; ref--){
     for(i=0;i<encoder->frame_queue->n;i++) {
-      frame = encoder->frame_queue->elements[i].data;
+      frame = encoder->frame_queue->elements[i];
       SCHRO_DEBUG("backref i=%d picture=%d state=%d busy=%d", i,
           frame->frame_number, 0/*frame->state*/, frame->busy);
 
@@ -3064,7 +3061,7 @@ schro_encoder_reference_add (SchroEncoder *encoder, 
SchroEncoderFrame *frame)
   SCHRO_DEBUG("adding reference %p %d", frame, frame->frame_number);
 
   schro_encoder_frame_ref (frame);
-  schro_queue_add (encoder->reference_queue, frame, frame->frame_number);
+  schro_queue_add (encoder->reference_queue, frame);
 }
 #endif
 
diff --git a/schroedinger/schroengine.c b/schroedinger/schroengine.c
index 959e79c..07e98c1 100644
--- a/schroedinger/schroengine.c
+++ b/schroedinger/schroengine.c
@@ -225,12 +225,12 @@ schro_engine_code_BBBP (SchroEncoder *encoder, int i, int 
gop_length)
   SchroPictureNumber ref1;
   SchroPictureNumber retire;
 
-  frame = encoder->frame_queue->elements[i].data;
+  frame = encoder->frame_queue->elements[i];
 
   /* BBBP */
   frame->gop_length = gop_length;
 
-  f = encoder->frame_queue->elements[i+gop_length-1].data;
+  f = encoder->frame_queue->elements[i+gop_length-1];
   if (f->start_sequence_header) {
     schro_encoder_pick_retire (f, &retire);
 
@@ -249,7 +249,7 @@ schro_engine_code_BBBP (SchroEncoder *encoder, int i, int 
gop_length)
   }
 
   for (j = 0; j < gop_length - 1; j++) {
-    f = encoder->frame_queue->elements[i+j].data;
+    f = encoder->frame_queue->elements[i+j];
     schro_encoder_pick_refs (f, &ref0, &ref1);
 
     schro_engine_code_picture (f, FALSE, -1, 2, ref0, ref1);
@@ -260,7 +260,7 @@ schro_engine_code_BBBP (SchroEncoder *encoder, int i, int 
gop_length)
     f->picture_weight = encoder->magic_inter_b_weight;
   }
 
-  f = encoder->frame_queue->elements[i+gop_length-1].data;
+  f = encoder->frame_queue->elements[i+gop_length-1];
   if (f->start_sequence_header) {
     schro_encoder_expire_refs_before (encoder, f->frame_number);
   }
@@ -280,7 +280,7 @@ schro_engine_get_scene_change_score (SchroEncoder *encoder, 
int i)
   SchroEncoderFrame *frame2;
   double luma;
 
-  frame1 = encoder->frame_queue->elements[i].data;
+  frame1 = encoder->frame_queue->elements[i];
   if (frame1->have_scene_change_score) return TRUE;
 
   frame2 = frame1->previous_frame;
@@ -575,7 +575,7 @@ schro_encoder_handle_gop_tworef (SchroEncoder *encoder, int 
i)
   int gop_length;
   double scs_sum;
 
-  frame = encoder->frame_queue->elements[i].data;
+  frame = encoder->frame_queue->elements[i];
 
   SCHRO_ASSERT(frame->stages[SCHRO_ENCODER_FRAME_STAGE_HAVE_GOP].is_done == 
FALSE);
 
@@ -600,7 +600,7 @@ schro_encoder_handle_gop_tworef (SchroEncoder *encoder, int 
i)
       return;
     }
 
-    f = encoder->frame_queue->elements[i+j].data;
+    f = encoder->frame_queue->elements[i+j];
 
     SCHRO_ASSERT(f->stages[SCHRO_ENCODER_FRAME_STAGE_HAVE_GOP].is_done == 
FALSE);
 
@@ -656,7 +656,7 @@ schro_encoder_handle_gop_tworef (SchroEncoder *encoder, int 
i)
   SCHRO_DEBUG("gop length %d", gop_length);
 
   for(j=0;j<gop_length-1;j++){
-    f = encoder->frame_queue->elements[i+j].data;
+    f = encoder->frame_queue->elements[i+j];
     SCHRO_ASSERT(f->start_sequence_header == FALSE);
   }
 
@@ -666,7 +666,7 @@ schro_encoder_handle_gop_tworef (SchroEncoder *encoder, int 
i)
     schro_engine_code_BBBP (encoder, i, gop_length);
   }
 
-  f = encoder->frame_queue->elements[i+gop_length-1].data;
+  f = encoder->frame_queue->elements[i+gop_length-1];
   if (f->start_sequence_header) {
     encoder->au_frame = f->frame_number;
   }
@@ -696,7 +696,7 @@ schro_encoder_handle_quants (SchroEncoder *encoder, int i)
 {
   SchroEncoderFrame *frame;
 
-  frame = encoder->frame_queue->elements[i].data;
+  frame = encoder->frame_queue->elements[i];
 
   if (frame->busy || 
!frame->stages[SCHRO_ENCODER_FRAME_STAGE_MODE_DECISION].is_done) return FALSE;
 
@@ -728,7 +728,7 @@ schro_encoder_handle_gop_backref (SchroEncoder *encoder, 
int i)
   int j;
   int gop_length;
 
-  frame = encoder->frame_queue->elements[i].data;
+  frame = encoder->frame_queue->elements[i];
 
   if (frame->busy || !frame->stages[SCHRO_ENCODER_FRAME_STAGE_ANALYSE].is_done)
     return;
@@ -749,7 +749,7 @@ schro_encoder_handle_gop_backref (SchroEncoder *encoder, 
int i)
   }
 
   for (j = 0; j < gop_length; j++) {
-    f = encoder->frame_queue->elements[i+j].data;
+    f = encoder->frame_queue->elements[i+j];
 
     if (f->busy || !f->stages[SCHRO_ENCODER_FRAME_STAGE_ANALYSE].is_done) {
       SCHRO_DEBUG("picture %d not ready", i + j);
@@ -776,7 +776,7 @@ schro_encoder_handle_gop_backref (SchroEncoder *encoder, 
int i)
   encoder->last_ref = frame->frame_number;
 
   for (j = 1; j < gop_length; j++) {
-    f = encoder->frame_queue->elements[i+j].data;
+    f = encoder->frame_queue->elements[i+j];
     schro_engine_code_picture (f, FALSE, -1, 1, frame->frame_number, -1);
     f->presentation_frame = f->frame_number;
     f->picture_weight = encoder->magic_inter_b_weight;
@@ -814,7 +814,7 @@ schro_encoder_handle_gop_intra_only (SchroEncoder *encoder, 
int i)
 {
   SchroEncoderFrame *frame;
 
-  frame = encoder->frame_queue->elements[i].data;
+  frame = encoder->frame_queue->elements[i];
 
   if (frame->busy || 
!frame->stages[SCHRO_ENCODER_FRAME_STAGE_ANALYSE].is_done) return;
 
@@ -910,7 +910,7 @@ schro_encoder_handle_gop_lowdelay (SchroEncoder *encoder, 
int i)
 {
   SchroEncoderFrame *frame;
 
-  frame = encoder->frame_queue->elements[i].data;
+  frame = encoder->frame_queue->elements[i];
 
   if (frame->busy || 
!frame->stages[SCHRO_ENCODER_FRAME_STAGE_ANALYSE].is_done) return;
 
diff --git a/schroedinger/schroqueue.c b/schroedinger/schroqueue.c
index 3c200ec..08b1731 100644
--- a/schroedinger/schroqueue.c
+++ b/schroedinger/schroqueue.c
@@ -19,7 +19,7 @@ schro_queue_new (int size, SchroQueueFreeFunc free_func)
   queue->size = size;
   queue->free = free_func;
 
-  queue->elements = schro_malloc0 (size * sizeof(SchroQueueElement));
+  queue->elements = schro_malloc0 (size * sizeof(void *));
 
   return queue;
 }
@@ -32,7 +32,7 @@ schro_queue_free (SchroQueue *queue)
   if(queue->free)
   {
     for(i=0;i<queue->n;i++){
-      queue->free (queue->elements[i].data, queue->elements[i].picture_number);
+      queue->free (queue->elements[i]);
     }
   }
 
@@ -40,67 +40,14 @@ schro_queue_free (SchroQueue *queue)
   schro_free(queue);
 }
 
-void schro_queue_add (SchroQueue *queue, void *data,
-    SchroPictureNumber picture_number)
+void schro_queue_add (SchroQueue *queue, void *data)
 {
   SCHRO_ASSERT (queue->n < queue->size);
 
-  queue->elements[queue->n].data = data;
-  queue->elements[queue->n].picture_number = picture_number;
+  queue->elements[queue->n] = data;
   queue->n++;
 }
 
-void *
-schro_queue_find (SchroQueue *queue, SchroPictureNumber picture_number)
-{
-  int i;
-
-  for(i=0;i<queue->n;i++){
-    if (queue->elements[i].picture_number == picture_number) {
-      return queue->elements[i].data;
-    }
-  }
-
-  return NULL;
-}
-
-void
-schro_queue_delete (SchroQueue *queue, SchroPictureNumber picture_number)
-{
-  int i;
-
-  for(i=0;i<queue->n;i++){
-    if (queue->elements[i].picture_number == picture_number) {
-      if (queue->free) {
-        queue->free(queue->elements[i].data, 
queue->elements[i].picture_number);
-      }
-      memmove (queue->elements + i, queue->elements + i + 1,
-          sizeof(SchroQueueElement)*(queue->n - i - 1));
-      queue->n--;
-      return;
-    }
-  }
-}
-
-void *
-schro_queue_remove (SchroQueue *queue, SchroPictureNumber picture_number)
-{
-  int i;
-  void *ret;
-
-  for(i=0;i<queue->n;i++){
-    if (queue->elements[i].picture_number == picture_number) {
-      ret = queue->elements[i].data;
-      memmove (queue->elements + i, queue->elements + i + 1,
-          sizeof(SchroQueueElement)*(queue->n - i - 1));
-      queue->n--;
-      return ret;
-    }
-  }
-
-  return NULL;
-}
-
 void
 schro_queue_clear (SchroQueue *queue)
 {
@@ -108,7 +55,7 @@ schro_queue_clear (SchroQueue *queue)
 
   for(i=0;i<queue->n;i++){
     if (queue->free) {
-      queue->free (queue->elements[i].data, queue->elements[i].picture_number);
+      queue->free (queue->elements[i]);
     }
   }
   queue->n = 0;
@@ -120,7 +67,7 @@ schro_queue_pop (SchroQueue *queue)
   if (queue->n == 0) return;
 
   if (queue->free) {
-    queue->free(queue->elements[0].data, queue->elements[0].picture_number);
+    queue->free(queue->elements[0]);
   }
   memmove (queue->elements, queue->elements + 1,
       sizeof(SchroQueueElement)*(queue->n - 1));
@@ -132,7 +79,7 @@ schro_queue_peek (SchroQueue *queue)
 {
   if (queue->n == 0) return NULL;
 
-  return queue->elements[0].data;
+  return queue->elements[0];
 }
 
 void *
@@ -142,7 +89,7 @@ schro_queue_pull (SchroQueue *queue)
 
   if (queue->n == 0) return NULL;
 
-  ret = queue->elements[0].data;
+  ret = queue->elements[0];
   memmove (queue->elements, queue->elements + 1,
       sizeof(SchroQueueElement)*(queue->n - 1));
   queue->n--;
diff --git a/schroedinger/schroqueue.h b/schroedinger/schroqueue.h
index d5479c6..dfba0d3 100644
--- a/schroedinger/schroqueue.h
+++ b/schroedinger/schroqueue.h
@@ -7,14 +7,9 @@
 SCHRO_BEGIN_DECLS
 
 typedef struct _SchroQueue SchroQueue;
-typedef struct _SchroQueueElement SchroQueueElement;
+typedef void * SchroQueueElement;
 
-typedef void (*SchroQueueFreeFunc)(void *data, SchroPictureNumber number);
-
-struct _SchroQueueElement {
-  void *data;
-  SchroPictureNumber picture_number;
-};
+typedef void (*SchroQueueFreeFunc)(void *data);
 
 struct _SchroQueue {
   int size;
@@ -28,12 +23,7 @@ struct _SchroQueue {
 
 SchroQueue *schro_queue_new (int size, SchroQueueFreeFunc func);
 void schro_queue_free (SchroQueue *queue);
-
-void schro_queue_add (SchroQueue *queue, void *element,
-    SchroPictureNumber picture_number);
-void *schro_queue_find (SchroQueue *queue, SchroPictureNumber picture_number);
-void schro_queue_delete (SchroQueue *queue, SchroPictureNumber picture_number);
-void *schro_queue_remove (SchroQueue *queue, SchroPictureNumber 
picture_number);
+void schro_queue_add (SchroQueue *queue, void *element);
 void schro_queue_clear (SchroQueue *queue);
 void schro_queue_pop (SchroQueue *queue);
 void * schro_queue_pull (SchroQueue *queue);
-- 
1.5.6.5


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Schrodinger-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/schrodinger-devel

Reply via email to