mirror of https://gitee.com/openkylin/qemu.git
Remove magic numbers for VNC message IDs from code
The code processing incoming & sending outgoing messages from/to clients used embedded magic numbers for all message IDs. This made the code a little hard to follow. Add constants in the vnc.h header file for all message IDs and use them in the code Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
2a5612e6a3
commit
46a183da76
56
vnc.c
56
vnc.c
|
@ -541,7 +541,7 @@ static void vnc_dpy_resize(DisplayState *ds)
|
||||||
vnc_colordepth(vs);
|
vnc_colordepth(vs);
|
||||||
if (size_changed) {
|
if (size_changed) {
|
||||||
if (vs->csock != -1 && vnc_has_feature(vs, VNC_FEATURE_RESIZE)) {
|
if (vs->csock != -1 && vnc_has_feature(vs, VNC_FEATURE_RESIZE)) {
|
||||||
vnc_write_u8(vs, 0); /* msg id */
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
vnc_write_u16(vs, 1); /* number of rects */
|
vnc_write_u16(vs, 1); /* number of rects */
|
||||||
vnc_framebuffer_update(vs, 0, 0, ds_get_width(ds), ds_get_height(ds),
|
vnc_framebuffer_update(vs, 0, 0, ds_get_width(ds), ds_get_height(ds),
|
||||||
|
@ -844,7 +844,7 @@ static void send_framebuffer_update(VncState *vs, int x, int y, int w, int h)
|
||||||
static void vnc_copy(VncState *vs, int src_x, int src_y, int dst_x, int dst_y, int w, int h)
|
static void vnc_copy(VncState *vs, int src_x, int src_y, int dst_x, int dst_y, int w, int h)
|
||||||
{
|
{
|
||||||
/* send bitblit op to the vnc client */
|
/* send bitblit op to the vnc client */
|
||||||
vnc_write_u8(vs, 0); /* msg id */
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
vnc_write_u16(vs, 1); /* number of rects */
|
vnc_write_u16(vs, 1); /* number of rects */
|
||||||
vnc_framebuffer_update(vs, dst_x, dst_y, w, h, VNC_ENCODING_COPYRECT);
|
vnc_framebuffer_update(vs, dst_x, dst_y, w, h, VNC_ENCODING_COPYRECT);
|
||||||
|
@ -964,7 +964,7 @@ static int vnc_update_client(VncState *vs, int has_dirty)
|
||||||
* send them to the client.
|
* send them to the client.
|
||||||
*/
|
*/
|
||||||
n_rectangles = 0;
|
n_rectangles = 0;
|
||||||
vnc_write_u8(vs, 0); /* msg id */
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
saved_offset = vs->output.offset;
|
saved_offset = vs->output.offset;
|
||||||
vnc_write_u16(vs, 0);
|
vnc_write_u16(vs, 0);
|
||||||
|
@ -1013,16 +1013,16 @@ static void audio_capture_notify(void *opaque, audcnotification_e cmd)
|
||||||
|
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case AUD_CNOTIFY_DISABLE:
|
case AUD_CNOTIFY_DISABLE:
|
||||||
vnc_write_u8(vs, 255);
|
vnc_write_u8(vs, VNC_MSG_SERVER_QEMU);
|
||||||
vnc_write_u8(vs, 1);
|
vnc_write_u8(vs, VNC_MSG_SERVER_QEMU_AUDIO);
|
||||||
vnc_write_u16(vs, 0);
|
vnc_write_u16(vs, VNC_MSG_SERVER_QEMU_AUDIO_END);
|
||||||
vnc_flush(vs);
|
vnc_flush(vs);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AUD_CNOTIFY_ENABLE:
|
case AUD_CNOTIFY_ENABLE:
|
||||||
vnc_write_u8(vs, 255);
|
vnc_write_u8(vs, VNC_MSG_SERVER_QEMU);
|
||||||
vnc_write_u8(vs, 1);
|
vnc_write_u8(vs, VNC_MSG_SERVER_QEMU_AUDIO);
|
||||||
vnc_write_u16(vs, 1);
|
vnc_write_u16(vs, VNC_MSG_SERVER_QEMU_AUDIO_BEGIN);
|
||||||
vnc_flush(vs);
|
vnc_flush(vs);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1036,9 +1036,9 @@ static void audio_capture(void *opaque, void *buf, int size)
|
||||||
{
|
{
|
||||||
VncState *vs = opaque;
|
VncState *vs = opaque;
|
||||||
|
|
||||||
vnc_write_u8(vs, 255);
|
vnc_write_u8(vs, VNC_MSG_SERVER_QEMU);
|
||||||
vnc_write_u8(vs, 1);
|
vnc_write_u8(vs, VNC_MSG_SERVER_QEMU_AUDIO);
|
||||||
vnc_write_u16(vs, 2);
|
vnc_write_u16(vs, VNC_MSG_SERVER_QEMU_AUDIO_DATA);
|
||||||
vnc_write_u32(vs, size);
|
vnc_write_u32(vs, size);
|
||||||
vnc_write(vs, buf, size);
|
vnc_write(vs, buf, size);
|
||||||
vnc_flush(vs);
|
vnc_flush(vs);
|
||||||
|
@ -1434,7 +1434,7 @@ static void check_pointer_type_change(Notifier *notifier)
|
||||||
int absolute = kbd_mouse_is_absolute();
|
int absolute = kbd_mouse_is_absolute();
|
||||||
|
|
||||||
if (vnc_has_feature(vs, VNC_FEATURE_POINTER_TYPE_CHANGE) && vs->absolute != absolute) {
|
if (vnc_has_feature(vs, VNC_FEATURE_POINTER_TYPE_CHANGE) && vs->absolute != absolute) {
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
vnc_write_u16(vs, 1);
|
vnc_write_u16(vs, 1);
|
||||||
vnc_framebuffer_update(vs, absolute, 0,
|
vnc_framebuffer_update(vs, absolute, 0,
|
||||||
|
@ -1747,7 +1747,7 @@ static void framebuffer_update_request(VncState *vs, int incremental,
|
||||||
|
|
||||||
static void send_ext_key_event_ack(VncState *vs)
|
static void send_ext_key_event_ack(VncState *vs)
|
||||||
{
|
{
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
vnc_write_u16(vs, 1);
|
vnc_write_u16(vs, 1);
|
||||||
vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds), ds_get_height(vs->ds),
|
vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds), ds_get_height(vs->ds),
|
||||||
|
@ -1757,7 +1757,7 @@ static void send_ext_key_event_ack(VncState *vs)
|
||||||
|
|
||||||
static void send_ext_audio_ack(VncState *vs)
|
static void send_ext_audio_ack(VncState *vs)
|
||||||
{
|
{
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
vnc_write_u16(vs, 1);
|
vnc_write_u16(vs, 1);
|
||||||
vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds), ds_get_height(vs->ds),
|
vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds), ds_get_height(vs->ds),
|
||||||
|
@ -1930,7 +1930,7 @@ static void vnc_colordepth(VncState *vs)
|
||||||
{
|
{
|
||||||
if (vnc_has_feature(vs, VNC_FEATURE_WMVI)) {
|
if (vnc_has_feature(vs, VNC_FEATURE_WMVI)) {
|
||||||
/* Sending a WMVi message to notify the client*/
|
/* Sending a WMVi message to notify the client*/
|
||||||
vnc_write_u8(vs, 0); /* msg id */
|
vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE);
|
||||||
vnc_write_u8(vs, 0);
|
vnc_write_u8(vs, 0);
|
||||||
vnc_write_u16(vs, 1); /* number of rects */
|
vnc_write_u16(vs, 1); /* number of rects */
|
||||||
vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds),
|
vnc_framebuffer_update(vs, 0, 0, ds_get_width(vs->ds),
|
||||||
|
@ -1955,7 +1955,7 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (data[0]) {
|
switch (data[0]) {
|
||||||
case 0:
|
case VNC_MSG_CLIENT_SET_PIXEL_FORMAT:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 20;
|
return 20;
|
||||||
|
|
||||||
|
@ -1965,7 +1965,7 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
|
||||||
read_u16(data, 12), read_u8(data, 14),
|
read_u16(data, 12), read_u8(data, 14),
|
||||||
read_u8(data, 15), read_u8(data, 16));
|
read_u8(data, 15), read_u8(data, 16));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VNC_MSG_CLIENT_SET_ENCODINGS:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 4;
|
return 4;
|
||||||
|
|
||||||
|
@ -1983,7 +1983,7 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
|
||||||
|
|
||||||
set_encodings(vs, (int32_t *)(data + 4), limit);
|
set_encodings(vs, (int32_t *)(data + 4), limit);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case VNC_MSG_CLIENT_FRAMEBUFFER_UPDATE_REQUEST:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 10;
|
return 10;
|
||||||
|
|
||||||
|
@ -1991,19 +1991,19 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
|
||||||
read_u8(data, 1), read_u16(data, 2), read_u16(data, 4),
|
read_u8(data, 1), read_u16(data, 2), read_u16(data, 4),
|
||||||
read_u16(data, 6), read_u16(data, 8));
|
read_u16(data, 6), read_u16(data, 8));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case VNC_MSG_CLIENT_KEY_EVENT:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 8;
|
return 8;
|
||||||
|
|
||||||
key_event(vs, read_u8(data, 1), read_u32(data, 4));
|
key_event(vs, read_u8(data, 1), read_u32(data, 4));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case VNC_MSG_CLIENT_POINTER_EVENT:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 6;
|
return 6;
|
||||||
|
|
||||||
pointer_event(vs, read_u8(data, 1), read_u16(data, 2), read_u16(data, 4));
|
pointer_event(vs, read_u8(data, 1), read_u16(data, 2), read_u16(data, 4));
|
||||||
break;
|
break;
|
||||||
case 6:
|
case VNC_MSG_CLIENT_CUT_TEXT:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 8;
|
return 8;
|
||||||
|
|
||||||
|
@ -2015,30 +2015,30 @@ static int protocol_client_msg(VncState *vs, uint8_t *data, size_t len)
|
||||||
|
|
||||||
client_cut_text(vs, read_u32(data, 4), data + 8);
|
client_cut_text(vs, read_u32(data, 4), data + 8);
|
||||||
break;
|
break;
|
||||||
case 255:
|
case VNC_MSG_CLIENT_QEMU:
|
||||||
if (len == 1)
|
if (len == 1)
|
||||||
return 2;
|
return 2;
|
||||||
|
|
||||||
switch (read_u8(data, 1)) {
|
switch (read_u8(data, 1)) {
|
||||||
case 0:
|
case VNC_MSG_CLIENT_QEMU_EXT_KEY_EVENT:
|
||||||
if (len == 2)
|
if (len == 2)
|
||||||
return 12;
|
return 12;
|
||||||
|
|
||||||
ext_key_event(vs, read_u16(data, 2),
|
ext_key_event(vs, read_u16(data, 2),
|
||||||
read_u32(data, 4), read_u32(data, 8));
|
read_u32(data, 4), read_u32(data, 8));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case VNC_MSG_CLIENT_QEMU_AUDIO:
|
||||||
if (len == 2)
|
if (len == 2)
|
||||||
return 4;
|
return 4;
|
||||||
|
|
||||||
switch (read_u16 (data, 2)) {
|
switch (read_u16 (data, 2)) {
|
||||||
case 0:
|
case VNC_MSG_CLIENT_QEMU_AUDIO_ENABLE:
|
||||||
audio_add(vs);
|
audio_add(vs);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case VNC_MSG_CLIENT_QEMU_AUDIO_DISABLE:
|
||||||
audio_del(vs);
|
audio_del(vs);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VNC_MSG_CLIENT_QEMU_AUDIO_SET_FORMAT:
|
||||||
if (len == 4)
|
if (len == 4)
|
||||||
return 10;
|
return 10;
|
||||||
switch (read_u8(data, 4)) {
|
switch (read_u8(data, 4)) {
|
||||||
|
|
51
vnc.h
51
vnc.h
|
@ -276,6 +276,57 @@ enum {
|
||||||
#define VNC_FEATURE_COPYRECT_MASK (1 << VNC_FEATURE_COPYRECT)
|
#define VNC_FEATURE_COPYRECT_MASK (1 << VNC_FEATURE_COPYRECT)
|
||||||
|
|
||||||
|
|
||||||
|
/* Client -> Server message IDs */
|
||||||
|
#define VNC_MSG_CLIENT_SET_PIXEL_FORMAT 0
|
||||||
|
#define VNC_MSG_CLIENT_SET_ENCODINGS 2
|
||||||
|
#define VNC_MSG_CLIENT_FRAMEBUFFER_UPDATE_REQUEST 3
|
||||||
|
#define VNC_MSG_CLIENT_KEY_EVENT 4
|
||||||
|
#define VNC_MSG_CLIENT_POINTER_EVENT 5
|
||||||
|
#define VNC_MSG_CLIENT_CUT_TEXT 6
|
||||||
|
#define VNC_MSG_CLIENT_VMWARE_0 127
|
||||||
|
#define VNC_MSG_CLIENT_CALL_CONTROL 249
|
||||||
|
#define VNC_MSG_CLIENT_XVP 250
|
||||||
|
#define VNC_MSG_CLIENT_SET_DESKTOP_SIZE 251
|
||||||
|
#define VNC_MSG_CLIENT_TIGHT 252
|
||||||
|
#define VNC_MSG_CLIENT_GII 253
|
||||||
|
#define VNC_MSG_CLIENT_VMWARE_1 254
|
||||||
|
#define VNC_MSG_CLIENT_QEMU 255
|
||||||
|
|
||||||
|
/* Server -> Client message IDs */
|
||||||
|
#define VNC_MSG_SERVER_FRAMEBUFFER_UPDATE 0
|
||||||
|
#define VNC_MSG_SERVER_SET_COLOUR_MAP_ENTRIES 1
|
||||||
|
#define VNC_MSG_SERVER_BELL 2
|
||||||
|
#define VNC_MSG_SERVER_CUT_TEXT 3
|
||||||
|
#define VNC_MSG_SERVER_VMWARE_0 127
|
||||||
|
#define VNC_MSG_SERVER_CALL_CONTROL 249
|
||||||
|
#define VNC_MSG_SERVER_XVP 250
|
||||||
|
#define VNC_MSG_SERVER_TIGHT 252
|
||||||
|
#define VNC_MSG_SERVER_GII 253
|
||||||
|
#define VNC_MSG_SERVER_VMWARE_1 254
|
||||||
|
#define VNC_MSG_SERVER_QEMU 255
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* QEMU client -> server message IDs */
|
||||||
|
#define VNC_MSG_CLIENT_QEMU_EXT_KEY_EVENT 0
|
||||||
|
#define VNC_MSG_CLIENT_QEMU_AUDIO 1
|
||||||
|
|
||||||
|
/* QEMU server -> client message IDs */
|
||||||
|
#define VNC_MSG_SERVER_QEMU_AUDIO 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* QEMU client -> server audio message IDs */
|
||||||
|
#define VNC_MSG_CLIENT_QEMU_AUDIO_ENABLE 0
|
||||||
|
#define VNC_MSG_CLIENT_QEMU_AUDIO_DISABLE 1
|
||||||
|
#define VNC_MSG_CLIENT_QEMU_AUDIO_SET_FORMAT 2
|
||||||
|
|
||||||
|
/* QEMU server -> client audio message IDs */
|
||||||
|
#define VNC_MSG_SERVER_QEMU_AUDIO_END 0
|
||||||
|
#define VNC_MSG_SERVER_QEMU_AUDIO_BEGIN 1
|
||||||
|
#define VNC_MSG_SERVER_QEMU_AUDIO_DATA 2
|
||||||
|
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
*
|
*
|
||||||
* Internal APIs
|
* Internal APIs
|
||||||
|
|
Loading…
Reference in New Issue