[Xrdp-devel] Interface rendering error for help

classic Classic list List threaded Threaded
1 message Options
jjc
Reply | Threaded
Open this post in threaded view
|

[Xrdp-devel] Interface rendering error for help

jjc

Hi,
Firstly,I downloaded the latest Xrdp and NeutrinoRDP source code of the master branch from the following website:
1)https://github.com/neutrinolabs/NeutrinoRDP 
2)https://github.com/FreeRDP/xrdp
Then, installed them in a debian server successfully, but got incorrect interface rendering after the following steps:
1)Connect to the proxy server using mstsc in a window7 computer.
2)select NeutrinoRDP proxy module to connect to the remote server which runs Windows Server 2003
3)open software of Microsoft virtual Manager 2008 R2,then choose one option and a new window created,but there will Interface rendering error as follow:

image

we can find the second picture has mixed with the background and some part of it doesn't rendering at all.
the normal window should show as follow:

What’s more,I find a problem in the source file xrdp-neutrinordp.c which I think cause the error. I got the log information as follow but we can

See the polygon_sc->nDeltaEntries =4. And I can’t understand the process of handling the polygon_sc. Why doesn’t  it handle the important data

polygon_sc -> codeDeltaList?  I am looking forward to your help,thank you very much!

In Neutrinordp:

struct _POLYGON_SC_ORDER

{

    sint32 xStart;

    sint32 yStart;

    uint32 bRop2;

    uint32 fillMode;

    uint32 brushColor;

    uint32 nDeltaEntries;

    uint32 cbData;

    uint8* codeDeltaList;

};

typedef struct _POLYGON_SC_ORDER POLYGON_SC_ORDER;

In xrdp_devel xrdp-neutrinordp.c file:

static void DEFAULT_CC lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc)

{

    struct mod *mod;

    int i, npoints;

    XPoint points[4];

    int fgcolor;

    int server_bpp, client_bpp;

 

    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->nDeltaEntries, polygon_sc->brushColor,

           polygon_sc->fillMode, polygon_sc->bRop2,

           polygon_sc->cbData, polygon_sc->xStart,

           polygon_sc->yStart));

    if (polygon_sc->nDeltaEntries == 3)

    {

        server_bpp = mod->inst->settings->color_depth;

        client_bpp = mod->bpp;

 

        points[0].x = polygon_sc->xStart;

        points[0].y = polygon_sc->yStart;

 

        for (i = 0; i < polygon_sc->nDeltaEntries; i++)

        {

            points[i + 1].x = 0; // polygon_sc->points[i].x;

            points[i + 1].y = 0; // polygon_sc->points[i].y;

        }

        fgcolor = convert_color(server_bpp, client_bpp,

                                polygon_sc->brushColor, mod->colormap);

 

        mod->server_set_opcode(mod, polygon_sc->bRop2);

        mod->server_set_bgcolor(mod, 255);

        mod->server_set_fgcolor(mod, fgcolor);

        mod->server_set_pen(mod, 1, 1); // style, width

        // TODO replace with correct brush; this is a workaround

        // 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_fill_rect(mod, points[0].x, points[0].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_opcode(mod, 0xcc);

    }

    else

    {

        LLOGLN(0, ("Not handled number of points in lfreerdp_polygon_sc"));

    }

}

 

 


------------------------------------------------------------------------------
Slashdot TV.  Videos for Nerds.  Stuff that Matters.
http://pubads.g.doubleclick.net/gampad/clk?id=160591471&iu=/4140/ostg.clktrk
_______________________________________________
xrdp-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/xrdp-devel