From: Olaf Wintermann Date: Fri, 7 Jan 2022 08:21:05 +0000 (+0100) Subject: shutdown existing player when a new file is opened X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/commitdiff_plain/38abddf60d71d5efbac50802127d2103ec196686 shutdown existing player when a new file is opened --- diff --git a/application/player.c b/application/player.c index 213d184..8e03fbc 100644 --- a/application/player.c +++ b/application/player.c @@ -28,6 +28,7 @@ #include #include #include +#include #include @@ -36,6 +37,7 @@ extern char **environ; #define WID_ARG_BUFSIZE 24 static void* start_player(void *data); +static void* player_io_thread(void *data); void PlayerOpenFile(MainWindow *win) { pthread_t tid; @@ -98,15 +100,33 @@ static void* start_player(void *data) { close(pin[0]); close(pout[1]); player->process = player_pid; + player->isactive = TRUE; if(win->player) { PlayerDestroy(win->player); } win->player = player; + // start thread for mplayer IO + pthread_t tid; + if(pthread_create(&tid, NULL, player_io_thread, player)) { + perror("pthread_create"); + } + return NULL; } void PlayerDestroy(Player *p) { + if(p->isactive) { + close(p->in); + close(p->out); + kill(p->process, SIGTERM); + } free(p); } + +static void* player_io_thread(void *data) { + Player *player = data; + + return NULL; +} diff --git a/application/window.h b/application/window.h index 0ac5cc7..eb47127 100644 --- a/application/window.h +++ b/application/window.h @@ -36,6 +36,7 @@ typedef struct Player { pid_t process; int in; int out; + bool isactive; } Player; typedef struct MainWindow {