diff options
Diffstat (limited to 'kiro-trb.c')
| -rw-r--r-- | kiro-trb.c | 8 | 
1 files changed, 6 insertions, 2 deletions
@@ -211,9 +211,9 @@ void* kiro_trb_dma_push (KiroTrb *self)  {      KiroTrbPrivate* priv = KIRO_TRB_GET_PRIVATE(self);      if(priv->initialized != 1) -        return -1; +        return NULL;      if((priv->current + priv->element_size) > (priv->mem + priv->buff_size)) -        return -1; +        return NULL;      void *mem_out = priv->current;      priv->current += priv->element_size;      if(priv->current >= priv->frame_top + (priv->element_size * priv->max_elements)) @@ -229,6 +229,8 @@ void* kiro_trb_dma_push (KiroTrb *self)  void kiro_trb_refresh (KiroTrb *self)  {      KiroTrbPrivate* priv = KIRO_TRB_GET_PRIVATE(self); +    if(priv->initialized != 1) +        return;      struct KiroTrbInfo *tmp = (struct KiroTrbInfo *)priv->mem;      priv->buff_size = tmp->buffer_size_bytes;      priv->element_size = tmp->element_size; @@ -246,6 +248,7 @@ void kiro_trb_adopt (KiroTrb *self, void *buff_in)      if(priv->mem)          free(priv->mem);      priv->mem = buff_in; +    priv->initialized = 1;      kiro_trb_refresh(self);  } @@ -261,6 +264,7 @@ int kiro_trb_clone (KiroTrb *self, void *buff_in)      if(priv->mem)          free(priv->mem);      priv->mem = newmem; +    priv->initialized = 1;      kiro_trb_refresh(self);      return 0;  }  | 
