Rename queue to sc_queue
Add a scrcpy-specific prefix.
This commit is contained in:
parent
af8a21ed7c
commit
099cba07f0
4 changed files with 34 additions and 34 deletions
|
@ -57,9 +57,9 @@ record_packet_delete(struct record_packet *rec) {
|
||||||
|
|
||||||
static void
|
static void
|
||||||
recorder_queue_clear(struct recorder_queue *queue) {
|
recorder_queue_clear(struct recorder_queue *queue) {
|
||||||
while (!queue_is_empty(queue)) {
|
while (!sc_queue_is_empty(queue)) {
|
||||||
struct record_packet *rec;
|
struct record_packet *rec;
|
||||||
queue_take(queue, next, &rec);
|
sc_queue_take(queue, next, &rec);
|
||||||
record_packet_delete(rec);
|
record_packet_delete(rec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,14 +135,14 @@ run_recorder(void *data) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
sc_mutex_lock(&recorder->mutex);
|
sc_mutex_lock(&recorder->mutex);
|
||||||
|
|
||||||
while (!recorder->stopped && queue_is_empty(&recorder->queue)) {
|
while (!recorder->stopped && sc_queue_is_empty(&recorder->queue)) {
|
||||||
sc_cond_wait(&recorder->queue_cond, &recorder->mutex);
|
sc_cond_wait(&recorder->queue_cond, &recorder->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if stopped is set, continue to process the remaining events (to
|
// if stopped is set, continue to process the remaining events (to
|
||||||
// finish the recording) before actually stopping
|
// finish the recording) before actually stopping
|
||||||
|
|
||||||
if (recorder->stopped && queue_is_empty(&recorder->queue)) {
|
if (recorder->stopped && sc_queue_is_empty(&recorder->queue)) {
|
||||||
sc_mutex_unlock(&recorder->mutex);
|
sc_mutex_unlock(&recorder->mutex);
|
||||||
struct record_packet *last = recorder->previous;
|
struct record_packet *last = recorder->previous;
|
||||||
if (last) {
|
if (last) {
|
||||||
|
@ -161,7 +161,7 @@ run_recorder(void *data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct record_packet *rec;
|
struct record_packet *rec;
|
||||||
queue_take(&recorder->queue, next, &rec);
|
sc_queue_take(&recorder->queue, next, &rec);
|
||||||
|
|
||||||
sc_mutex_unlock(&recorder->mutex);
|
sc_mutex_unlock(&recorder->mutex);
|
||||||
|
|
||||||
|
@ -235,7 +235,7 @@ recorder_open(struct recorder *recorder, const AVCodec *input_codec) {
|
||||||
goto error_mutex_destroy;
|
goto error_mutex_destroy;
|
||||||
}
|
}
|
||||||
|
|
||||||
queue_init(&recorder->queue);
|
sc_queue_init(&recorder->queue);
|
||||||
recorder->stopped = false;
|
recorder->stopped = false;
|
||||||
recorder->failed = false;
|
recorder->failed = false;
|
||||||
recorder->header_written = false;
|
recorder->header_written = false;
|
||||||
|
@ -340,7 +340,7 @@ recorder_push(struct recorder *recorder, const AVPacket *packet) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
queue_push(&recorder->queue, next, rec);
|
sc_queue_push(&recorder->queue, next, rec);
|
||||||
sc_cond_signal(&recorder->queue_cond);
|
sc_cond_signal(&recorder->queue_cond);
|
||||||
|
|
||||||
sc_mutex_unlock(&recorder->mutex);
|
sc_mutex_unlock(&recorder->mutex);
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct record_packet {
|
||||||
struct record_packet *next;
|
struct record_packet *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct recorder_queue QUEUE(struct record_packet);
|
struct recorder_queue SC_QUEUE(struct record_packet);
|
||||||
|
|
||||||
struct recorder {
|
struct recorder {
|
||||||
struct sc_packet_sink packet_sink; // packet sink trait
|
struct sc_packet_sink packet_sink; // packet sink trait
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// generic intrusive FIFO queue
|
// generic intrusive FIFO queue
|
||||||
#ifndef QUEUE_H
|
#ifndef SC_QUEUE_H
|
||||||
#define QUEUE_H
|
#define SC_QUEUE_H
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
@ -10,15 +10,15 @@
|
||||||
|
|
||||||
// To define a queue type of "struct foo":
|
// To define a queue type of "struct foo":
|
||||||
// struct queue_foo QUEUE(struct foo);
|
// struct queue_foo QUEUE(struct foo);
|
||||||
#define QUEUE(TYPE) { \
|
#define SC_QUEUE(TYPE) { \
|
||||||
TYPE *first; \
|
TYPE *first; \
|
||||||
TYPE *last; \
|
TYPE *last; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define queue_init(PQ) \
|
#define sc_queue_init(PQ) \
|
||||||
(void) ((PQ)->first = (PQ)->last = NULL)
|
(void) ((PQ)->first = (PQ)->last = NULL)
|
||||||
|
|
||||||
#define queue_is_empty(PQ) \
|
#define sc_queue_is_empty(PQ) \
|
||||||
!(PQ)->first
|
!(PQ)->first
|
||||||
|
|
||||||
// NEXTFIELD is the field in the ITEM type used for intrusive linked-list
|
// NEXTFIELD is the field in the ITEM type used for intrusive linked-list
|
||||||
|
@ -30,30 +30,30 @@
|
||||||
// };
|
// };
|
||||||
//
|
//
|
||||||
// // define the type "struct my_queue"
|
// // define the type "struct my_queue"
|
||||||
// struct my_queue QUEUE(struct foo);
|
// struct my_queue SC_QUEUE(struct foo);
|
||||||
//
|
//
|
||||||
// struct my_queue queue;
|
// struct my_queue queue;
|
||||||
// queue_init(&queue);
|
// sc_queue_init(&queue);
|
||||||
//
|
//
|
||||||
// struct foo v1 = { .value = 42 };
|
// struct foo v1 = { .value = 42 };
|
||||||
// struct foo v2 = { .value = 27 };
|
// struct foo v2 = { .value = 27 };
|
||||||
//
|
//
|
||||||
// queue_push(&queue, next, v1);
|
// sc_queue_push(&queue, next, v1);
|
||||||
// queue_push(&queue, next, v2);
|
// sc_queue_push(&queue, next, v2);
|
||||||
//
|
//
|
||||||
// struct foo *foo;
|
// struct foo *foo;
|
||||||
// queue_take(&queue, next, &foo);
|
// sc_queue_take(&queue, next, &foo);
|
||||||
// assert(foo->value == 42);
|
// assert(foo->value == 42);
|
||||||
// queue_take(&queue, next, &foo);
|
// sc_queue_take(&queue, next, &foo);
|
||||||
// assert(foo->value == 27);
|
// assert(foo->value == 27);
|
||||||
// assert(queue_is_empty(&queue));
|
// assert(sc_queue_is_empty(&queue));
|
||||||
//
|
//
|
||||||
|
|
||||||
// push a new item into the queue
|
// push a new item into the queue
|
||||||
#define queue_push(PQ, NEXTFIELD, ITEM) \
|
#define sc_queue_push(PQ, NEXTFIELD, ITEM) \
|
||||||
(void) ({ \
|
(void) ({ \
|
||||||
(ITEM)->NEXTFIELD = NULL; \
|
(ITEM)->NEXTFIELD = NULL; \
|
||||||
if (queue_is_empty(PQ)) { \
|
if (sc_queue_is_empty(PQ)) { \
|
||||||
(PQ)->first = (PQ)->last = (ITEM); \
|
(PQ)->first = (PQ)->last = (ITEM); \
|
||||||
} else { \
|
} else { \
|
||||||
(PQ)->last->NEXTFIELD = (ITEM); \
|
(PQ)->last->NEXTFIELD = (ITEM); \
|
||||||
|
@ -65,9 +65,9 @@
|
||||||
// the result is stored in *(PITEM)
|
// the result is stored in *(PITEM)
|
||||||
// (without typeof(), we could not store a local variable having the correct
|
// (without typeof(), we could not store a local variable having the correct
|
||||||
// type so that we can "return" it)
|
// type so that we can "return" it)
|
||||||
#define queue_take(PQ, NEXTFIELD, PITEM) \
|
#define sc_queue_take(PQ, NEXTFIELD, PITEM) \
|
||||||
(void) ({ \
|
(void) ({ \
|
||||||
assert(!queue_is_empty(PQ)); \
|
assert(!sc_queue_is_empty(PQ)); \
|
||||||
*(PITEM) = (PQ)->first; \
|
*(PITEM) = (PQ)->first; \
|
||||||
(PQ)->first = (PQ)->first->NEXTFIELD; \
|
(PQ)->first = (PQ)->first->NEXTFIELD; \
|
||||||
})
|
})
|
||||||
|
|
|
@ -10,28 +10,28 @@ struct foo {
|
||||||
};
|
};
|
||||||
|
|
||||||
static void test_queue(void) {
|
static void test_queue(void) {
|
||||||
struct my_queue QUEUE(struct foo) queue;
|
struct my_queue SC_QUEUE(struct foo) queue;
|
||||||
queue_init(&queue);
|
sc_queue_init(&queue);
|
||||||
|
|
||||||
assert(queue_is_empty(&queue));
|
assert(sc_queue_is_empty(&queue));
|
||||||
|
|
||||||
struct foo v1 = { .value = 42 };
|
struct foo v1 = { .value = 42 };
|
||||||
struct foo v2 = { .value = 27 };
|
struct foo v2 = { .value = 27 };
|
||||||
|
|
||||||
queue_push(&queue, next, &v1);
|
sc_queue_push(&queue, next, &v1);
|
||||||
queue_push(&queue, next, &v2);
|
sc_queue_push(&queue, next, &v2);
|
||||||
|
|
||||||
struct foo *foo;
|
struct foo *foo;
|
||||||
|
|
||||||
assert(!queue_is_empty(&queue));
|
assert(!sc_queue_is_empty(&queue));
|
||||||
queue_take(&queue, next, &foo);
|
sc_queue_take(&queue, next, &foo);
|
||||||
assert(foo->value == 42);
|
assert(foo->value == 42);
|
||||||
|
|
||||||
assert(!queue_is_empty(&queue));
|
assert(!sc_queue_is_empty(&queue));
|
||||||
queue_take(&queue, next, &foo);
|
sc_queue_take(&queue, next, &foo);
|
||||||
assert(foo->value == 27);
|
assert(foo->value == 27);
|
||||||
|
|
||||||
assert(queue_is_empty(&queue));
|
assert(sc_queue_is_empty(&queue));
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
|
Loading…
Reference in a new issue