The SURFACE_BITS_COMMAND struct has changed and some members have been moved in 
the
bmp field.
---
 configure.ac               |  5 ++-
 libweston/compositor-rdp.c | 69 ++++++++++++++++++++++++--------------
 2 files changed, 48 insertions(+), 26 deletions(-)

diff --git a/configure.ac b/configure.ac
index da3f7342..f4450532 100644
--- a/configure.ac
+++ b/configure.ac
@@ -264,10 +264,13 @@ if test x$enable_rdp_compositor = xyes; then
     [],
     [PKG_CHECK_MODULES(RDP_COMPOSITOR, [freerdp >= 1.1.0],[])]
   )
-
   SAVED_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS $RDP_COMPOSITOR_CFLAGS"
+
   AC_CHECK_HEADERS([freerdp/version.h])
+  
AC_CHECK_MEMBER([SURFACE_BITS_COMMAND.bmp],[have_bmp=1],[have_bmp=0],[[#include 
<freerdp/update.h>]])
+  AC_DEFINE([HAVE_SURFACE_BITS_BMP], $have_bmp, [SURFACE_BITS_CMD has bmp 
field])
+
   CPPFLAGS="$SAVED_CPPFLAGS"
 fi
 
diff --git a/libweston/compositor-rdp.c b/libweston/compositor-rdp.c
index 693f136a..6e70b303 100644
--- a/libweston/compositor-rdp.c
+++ b/libweston/compositor-rdp.c
@@ -66,6 +66,22 @@
 #define FREERDP_CB_RETURN(V) return TRUE
 #endif
 
+#ifdef HAVE_SURFACE_BITS_BMP
+#define SURFACE_BPP(cmd) cmd->bmp.bpp
+#define SURFACE_CODECID(cmd) cmd->bmp.codecID
+#define SURFACE_WIDTH(cmd) cmd->bmp.width
+#define SURFACE_HEIGHT(cmd) cmd->bmp.height
+#define SURFACE_BITMAP_DATA(cmd) cmd->bmp.bitmapData
+#define SURFACE_BITMAP_DATA_LEN(cmd) cmd->bmp.bitmapDataLength
+#else
+#define SURFACE_BPP(cmd) cmd->bpp
+#define SURFACE_CODECID(cmd) cmd->codecID
+#define SURFACE_WIDTH(cmd) cmd->width
+#define SURFACE_HEIGHT(cmd) cmd->height
+#define SURFACE_BITMAP_DATA(cmd) cmd->bitmapData
+#define SURFACE_BITMAP_DATA_LEN(cmd) cmd->bitmapDataLength
+#endif
+
 #include <freerdp/freerdp.h>
 #include <freerdp/listener.h>
 #include <freerdp/update.h>
@@ -200,10 +216,10 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, 
pixman_image_t *image, freerdp_p
        cmd->destTop = damage->extents.y1;
        cmd->destRight = damage->extents.x2;
        cmd->destBottom = damage->extents.y2;
-       cmd->bpp = 32;
-       cmd->codecID = peer->settings->RemoteFxCodecId;
-       cmd->width = width;
-       cmd->height = height;
+       SURFACE_BPP(cmd) = 32;
+       SURFACE_CODECID(cmd) = peer->settings->RemoteFxCodecId;
+       SURFACE_WIDTH(cmd) = width;
+       SURFACE_HEIGHT(cmd) = height;
 
        ptr = pixman_image_get_data(image) + damage->extents.x1 +
                                damage->extents.y1 * 
(pixman_image_get_stride(image) / sizeof(uint32_t));
@@ -226,8 +242,8 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, 
pixman_image_t *image, freerdp_p
                        pixman_image_get_stride(image)
        );
 
-       cmd->bitmapDataLength = Stream_GetPosition(context->encode_stream);
-       cmd->bitmapData = Stream_Buffer(context->encode_stream);
+       SURFACE_BITMAP_DATA_LEN(cmd) = 
Stream_GetPosition(context->encode_stream);
+       SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream);
 
        update->SurfaceBits(update->context, cmd);
 }
@@ -253,23 +269,26 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, 
pixman_image_t *image, freerdp_p
 #else
        memset(cmd, 0, sizeof(*cmd));
 #endif
+
        cmd->destLeft = damage->extents.x1;
        cmd->destTop = damage->extents.y1;
        cmd->destRight = damage->extents.x2;
        cmd->destBottom = damage->extents.y2;
-       cmd->bpp = 32;
-       cmd->codecID = peer->settings->NSCodecId;
-       cmd->width = width;
-       cmd->height = height;
+       SURFACE_BPP(cmd) = 32;
+       SURFACE_CODECID(cmd) = peer->settings->NSCodecId;
+       SURFACE_WIDTH(cmd) = width;
+       SURFACE_HEIGHT(cmd) = height;
 
        ptr = pixman_image_get_data(image) + damage->extents.x1 +
                                damage->extents.y1 * 
(pixman_image_get_stride(image) / sizeof(uint32_t));
 
        nsc_compose_message(context->nsc_context, context->encode_stream, (BYTE 
*)ptr,
-                       cmd->width,     cmd->height,
+                       width, height,
                        pixman_image_get_stride(image));
-       cmd->bitmapDataLength = Stream_GetPosition(context->encode_stream);
-       cmd->bitmapData = Stream_Buffer(context->encode_stream);
+
+       SURFACE_BITMAP_DATA_LEN(cmd) = 
Stream_GetPosition(context->encode_stream);
+       SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream);
+
        update->SurfaceBits(update->context, cmd);
 }
 
@@ -306,16 +325,16 @@ rdp_peer_refresh_raw(pixman_region32_t *region, 
pixman_image_t *image, freerdp_p
        update->SurfaceFrameMarker(peer->context, marker);
 
        memset(cmd, 0, sizeof(*cmd));
-       cmd->bpp = 32;
-       cmd->codecID = 0;
+       SURFACE_BPP(cmd) = 32;
+       SURFACE_CODECID(cmd) = 0;
 
        for (i = 0; i < nrects; i++, rect++) {
                /*weston_log("rect(%d,%d, %d,%d)\n", rect->x1, rect->y1, 
rect->x2, rect->y2);*/
                cmd->destLeft = rect->x1;
                cmd->destRight = rect->x2;
-               cmd->width = rect->x2 - rect->x1;
+               SURFACE_WIDTH(cmd) = rect->x2 - rect->x1;
 
-               heightIncrement = peer->settings->MultifragMaxRequestSize / (16 
+ cmd->width * 4);
+               heightIncrement = peer->settings->MultifragMaxRequestSize / (16 
+ SURFACE_WIDTH(cmd) * 4);
                remainingHeight = rect->y2 - rect->y1;
                top = rect->y1;
 
@@ -323,21 +342,21 @@ rdp_peer_refresh_raw(pixman_region32_t *region, 
pixman_image_t *image, freerdp_p
                subrect.x2 = rect->x2;
 
                while (remainingHeight) {
-                          cmd->height = (remainingHeight > heightIncrement) ? 
heightIncrement : remainingHeight;
+                          SURFACE_HEIGHT(cmd) = (remainingHeight > 
heightIncrement) ? heightIncrement : remainingHeight;
                           cmd->destTop = top;
-                          cmd->destBottom = top + cmd->height;
-                          cmd->bitmapDataLength = cmd->width * cmd->height * 4;
-                          cmd->bitmapData = (BYTE *)realloc(cmd->bitmapData, 
cmd->bitmapDataLength);
+                          cmd->destBottom = top + SURFACE_HEIGHT(cmd);
+                          SURFACE_BITMAP_DATA_LEN(cmd) = SURFACE_WIDTH(cmd) * 
SURFACE_HEIGHT(cmd) * 4;
+                          SURFACE_BITMAP_DATA(cmd) = (BYTE 
*)realloc(SURFACE_BITMAP_DATA(cmd), SURFACE_BITMAP_DATA_LEN(cmd));
 
                           subrect.y1 = top;
-                          subrect.y2 = top + cmd->height;
-                          pixman_image_flipped_subrect(&subrect, image, 
cmd->bitmapData);
+                          subrect.y2 = top + SURFACE_HEIGHT(cmd);
+                          pixman_image_flipped_subrect(&subrect, image, 
SURFACE_BITMAP_DATA(cmd));
 
                           /*weston_log("*  sending (%d,%d, %d,%d)\n", 
subrect.x1, subrect.y1, subrect.x2, subrect.y2); */
                           update->SurfaceBits(peer->context, cmd);
 
-                          remainingHeight -= cmd->height;
-                          top += cmd->height;
+                          remainingHeight -= SURFACE_HEIGHT(cmd);
+                          top += SURFACE_HEIGHT(cmd);
                }
        }
 
-- 
2.17.0

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to