#define __QEMU_VNC_H
#include "qemu-common.h"
+#include "qemu-queue.h"
#include "console.h"
#include "monitor.h"
#include "audio/audio.h"
void *last_fg,
int *has_bg, int *has_fg);
-#define VNC_MAX_WIDTH 2048
+#define VNC_MAX_WIDTH 2560
#define VNC_MAX_HEIGHT 2048
#define VNC_DIRTY_WORDS (VNC_MAX_WIDTH / (16 * 32))
#include "vnc-auth-sasl.h"
#endif
+struct VncSurface
+{
+ uint32_t dirty[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS];
+ DisplaySurface *ds;
+};
struct VncDisplay
{
+ QTAILQ_HEAD(, VncState) clients;
+ QEMUTimer *timer;
+ int timer_interval;
int lsock;
DisplayState *ds;
- VncState *clients;
kbd_layout_t *kbd_layout;
+ struct VncSurface guest; /* guest visible surface (aka ds->surface) */
+ DisplaySurface *server; /* vnc server surface */
+
char *display;
char *password;
int auth;
int subauth; /* Used by VeNCrypt */
VncDisplayTLS tls;
#endif
+#ifdef CONFIG_VNC_SASL
+ VncDisplaySASL sasl;
+#endif
};
struct VncState
{
- QEMUTimer *timer;
int csock;
+
DisplayState *ds;
+ uint32_t dirty[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS];
+
VncDisplay *vd;
int need_update;
- uint32_t dirty_row[VNC_MAX_HEIGHT][VNC_DIRTY_WORDS];
- char *old_data;
+ int force_update;
uint32_t features;
int absolute;
int last_x;
VncStateSASL sasl;
#endif
+ QObject *info;
+
Buffer output;
Buffer input;
/* current output mode information */
VncWritePixels *write_pixels;
VncSendHextileTile *send_hextile_tile;
- DisplaySurface clientds, serverds;
+ DisplaySurface clientds;
CaptureVoiceOut *audio_cap;
struct audsettings as;
Buffer zlib_tmp;
z_stream zlib_stream[4];
- VncState *next;
+ QTAILQ_ENTRY(VncState) next;
};