diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2000-10-08 09:25:20 +0200 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2000-10-08 09:25:20 +0200 |
commit | 97c3bb61482855769f0208062610543475f02006 (patch) | |
tree | 98ed285302e4b4a9fcc6186587b2da234776ec14 /dvbosd.c | |
parent | 60958ab1323d4f4750338165b89a99f4f2fbe4a7 (diff) | |
download | vdr-97c3bb61482855769f0208062610543475f02006.tar.gz vdr-97c3bb61482855769f0208062610543475f02006.tar.bz2 |
Remote control uses threads
Diffstat (limited to 'dvbosd.c')
-rw-r--r-- | dvbosd.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -4,10 +4,11 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbosd.c 1.2 2000/10/03 13:34:13 kls Exp $ + * $Id: dvbosd.c 1.3 2000/10/07 14:42:48 kls Exp $ */ #include "dvbosd.h" +#include <signal.h> #include <sys/ioctl.h> #include <sys/stat.h> #include <sys/unistd.h> @@ -138,11 +139,16 @@ void cDvbOsd::Cmd(OSD_Command cmd, int color, int x0, int y0, int x1, int y1, co dc.x1 = x1; dc.y1 = y1; dc.data = (void *)data; + // must block all signals, otherwise the command might not be fully executed + sigset_t set, oldset; + sigfillset(&set); + sigprocmask(SIG_BLOCK, &set, &oldset); ioctl(videoDev, VIDIOCSOSDCOMMAND, &dc); usleep(10); // XXX Workaround for a driver bug (cInterface::DisplayChannel() displayed texts at wrong places // XXX and sometimes the OSD was no longer displayed). // XXX Increase the value if the problem still persists on your particular system. // TODO Check if this is still necessary with driver versions after 0.7. + sigprocmask(SIG_SETMASK, &oldset, NULL); } } |