wfreerdp-server: fixed corruption issue
authorC-o-r-E <can.of.tuna@gmail.com>
Mon, 20 Aug 2012 20:06:24 +0000 (16:06 -0400)
committerC-o-r-E <can.of.tuna@gmail.com>
Mon, 20 Aug 2012 20:06:24 +0000 (16:06 -0400)
server/Windows/wf_peer.c

index 0cb6bab..5da855c 100644 (file)
@@ -95,6 +95,7 @@ void wf_rfx_encode(freerdp_peer* client)
        SURFACE_BITS_COMMAND* cmd;\r
        GETCHANGESBUF* buf;\r
        long height, width;\r
+       long offset;\r
        int dRes;\r
        \r
        update = client->update;\r
@@ -145,14 +146,16 @@ void wf_rfx_encode(freerdp_peer* client)
                rect.width = width;\r
                rect.height = height;\r
 \r
+               offset = (4 * wfi->invalid_x1) + (wfi->invalid_y1 * wfi->width * 4);\r
 \r
+               printf("width = %d, height = %d\n", width, height);\r
                rfx_compose_message(wfp->rfx_context, s, &rect, 1,\r
-                               (uint8*) buf->Userbuffer, width, height, width * 4);\r
+                               ((uint8*) (buf->Userbuffer)) + offset, width, height, wfi->width * 4);\r
 \r
                cmd->destLeft = wfi->invalid_x1;\r
                cmd->destTop = wfi->invalid_y1;\r
                cmd->destRight = wfi->invalid_x1 + width;\r
-               cmd->destBottom = wfi->invalid_y2 + height;\r
+               cmd->destBottom = wfi->invalid_y1 + height;\r
 \r
 \r
                cmd->bpp = 32;\r
@@ -220,10 +223,9 @@ boolean wf_peer_post_connect(freerdp_peer* client)
        printf("Client requested desktop: %dx%dx%d\n",\r
                client->settings->width, client->settings->height, client->settings->color_depth);\r
 \r
-       printf("But we will try resizing to %dx%dx%d\n",\r
-               wf_info_get_height(wfInfoSingleton),\r
+       printf("But we will try resizing to %dx%d\n",\r
                wf_info_get_width(wfInfoSingleton),\r
-               32\r
+               wf_info_get_height(wfInfoSingleton)\r
                );\r
 \r
        client->settings->width = wf_info_get_width(wfInfoSingleton);\r
@@ -267,7 +269,10 @@ void wf_peer_send_changes(rdpUpdate* update)
 \r
                wf_info_updated(wfInfoSingleton);\r
                printf("\tSend...");\r
-               printf("\t(%d, %d), (%d, %d)\n", wfInfoSingleton->invalid_x1, wfInfoSingleton->invalid_y1, wfInfoSingleton->invalid_x2, wfInfoSingleton->invalid_y2);\r
+               printf("\t(%d, %d), (%d, %d) [%dx%d]\n",\r
+                       update->surface_bits_command.destLeft, update->surface_bits_command.destTop,\r
+                       update->surface_bits_command.destRight, update->surface_bits_command.destBottom,\r
+                       update->surface_bits_command.width, update->surface_bits_command.height);\r
                update->SurfaceBits(update->context, &update->surface_bits_command);\r
                //wf_info_clear_invalid_region(wfInfoSingleton);\r
                wfInfoSingleton->enc_data = false;\r