summaryrefslogtreecommitdiff
path: root/thread.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2002-03-17 18:00:00 +0100
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2002-03-17 18:00:00 +0100
commit217fcb26808f74c9de81b4c653757f75ba13852f (patch)
treeaf479bc0ed80611549280dcdc8ed324ace38b32e /thread.c
parenta001a4bf97715d62b387d1da9fd1e48382508428 (diff)
downloadvdr-patch-lnbsharing-217fcb26808f74c9de81b4c653757f75ba13852f.tar.gz
vdr-patch-lnbsharing-217fcb26808f74c9de81b4c653757f75ba13852f.tar.bz2
Version 1.0.0pre4vdr-1.0.0pre4
- Added 'Ca' code 201 for 'Cryptoworks, GOD-DIGITAL' to 'ca.conf' (thanks to Bernd Schweikert). - Fixed avoiding the primary DVB interface in case Setup.PrimaryLimit is 0. - Fixed handling CICAM settings if the first one of a DVB card was FTA. - Fixed reacting on changes in CICAM settings (needed to restart VDR before). - The "Blue" button in the "Main" menu now works as "Stop" button if a recording is currently being replayed. - New command line option '-m' to mute audio of the primary DVB device at startup (suggested by Mirko Günther). - The new SVDRP command VOLU can be used to control the audio volume (suggested by Mirko Günther). - Fixed resetting 'mute' state when setting the volume to a non-zero value. - Added log messages when deleting recordings in case the disk runs full while recording. - Fixed closing a pipe (used for replaying Dolby Digital audio), which sometimes left 'zombie' processes behind (thanks to Werner Fink for helping to debug this one). - Now starting the Dolby Digital output thread only if the recording actually contains Dolby Digital audio data (thanks to Werner Fink). - Implemented OSD for Volume and Mute (works only if there is no other OSD activity, but this should be no problem for normal use). - Changed the MANUAL description of the "Conditional Access" setup parameters to reflect the actual "CICAM DVBn m" notation in the "Setup" menu. - The new Setup parameter "Use time from transponder" can be used to define which transponder shall be used to set the system time (see MANUAL for details). If you have been using the SetSystemTime option previously, you now MUST select a channel that you trust to have a reliable time base. - Grouped the Setup parameters into several sub-menus, so that each group of parameters fits on a single screen - unless the height of the OSD has been set to a small value (based on code from Markus Lang). - Changed the title of the "Main" menu to "VDR". - Fixed displaying a system message while the replay mode is being shown. - Physically removing a deleted recording if one with the same name shall be deleted again. - The "Left" and "Right" keys are now used to page up and down in text displays (like the EPG descriptions or the results of commands executed from the "Commands" menu). - Fixed high CPU usage in transfer mode. - Replaced 'killproc' with 'killall' in 'runvdr', since apparently 'killproc' is not available by default on some Linux distributions, whereas 'killall' is. Please check if your system provides 'killall' - if it doesn't, please change this back in 'runvdr' and report this (thanks to Achim Lange). - The "Commands" menu now automatically assigns number keys as hotkeys to the commands. If you have preceeded your commands with digits you may want to remove these from your 'commands.conf' file. - The new Setup item "Restart" can be used to force a complete restart of VDR, including reloading the driver. Note that this can only work if VDR and the driver are wrapped into a mechanism that actually performs this action if VDR exits. The 'runvdr' script can be used for this purpose. - Refined texts of the "Setup" menu.
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/thread.c b/thread.c
index 94ba860..a7e77f1 100644
--- a/thread.c
+++ b/thread.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: thread.c 1.18 2002/02/23 13:49:06 kls Exp $
+ * $Id: thread.c 1.19 2002/03/09 12:05:44 kls Exp $
*/
#include "thread.h"
@@ -327,14 +327,21 @@ int cPipe::Close(void)
f = NULL;
}
- if (pid >= 0) {
+ if (pid > 0) {
int status = 0;
- struct rusage ru;
int i = 5;
- while (ret == -1 && i > 0) {
- usleep(1000);
- ret = wait4(pid, &status, WNOHANG, &ru);
+ while (i > 0) {
+ ret = waitpid(pid, &status, WNOHANG);
+ if (ret < 0) {
+ if (errno != EINTR && errno != ECHILD) {
+ LOG_ERROR;
+ break;
+ }
+ }
+ else if (ret == pid)
+ break;
i--;
+ usleep(100000);
}
if (!i) {