libxrdp: remove some alloc / free

ulab-next-nosound
Jay Sorg 11 years ago
parent b61b58b1ad
commit a16b83ac8a

@ -265,6 +265,9 @@ struct xrdp_orders
struct xrdp_orders_state orders_state; struct xrdp_orders_state orders_state;
void *jpeg_han; void *jpeg_han;
int rfx_min_pixel; int rfx_min_pixel;
/* shared */
struct stream *s;
struct stream *temp_s;
}; };
#define PROTO_RDP_40 1 #define PROTO_RDP_40 1

@ -268,6 +268,8 @@ fout(int collen, int replen, char *colptr, struct stream *s)
LLOGLN(10, ("fout: big run lreplen %d", lreplen)); LLOGLN(10, ("fout: big run lreplen %d", lreplen));
replen -= lreplen; replen -= lreplen;
code = ((lreplen & 0xF) << 4) | ((lreplen & 0xF0) >> 4); code = ((lreplen & 0xF) << 4) | ((lreplen & 0xF0) >> 4);
out_uint8(s, code);
colptr += lreplen;
} }
else else
{ {
@ -282,11 +284,11 @@ fout(int collen, int replen, char *colptr, struct stream *s)
lreplen = 0; lreplen = 0;
} }
code = (collen << 4) | lreplen; code = (collen << 4) | lreplen;
out_uint8(s, code);
out_uint8a(s, colptr, collen);
colptr += collen + lreplen;
collen = 0;
} }
out_uint8(s, code);
out_uint8a(s, colptr, collen);
colptr += collen + lreplen;
collen = 0;
cont = replen > 0; cont = replen > 0;
} }
return 0; return 0;

@ -55,6 +55,8 @@ xrdp_orders_create(struct xrdp_session *session, struct xrdp_rdp *rdp_layer)
{ {
self->rfx_min_pixel = 64 * 32; self->rfx_min_pixel = 64 * 32;
} }
make_stream(self->s);
make_stream(self->temp_s);
return self; return self;
} }
@ -68,6 +70,8 @@ xrdp_orders_delete(struct xrdp_orders *self)
} }
xrdp_jpeg_deinit(self->jpeg_han); xrdp_jpeg_deinit(self->jpeg_han);
free_stream(self->out_s); free_stream(self->out_s);
free_stream(self->s);
free_stream(self->temp_s);
g_free(self->orders_state.text_data); g_free(self->orders_state.text_data);
g_free(self); g_free(self);
} }
@ -2321,9 +2325,9 @@ xrdp_orders_send_bitmap(struct xrdp_orders *self,
e = 4 - e; e = 4 - e;
} }
make_stream(s); s = self->s;
init_stream(s, 16384 * 2); init_stream(s, 16384 * 2);
make_stream(temp_s); temp_s = self->temp_s;
init_stream(temp_s, 16384 * 2); init_stream(temp_s, 16384 * 2);
p = s->p; p = s->p;
i = height; i = height;
@ -2341,8 +2345,6 @@ xrdp_orders_send_bitmap(struct xrdp_orders *self,
if (lines_sending != height) if (lines_sending != height)
{ {
free_stream(s);
free_stream(temp_s);
g_writeln("error in xrdp_orders_send_bitmap, lines_sending(%d) != \ g_writeln("error in xrdp_orders_send_bitmap, lines_sending(%d) != \
height(%d)", lines_sending, height); height(%d)", lines_sending, height);
return 1; return 1;
@ -2390,8 +2392,6 @@ height(%d)", lines_sending, height);
} }
out_uint8a(self->out_s, s->data, bufsize); out_uint8a(self->out_s, s->data, bufsize);
free_stream(s);
free_stream(temp_s);
return 0; return 0;
} }
@ -2590,9 +2590,9 @@ xrdp_orders_send_bitmap2(struct xrdp_orders *self,
e = 4 - e; e = 4 - e;
} }
make_stream(s); s = self->s;
init_stream(s, 16384 * 2); init_stream(s, 16384 * 2);
make_stream(temp_s); temp_s = self->temp_s;
init_stream(temp_s, 16384 * 2); init_stream(temp_s, 16384 * 2);
p = s->p; p = s->p;
i = height; i = height;
@ -2610,8 +2610,6 @@ xrdp_orders_send_bitmap2(struct xrdp_orders *self,
if (lines_sending != height) if (lines_sending != height)
{ {
free_stream(s);
free_stream(temp_s);
g_writeln("error in xrdp_orders_send_bitmap2, lines_sending(%d) != \ g_writeln("error in xrdp_orders_send_bitmap2, lines_sending(%d) != \
height(%d)", lines_sending, height); height(%d)", lines_sending, height);
return 1; return 1;
@ -2640,8 +2638,6 @@ height(%d)", lines_sending, height);
i = cache_idx & 0xff; i = cache_idx & 0xff;
out_uint8(self->out_s, i); out_uint8(self->out_s, i);
out_uint8a(self->out_s, s->data, bufsize); out_uint8a(self->out_s, s->data, bufsize);
free_stream(s);
free_stream(temp_s);
return 0; return 0;
} }

Loading…
Cancel
Save