Fixed leak in update handler.
This commit is contained in:
parent
846c42c1cb
commit
e0e6a5e50e
@ -156,20 +156,21 @@ void guac_vnc_cursor(rfbClient* client, int x, int y, int w, int h, int bpp) {
|
|||||||
|
|
||||||
void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
||||||
|
|
||||||
int dx, dy;
|
|
||||||
|
|
||||||
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
guac_client* gc = rfbClientGetClientData(client, __GUAC_CLIENT);
|
||||||
GUACIO* io = gc->io;
|
GUACIO* io = gc->io;
|
||||||
|
|
||||||
|
int dx, dy;
|
||||||
|
|
||||||
/* Cairo image buffer */
|
/* Cairo image buffer */
|
||||||
int stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, w);
|
int stride;
|
||||||
unsigned char* buffer = malloc(h*stride);
|
unsigned char* buffer;
|
||||||
unsigned char* buffer_row_current = buffer;
|
unsigned char* buffer_row_current;
|
||||||
cairo_surface_t* surface;
|
cairo_surface_t* surface;
|
||||||
|
|
||||||
unsigned int bpp = client->format.bitsPerPixel/8;
|
/* VNC framebuffer */
|
||||||
unsigned int fb_stride = bpp * client->width;
|
unsigned int bpp;
|
||||||
unsigned char* fb_row_current = client->frameBuffer + (y * fb_stride) + (x * bpp);
|
unsigned int fb_stride;
|
||||||
|
unsigned char* fb_row_current;
|
||||||
|
|
||||||
/* Ignore extra update if already handled by copyrect */
|
/* Ignore extra update if already handled by copyrect */
|
||||||
if (((vnc_guac_client_data*) gc->data)->copy_rect_used) {
|
if (((vnc_guac_client_data*) gc->data)->copy_rect_used) {
|
||||||
@ -177,6 +178,15 @@ void guac_vnc_update(rfbClient* client, int x, int y, int w, int h) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Init Cairo buffer */
|
||||||
|
stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, w);
|
||||||
|
buffer = malloc(h*stride);
|
||||||
|
buffer_row_current = buffer;
|
||||||
|
|
||||||
|
bpp = client->format.bitsPerPixel/8;
|
||||||
|
fb_stride = bpp * client->width;
|
||||||
|
fb_row_current = client->frameBuffer + (y * fb_stride) + (x * bpp);
|
||||||
|
|
||||||
/* Copy image data from VNC client to PNG */
|
/* Copy image data from VNC client to PNG */
|
||||||
for (dy = y; dy<y+h; dy++) {
|
for (dy = y; dy<y+h; dy++) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user