提交 03817eb8 编写于 作者: C Corentin Chary 提交者: Anthony Liguori

vnc: tight: split send_sub_rect

Split send_sub_rect in send_sub_rect_jpeg and send_sub_rect_nojpeg to
remove all these #ifdef CONFIG_JPEG.
Signed-off-by: NCorentin Chary <corentincj@iksaif.net>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 4043a013
......@@ -1452,34 +1452,39 @@ static void vnc_tight_stop(VncState *vs)
vs->output = vs->tight.tmp;
}
static int send_sub_rect(VncState *vs, int x, int y, int w, int h)
static int send_sub_rect_nojpeg(VncState *vs, int x, int y, int w, int h,
int bg, int fg, int colors, VncPalette *palette)
{
VncPalette *palette = NULL;
uint32_t bg = 0, fg = 0;
int colors;
int ret = 0;
vnc_framebuffer_update(vs, x, y, w, h, vs->tight.type);
int ret;
vnc_tight_start(vs);
vnc_raw_send_framebuffer_update(vs, x, y, w, h);
vnc_tight_stop(vs);
if (colors == 0) {
if (tight_detect_smooth_image(vs, w, h)) {
ret = send_gradient_rect(vs, x, y, w, h);
} else {
ret = send_full_color_rect(vs, x, y, w, h);
}
} else if (colors == 1) {
ret = send_solid_rect(vs);
} else if (colors == 2) {
ret = send_mono_rect(vs, x, y, w, h, bg, fg);
} else if (colors <= 256) {
ret = send_palette_rect(vs, x, y, w, h, palette);
}
return ret;
}
colors = tight_fill_palette(vs, x, y, w * h, &fg, &bg, &palette);
#ifdef CONFIG_VNC_JPEG
static int send_sub_rect_jpeg(VncState *vs, int x, int y, int w, int h,
int bg, int fg, int colors,
VncPalette *palette)
{
int ret;
if (colors == 0) {
if (tight_detect_smooth_image(vs, w, h)) {
if (vs->tight.quality == -1) {
ret = send_gradient_rect(vs, x, y, w, h);
} else {
#ifdef CONFIG_VNC_JPEG
int quality = tight_conf[vs->tight.quality].jpeg_quality;
int quality = tight_conf[vs->tight.quality].jpeg_quality;
ret = send_jpeg_rect(vs, x, y, w, h, quality);
#else
ret = send_full_color_rect(vs, x, y, w, h);
#endif
}
ret = send_jpeg_rect(vs, x, y, w, h, quality);
} else {
ret = send_full_color_rect(vs, x, y, w, h);
}
......@@ -1488,8 +1493,7 @@ static int send_sub_rect(VncState *vs, int x, int y, int w, int h)
} else if (colors == 2) {
ret = send_mono_rect(vs, x, y, w, h, bg, fg);
} else if (colors <= 256) {
#ifdef CONFIG_VNC_JPEG
if (colors > 96 && vs->tight.quality != -1 && vs->tight.quality <= 3 &&
if (colors > 96 &&
tight_detect_smooth_image(vs, w, h)) {
int quality = tight_conf[vs->tight.quality].jpeg_quality;
......@@ -1497,10 +1501,36 @@ static int send_sub_rect(VncState *vs, int x, int y, int w, int h)
} else {
ret = send_palette_rect(vs, x, y, w, h, palette);
}
#else
ret = send_palette_rect(vs, x, y, w, h, palette);
}
return ret;
}
#endif
static int send_sub_rect(VncState *vs, int x, int y, int w, int h)
{
VncPalette *palette = NULL;
uint32_t bg = 0, fg = 0;
int colors;
int ret = 0;
vnc_framebuffer_update(vs, x, y, w, h, vs->tight.type);
vnc_tight_start(vs);
vnc_raw_send_framebuffer_update(vs, x, y, w, h);
vnc_tight_stop(vs);
colors = tight_fill_palette(vs, x, y, w * h, &fg, &bg, &palette);
#ifdef CONFIG_VNC_JPEG
if (vs->tight.quality != -1) {
ret = send_sub_rect_jpeg(vs, x, y, w, h, bg, fg, colors, palette);
} else {
ret = send_sub_rect_nojpeg(vs, x, y, w, h, bg, fg, colors, palette);
}
#else
ret = send_sub_rect_nojpeg(vs, x, y, w, h, bg, fg, colors, palette);
#endif
palette_destroy(palette);
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册