ftp://ftp.krokus.ru/pub/OpenBSD/distfiles/xscreensaver-4.22.tar.gz
[xscreensaver] / hacks / analogtv.c
index 487b2efd50eff2f7241e4f0afdcd93e97a66e9b2..3bd9d46085aebdaab049663aa24b5be075a33034 100644 (file)
@@ -852,7 +852,7 @@ void
 analogtv_setup_sync(analogtv_input *input, int do_cb, int do_ssavi)
 {
   int i,lineno,vsync;
-  char *sig;
+  signed char *sig;
 
   int synclevel = do_ssavi ? ANALOGTV_WHITE_LEVEL : ANALOGTV_SYNC_LEVEL;
 
@@ -887,7 +887,7 @@ analogtv_sync(analogtv *it)
 {
   int cur_hsync=it->cur_hsync;
   int cur_vsync=it->cur_vsync;
-  int lineno;
+  int lineno = 0;
   int i,j;
   double osc,filt;
   double *sp;
@@ -1566,6 +1566,9 @@ analogtv_draw(analogtv *it)
 #endif
 
   XSync(it->dpy,0);
+
+  /* Small delay to avoid hogging the CPU. */
+  usleep (10000);
 }
 
 analogtv_input *
@@ -1720,9 +1723,9 @@ void analogtv_add_signal(analogtv *it, analogtv_reception *rec)
   double *ps=it->rx_signal;
   double *pe=it->rx_signal + ANALOGTV_SIGNAL_LEN;
   double *p=ps;
-  char *ss=&inp->signal[0][0];
-  char *se=&inp->signal[0][0] + ANALOGTV_SIGNAL_LEN;
-  char *s=ss + ((unsigned)rec->ofs % ANALOGTV_SIGNAL_LEN);
+  signed char *ss=&inp->signal[0][0];
+  signed char *se=&inp->signal[0][0] + ANALOGTV_SIGNAL_LEN;
+  signed char *s=ss + ((unsigned)rec->ofs % ANALOGTV_SIGNAL_LEN);
   int i;
   int ec=it->channel_change_cycles;
   double level=rec->level;