http://www.jwz.org/xscreensaver/xscreensaver-5.12.tar.gz
[xscreensaver] / hacks / analogtv.c
index c7fb266de3214568dc2f52fe08370cf26392c4b1..63368f5f73f5509ed31a8f26ca0c649c78b5d63f 100644 (file)
@@ -388,6 +388,7 @@ analogtv_allocate(Display *dpy, Window window)
   analogtv_init();
 
   it=(analogtv *)calloc(1,sizeof(analogtv));
+  if (!it) return 0;
   it->dpy=dpy;
   it->window=window;
 
@@ -493,6 +494,7 @@ analogtv_release(analogtv *it)
   it->gc=NULL;
   if (it->n_colors) XFreeColors(it->dpy, it->colormap, it->colors, it->n_colors, 0L);
   it->n_colors=0;
+  free(it);
 }
 
 
@@ -837,7 +839,7 @@ analogtv_setup_frame(analogtv *it)
       }
       hnc += hni + (int)(random()%65536)-32768;
     }
-    hnc -= (ANALOGTV_V * ANALOGTV_H)<<8;
+/*    hnc -= (ANALOGTV_V * ANALOGTV_H)<<8;*/
   }
 
   if (it->rx_signal_level != 0.0)
@@ -898,7 +900,7 @@ analogtv_sync(analogtv *it)
   double *sp;
   double cbfc=1.0/128.0;
 
-  sp = it->rx_signal + lineno*ANALOGTV_H + cur_hsync;
+/*  sp = it->rx_signal + lineno*ANALOGTV_H + cur_hsync;*/
   for (i=-32; i<32; i++) {
     lineno = (cur_vsync + i + ANALOGTV_V) % ANALOGTV_V;
     sp = it->rx_signal + lineno*ANALOGTV_H;
@@ -1029,11 +1031,11 @@ analogtv_setup_levels(analogtv *it, double avgheight)
       it->leveltable[height][0].index=0;
     }
     if (avgheight>=5) {
-      it->leveltable[height][height-1].index=0;
+      if (height >= 1) it->leveltable[height][height-1].index=0;
     }
     if (avgheight>=7) {
       it->leveltable[height][1].index=1;
-      it->leveltable[height][height-2].index=1;
+      if (height >= 2) it->leveltable[height][height-2].index=1;
     }
 
     for (i=0; i<height; i++) {
@@ -1180,7 +1182,7 @@ analogtv_draw(analogtv *it)
   float *rgb_start, *rgb_end;
   double pixbright;
   int pixmultinc;
-  int bigloadchange,drawcount;
+  int /*bigloadchange,*/drawcount;
   double baseload;
   double puheight;
   int overall_top, overall_bot;
@@ -1189,6 +1191,7 @@ analogtv_draw(analogtv *it)
   float *raw_rgb_end=raw_rgb_start+3*it->subwidth;
   float *rrp;
 
+  if (! raw_rgb_start) return;
   analogtv_setup_frame(it);
   analogtv_set_demod(it);
 
@@ -1204,7 +1207,7 @@ analogtv_draw(analogtv *it)
   baseload=0.5;
   /* if (it->hashnoise_on) baseload=0.5; */
 
-  bigloadchange=1;
+  /*bigloadchange=1;*/
   drawcount=0;
   it->crtload[ANALOGTV_TOP-1]=baseload;
   puheight = puramp(it, 2.0, 1.0, 1.3) * it->height_control *
@@ -1241,7 +1244,7 @@ analogtv_draw(analogtv *it)
 
     if (lineno==it->shrinkpulse) {
       baseload += 0.4;
-      bigloadchange=1;
+      /*bigloadchange=1;*/
       it->shrinkpulse=-1;
     }
 
@@ -1294,7 +1297,7 @@ analogtv_draw(analogtv *it)
 
     {
       int totsignal=0;
-      double ncl,diff;
+      double ncl/*,diff*/;
 
       for (i=0; i<ANALOGTV_PIC_LEN; i++) {
         totsignal += signal[i];
@@ -1305,8 +1308,8 @@ analogtv_draw(analogtv *it)
               (totsignal-30000)/100000.0 +
               (slineno>184 ? (slineno-184)*(lineno-184)*0.001 * it->squeezebottom
                : 0.0));
-      diff=ncl - it->crtload[lineno];
-      bigloadchange = (diff>0.01 || diff<-0.01);
+      /*diff=ncl - it->crtload[lineno];*/
+      /*bigloadchange = (diff>0.01 || diff<-0.01);*/
       it->crtload[lineno]=ncl;
     }