]> git.pld-linux.org Git - packages/weston.git/blob - weston-freerdp2.patch
- added freerdp2 patch (update for 20180809 snapshot); release 2
[packages/weston.git] / weston-freerdp2.patch
1 --- weston-5.0.0/libweston/compositor-rdp.c.orig        2018-08-24 20:04:16.000000000 +0200
2 +++ weston-5.0.0/libweston/compositor-rdp.c     2018-10-11 21:16:08.197352052 +0200
3 @@ -86,6 +86,7 @@
4  #include <freerdp/listener.h>
5  #include <freerdp/update.h>
6  #include <freerdp/input.h>
7 +#include <freerdp/cache/cache.h>
8  #include <freerdp/codec/color.h>
9  #include <freerdp/codec/rfx.h>
10  #include <freerdp/codec/nsc.h>
11 @@ -198,8 +199,10 @@
12         uint32_t *ptr;
13         RFX_RECT *rfxRect;
14         rdpUpdate *update = peer->update;
15 -       SURFACE_BITS_COMMAND *cmd = &update->surface_bits_command;
16 +       SURFACE_BITS_COMMAND *cmd = calloc(1, sizeof(SURFACE_BITS_COMMAND));
17         RdpPeerContext *context = (RdpPeerContext *)peer->context;
18 +       if (!cmd)
19 +               return;
20  
21         Stream_Clear(context->encode_stream);
22         Stream_SetPosition(context->encode_stream, 0);
23 @@ -209,8 +212,6 @@
24  
25  #ifdef HAVE_SKIP_COMPRESSION
26         cmd->skipCompression = TRUE;
27 -#else
28 -       memset(cmd, 0, sizeof(*cmd));
29  #endif
30         cmd->destLeft = damage->extents.x1;
31         cmd->destTop = damage->extents.y1;
32 @@ -246,6 +247,8 @@
33         SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream);
34  
35         update->SurfaceBits(update->context, cmd);
36 +
37 +       free(cmd);
38  }
39  
40  
41 @@ -255,8 +258,10 @@
42         int width, height;
43         uint32_t *ptr;
44         rdpUpdate *update = peer->update;
45 -       SURFACE_BITS_COMMAND *cmd = &update->surface_bits_command;
46 +       SURFACE_BITS_COMMAND *cmd = calloc(1, sizeof(SURFACE_BITS_COMMAND));
47         RdpPeerContext *context = (RdpPeerContext *)peer->context;
48 +       if (!cmd)
49 +               return;
50  
51         Stream_Clear(context->encode_stream);
52         Stream_SetPosition(context->encode_stream, 0);
53 @@ -266,8 +271,6 @@
54  
55  #ifdef HAVE_SKIP_COMPRESSION
56         cmd->skipCompression = TRUE;
57 -#else
58 -       memset(cmd, 0, sizeof(*cmd));
59  #endif
60  
61         cmd->destLeft = damage->extents.x1;
62 @@ -290,6 +293,8 @@
63         SURFACE_BITMAP_DATA(cmd) = Stream_Buffer(context->encode_stream);
64  
65         update->SurfaceBits(update->context, cmd);
66 +
67 +       free(cmd);
68  }
69  
70  static void
71 @@ -310,15 +315,19 @@
72  rdp_peer_refresh_raw(pixman_region32_t *region, pixman_image_t *image, freerdp_peer *peer)
73  {
74         rdpUpdate *update = peer->update;
75 -       SURFACE_BITS_COMMAND *cmd = &update->surface_bits_command;
76 -       SURFACE_FRAME_MARKER *marker = &update->surface_frame_marker;
77 +       SURFACE_BITS_COMMAND *cmd = calloc(1, sizeof(SURFACE_BITS_COMMAND));
78 +       if (!cmd)
79 +               return;
80 +       SURFACE_FRAME_MARKER *marker = calloc(1, sizeof(SURFACE_FRAME_MARKER));
81 +       if (!marker)
82 +               goto fail2;
83         pixman_box32_t *rect, subrect;
84         int nrects, i;
85         int heightIncrement, remainingHeight, top;
86  
87         rect = pixman_region32_rectangles(region, &nrects);
88         if (!nrects)
89 -               return;
90 +               goto fail;
91  
92         marker->frameId++;
93         marker->frameAction = SURFACECMD_FRAMEACTION_BEGIN;
94 @@ -362,6 +371,10 @@
95  
96         marker->frameAction = SURFACECMD_FRAMEACTION_END;
97         update->SurfaceFrameMarker(peer->context, marker);
98 +fail:
99 +       free(marker);
100 +fail2:
101 +       free(cmd);
102  }
103  
104  static void
105 @@ -1055,9 +1068,10 @@
106         peersItem->flags |= RDP_PEER_ACTIVATED;
107  
108         /* disable pointer on the client side */
109 +       POINTER_SYSTEM_UPDATE pointer_system;
110 +       pointer_system.type = SYSPTR_NULL;
111         pointer = client->update->pointer;
112 -       pointer->pointer_system.type = SYSPTR_NULL;
113 -       pointer->PointerSystem(client->context, &pointer->pointer_system);
114 +       pointer->PointerSystem(client->context, &pointer_system);
115  
116         /* sends a full refresh */
117         box.x1 = 0;
This page took 0.060402 seconds and 4 git commands to generate.