Layout fixes

ulab-next
ArvidNorr 12 years ago
parent c3e403022a
commit 7fea3a661b

@ -572,11 +572,11 @@ lfreerdp_bitmap_update(rdpContext *context, BITMAP_UPDATE *bitmap)
if (bd->compressed) if (bd->compressed)
{ {
LLOGLN(20,("decompress size : %d",bd->bitmapLength)); LLOGLN(20,("decompress size : %d",bd->bitmapLength));
if(!bitmap_decompress(bd->bitmapDataStream, (tui8 *)dst_data, bd->width, if(!bitmap_decompress(bd->bitmapDataStream, (tui8 *)dst_data, bd->width,
bd->height, bd->bitmapLength, server_bpp, server_bpp)){ bd->height, bd->bitmapLength, server_bpp, server_bpp)){
LLOGLN(0,("Failure to decompress the bitmap")); LLOGLN(0,("Failure to decompress the bitmap"));
} }
} }
else else
{ {
@ -1164,11 +1164,14 @@ lfreerdp_pointer_new(rdpContext *context,
pointer_new->colorPtrAttr.lengthAndMask)); pointer_new->colorPtrAttr.lengthAndMask));
index = pointer_new->colorPtrAttr.cacheIndex; index = pointer_new->colorPtrAttr.cacheIndex;
if(index>=32){ if(index>=32)
LLOGLN(0,("pointer index too big")); {
LLOGLN(0,("pointer index too big"));
return ; return ;
} }
// In this fix we remove the xorBpp check, even if the mouse pointers are not correct we can use them. // In this fix we remove the xorBpp check, even if
// the mouse pointers are not correct we can use them.
// Configure your destination not to use windows Aero as pointer scheme
else if ( // pointer_new->xorBpp == 1 && else if ( // pointer_new->xorBpp == 1 &&
pointer_new->colorPtrAttr.width == 32 && pointer_new->colorPtrAttr.width == 32 &&
pointer_new->colorPtrAttr.height == 32 && pointer_new->colorPtrAttr.height == 32 &&
@ -1241,36 +1244,38 @@ static void DEFAULT_CC lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER
mod = ((struct mod_context *)context)->modi; mod = ((struct mod_context *)context)->modi;
LLOGLN(10, ("lfreerdp_polygon_sc :%d(points) %d(color) %d(fillmode) %d(bRop) %d(cbData) %d(x) %d(y)", polygon_sc->numPoints,polygon_sc->brushColor,polygon_sc->fillMode,polygon_sc->bRop2,polygon_sc->cbData,polygon_sc->xStart,polygon_sc->yStart)); LLOGLN(10, ("lfreerdp_polygon_sc :%d(points) %d(color) %d(fillmode) %d(bRop) %d(cbData) %d(x) %d(y)", polygon_sc->numPoints,polygon_sc->brushColor,polygon_sc->fillMode,polygon_sc->bRop2,polygon_sc->cbData,polygon_sc->xStart,polygon_sc->yStart));
if(polygon_sc->numPoints==3){ if(polygon_sc->numPoints==3)
server_bpp = mod->inst->settings->ColorDepth; {
client_bpp = mod->bpp; server_bpp = mod->inst->settings->ColorDepth;
client_bpp = mod->bpp;
points[0].x = polygon_sc->xStart; points[0].x = polygon_sc->xStart;
points[0].y = polygon_sc->yStart; points[0].y = polygon_sc->yStart;
for (i = 0; i < polygon_sc->numPoints; i++) for (i = 0; i < polygon_sc->numPoints; i++)
{ {
points[i + 1].x = polygon_sc->points[i].x; points[i + 1].x = polygon_sc->points[i].x;
points[i + 1].y = polygon_sc->points[i].y; points[i + 1].y = polygon_sc->points[i].y;
} }
fgcolor = convert_color(server_bpp, client_bpp, fgcolor = convert_color(server_bpp, client_bpp,
polygon_sc->brushColor, mod->colormap); polygon_sc->brushColor, mod->colormap);
mod->server_set_opcode(mod, polygon_sc->bRop2); mod->server_set_opcode(mod, polygon_sc->bRop2);
mod->server_set_bgcolor(mod, 255); mod->server_set_bgcolor(mod, 255);
mod->server_set_fgcolor(mod, fgcolor); mod->server_set_fgcolor(mod, fgcolor);
mod->server_set_pen(mod, 1, 1); // style, width mod->server_set_pen(mod, 1, 1); // style, width
// TODO replace with correct brush; this is a workaround // TODO replace with correct brush; this is a workaround
// This workaround handles the text cursor in microsoft word. // This workaround handles the text cursor in microsoft word.
mod->server_draw_line(mod,polygon_sc->xStart,polygon_sc->yStart,polygon_sc->xStart,polygon_sc->yStart+points[2].y); mod->server_draw_line(mod,polygon_sc->xStart,polygon_sc->yStart,polygon_sc->xStart,polygon_sc->yStart+points[2].y);
// mod->server_fill_rect(mod, points[0].x, points[0].y, // mod->server_fill_rect(mod, points[0].x, points[0].y,
// points[0].x-points[3].x, points[0].y-points[2].y); // points[0].x-points[3].x, points[0].y-points[2].y);
// mod->server_set_brush(mod,); // howto use this on our indata?? // mod->server_set_brush(mod,); // howto use this on our indata??
mod->server_set_opcode(mod, 0xcc); mod->server_set_opcode(mod, 0xcc);
}else{ }
LLOGLN(0, ("Not handled number of points in lfreerdp_polygon_sc")); else
{
LLOGLN(0, ("Not handled number of points in lfreerdp_polygon_sc"));
} }
} }
static void DEFAULT_CC lfreerdp_syncronize(rdpContext* context) static void DEFAULT_CC lfreerdp_syncronize(rdpContext* context)
@ -1365,8 +1370,8 @@ lfreerdp_pre_connect(freerdp *instance)
} }
else else
{ {
LLOGLN(10, ("Special PerformanceFlags changed")); LLOGLN(10, ("Special PerformanceFlags changed"));
instance->settings->PerformanceFlags = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS | PERF_DISABLE_THEMING ; // | PERF_DISABLE_CURSOR_SHADOW | PERF_DISABLE_CURSORSETTINGS ; instance->settings->PerformanceFlags = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG | PERF_DISABLE_MENUANIMATIONS | PERF_DISABLE_THEMING ; // | PERF_DISABLE_CURSOR_SHADOW | PERF_DISABLE_CURSORSETTINGS ;
} }
instance->settings->CompressionEnabled = FALSE ; instance->settings->CompressionEnabled = FALSE ;
instance->settings->IgnoreCertificate = TRUE ; instance->settings->IgnoreCertificate = TRUE ;

Loading…
Cancel
Save