         drawScreen.screenSaver(pgm_read_byte_near(channelNames + channelIndex), pgm_read_word_near(channelFreqTable + channelIndex));
 #endif
         do{
-            //delay(10); // timeout delay
-#ifdef USE_DIVERSITY
-            drawScreen.updateScreenSaver(active_receiver, readRSSI(), readRSSI(useReceiverA), readRSSI(useReceiverB));
+            rssi = readRSSI();
+
+#ifdef USE_DIVERSITY
+            drawScreen.updateScreenSaver(active_receiver, rssi, readRSSI(useReceiverA), readRSSI(useReceiverB));
 #else
-            drawScreen.updateScreenSaver(readRSSI());
+            drawScreen.updateScreenSaver(rssi);
 #endif
 
         }

        if(state == STATE_MANUAL) // MANUAL MODE
        {
#ifdef USE_IR_EMITTER
            if(millis() % 1000 == 0 && rssi < 20) { // send channel info every second until rssi is locked.
                sendIRPayload();
            }
#endif
            // handling of keys

            }
        }
#ifndef TVOUT_SCREENS
        // change to screensaver after lock and 5 seconds has passed.
        if(time_screen_saver+5000 < millis() && time_screen_saver!=0 && rssi > 20) {
            state = STATE_SCREEN_SAVER;
        }
#endif
