vnc.c (e1b3d47751a420835cb0560fd029c39fea961a79) | vnc.c (6bf21f3d83e95bcc4ba35a7a07cc6655e8b010b0) |
---|---|
1/* 2 * QEMU VNC display driver 3 * 4 * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws> 5 * Copyright (C) 2006 Fabrice Bellard 6 * Copyright (C) 2009 Red Hat, Inc 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a copy --- 1293 unchanged lines hidden (view full) --- 1302 } 1303 g_free(vs->lossy_rect); 1304 1305 object_unref(OBJECT(vs->ioc)); 1306 vs->ioc = NULL; 1307 object_unref(OBJECT(vs->sioc)); 1308 vs->sioc = NULL; 1309 vs->magic = 0; | 1/* 2 * QEMU VNC display driver 3 * 4 * Copyright (C) 2006 Anthony Liguori <anthony@codemonkey.ws> 5 * Copyright (C) 2006 Fabrice Bellard 6 * Copyright (C) 2009 Red Hat, Inc 7 * 8 * Permission is hereby granted, free of charge, to any person obtaining a copy --- 1293 unchanged lines hidden (view full) --- 1302 } 1303 g_free(vs->lossy_rect); 1304 1305 object_unref(OBJECT(vs->ioc)); 1306 vs->ioc = NULL; 1307 object_unref(OBJECT(vs->sioc)); 1308 vs->sioc = NULL; 1309 vs->magic = 0; |
1310 g_free(vs->zrle); 1311 g_free(vs->tight); |
|
1310 g_free(vs); 1311} 1312 1313size_t vnc_client_io_error(VncState *vs, ssize_t ret, Error **errp) 1314{ 1315 if (ret <= 0) { 1316 if (ret == 0) { 1317 trace_vnc_client_eof(vs, vs->ioc); --- 735 unchanged lines hidden (view full) --- 2053 2054static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) 2055{ 2056 int i; 2057 unsigned int enc = 0; 2058 2059 vs->features = 0; 2060 vs->vnc_encoding = 0; | 1312 g_free(vs); 1313} 1314 1315size_t vnc_client_io_error(VncState *vs, ssize_t ret, Error **errp) 1316{ 1317 if (ret <= 0) { 1318 if (ret == 0) { 1319 trace_vnc_client_eof(vs, vs->ioc); --- 735 unchanged lines hidden (view full) --- 2055 2056static void set_encodings(VncState *vs, int32_t *encodings, size_t n_encodings) 2057{ 2058 int i; 2059 unsigned int enc = 0; 2060 2061 vs->features = 0; 2062 vs->vnc_encoding = 0; |
2061 vs->tight.compression = 9; 2062 vs->tight.quality = -1; /* Lossless by default */ | 2063 vs->tight->compression = 9; 2064 vs->tight->quality = -1; /* Lossless by default */ |
2063 vs->absolute = -1; 2064 2065 /* 2066 * Start from the end because the encodings are sent in order of preference. 2067 * This way the preferred encoding (first encoding defined in the array) 2068 * will be set at the end of the loop. 2069 */ 2070 for (i = n_encodings - 1; i >= 0; i--) { --- 51 unchanged lines hidden (view full) --- 2122 break; 2123 case VNC_ENCODING_WMVi: 2124 vs->features |= VNC_FEATURE_WMVI_MASK; 2125 break; 2126 case VNC_ENCODING_LED_STATE: 2127 vs->features |= VNC_FEATURE_LED_STATE_MASK; 2128 break; 2129 case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 + 9: | 2065 vs->absolute = -1; 2066 2067 /* 2068 * Start from the end because the encodings are sent in order of preference. 2069 * This way the preferred encoding (first encoding defined in the array) 2070 * will be set at the end of the loop. 2071 */ 2072 for (i = n_encodings - 1; i >= 0; i--) { --- 51 unchanged lines hidden (view full) --- 2124 break; 2125 case VNC_ENCODING_WMVi: 2126 vs->features |= VNC_FEATURE_WMVI_MASK; 2127 break; 2128 case VNC_ENCODING_LED_STATE: 2129 vs->features |= VNC_FEATURE_LED_STATE_MASK; 2130 break; 2131 case VNC_ENCODING_COMPRESSLEVEL0 ... VNC_ENCODING_COMPRESSLEVEL0 + 9: |
2130 vs->tight.compression = (enc & 0x0F); | 2132 vs->tight->compression = (enc & 0x0F); |
2131 break; 2132 case VNC_ENCODING_QUALITYLEVEL0 ... VNC_ENCODING_QUALITYLEVEL0 + 9: 2133 if (vs->vd->lossy) { | 2133 break; 2134 case VNC_ENCODING_QUALITYLEVEL0 ... VNC_ENCODING_QUALITYLEVEL0 + 9: 2135 if (vs->vd->lossy) { |
2134 vs->tight.quality = (enc & 0x0F); | 2136 vs->tight->quality = (enc & 0x0F); |
2135 } 2136 break; 2137 default: 2138 VNC_DEBUG("Unknown encoding: %d (0x%.8x): %d\n", i, enc, enc); 2139 break; 2140 } 2141 } 2142 vnc_desktop_resize(vs); --- 886 unchanged lines hidden (view full) --- 3029static void vnc_connect(VncDisplay *vd, QIOChannelSocket *sioc, 3030 bool skipauth, bool websocket) 3031{ 3032 VncState *vs = g_new0(VncState, 1); 3033 bool first_client = QTAILQ_EMPTY(&vd->clients); 3034 int i; 3035 3036 trace_vnc_client_connect(vs, sioc); | 2137 } 2138 break; 2139 default: 2140 VNC_DEBUG("Unknown encoding: %d (0x%.8x): %d\n", i, enc, enc); 2141 break; 2142 } 2143 } 2144 vnc_desktop_resize(vs); --- 886 unchanged lines hidden (view full) --- 3031static void vnc_connect(VncDisplay *vd, QIOChannelSocket *sioc, 3032 bool skipauth, bool websocket) 3033{ 3034 VncState *vs = g_new0(VncState, 1); 3035 bool first_client = QTAILQ_EMPTY(&vd->clients); 3036 int i; 3037 3038 trace_vnc_client_connect(vs, sioc); |
3039 vs->zrle = g_new0(VncZrle, 1); 3040 vs->tight = g_new0(VncTight, 1); |
|
3037 vs->magic = VNC_MAGIC; 3038 vs->sioc = sioc; 3039 object_ref(OBJECT(vs->sioc)); 3040 vs->ioc = QIO_CHANNEL(sioc); 3041 object_ref(OBJECT(vs->ioc)); 3042 vs->vd = vd; 3043 3044 buffer_init(&vs->input, "vnc-input/%p", sioc); 3045 buffer_init(&vs->output, "vnc-output/%p", sioc); 3046 buffer_init(&vs->jobs_buffer, "vnc-jobs_buffer/%p", sioc); 3047 | 3041 vs->magic = VNC_MAGIC; 3042 vs->sioc = sioc; 3043 object_ref(OBJECT(vs->sioc)); 3044 vs->ioc = QIO_CHANNEL(sioc); 3045 object_ref(OBJECT(vs->ioc)); 3046 vs->vd = vd; 3047 3048 buffer_init(&vs->input, "vnc-input/%p", sioc); 3049 buffer_init(&vs->output, "vnc-output/%p", sioc); 3050 buffer_init(&vs->jobs_buffer, "vnc-jobs_buffer/%p", sioc); 3051 |
3048 buffer_init(&vs->tight.tight, "vnc-tight/%p", sioc); 3049 buffer_init(&vs->tight.zlib, "vnc-tight-zlib/%p", sioc); 3050 buffer_init(&vs->tight.gradient, "vnc-tight-gradient/%p", sioc); | 3052 buffer_init(&vs->tight->tight, "vnc-tight/%p", sioc); 3053 buffer_init(&vs->tight->zlib, "vnc-tight-zlib/%p", sioc); 3054 buffer_init(&vs->tight->gradient, "vnc-tight-gradient/%p", sioc); |
3051#ifdef CONFIG_VNC_JPEG | 3055#ifdef CONFIG_VNC_JPEG |
3052 buffer_init(&vs->tight.jpeg, "vnc-tight-jpeg/%p", sioc); | 3056 buffer_init(&vs->tight->jpeg, "vnc-tight-jpeg/%p", sioc); |
3053#endif 3054#ifdef CONFIG_VNC_PNG | 3057#endif 3058#ifdef CONFIG_VNC_PNG |
3055 buffer_init(&vs->tight.png, "vnc-tight-png/%p", sioc); | 3059 buffer_init(&vs->tight->png, "vnc-tight-png/%p", sioc); |
3056#endif 3057 buffer_init(&vs->zlib.zlib, "vnc-zlib/%p", sioc); | 3060#endif 3061 buffer_init(&vs->zlib.zlib, "vnc-zlib/%p", sioc); |
3058 buffer_init(&vs->zrle.zrle, "vnc-zrle/%p", sioc); 3059 buffer_init(&vs->zrle.fb, "vnc-zrle-fb/%p", sioc); 3060 buffer_init(&vs->zrle.zlib, "vnc-zrle-zlib/%p", sioc); | 3062 buffer_init(&vs->zrle->zrle, "vnc-zrle/%p", sioc); 3063 buffer_init(&vs->zrle->fb, "vnc-zrle-fb/%p", sioc); 3064 buffer_init(&vs->zrle->zlib, "vnc-zrle-zlib/%p", sioc); |
3061 3062 if (skipauth) { 3063 vs->auth = VNC_AUTH_NONE; 3064 vs->subauth = VNC_AUTH_INVALID; 3065 } else { 3066 if (websocket) { 3067 vs->auth = vd->ws_auth; 3068 vs->subauth = VNC_AUTH_INVALID; --- 1064 unchanged lines hidden --- | 3065 3066 if (skipauth) { 3067 vs->auth = VNC_AUTH_NONE; 3068 vs->subauth = VNC_AUTH_INVALID; 3069 } else { 3070 if (websocket) { 3071 vs->auth = vd->ws_auth; 3072 vs->subauth = VNC_AUTH_INVALID; --- 1064 unchanged lines hidden --- |