-#import <CoreFoundation/CFData.h>
-#import <CoreGraphics/CGBitmapContext.h>
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <rfb/rfb.h>
-
-extern "C" CGImageRef UIGetScreenImage();
-
-static const size_t Width = 320;
-static const size_t Height = 480;
-static const size_t BytesPerPixel = 4;
-static const size_t BitsPerComponent = 8;
-
-static const size_t Stride = Width * BytesPerPixel;
-static const size_t Size32 = Width * Height;
-static const size_t Size8 = Size32 * BytesPerPixel;
-
-extern "C" void *NSPushAutoreleasePool(void *);
-extern "C" void NSPopAutoreleasePool(void *);
-
-CGContextRef CreateContext() {
-    uint8_t *buffer = (uint8_t *) malloc(Size8);
-    if (buffer == NULL)
-        return NULL;
-
-    CGColorSpaceRef space = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
-
-    CGContextRef context = CGBitmapContextCreate(buffer, Width, Height, BitsPerComponent, Stride, space, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
-    if (context == NULL)
-        free(buffer);
-
-    CGColorSpaceRelease(space);
-    return context;
-}
-
-int main(int argc, char *argv[]) {
-    CGContextRef context0 = CreateContext();
-    CGContextRef context1 = CreateContext();
-
-    CGRect rect = CGRectMake(0, 0, Width, Height);
-
-    rfbScreenInfoPtr screen = rfbGetScreen(&argc, argv, Width, Height, BitsPerComponent, 3, BytesPerPixel);
-
-    screen->desktopName = "iPhone";
-    screen->alwaysShared = TRUE;
-
-    rfbInitServer(screen);
-
-    for (;;) {
-        CGContextRef context = context1;
-        context1 = context0;
-        context0 = context;
-
-        uint8_t *buffer0 = (uint8_t *) CGBitmapContextGetData(context0);
-        uint8_t *buffer1 = (uint8_t *) CGBitmapContextGetData(context1);
-        screen->frameBuffer = (char *) buffer0;
-
-        void *pool = NSPushAutoreleasePool(0);
-
-        CGImageRef image = UIGetScreenImage();
-        CGContextDrawImage(context0, rect, image);
-        CFRelease(image);
-
-        NSPopAutoreleasePool(pool);
-
-        if (memcmp(buffer0, buffer1, Size8) != 0)
-            rfbMarkRectAsModified(screen, 0, 0, Width, Height);
-        rfbProcessEvents(screen, 100000);
-    }
-
-
-    rfbScreenCleanup(screen);
-
-    return 0;
-}