refactoring

This commit is contained in:
Devaev Maxim 2020-12-10 14:03:53 +03:00
parent 7225857fcc
commit b9e4975b77
3 changed files with 19 additions and 25 deletions

View File

@ -26,9 +26,9 @@
static int _sem_wait_monotonic(sem_t *sem, long double timeout);
rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) {
rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool server) {
rawsink_s *rawsink;
int flags = (master ? O_RDWR | O_CREAT : O_RDWR);
int flags = (server ? O_RDWR | O_CREAT : O_RDWR);
A_CALLOC(rawsink, 1);
rawsink->fd = -1;
@ -36,7 +36,7 @@ rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) {
rawsink->signal_sem = SEM_FAILED;
rawsink->lock_sem = SEM_FAILED;
rawsink->rm = rm;
rawsink->master = master;
rawsink->server = server;
A_CALLOC(rawsink->mem_name, strlen(name) + 8);
A_CALLOC(rawsink->signal_name, strlen(name) + 8);
@ -55,7 +55,7 @@ rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) {
} \
}
if (!master) {
if (!server) {
OPEN_SEM(lock, 1);
OPEN_SEM(signal, 0);
}
@ -84,7 +84,7 @@ rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master) {
}
}
if (master) {
if (server) {
OPEN_SEM(signal, 0);
OPEN_SEM(lock, 1);
}
@ -140,7 +140,7 @@ void rawsink_destroy(rawsink_s *rawsink) {
free(rawsink);
}
void rawsink_put(
void rawsink_server_put(
rawsink_s *rawsink,
const uint8_t *data, size_t size,
unsigned format, unsigned width, unsigned height,
@ -148,9 +148,9 @@ void rawsink_put(
long double now = get_now_monotonic();
assert(rawsink->master); // Master only
assert(rawsink->server);
if (rawsink->master_failed) {
if (rawsink->server_failed) {
return;
}
@ -198,17 +198,17 @@ void rawsink_put(
error:
LOG_ERROR("RAW sink completely disabled due error");
rawsink->master_failed = true;
rawsink->server_failed = true;
}
int rawsink_get(
int rawsink_client_get(
rawsink_s *rawsink,
char *data, size_t *size,
unsigned *format, unsigned *width, unsigned *height,
long double *grab_ts,
long double timeout) {
assert(!rawsink->master); // Slave only
assert(!rawsink->server); // Client only
# define WAIT_SEM(_role) { \
if (_sem_wait_monotonic(rawsink->_role##_sem, timeout) < 0) { \

View File

@ -65,22 +65,22 @@ typedef struct {
sem_t *lock_sem;
bool rm;
bool master;
bool server;
bool master_failed;
bool server_failed;
} rawsink_s;
rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool master);
rawsink_s *rawsink_init(const char *name, mode_t mode, bool rm, bool server);
void rawsink_destroy(rawsink_s *rawsink);
void rawsink_put(
void rawsink_server_put(
rawsink_s *rawsink,
const uint8_t *data, size_t size,
unsigned format, unsigned witdh, unsigned height,
long double grab_ts);
int rawsink_get(
int rawsink_client_get(
rawsink_s *rawsink,
char *data, size_t *size,
unsigned *format, unsigned *width, unsigned *height,

View File

@ -220,17 +220,11 @@ void stream_loop(stream_s *stream) {
LOG_VERBOSE("Fluency: delay=%.03Lf, grab_after=%.03Lf", fluency_delay, grab_after);
# ifdef WITH_RAWSINK
# define HW(_next) DEV(run->hw_buffers[buf_index]._next)
if (rawsink) {
rawsink_put(
rawsink,
DEV(run->hw_buffers[buf_index].data),
DEV(run->hw_buffers[buf_index].used),
DEV(run->hw_buffers[buf_index].format),
DEV(run->hw_buffers[buf_index].width),
DEV(run->hw_buffers[buf_index].height),
DEV(run->hw_buffers[buf_index].grab_ts)
);
rawsink_server_put(rawsink, HW(data), HW(used), HW(format), HW(width), HW(height), HW(grab_ts));
}
# undef HW
# endif
_workers_pool_assign(pool, ready_wr, buf_index);