aboutsummaryrefslogtreecommitdiff
path: root/src/VideoPlayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VideoPlayer.cpp')
-rw-r--r--src/VideoPlayer.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/src/VideoPlayer.cpp b/src/VideoPlayer.cpp
index f9ae04d..75871da 100644
--- a/src/VideoPlayer.cpp
+++ b/src/VideoPlayer.cpp
@@ -16,6 +16,32 @@
#include <fcntl.h>
#include <signal.h>
+static ssize_t read_eintr(int fd, void *buffer, size_t size) {
+ while(true) {
+ ssize_t bytes_read = read(fd, buffer, size);
+ if(bytes_read == -1) {
+ if(errno != EINTR)
+ return -1;
+ } else {
+ return bytes_read;
+ }
+ }
+}
+
+static ssize_t write_all(int fd, const void *buffer, size_t size) {
+ ssize_t bytes_written = 0;
+ while((size_t)bytes_written < size) {
+ ssize_t written = write(fd, (char*)buffer + bytes_written, size - bytes_written);
+ if(written == -1) {
+ if(errno != EINTR)
+ return -1;
+ } else {
+ bytes_written += written;
+ }
+ }
+ return bytes_written;
+}
+
namespace QuickMedia {
static const double RETRY_TIME_SEC = 0.5;
static const int MAX_RETRIES_CONNECT = 1000;
@@ -162,7 +188,7 @@ namespace QuickMedia {
"--cache=yes",
"--cache-on-disk=yes",
"--cache-secs=86400", // 24 hours
- "--sub-font-size=40",
+ "--sub-font-size=60",
"--sub-margin-y=45",
"--sub-border-size=1.95",
//"--force_all_formats=no",
@@ -376,7 +402,7 @@ namespace QuickMedia {
std::string json_errors;
char buffer[2048];
- ssize_t bytes_read = read(ipc_socket, buffer, sizeof(buffer));
+ ssize_t bytes_read = read_eintr(ipc_socket, buffer, sizeof(buffer));
if(bytes_read == -1) {
int err = errno;
if(err != EAGAIN && err != EWOULDBLOCK) {
@@ -517,7 +543,7 @@ namespace QuickMedia {
if(!connected_to_ipc)
return Error::FAIL_NOT_CONNECTED;
- if(send(ipc_socket, cmd, size, 0) == -1) {
+ if(write_all(ipc_socket, cmd, size) == -1) {
fprintf(stderr, "Failed to send to ipc socket, error: %s, command: %.*s\n", strerror(errno), (int)size, cmd);
return Error::FAIL_TO_SEND;
}