diff options
-rw-r--r-- | vnc-encoding-zlib.c | 8 | ||||
-rw-r--r-- | vnc.c | 2 | ||||
-rw-r--r-- | vnc.h | 1 |
3 files changed, 11 insertions, 0 deletions
diff --git a/vnc-encoding-zlib.c b/vnc-encoding-zlib.c index 52b18aa84a..1d4dd1aa47 100644 --- a/vnc-encoding-zlib.c +++ b/vnc-encoding-zlib.c @@ -140,3 +140,11 @@ void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h) vnc_write_u32(vs, bytes_written); vs->output.offset = new_offset; } + +void vnc_zlib_clear(VncState *vs) +{ + if (vs->zlib_stream.opaque) { + deflateEnd(&vs->zlib_stream); + } + buffer_free(&vs->zlib); +} @@ -974,6 +974,8 @@ static void vnc_disconnect_finish(VncState *vs) qobject_decref(vs->info); + vnc_zlib_clear(vs); + #ifdef CONFIG_VNC_TLS vnc_tls_client_cleanup(vs); #endif /* CONFIG_VNC_TLS */ @@ -405,5 +405,6 @@ void vnc_hextile_send_framebuffer_update(VncState *vs, int x, void vnc_hextile_set_pixel_conversion(VncState *vs, int generic); void vnc_zlib_send_framebuffer_update(VncState *vs, int x, int y, int w, int h); +void vnc_zlib_clear(VncState *vs); #endif /* __QEMU_VNC_H */ |