X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=vnc.c;h=98b4bb34d1b5250df601324ebb7e27214064407e;hb=19a490bfca85165de1acd2d5c3964fb44615746d;hp=2fcf38c0265ffdcb6790dba678ee6ca753c666dc;hpb=0483755a4d1fd61fe9c284166f67ae08af8d858b;p=qemu diff --git a/vnc.c b/vnc.c index 2fcf38c..98b4bb3 100644 --- a/vnc.c +++ b/vnc.c @@ -3,6 +3,7 @@ * * Copyright (C) 2006 Anthony Liguori * Copyright (C) 2006 Fabrice Bellard + * Copyright (C) 2009 Red Hat, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -23,26 +24,16 @@ * THE SOFTWARE. */ -#include "qemu-common.h" -#include "monitor.h" -#include "console.h" +#include "vnc.h" #include "sysemu.h" #include "qemu_socket.h" #include "qemu-timer.h" -#include "audio/audio.h" -#include #define VNC_REFRESH_INTERVAL (1000 / 30) -#include "vnc.h" #include "vnc_keysym.h" #include "d3des.h" -#ifdef CONFIG_VNC_TLS -#include -#include -#endif /* CONFIG_VNC_TLS */ - // #define _VNC_DEBUG 1 #ifdef _VNC_DEBUG @@ -65,103 +56,6 @@ static void vnc_debug_gnutls_log(int level, const char* str) { } \ } -typedef struct Buffer -{ - size_t capacity; - size_t offset; - uint8_t *buffer; -} Buffer; - -typedef struct VncState VncState; - -typedef int VncReadEvent(VncState *vs, uint8_t *data, size_t len); - -typedef void VncWritePixels(VncState *vs, void *data, int size); - -typedef void VncSendHextileTile(VncState *vs, - int x, int y, int w, int h, - void *last_bg, - void *last_fg, - int *has_bg, int *has_fg); - -#define VNC_MAX_WIDTH 2048 -#define VNC_MAX_HEIGHT 2048 -#define VNC_DIRTY_WORDS (VNC_MAX_WIDTH / (16 * 32)) - -#define VNC_AUTH_CHALLENGE_SIZE 16 - -typedef struct VncDisplay VncDisplay; - -struct VncDisplay -{ - int lsock; - DisplayState *ds; - VncState *clients; - kbd_layout_t *kbd_layout; - - char *display; - char *password; - int auth; -#ifdef CONFIG_VNC_TLS - int subauth; - int x509verify; - - char *x509cacert; - char *x509cacrl; - char *x509cert; - char *x509key; -#endif -}; - -struct VncState -{ - QEMUTimer *timer; - int csock; - DisplayState *ds; - VncDisplay *vd; - int need_update; - uint32_t dirty_row[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS]; - char *old_data; - uint32_t features; - int absolute; - int last_x; - int last_y; - - uint32_t vnc_encoding; - uint8_t tight_quality; - uint8_t tight_compression; - - int major; - int minor; - - char challenge[VNC_AUTH_CHALLENGE_SIZE]; - -#ifdef CONFIG_VNC_TLS - int wiremode; - gnutls_session_t tls_session; -#endif - - Buffer output; - Buffer input; - /* current output mode information */ - VncWritePixels *write_pixels; - VncSendHextileTile *send_hextile_tile; - DisplaySurface clientds, serverds; - - CaptureVoiceOut *audio_cap; - struct audsettings as; - - VncReadEvent *read_handler; - size_t read_handler_expect; - /* input */ - uint8_t modifiers_state[256]; - - Buffer zlib; - Buffer zlib_tmp; - z_stream zlib_stream[4]; - - VncState *next; -}; static VncDisplay *vnc_display; /* needed for info vnc */ static DisplayChangeListener *dcl;