refactoring

This commit is contained in:
Devaev Maxim
2020-12-08 08:13:56 +03:00
parent 283eba0666
commit 2fd3bc34b5
2 changed files with 24 additions and 24 deletions

View File

@@ -46,7 +46,7 @@ struct rawsink_t *rawsink_init(const char *name, mode_t mode, bool rm, bool mast
A_CALLOC(rawsink, 1);
rawsink->fd = -1;
rawsink->picture = MAP_FAILED;
rawsink->shared = MAP_FAILED;
rawsink->signal_sem = SEM_FAILED;
rawsink->lock_sem = SEM_FAILED;
rawsink->rm = rm;
@@ -80,14 +80,14 @@ struct rawsink_t *rawsink_init(const char *name, mode_t mode, bool rm, bool mast
goto error;
}
if (ftruncate(rawsink->fd, sizeof(struct rawsink_picture_t)) < 0) {
if (ftruncate(rawsink->fd, sizeof(struct rawsink_shared_t)) < 0) {
LOG_PERROR("Can't truncate RAW sink memory");
goto error;
}
if ((rawsink->picture = mmap(
if ((rawsink->shared = mmap(
NULL,
sizeof(struct rawsink_picture_t),
sizeof(struct rawsink_shared_t),
PROT_READ | PROT_WRITE,
MAP_SHARED,
rawsink->fd,
@@ -131,8 +131,8 @@ void rawsink_destroy(struct rawsink_t *rawsink) {
# undef CLOSE_SEM
if (rawsink->picture != MAP_FAILED) {
if (munmap(rawsink->picture, sizeof(struct rawsink_picture_t)) < 0) {
if (rawsink->shared != MAP_FAILED) {
if (munmap(rawsink->shared, sizeof(struct rawsink_shared_t)) < 0) {
LOG_PERROR("Can't unmap RAW sink memory");
}
}
@@ -181,14 +181,14 @@ void rawsink_put(
goto error;
}
# define PIC(_next) rawsink->picture->_next
PIC(format) = format;
PIC(width) = width;
PIC(height) = height;
PIC(grab_ts) = grab_ts;
PIC(size) = size;
memcpy(PIC(data), data, size);
# undef PIC
# define SH(_field) rawsink->shared->_field = _field
SH(format);
SH(width);
SH(height);
SH(grab_ts);
SH(size);
memcpy(rawsink->shared->data, data, size);
# undef SH
if (sem_post(rawsink->signal_sem) < 0) {
LOG_PERROR("RAWSINK: Can't post %s", rawsink->signal_name);
@@ -237,14 +237,14 @@ int rawsink_get(
WAIT_SEM(signal);
WAIT_SEM(lock);
# define PIC(_next) rawsink->picture->_next
*format = PIC(format);
*width = PIC(width);
*height = PIC(height);
*grab_ts = PIC(grab_ts);
*size = PIC(size);
memcpy(data, PIC(data), *size);
# undef PIC
# define SH(_field) *_field = rawsink->shared->_field
SH(format);
SH(width);
SH(height);
SH(grab_ts);
SH(size);
memcpy(data, rawsink->shared->data, *size);
# undef SH
if (sem_post(rawsink->lock_sem) < 0) {
LOG_PERROR("RAWSINK: Can't post %s", rawsink->lock_name);

View File

@@ -35,7 +35,7 @@
#define RAWSINK_MAX_DATA ((size_t)(CFG_RAWSINK_MAX_DATA))
struct rawsink_picture_t {
struct rawsink_shared_t {
unsigned format;
unsigned width;
unsigned height;
@@ -50,7 +50,7 @@ struct rawsink_t {
char *lock_name;
int fd;
struct rawsink_picture_t *picture;
struct rawsink_shared_t *shared;
sem_t *signal_sem;
sem_t *lock_sem;