Coverage Report

Created: 2026-06-15 06:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/FreeRDP/libfreerdp/core/update.h
Line
Count
Source
1
/**
2
 * FreeRDP: A Remote Desktop Protocol Implementation
3
 * Update Data PDUs
4
 *
5
 * Copyright 2011 Marc-Andre Moreau <marcandre.moreau@gmail.com>
6
 *
7
 * Licensed under the Apache License, Version 2.0 (the "License");
8
 * you may not use this file except in compliance with the License.
9
 * You may obtain a copy of the License at
10
 *
11
 *     http://www.apache.org/licenses/LICENSE-2.0
12
 *
13
 * Unless required by applicable law or agreed to in writing, software
14
 * distributed under the License is distributed on an "AS IS" BASIS,
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
 * See the License for the specific language governing permissions and
17
 * limitations under the License.
18
 */
19
20
#ifndef FREERDP_LIB_CORE_UPDATE_H
21
#define FREERDP_LIB_CORE_UPDATE_H
22
23
#include "rdp.h"
24
#include "orders.h"
25
26
#include <freerdp/types.h>
27
#include <freerdp/update.h>
28
#include <freerdp/freerdp.h>
29
#include <freerdp/api.h>
30
31
#include <winpr/stream.h>
32
33
#include "../cache/bitmap.h"
34
#include "../cache/palette.h"
35
#include "../cache/pointer.h"
36
37
342
#define UPDATE_TYPE_ORDERS 0x0000
38
375
#define UPDATE_TYPE_BITMAP 0x0001
39
205
#define UPDATE_TYPE_PALETTE 0x0002
40
4
#define UPDATE_TYPE_SYNCHRONIZE 0x0003
41
42
94.9k
#define BITMAP_COMPRESSION 0x0001
43
82.4k
#define NO_BITMAP_COMPRESSION_HDR 0x0400
44
45
typedef enum
46
{
47
  RDP_STATS_SURFACE_BITS = 0,
48
  RDP_STATS_SURFACE_BITS_RFX,
49
  RDP_STATS_SURFACE_BITS_RFX_IMAGE,
50
  RDP_STATS_SURFACE_BITS_NSC,
51
  RDP_STATS_SURFACE_BITS_NONE,
52
  RDP_STATS_SURFACE_BITS_UNKNOWN,
53
  RDP_STATS_BEGIN_PAINT,
54
  RDP_STATS_END_PAINT,
55
  RDP_STATS_SET_BOUNDS,
56
  RDP_STATS_SYNC,
57
  RDP_STATS_RESIZE,
58
  RDP_STATS_BITMAP_UPDATE,
59
  RDP_STATS_PALETTE,
60
  RDP_STATS_REFRESH_RECT,
61
  RDP_STATS_SUPPRESS_OUTPUT,
62
  RDP_STATS_SURFACE_COMMAND,
63
  RDP_STATS_SURFACE_FRAME_MARKER,
64
  RDP_STATS_SURFACE_FRAME_ACK,
65
  RDP_STATS_POINTER_SYSTEM,
66
  RDP_STATS_POINTER_DEFAULT,
67
  RDP_STATS_POINTER_POSITION,
68
  RDP_STATS_POINTER_COLOR,
69
  RDP_STATS_POINTER_CACHED,
70
  RDP_STATS_POINTER_NEW,
71
  RDP_STATS_POINTER_LARGE
72
} rdp_codec_stats;
73
74
typedef struct
75
{
76
  uint64_t primary[0x100];
77
  uint64_t secondary[0x100];
78
  uint64_t altsec[0x100];
79
  uint64_t base[0x40];
80
} rdp_stats;
81
82
typedef struct
83
{
84
  rdpUpdate common;
85
86
  wLog* log;
87
88
  BOOL dump_rfx;
89
  BOOL play_rfx;
90
  rdpPcap* pcap_rfx;
91
  BOOL initialState;
92
93
  BOOL asynchronous;
94
  rdpUpdateProxy* proxy;
95
  wMessageQueue* queue;
96
97
  wStream* us;
98
  UINT16 numberOrders;
99
  size_t offsetOrders; /* the offset to patch numberOrders in the stream */
100
  BOOL combineUpdates;
101
  rdpBounds currentBounds;
102
  rdpBounds previousBounds;
103
  CRITICAL_SECTION mux;
104
  BOOL withinBeginEndPaint;
105
106
  rdp_stats stats;
107
} rdp_update_internal;
108
109
typedef struct
110
{
111
  rdpAltSecUpdate common;
112
113
  CREATE_OFFSCREEN_BITMAP_ORDER create_offscreen_bitmap;
114
  SWITCH_SURFACE_ORDER switch_surface;
115
  CREATE_NINE_GRID_BITMAP_ORDER create_nine_grid_bitmap;
116
  FRAME_MARKER_ORDER frame_marker;
117
  STREAM_BITMAP_FIRST_ORDER stream_bitmap_first;
118
  STREAM_BITMAP_NEXT_ORDER stream_bitmap_next;
119
  DRAW_GDIPLUS_CACHE_FIRST_ORDER draw_gdiplus_cache_first;
120
  DRAW_GDIPLUS_CACHE_NEXT_ORDER draw_gdiplus_cache_next;
121
  DRAW_GDIPLUS_CACHE_END_ORDER draw_gdiplus_cache_end;
122
  DRAW_GDIPLUS_FIRST_ORDER draw_gdiplus_first;
123
  DRAW_GDIPLUS_NEXT_ORDER draw_gdiplus_next;
124
  DRAW_GDIPLUS_END_ORDER draw_gdiplus_end;
125
} rdp_altsec_update_internal;
126
127
typedef struct
128
{
129
  rdpPrimaryUpdate common;
130
131
  ORDER_INFO order_info;
132
  DSTBLT_ORDER dstblt;
133
  PATBLT_ORDER patblt;
134
  SCRBLT_ORDER scrblt;
135
  OPAQUE_RECT_ORDER opaque_rect;
136
  DRAW_NINE_GRID_ORDER draw_nine_grid;
137
  MULTI_DSTBLT_ORDER multi_dstblt;
138
  MULTI_PATBLT_ORDER multi_patblt;
139
  MULTI_SCRBLT_ORDER multi_scrblt;
140
  MULTI_OPAQUE_RECT_ORDER multi_opaque_rect;
141
  MULTI_DRAW_NINE_GRID_ORDER multi_draw_nine_grid;
142
  LINE_TO_ORDER line_to;
143
  POLYLINE_ORDER polyline;
144
  MEMBLT_ORDER memblt;
145
  MEM3BLT_ORDER mem3blt;
146
  SAVE_BITMAP_ORDER save_bitmap;
147
  GLYPH_INDEX_ORDER glyph_index;
148
  FAST_INDEX_ORDER fast_index;
149
  FAST_GLYPH_ORDER fast_glyph;
150
  POLYGON_SC_ORDER polygon_sc;
151
  POLYGON_CB_ORDER polygon_cb;
152
  ELLIPSE_SC_ORDER ellipse_sc;
153
  ELLIPSE_CB_ORDER ellipse_cb;
154
} rdp_primary_update_internal;
155
156
typedef struct
157
{
158
  rdpSecondaryUpdate common;
159
  BOOL glyph_v2;
160
} rdp_secondary_update_internal;
161
162
WINPR_ATTR_NODISCARD
163
static inline rdp_update_internal* update_cast(rdpUpdate* update)
164
992k
{
165
992k
  union
166
992k
  {
167
992k
    rdpUpdate* pub;
168
992k
    rdp_update_internal* internal;
169
992k
  } cnv;
170
171
992k
  WINPR_ASSERT(update);
172
992k
  cnv.pub = update;
173
992k
  return cnv.internal;
174
992k
}
Unexecuted instantiation: settings.c:update_cast
Unexecuted instantiation: utils.c:update_cast
Unexecuted instantiation: freerdp.c:update_cast
Unexecuted instantiation: client.c:update_cast
Unexecuted instantiation: codecs.c:update_cast
Unexecuted instantiation: metrics.c:update_cast
Unexecuted instantiation: capabilities.c:update_cast
Unexecuted instantiation: connection.c:update_cast
Unexecuted instantiation: redirection.c:update_cast
Unexecuted instantiation: rdp.c:update_cast
Unexecuted instantiation: tcp.c:update_cast
fastpath.c:update_cast
Line
Count
Source
164
29.7k
{
165
29.7k
  union
166
29.7k
  {
167
29.7k
    rdpUpdate* pub;
168
29.7k
    rdp_update_internal* internal;
169
29.7k
  } cnv;
170
171
29.7k
  WINPR_ASSERT(update);
172
29.7k
  cnv.pub = update;
173
29.7k
  return cnv.internal;
174
29.7k
}
surface.c:update_cast
Line
Count
Source
164
37.9k
{
165
37.9k
  union
166
37.9k
  {
167
37.9k
    rdpUpdate* pub;
168
37.9k
    rdp_update_internal* internal;
169
37.9k
  } cnv;
170
171
37.9k
  WINPR_ASSERT(update);
172
37.9k
  cnv.pub = update;
173
37.9k
  return cnv.internal;
174
37.9k
}
Unexecuted instantiation: transport.c:update_cast
update.c:update_cast
Line
Count
Source
164
467k
{
165
467k
  union
166
467k
  {
167
467k
    rdpUpdate* pub;
168
467k
    rdp_update_internal* internal;
169
467k
  } cnv;
170
171
467k
  WINPR_ASSERT(update);
172
467k
  cnv.pub = update;
173
467k
  return cnv.internal;
174
467k
}
Unexecuted instantiation: message.c:update_cast
Unexecuted instantiation: channels.c:update_cast
Unexecuted instantiation: peer.c:update_cast
Unexecuted instantiation: display.c:update_cast
Unexecuted instantiation: aad.c:update_cast
Unexecuted instantiation: timer.c:update_cast
Unexecuted instantiation: rdg.c:update_cast
Unexecuted instantiation: rpc_client.c:update_cast
Unexecuted instantiation: wst.c:update_cast
Unexecuted instantiation: arm.c:update_cast
Unexecuted instantiation: activation.c:update_cast
Unexecuted instantiation: mcs.c:update_cast
Unexecuted instantiation: nla.c:update_cast
Unexecuted instantiation: info.c:update_cast
Unexecuted instantiation: input.c:update_cast
Unexecuted instantiation: license.c:update_cast
Unexecuted instantiation: security.c:update_cast
orders.c:update_cast
Line
Count
Source
164
441k
{
165
441k
  union
166
441k
  {
167
441k
    rdpUpdate* pub;
168
441k
    rdp_update_internal* internal;
169
441k
  } cnv;
170
171
441k
  WINPR_ASSERT(update);
172
441k
  cnv.pub = update;
173
441k
  return cnv.internal;
174
441k
}
Unexecuted instantiation: server.c:update_cast
Unexecuted instantiation: autodetect.c:update_cast
Unexecuted instantiation: heartbeat.c:update_cast
Unexecuted instantiation: multitransport.c:update_cast
Unexecuted instantiation: timezone.c:update_cast
window.c:update_cast
Line
Count
Source
164
16.1k
{
165
16.1k
  union
166
16.1k
  {
167
16.1k
    rdpUpdate* pub;
168
16.1k
    rdp_update_internal* internal;
169
16.1k
  } cnv;
170
171
16.1k
  WINPR_ASSERT(update);
172
16.1k
  cnv.pub = update;
173
16.1k
  return cnv.internal;
174
16.1k
}
Unexecuted instantiation: gdi.c:update_cast
Unexecuted instantiation: TestFuzzCoreServer.c:update_cast
Unexecuted instantiation: TestFuzzCoreClient.c:update_cast
Unexecuted instantiation: gfx.c:update_cast
Unexecuted instantiation: video.c:update_cast
175
176
WINPR_ATTR_NODISCARD
177
static inline rdp_altsec_update_internal* altsec_update_cast(rdpAltSecUpdate* update)
178
240k
{
179
240k
  union
180
240k
  {
181
240k
    rdpAltSecUpdate* pub;
182
240k
    rdp_altsec_update_internal* internal;
183
240k
  } cnv;
184
185
240k
  WINPR_ASSERT(update);
186
240k
  cnv.pub = update;
187
240k
  return cnv.internal;
188
240k
}
Unexecuted instantiation: settings.c:altsec_update_cast
Unexecuted instantiation: utils.c:altsec_update_cast
Unexecuted instantiation: freerdp.c:altsec_update_cast
Unexecuted instantiation: client.c:altsec_update_cast
Unexecuted instantiation: codecs.c:altsec_update_cast
Unexecuted instantiation: metrics.c:altsec_update_cast
Unexecuted instantiation: capabilities.c:altsec_update_cast
Unexecuted instantiation: connection.c:altsec_update_cast
Unexecuted instantiation: redirection.c:altsec_update_cast
Unexecuted instantiation: rdp.c:altsec_update_cast
Unexecuted instantiation: tcp.c:altsec_update_cast
Unexecuted instantiation: fastpath.c:altsec_update_cast
Unexecuted instantiation: surface.c:altsec_update_cast
Unexecuted instantiation: transport.c:altsec_update_cast
update.c:altsec_update_cast
Line
Count
Source
178
16.0k
{
179
16.0k
  union
180
16.0k
  {
181
16.0k
    rdpAltSecUpdate* pub;
182
16.0k
    rdp_altsec_update_internal* internal;
183
16.0k
  } cnv;
184
185
16.0k
  WINPR_ASSERT(update);
186
16.0k
  cnv.pub = update;
187
16.0k
  return cnv.internal;
188
16.0k
}
Unexecuted instantiation: message.c:altsec_update_cast
Unexecuted instantiation: channels.c:altsec_update_cast
Unexecuted instantiation: peer.c:altsec_update_cast
Unexecuted instantiation: display.c:altsec_update_cast
Unexecuted instantiation: aad.c:altsec_update_cast
Unexecuted instantiation: timer.c:altsec_update_cast
Unexecuted instantiation: rdg.c:altsec_update_cast
Unexecuted instantiation: rpc_client.c:altsec_update_cast
Unexecuted instantiation: wst.c:altsec_update_cast
Unexecuted instantiation: arm.c:altsec_update_cast
Unexecuted instantiation: activation.c:altsec_update_cast
Unexecuted instantiation: mcs.c:altsec_update_cast
Unexecuted instantiation: nla.c:altsec_update_cast
Unexecuted instantiation: info.c:altsec_update_cast
Unexecuted instantiation: input.c:altsec_update_cast
Unexecuted instantiation: license.c:altsec_update_cast
Unexecuted instantiation: security.c:altsec_update_cast
orders.c:altsec_update_cast
Line
Count
Source
178
224k
{
179
224k
  union
180
224k
  {
181
224k
    rdpAltSecUpdate* pub;
182
224k
    rdp_altsec_update_internal* internal;
183
224k
  } cnv;
184
185
224k
  WINPR_ASSERT(update);
186
224k
  cnv.pub = update;
187
224k
  return cnv.internal;
188
224k
}
Unexecuted instantiation: server.c:altsec_update_cast
Unexecuted instantiation: autodetect.c:altsec_update_cast
Unexecuted instantiation: heartbeat.c:altsec_update_cast
Unexecuted instantiation: multitransport.c:altsec_update_cast
Unexecuted instantiation: timezone.c:altsec_update_cast
Unexecuted instantiation: window.c:altsec_update_cast
Unexecuted instantiation: gdi.c:altsec_update_cast
Unexecuted instantiation: TestFuzzCoreServer.c:altsec_update_cast
Unexecuted instantiation: TestFuzzCoreClient.c:altsec_update_cast
Unexecuted instantiation: gfx.c:altsec_update_cast
Unexecuted instantiation: video.c:altsec_update_cast
189
190
WINPR_ATTR_NODISCARD
191
static inline rdp_primary_update_internal* primary_update_cast(rdpPrimaryUpdate* update)
192
167k
{
193
167k
  union
194
167k
  {
195
167k
    rdpPrimaryUpdate* pub;
196
167k
    rdp_primary_update_internal* internal;
197
167k
  } cnv;
198
199
167k
  WINPR_ASSERT(update);
200
167k
  cnv.pub = update;
201
167k
  return cnv.internal;
202
167k
}
Unexecuted instantiation: settings.c:primary_update_cast
Unexecuted instantiation: utils.c:primary_update_cast
Unexecuted instantiation: freerdp.c:primary_update_cast
Unexecuted instantiation: client.c:primary_update_cast
Unexecuted instantiation: codecs.c:primary_update_cast
Unexecuted instantiation: metrics.c:primary_update_cast
Unexecuted instantiation: capabilities.c:primary_update_cast
Unexecuted instantiation: connection.c:primary_update_cast
Unexecuted instantiation: redirection.c:primary_update_cast
Unexecuted instantiation: rdp.c:primary_update_cast
Unexecuted instantiation: tcp.c:primary_update_cast
Unexecuted instantiation: fastpath.c:primary_update_cast
Unexecuted instantiation: surface.c:primary_update_cast
Unexecuted instantiation: transport.c:primary_update_cast
update.c:primary_update_cast
Line
Count
Source
192
16.0k
{
193
16.0k
  union
194
16.0k
  {
195
16.0k
    rdpPrimaryUpdate* pub;
196
16.0k
    rdp_primary_update_internal* internal;
197
16.0k
  } cnv;
198
199
16.0k
  WINPR_ASSERT(update);
200
16.0k
  cnv.pub = update;
201
16.0k
  return cnv.internal;
202
16.0k
}
Unexecuted instantiation: message.c:primary_update_cast
Unexecuted instantiation: channels.c:primary_update_cast
Unexecuted instantiation: peer.c:primary_update_cast
Unexecuted instantiation: display.c:primary_update_cast
Unexecuted instantiation: aad.c:primary_update_cast
Unexecuted instantiation: timer.c:primary_update_cast
Unexecuted instantiation: rdg.c:primary_update_cast
Unexecuted instantiation: rpc_client.c:primary_update_cast
Unexecuted instantiation: wst.c:primary_update_cast
Unexecuted instantiation: arm.c:primary_update_cast
Unexecuted instantiation: activation.c:primary_update_cast
Unexecuted instantiation: mcs.c:primary_update_cast
Unexecuted instantiation: nla.c:primary_update_cast
Unexecuted instantiation: info.c:primary_update_cast
Unexecuted instantiation: input.c:primary_update_cast
Unexecuted instantiation: license.c:primary_update_cast
Unexecuted instantiation: security.c:primary_update_cast
orders.c:primary_update_cast
Line
Count
Source
192
151k
{
193
151k
  union
194
151k
  {
195
151k
    rdpPrimaryUpdate* pub;
196
151k
    rdp_primary_update_internal* internal;
197
151k
  } cnv;
198
199
151k
  WINPR_ASSERT(update);
200
151k
  cnv.pub = update;
201
151k
  return cnv.internal;
202
151k
}
Unexecuted instantiation: server.c:primary_update_cast
Unexecuted instantiation: autodetect.c:primary_update_cast
Unexecuted instantiation: heartbeat.c:primary_update_cast
Unexecuted instantiation: multitransport.c:primary_update_cast
Unexecuted instantiation: timezone.c:primary_update_cast
Unexecuted instantiation: window.c:primary_update_cast
Unexecuted instantiation: gdi.c:primary_update_cast
Unexecuted instantiation: TestFuzzCoreServer.c:primary_update_cast
Unexecuted instantiation: TestFuzzCoreClient.c:primary_update_cast
Unexecuted instantiation: gfx.c:primary_update_cast
Unexecuted instantiation: video.c:primary_update_cast
203
204
WINPR_ATTR_NODISCARD
205
static inline rdp_secondary_update_internal* secondary_update_cast(rdpSecondaryUpdate* update)
206
1.02k
{
207
1.02k
  union
208
1.02k
  {
209
1.02k
    rdpSecondaryUpdate* pub;
210
1.02k
    rdp_secondary_update_internal* internal;
211
1.02k
  } cnv;
212
213
1.02k
  WINPR_ASSERT(update);
214
1.02k
  cnv.pub = update;
215
1.02k
  return cnv.internal;
216
1.02k
}
Unexecuted instantiation: settings.c:secondary_update_cast
Unexecuted instantiation: utils.c:secondary_update_cast
Unexecuted instantiation: freerdp.c:secondary_update_cast
Unexecuted instantiation: client.c:secondary_update_cast
Unexecuted instantiation: codecs.c:secondary_update_cast
Unexecuted instantiation: metrics.c:secondary_update_cast
capabilities.c:secondary_update_cast
Line
Count
Source
206
1.02k
{
207
1.02k
  union
208
1.02k
  {
209
1.02k
    rdpSecondaryUpdate* pub;
210
1.02k
    rdp_secondary_update_internal* internal;
211
1.02k
  } cnv;
212
213
1.02k
  WINPR_ASSERT(update);
214
1.02k
  cnv.pub = update;
215
1.02k
  return cnv.internal;
216
1.02k
}
Unexecuted instantiation: connection.c:secondary_update_cast
Unexecuted instantiation: redirection.c:secondary_update_cast
Unexecuted instantiation: rdp.c:secondary_update_cast
Unexecuted instantiation: tcp.c:secondary_update_cast
Unexecuted instantiation: fastpath.c:secondary_update_cast
Unexecuted instantiation: surface.c:secondary_update_cast
Unexecuted instantiation: transport.c:secondary_update_cast
Unexecuted instantiation: update.c:secondary_update_cast
Unexecuted instantiation: message.c:secondary_update_cast
Unexecuted instantiation: channels.c:secondary_update_cast
Unexecuted instantiation: peer.c:secondary_update_cast
Unexecuted instantiation: display.c:secondary_update_cast
Unexecuted instantiation: aad.c:secondary_update_cast
Unexecuted instantiation: timer.c:secondary_update_cast
Unexecuted instantiation: rdg.c:secondary_update_cast
Unexecuted instantiation: rpc_client.c:secondary_update_cast
Unexecuted instantiation: wst.c:secondary_update_cast
Unexecuted instantiation: arm.c:secondary_update_cast
Unexecuted instantiation: activation.c:secondary_update_cast
Unexecuted instantiation: mcs.c:secondary_update_cast
Unexecuted instantiation: nla.c:secondary_update_cast
Unexecuted instantiation: info.c:secondary_update_cast
Unexecuted instantiation: input.c:secondary_update_cast
Unexecuted instantiation: license.c:secondary_update_cast
Unexecuted instantiation: security.c:secondary_update_cast
Unexecuted instantiation: orders.c:secondary_update_cast
Unexecuted instantiation: server.c:secondary_update_cast
Unexecuted instantiation: autodetect.c:secondary_update_cast
Unexecuted instantiation: heartbeat.c:secondary_update_cast
Unexecuted instantiation: multitransport.c:secondary_update_cast
Unexecuted instantiation: timezone.c:secondary_update_cast
Unexecuted instantiation: window.c:secondary_update_cast
Unexecuted instantiation: gdi.c:secondary_update_cast
Unexecuted instantiation: TestFuzzCoreServer.c:secondary_update_cast
Unexecuted instantiation: TestFuzzCoreClient.c:secondary_update_cast
Unexecuted instantiation: gfx.c:secondary_update_cast
Unexecuted instantiation: video.c:secondary_update_cast
217
218
FREERDP_LOCAL void update_free(rdpUpdate* update);
219
220
WINPR_ATTR_MALLOC(update_free, 1)
221
FREERDP_LOCAL rdpUpdate* update_new(rdpRdp* rdp);
222
223
FREERDP_LOCAL void update_reset_state(rdpUpdate* update);
224
225
WINPR_ATTR_NODISCARD
226
FREERDP_LOCAL BOOL update_post_connect(rdpUpdate* update);
227
228
FREERDP_LOCAL void update_post_disconnect(rdpUpdate* update);
229
230
WINPR_ATTR_NODISCARD
231
FREERDP_LOCAL BOOL update_recv_play_sound(rdpUpdate* update, wStream* s);
232
233
WINPR_ATTR_NODISCARD
234
FREERDP_LOCAL BOOL update_recv_pointer(rdpUpdate* update, wStream* s);
235
236
WINPR_ATTR_NODISCARD
237
FREERDP_LOCAL BOOL update_recv(rdpUpdate* update, wStream* s);
238
239
WINPR_ATTR_MALLOC(free_bitmap_update, 2)
240
FREERDP_LOCAL BITMAP_UPDATE* update_read_bitmap_update(rdpUpdate* update, wStream* s);
241
242
WINPR_ATTR_MALLOC(free_palette_update, 2)
243
FREERDP_LOCAL PALETTE_UPDATE* update_read_palette(rdpUpdate* update, wStream* s);
244
245
WINPR_ATTR_MALLOC(free_pointer_system_update, 2)
246
FREERDP_LOCAL POINTER_SYSTEM_UPDATE* update_read_pointer_system(rdpUpdate* update, wStream* s);
247
248
WINPR_ATTR_MALLOC(free_pointer_position_update, 2)
249
FREERDP_LOCAL POINTER_POSITION_UPDATE* update_read_pointer_position(rdpUpdate* update, wStream* s);
250
251
WINPR_ATTR_MALLOC(free_pointer_color_update, 2)
252
FREERDP_LOCAL POINTER_COLOR_UPDATE* update_read_pointer_color(rdpUpdate* update, wStream* s,
253
                                                              BYTE xorBpp);
254
255
WINPR_ATTR_MALLOC(free_pointer_large_update, 2)
256
FREERDP_LOCAL POINTER_LARGE_UPDATE* update_read_pointer_large(rdpUpdate* update, wStream* s);
257
258
WINPR_ATTR_MALLOC(free_pointer_new_update, 2)
259
FREERDP_LOCAL POINTER_NEW_UPDATE* update_read_pointer_new(rdpUpdate* update, wStream* s);
260
261
WINPR_ATTR_MALLOC(free_pointer_cached_update, 2)
262
FREERDP_LOCAL POINTER_CACHED_UPDATE* update_read_pointer_cached(rdpUpdate* update, wStream* s);
263
264
WINPR_ATTR_NODISCARD
265
FREERDP_LOCAL BOOL update_read_refresh_rect(rdpUpdate* update, wStream* s);
266
267
WINPR_ATTR_NODISCARD
268
FREERDP_LOCAL BOOL update_read_suppress_output(rdpUpdate* update, wStream* s);
269
270
FREERDP_LOCAL void update_register_server_callbacks(rdpUpdate* update);
271
FREERDP_LOCAL void update_register_client_callbacks(rdpUpdate* update);
272
273
WINPR_ATTR_NODISCARD
274
FREERDP_LOCAL int update_process_messages(rdpUpdate* update);
275
276
WINPR_ATTR_NODISCARD
277
FREERDP_LOCAL BOOL update_begin_paint(rdpUpdate* update);
278
279
WINPR_ATTR_NODISCARD
280
FREERDP_LOCAL BOOL update_end_paint(rdpUpdate* update);
281
282
FREERDP_LOCAL void update_dump_stats(rdpUpdate* update);
283
284
#endif /* FREERDP_LIB_CORE_UPDATE_H */