 unsigned int byte_i;
 uint8_t bit_i;
 
+inline static void try_buf_swap(void);
 inline static void frame_store(uint8_t intensity);
 inline static void set_pixel(uint8_t *plane);
 static void screen_on(void);
 inline static void pick_column(void);
 static void try_drive_screen(void);
 
-void buf_swap(void) {
+inline static void try_buf_swap(void) {
+	if (!may_flip) return;
 	uint8_t (*tmp)[56] = buf_front;
 	buf_front = buf_back;
 	buf_back = tmp;
-	if (may_flip) {
-		Serial.write('S');
-		may_flip = 0;
-	}
+	Serial.write('S');
+	may_flip = 0;
 }
 
 void setup() {

	// it down.
	digitalWrite(PIN_COL_LATCH, LOW);
	
	// Send new data via SPI. Don't need to wait it to complete
	// because it completes before the next timer interrupt.
	SPDR = buf_front[pwm_i][8*row_i+col_i];
}


{
	if (spi_row_change) {
		// Latch the written row info
		digitalWrite(PIN_ROW_LATCH, HIGH);
		spi_row_change = false;
		screen_on();
