diff options
author | Matt A. Tobin <email@mattatobin.com> | 2019-11-03 14:35:17 -0500 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2019-11-03 14:35:17 -0500 |
commit | a57983a2176afb4bab3c22efa6a24d39f3c11163 (patch) | |
tree | 56dbcb66e07d997d817e40c1fd8005ee75142e8b /media/libcubeb/src/cubeb_array_queue.h | |
parent | 6513e41cb75e64384f35470d59ad6a4f88092e82 (diff) | |
parent | 1960d6e08a949ceed50e6a18240d40a7ecee879c (diff) | |
download | UXP-a57983a2176afb4bab3c22efa6a24d39f3c11163.tar UXP-a57983a2176afb4bab3c22efa6a24d39f3c11163.tar.gz UXP-a57983a2176afb4bab3c22efa6a24d39f3c11163.tar.lz UXP-a57983a2176afb4bab3c22efa6a24d39f3c11163.tar.xz UXP-a57983a2176afb4bab3c22efa6a24d39f3c11163.zip |
Merge branch 'master' into mailnews-work
Diffstat (limited to 'media/libcubeb/src/cubeb_array_queue.h')
-rw-r--r-- | media/libcubeb/src/cubeb_array_queue.h | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/media/libcubeb/src/cubeb_array_queue.h b/media/libcubeb/src/cubeb_array_queue.h deleted file mode 100644 index a8ea4cd17..000000000 --- a/media/libcubeb/src/cubeb_array_queue.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright © 2016 Mozilla Foundation - * - * This program is made available under an ISC-style license. See the - * accompanying file LICENSE for details. - */ - -#ifndef CUBEB_ARRAY_QUEUE_H -#define CUBEB_ARRAY_QUEUE_H - -#include <assert.h> -#include <pthread.h> -#include <unistd.h> - -#if defined(__cplusplus) -extern "C" { -#endif - -typedef struct -{ - void ** buf; - size_t num; - size_t writePos; - size_t readPos; - pthread_mutex_t mutex; -} array_queue; - -array_queue * array_queue_create(size_t num) -{ - assert(num != 0); - array_queue * new_queue = (array_queue*)calloc(1, sizeof(array_queue)); - new_queue->buf = (void **)calloc(1, sizeof(void *) * num); - new_queue->readPos = 0; - new_queue->writePos = 0; - new_queue->num = num; - - pthread_mutex_init(&new_queue->mutex, NULL); - - return new_queue; -} - -void array_queue_destroy(array_queue * aq) -{ - assert(aq); - - free(aq->buf); - pthread_mutex_destroy(&aq->mutex); - free(aq); -} - -int array_queue_push(array_queue * aq, void * item) -{ - assert(item); - - pthread_mutex_lock(&aq->mutex); - int ret = -1; - if(aq->buf[aq->writePos % aq->num] == NULL) - { - aq->buf[aq->writePos % aq->num] = item; - aq->writePos = (aq->writePos + 1) % aq->num; - ret = 0; - } - // else queue is full - pthread_mutex_unlock(&aq->mutex); - return ret; -} - -void* array_queue_pop(array_queue * aq) -{ - pthread_mutex_lock(&aq->mutex); - void * value = aq->buf[aq->readPos % aq->num]; - if(value) - { - aq->buf[aq->readPos % aq->num] = NULL; - aq->readPos = (aq->readPos + 1) % aq->num; - } - pthread_mutex_unlock(&aq->mutex); - return value; -} - -size_t array_queue_get_size(array_queue * aq) -{ - pthread_mutex_lock(&aq->mutex); - ssize_t r = aq->writePos - aq->readPos; - if (r < 0) { - r = aq->num + r; - assert(r >= 0); - } - pthread_mutex_unlock(&aq->mutex); - return (size_t)r; -} - -#if defined(__cplusplus) -} -#endif - -#endif //CUBE_ARRAY_QUEUE_H |