[MPlayer-cvslog] r34371 - trunk/stream/cache2.c
reimar
subversion at mplayerhq.hu
Thu Dec 1 20:10:15 CET 2011
Author: reimar
Date: Thu Dec 1 20:10:15 2011
New Revision: 34371
Log:
Make cache process detect when the main process disappeared and
make it exit on its own in that case.
Modified:
trunk/stream/cache2.c
Modified: trunk/stream/cache2.c
==============================================================================
--- trunk/stream/cache2.c Thu Dec 1 20:09:20 2011 (r34370)
+++ trunk/stream/cache2.c Thu Dec 1 20:10:15 2011 (r34371)
@@ -75,6 +75,9 @@ typedef struct {
int back_size; // we should keep back_size amount of old bytes for backward seek
int fill_limit; // we should fill buffer only if space>=fill_limit
int seek_limit; // keep filling cache if distance is less that seek limit
+#if FORKED_CACHE
+ pid_t ppid; // parent PID to detect killed parent
+#endif
// filler's pointers:
int eof;
off_t min_filepos; // buffer contain only a part of the file, from min-max pos
@@ -279,6 +282,13 @@ static int cache_execute_control(cache_v
s->stream_time_pos = pos;
else
s->stream_time_pos = MP_NOPTS_VALUE;
+#if FORKED_CACHE
+ // if parent PID changed, main process was killed -> exit
+ if (s->ppid != getppid()) {
+ mp_msg(MSGT_CACHE, MSGL_WARN, "Parent process disappeared, exiting cache process.\n");
+ return 0;
+ }
+#endif
last = GetTimerMS();
}
if (s->control == -1) return 1;
@@ -346,6 +356,9 @@ static cache_vars_t* cache_init(int size
s->fill_limit=8*sector;
s->back_size=s->buffer_size/2;
+#if FORKED_CACHE
+ s->ppid = getpid();
+#endif
return s;
}
More information about the MPlayer-cvslog
mailing list