#!/usr/bin/c -lvncserver --
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <rfb/rfb.h>

#define WIDTH  800
#define HEIGHT 600
#define BPP    1

int main(void) {
    srand(time(NULL));

    rfbScreenInfoPtr server = rfbGetScreen(NULL, NULL, WIDTH, HEIGHT, 8, 3, BPP);
    server->frameBuffer = malloc(WIDTH*HEIGHT*BPP);
    rfbInitServer(server);
    rfbRunEventLoop(server,-1,TRUE);

    for (int i = 0; i < WIDTH*HEIGHT; i++) {
        server->frameBuffer[i] = random();
    }
    
    int color = 0x00;
    while (1) {
        for (int i = 0; i < WIDTH*HEIGHT/2; i++) {
            server->frameBuffer[i] = color;
        }
        color++;
        color = color % 255;
        rfbMarkRectAsModified(server, 0, 0, WIDTH, HEIGHT);
        usleep(1e5);
    }
    
    return 0;
}
