From patchwork Sun Jun 16 08:19:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yann E. MORIN" X-Patchwork-Id: 1116506 Return-Path: X-Original-To: incoming-buildroot@patchwork.ozlabs.org Delivered-To: patchwork-incoming-buildroot@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=busybox.net (client-ip=140.211.166.137; helo=fraxinus.osuosl.org; envelope-from=buildroot-bounces@busybox.net; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=free.fr Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="QxsTrB/K"; dkim-atps=neutral Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 45RS1q2Lc1z9s7h for ; Sun, 16 Jun 2019 18:19:42 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 3DB5F84693; Sun, 16 Jun 2019 08:19:40 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9tXKrNH6_LNn; Sun, 16 Jun 2019 08:19:39 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by fraxinus.osuosl.org (Postfix) with ESMTP id 088DB844D5; Sun, 16 Jun 2019 08:19:39 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id 955031BF2AA for ; Sun, 16 Jun 2019 08:19:37 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 91C1A844D5 for ; Sun, 16 Jun 2019 08:19:37 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CKAsm7PiDeYg for ; Sun, 16 Jun 2019 08:19:36 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 2BE5783F22 for ; Sun, 16 Jun 2019 08:19:36 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id p13so6599621wru.10 for ; Sun, 16 Jun 2019 01:19:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=fMg7Dy1L7MiyrdFBbFXZDp7y8zN67WbsydGQxAviZK4=; b=QxsTrB/KmDir7h2nJZKV4bIKPnIBm3YI9DbhWqHdTRhNh3ClxHG18be/e4Ua5aS3Hj r8NLu053gc4QkRDvxa3CkOcUKKVEqBq1nYSLUnLPaqmqT8ODjJazByyA2K61hY74M48U hC9/YQXIZ9N+IysaZXlOjSZyUNVju+6TSeU33Gsd3jvzBlH+7+QooTYArsb6E1st48y5 DI3x2rJjrHgXVzIpOzHYLbXxIkCucr+xSvYB1iR1Oy7zBoUivI0Uk7lOx9PSR7wla/gq BvcXp/SXl2JC3X1DKQ9LQ0E2VtDxu3rd14GeW5yV5A+6d8unWJKVtQL2J3GhpVG1fmSe 24cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :mime-version:content-transfer-encoding; bh=fMg7Dy1L7MiyrdFBbFXZDp7y8zN67WbsydGQxAviZK4=; b=Ope5oY0xTCFxAwXBL8AUxdgQ5DcFkERGxHlvdwSKZcADjS/1LHYJwrpm4Vv044UUD/ QjcszA8PF4ZJT6c3aaTxWSHW/0Y3LXnGmm6bDw9AOrGgordLZJ51XXaIP31t52G9Qvsz /1k/TqqdLDuCfDI6bsVYDE6pGR9s7mYNxZjf9nCoPDw297oLiJFxlkf/7vMuKUgFswUr jUOwT+1HVxcVmomApAYgx3kBruMIfTi+tsbwElfZhw7/ETDYdjOYAOXjaLAMrhkBmnnR sStkStUj/Pc1iwCzV8zJlFPRZ2CPnMKtDcBRvdVrYl/9wYeIeTDtihyNedGKafLpRX/9 Ng+Q== X-Gm-Message-State: APjAAAWP2tpqZuxHihdGQTg2kc4X84JDWCr7pxJQ2PzkXwqqe9onSxvU cRCeMqq2nH3k2/FQQvNasq+Z5ahn X-Google-Smtp-Source: APXvYqx22Li46ZZr6ReG50fRwc+R5A1gijtpHLA1s5kQW5SToYyBLdnlJUdDueWKnRO0tkp2ZGBIUA== X-Received: by 2002:a5d:4a90:: with SMTP id o16mr12905230wrq.13.1560673174253; Sun, 16 Jun 2019 01:19:34 -0700 (PDT) Received: from localhost.localdomain ([2a01:cb19:829a:2800:7df5:b50e:2592:cbc2]) by smtp.gmail.com with ESMTPSA id y44sm5419666wrd.13.2019.06.16.01.19.32 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sun, 16 Jun 2019 01:19:33 -0700 (PDT) From: "Yann E. MORIN" To: buildroot@buildroot.org Date: Sun, 16 Jun 2019 10:19:20 +0200 Message-Id: <20190616081920.32741-1-yann.morin.1998@free.fr> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [Buildroot] [PATCH] package/weston: fix build with latest freerdp X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alexey Lukyanchuk , Peter Korsgaard , "Yann E. MORIN" Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Commit 942da943f3 (package/freerdp: security bump to version 2.0.0-rc4) backported a patch from master, that bumps FreeRDP for security fixes. However, the FreeRDP development process is, well, a bit weird, as they have been in the rc phase for the past two years now (2.0.0-rc0 was on 2017-07-24). As such, they still continue to do huge code refactoring and cleanup and stuff, even though this is the rc phase. Their API thus changed quite a bit between rc2 and rc4. Thus the backport now breaks weston. We do not have the problem on master or 2019.05.x, because we are using a more recent weston (6.0.0) which has the fix already. But on 2019.02.x, we're still using an older weston (5.0.0), which misses the fix. Backport the fix from upstream. Fixes (2019.02.x): http://autobuild.buildroot.net/results/5fb140acadf26b7f38d3f5c07a4f8dd4dc9acb9e http://autobuild.buildroot.org/results/b16610516a8514cf45860a48d693dd0db275e8d9 Signed-off-by: Yann E. MORIN Cc: Alexey Lukyanchuk Cc: Peter Korsgaard --- ...fix-compilation-with-FreeRDP-2.0-rc4.patch | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 package/weston/0002-rdp-compositor-fix-compilation-with-FreeRDP-2.0-rc4.patch diff --git a/package/weston/0002-rdp-compositor-fix-compilation-with-FreeRDP-2.0-rc4.patch b/package/weston/0002-rdp-compositor-fix-compilation-with-FreeRDP-2.0-rc4.patch new file mode 100644 index 0000000000..fe2303d42e --- /dev/null +++ b/package/weston/0002-rdp-compositor-fix-compilation-with-FreeRDP-2.0-rc4.patch @@ -0,0 +1,218 @@ +From 7b7d9d316a9ce9b4f5f50ba766c2963b0fdcbaa5 Mon Sep 17 00:00:00 2001 +From: David Fort +Date: Tue, 4 Dec 2018 23:25:39 +0100 +Subject: [PATCH] rdp-compositor: fix compilation with FreeRDP 2.0-rc4 + +Some members have been removed from FreeRDP structs, so let's use local +variables. + +[yann.morin.1998@free.fr: backport from upstream] +Signed-off-by: Yann E. MORIN + +--- + libweston/compositor-rdp.c | 86 +++++++++++++++++++------------------- + 1 file changed, 43 insertions(+), 43 deletions(-) + +diff --git a/libweston/compositor-rdp.c b/libweston/compositor-rdp.c +index 134e7298..871a0a3e 100644 +--- a/libweston/compositor-rdp.c ++++ b/libweston/compositor-rdp.c +@@ -67,19 +67,19 @@ + #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 ++#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 ++#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 +@@ -198,7 +198,7 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, pixman_image_t *image, freerdp_p + uint32_t *ptr; + RFX_RECT *rfxRect; + rdpUpdate *update = peer->update; +- SURFACE_BITS_COMMAND *cmd = &update->surface_bits_command; ++ SURFACE_BITS_COMMAND cmd; + RdpPeerContext *context = (RdpPeerContext *)peer->context; + + Stream_Clear(context->encode_stream); +@@ -208,14 +208,14 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, pixman_image_t *image, freerdp_p + height = (damage->extents.y2 - damage->extents.y1); + + #ifdef HAVE_SKIP_COMPRESSION +- cmd->skipCompression = TRUE; ++ cmd.skipCompression = TRUE; + #else +- memset(cmd, 0, sizeof(*cmd)); ++ 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.destLeft = damage->extents.x1; ++ cmd.destTop = damage->extents.y1; ++ cmd.destRight = damage->extents.x2; ++ cmd.destBottom = damage->extents.y2; + SURFACE_BPP(cmd) = 32; + SURFACE_CODECID(cmd) = peer->settings->RemoteFxCodecId; + SURFACE_WIDTH(cmd) = width; +@@ -245,7 +245,7 @@ rdp_peer_refresh_rfx(pixman_region32_t *damage, pixman_image_t *image, freerdp_p + SURFACE_BITMAP_DATA_LEN(cmd) = Stream_GetPosition(context->encode_stream); + SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream); + +- update->SurfaceBits(update->context, cmd); ++ update->SurfaceBits(update->context, &cmd); + } + + +@@ -255,7 +255,7 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, pixman_image_t *image, freerdp_p + int width, height; + uint32_t *ptr; + rdpUpdate *update = peer->update; +- SURFACE_BITS_COMMAND *cmd = &update->surface_bits_command; ++ SURFACE_BITS_COMMAND cmd; + RdpPeerContext *context = (RdpPeerContext *)peer->context; + + Stream_Clear(context->encode_stream); +@@ -265,15 +265,15 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, pixman_image_t *image, freerdp_p + height = (damage->extents.y2 - damage->extents.y1); + + #ifdef HAVE_SKIP_COMPRESSION +- cmd->skipCompression = TRUE; ++ cmd.skipCompression = TRUE; + #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.destLeft = damage->extents.x1; ++ cmd.destTop = damage->extents.y1; ++ cmd.destRight = damage->extents.x2; ++ cmd.destBottom = damage->extents.y2; + SURFACE_BPP(cmd) = 32; + SURFACE_CODECID(cmd) = peer->settings->NSCodecId; + SURFACE_WIDTH(cmd) = width; +@@ -289,7 +289,7 @@ rdp_peer_refresh_nsc(pixman_region32_t *damage, pixman_image_t *image, freerdp_p + SURFACE_BITMAP_DATA_LEN(cmd) = Stream_GetPosition(context->encode_stream); + SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream); + +- update->SurfaceBits(update->context, cmd); ++ update->SurfaceBits(update->context, &cmd); + } + + static void +@@ -310,8 +310,8 @@ static void + rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_peer *peer) + { + rdpUpdate *update = peer->update; +- SURFACE_BITS_COMMAND *cmd = &update->surface_bits_command; +- SURFACE_FRAME_MARKER *marker = &update->surface_frame_marker; ++ SURFACE_BITS_COMMAND cmd; ++ SURFACE_FRAME_MARKER marker; + pixman_box32_t *rect, subrect; + int nrects, i; + int heightIncrement, remainingHeight, top; +@@ -320,18 +320,18 @@ rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_p + if (!nrects) + return; + +- marker->frameId++; +- marker->frameAction = SURFACECMD_FRAMEACTION_BEGIN; +- update->SurfaceFrameMarker(peer->context, marker); ++ marker.frameId++; ++ marker.frameAction = SURFACECMD_FRAMEACTION_BEGIN; ++ update->SurfaceFrameMarker(peer->context, &marker); + +- memset(cmd, 0, sizeof(*cmd)); ++ memset(&cmd, 0, sizeof(cmd)); + 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.destLeft = rect->x1; ++ cmd.destRight = rect->x2; + SURFACE_WIDTH(cmd) = rect->x2 - rect->x1; + + heightIncrement = peer->settings->MultifragMaxRequestSize / (16 + SURFACE_WIDTH(cmd) * 4); +@@ -343,8 +343,8 @@ rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_p + + while (remainingHeight) { + SURFACE_HEIGHT(cmd) = (remainingHeight > heightIncrement) ? heightIncrement : remainingHeight; +- cmd->destTop = top; +- cmd->destBottom = top + SURFACE_HEIGHT(cmd); ++ cmd.destTop = top; ++ 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)); + +@@ -353,15 +353,15 @@ rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_p + 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); ++ update->SurfaceBits(peer->context, &cmd); + + remainingHeight -= SURFACE_HEIGHT(cmd); + top += SURFACE_HEIGHT(cmd); + } + } + +- marker->frameAction = SURFACECMD_FRAMEACTION_END; +- update->SurfaceFrameMarker(peer->context, marker); ++ marker.frameAction = SURFACECMD_FRAMEACTION_END; ++ update->SurfaceFrameMarker(peer->context, &marker); + } + + static void +@@ -956,7 +956,7 @@ xf_peer_activate(freerdp_peer* client) + pixman_box32_t box; + pixman_region32_t damage; + char seat_name[50]; +- ++ POINTER_SYSTEM_UPDATE pointer_system; + + peerCtx = (RdpPeerContext *)client->context; + b = peerCtx->rdpBackend; +@@ -1056,8 +1056,8 @@ xf_peer_activate(freerdp_peer* client) + + /* disable pointer on the client side */ + pointer = client->update->pointer; +- pointer->pointer_system.type = SYSPTR_NULL; +- pointer->PointerSystem(client->context, &pointer->pointer_system); ++ pointer_system.type = SYSPTR_NULL; ++ pointer->PointerSystem(client->context, &pointer_system); + + /* sends a full refresh */ + box.x1 = 0; +-- +2.20.1 +