Playback: use POSIX API

This commit is contained in:
Martin Pulec
2013-12-04 12:09:06 +01:00
parent 5b1ac14b2e
commit f8b54ea9c0
2 changed files with 19 additions and 13 deletions

View File

@@ -5,9 +5,9 @@ CXX = @CXX@
QMAKE = @QMAKE@ QMAKE = @QMAKE@
LINKER = @LINKER@ LINKER = @LINKER@
COMMON_FLAGS = -g @DEFS@ -DPATH_PREFIX=@prefix@ -DLIB_DIR=@libdir@ -Wall -Wextra -Wpointer-arith -msse2 COMMON_FLAGS = -g @DEFS@ -DPATH_PREFIX=@prefix@ -DLIB_DIR=@libdir@ -Wall -Wextra -Wpointer-arith -msse2
CFLAGS = @CFLAGS@ @X_CFLAGS@ $(COMMON_FLAGS) CFLAGS = @CFLAGS@ @X_CFLAGS@ $(COMMON_FLAGS) -D_GNU_SOURCE
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@ -D_GNU_SOURCE
CXXFLAGS = @CXXFLAGS@ $(COMMON_FLAGS) CXXFLAGS = @CXXFLAGS@ $(COMMON_FLAGS) -D_GNU_SOURCE
NVCCFLAGS = @NVCCFLAGS@ NVCCFLAGS = @NVCCFLAGS@
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
LIBS += @LIBS@ @JACK_TRANS_LIB@ @MATHLIBS@ @COREAUDIO_LIB@ \ LIBS += @LIBS@ @JACK_TRANS_LIB@ @MATHLIBS@ @COREAUDIO_LIB@ \

View File

@@ -967,24 +967,30 @@ static void * reading_thread(void *args)
perror("stat"); perror("stat");
goto next; goto next;
} }
FILE *file = fopen(name, "rb"); int fd = open(name, O_RDONLY|O_DIRECT);
if(!file) { if(fd == -1) {
perror("fopen"); perror("open");
goto next; goto next;
} }
new_entry = malloc(sizeof(struct processed_entry)); new_entry = malloc(sizeof(struct processed_entry));
assert(new_entry != NULL); assert(new_entry != NULL);
new_entry->data_len = sb.st_size; new_entry->data_len = sb.st_size;
new_entry->data = malloc(new_entry->data_len); posix_memalign((void **) &new_entry->data,
512, new_entry->data_len);
new_entry->next = NULL; new_entry->next = NULL;
assert(new_entry->data != NULL); assert(new_entry->data != NULL);
size_t res = fread(new_entry->data, new_entry->data_len, 1, file); ssize_t bytes = 0;
fclose(file); do {
if(res != 1) { ssize_t res = read(fd, new_entry->data + bytes,
perror("fread"); new_entry->data_len - bytes);
goto next; if (res <= 0) {
} perror("read");
break;
}
bytes += res;
} while (bytes < new_entry->data_len);
close(fd);
pthread_mutex_lock(&s->lock); pthread_mutex_lock(&s->lock);
{ {