Removed internal members of rdpPrimaryUpdate from API header

This commit is contained in:
Armin Novak 2022-01-11 16:35:56 +01:00 committed by akallabeth
parent 3006c973c4
commit 504336f796
4 changed files with 91 additions and 61 deletions

View File

@ -495,32 +495,6 @@ struct rdp_primary_update
/* Statistics callback */ /* Statistics callback */
pOrderInfo OrderInfo; /* 38 */ pOrderInfo OrderInfo; /* 38 */
UINT32 paddingB[48 - 39]; /* 39 */ UINT32 paddingB[48 - 39]; /* 39 */
/* internal */
ORDER_INFO order_info;
DSTBLT_ORDER dstblt;
PATBLT_ORDER patblt;
SCRBLT_ORDER scrblt;
OPAQUE_RECT_ORDER opaque_rect;
DRAW_NINE_GRID_ORDER draw_nine_grid;
MULTI_DSTBLT_ORDER multi_dstblt;
MULTI_PATBLT_ORDER multi_patblt;
MULTI_SCRBLT_ORDER multi_scrblt;
MULTI_OPAQUE_RECT_ORDER multi_opaque_rect;
MULTI_DRAW_NINE_GRID_ORDER multi_draw_nine_grid;
LINE_TO_ORDER line_to;
POLYLINE_ORDER polyline;
MEMBLT_ORDER memblt;
MEM3BLT_ORDER mem3blt;
SAVE_BITMAP_ORDER save_bitmap;
GLYPH_INDEX_ORDER glyph_index;
FAST_INDEX_ORDER fast_index;
FAST_GLYPH_ORDER fast_glyph;
POLYGON_SC_ORDER polygon_sc;
POLYGON_CB_ORDER polygon_cb;
ELLIPSE_SC_ORDER ellipse_sc;
ELLIPSE_CB_ORDER ellipse_cb;
}; };
typedef struct rdp_primary_update rdpPrimaryUpdate; typedef struct rdp_primary_update rdpPrimaryUpdate;

View File

@ -2499,7 +2499,7 @@ BOOL update_write_cache_color_table_order(wStream* s,
UINT16* flags) UINT16* flags)
{ {
size_t i; size_t i;
int inf; size_t inf;
const UINT32* colorTable; const UINT32* colorTable;
if (cache_color_table->numberColors != 256) if (cache_color_table->numberColors != 256)
@ -3389,11 +3389,12 @@ BOOL update_write_bounds(wStream* s, ORDER_INFO* orderInfo)
} }
static BOOL read_primary_order(wLog* log, const char* orderName, wStream* s, static BOOL read_primary_order(wLog* log, const char* orderName, wStream* s,
const ORDER_INFO* orderInfo, rdpPrimaryUpdate* primary) const ORDER_INFO* orderInfo, rdpPrimaryUpdate* primary_pub)
{ {
BOOL rc = FALSE; BOOL rc = FALSE;
rdp_primary_update_internal* primary = primary_update_cast(primary_pub);
if (!s || !orderInfo || !primary || !orderName) if (!s || !orderInfo || !orderName)
return FALSE; return FALSE;
switch (orderInfo->orderType) switch (orderInfo->orderType)
@ -3509,14 +3510,13 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
BOOL rc = FALSE; BOOL rc = FALSE;
rdp_update_internal* up = update_cast(update); rdp_update_internal* up = update_cast(update);
rdpContext* context = update->context; rdpContext* context = update->context;
rdpPrimaryUpdate* primary = update->primary; rdp_primary_update_internal* primary = primary_update_cast(update->primary);
ORDER_INFO* orderInfo; ORDER_INFO* orderInfo;
rdpSettings* settings; rdpSettings* settings;
const char* orderName; const char* orderName;
BOOL defaultReturn; BOOL defaultReturn;
WINPR_ASSERT(s); WINPR_ASSERT(s);
WINPR_ASSERT(primary);
orderInfo = &(primary->order_info); orderInfo = &(primary->order_info);
WINPR_ASSERT(orderInfo); WINPR_ASSERT(orderInfo);
@ -3573,10 +3573,10 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
orderInfo->deltaCoordinates = (flags & ORDER_DELTA_COORDINATES) ? TRUE : FALSE; orderInfo->deltaCoordinates = (flags & ORDER_DELTA_COORDINATES) ? TRUE : FALSE;
if (!read_primary_order(up->log, orderName, s, orderInfo, primary)) if (!read_primary_order(up->log, orderName, s, orderInfo, &primary->common))
return FALSE; return FALSE;
rc = IFCALLRESULT(TRUE, primary->OrderInfo, context, orderInfo, orderName); rc = IFCALLRESULT(TRUE, primary->common.OrderInfo, context, orderInfo, orderName);
if (!rc) if (!rc)
return FALSE; return FALSE;
@ -3587,7 +3587,7 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->dstblt.bRop), orderName, gdi_rop3_code_string(primary->dstblt.bRop),
gdi_rop3_code(primary->dstblt.bRop)); gdi_rop3_code(primary->dstblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->DstBlt, context, &primary->dstblt); rc = IFCALLRESULT(defaultReturn, primary->common.DstBlt, context, &primary->dstblt);
} }
break; break;
@ -3596,7 +3596,7 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->patblt.bRop), orderName, gdi_rop3_code_string(primary->patblt.bRop),
gdi_rop3_code(primary->patblt.bRop)); gdi_rop3_code(primary->patblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->PatBlt, context, &primary->patblt); rc = IFCALLRESULT(defaultReturn, primary->common.PatBlt, context, &primary->patblt);
} }
break; break;
@ -3605,21 +3605,22 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->scrblt.bRop), orderName, gdi_rop3_code_string(primary->scrblt.bRop),
gdi_rop3_code(primary->scrblt.bRop)); gdi_rop3_code(primary->scrblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->ScrBlt, context, &primary->scrblt); rc = IFCALLRESULT(defaultReturn, primary->common.ScrBlt, context, &primary->scrblt);
} }
break; break;
case ORDER_TYPE_OPAQUE_RECT: case ORDER_TYPE_OPAQUE_RECT:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->OpaqueRect, context, &primary->opaque_rect); rc = IFCALLRESULT(defaultReturn, primary->common.OpaqueRect, context,
&primary->opaque_rect);
} }
break; break;
case ORDER_TYPE_DRAW_NINE_GRID: case ORDER_TYPE_DRAW_NINE_GRID:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->DrawNineGrid, context, rc = IFCALLRESULT(defaultReturn, primary->common.DrawNineGrid, context,
&primary->draw_nine_grid); &primary->draw_nine_grid);
} }
break; break;
@ -3629,7 +3630,8 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->multi_dstblt.bRop), orderName, gdi_rop3_code_string(primary->multi_dstblt.bRop),
gdi_rop3_code(primary->multi_dstblt.bRop)); gdi_rop3_code(primary->multi_dstblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->MultiDstBlt, context, &primary->multi_dstblt); rc = IFCALLRESULT(defaultReturn, primary->common.MultiDstBlt, context,
&primary->multi_dstblt);
} }
break; break;
@ -3638,7 +3640,8 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->multi_patblt.bRop), orderName, gdi_rop3_code_string(primary->multi_patblt.bRop),
gdi_rop3_code(primary->multi_patblt.bRop)); gdi_rop3_code(primary->multi_patblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->MultiPatBlt, context, &primary->multi_patblt); rc = IFCALLRESULT(defaultReturn, primary->common.MultiPatBlt, context,
&primary->multi_patblt);
} }
break; break;
@ -3647,14 +3650,15 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->multi_scrblt.bRop), orderName, gdi_rop3_code_string(primary->multi_scrblt.bRop),
gdi_rop3_code(primary->multi_scrblt.bRop)); gdi_rop3_code(primary->multi_scrblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->MultiScrBlt, context, &primary->multi_scrblt); rc = IFCALLRESULT(defaultReturn, primary->common.MultiScrBlt, context,
&primary->multi_scrblt);
} }
break; break;
case ORDER_TYPE_MULTI_OPAQUE_RECT: case ORDER_TYPE_MULTI_OPAQUE_RECT:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->MultiOpaqueRect, context, rc = IFCALLRESULT(defaultReturn, primary->common.MultiOpaqueRect, context,
&primary->multi_opaque_rect); &primary->multi_opaque_rect);
} }
break; break;
@ -3662,7 +3666,7 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
case ORDER_TYPE_MULTI_DRAW_NINE_GRID: case ORDER_TYPE_MULTI_DRAW_NINE_GRID:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->MultiDrawNineGrid, context, rc = IFCALLRESULT(defaultReturn, primary->common.MultiDrawNineGrid, context,
&primary->multi_draw_nine_grid); &primary->multi_draw_nine_grid);
} }
break; break;
@ -3670,14 +3674,14 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
case ORDER_TYPE_LINE_TO: case ORDER_TYPE_LINE_TO:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->LineTo, context, &primary->line_to); rc = IFCALLRESULT(defaultReturn, primary->common.LineTo, context, &primary->line_to);
} }
break; break;
case ORDER_TYPE_POLYLINE: case ORDER_TYPE_POLYLINE:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->Polyline, context, &primary->polyline); rc = IFCALLRESULT(defaultReturn, primary->common.Polyline, context, &primary->polyline);
} }
break; break;
@ -3686,7 +3690,7 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->memblt.bRop), orderName, gdi_rop3_code_string(primary->memblt.bRop),
gdi_rop3_code(primary->memblt.bRop)); gdi_rop3_code(primary->memblt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->MemBlt, context, &primary->memblt); rc = IFCALLRESULT(defaultReturn, primary->common.MemBlt, context, &primary->memblt);
} }
break; break;
@ -3695,63 +3699,71 @@ static BOOL update_recv_primary_order(rdpUpdate* update, wStream* s, BYTE flags)
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]", WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s rop=%s [0x%08" PRIx32 "]",
orderName, gdi_rop3_code_string(primary->mem3blt.bRop), orderName, gdi_rop3_code_string(primary->mem3blt.bRop),
gdi_rop3_code(primary->mem3blt.bRop)); gdi_rop3_code(primary->mem3blt.bRop));
rc = IFCALLRESULT(defaultReturn, primary->Mem3Blt, context, &primary->mem3blt); rc = IFCALLRESULT(defaultReturn, primary->common.Mem3Blt, context, &primary->mem3blt);
} }
break; break;
case ORDER_TYPE_SAVE_BITMAP: case ORDER_TYPE_SAVE_BITMAP:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->SaveBitmap, context, &primary->save_bitmap); rc = IFCALLRESULT(defaultReturn, primary->common.SaveBitmap, context,
&primary->save_bitmap);
} }
break; break;
case ORDER_TYPE_GLYPH_INDEX: case ORDER_TYPE_GLYPH_INDEX:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->GlyphIndex, context, &primary->glyph_index); rc = IFCALLRESULT(defaultReturn, primary->common.GlyphIndex, context,
&primary->glyph_index);
} }
break; break;
case ORDER_TYPE_FAST_INDEX: case ORDER_TYPE_FAST_INDEX:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->FastIndex, context, &primary->fast_index); rc = IFCALLRESULT(defaultReturn, primary->common.FastIndex, context,
&primary->fast_index);
} }
break; break;
case ORDER_TYPE_FAST_GLYPH: case ORDER_TYPE_FAST_GLYPH:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->FastGlyph, context, &primary->fast_glyph); rc = IFCALLRESULT(defaultReturn, primary->common.FastGlyph, context,
&primary->fast_glyph);
} }
break; break;
case ORDER_TYPE_POLYGON_SC: case ORDER_TYPE_POLYGON_SC:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->PolygonSC, context, &primary->polygon_sc); rc = IFCALLRESULT(defaultReturn, primary->common.PolygonSC, context,
&primary->polygon_sc);
} }
break; break;
case ORDER_TYPE_POLYGON_CB: case ORDER_TYPE_POLYGON_CB:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->PolygonCB, context, &primary->polygon_cb); rc = IFCALLRESULT(defaultReturn, primary->common.PolygonCB, context,
&primary->polygon_cb);
} }
break; break;
case ORDER_TYPE_ELLIPSE_SC: case ORDER_TYPE_ELLIPSE_SC:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->EllipseSC, context, &primary->ellipse_sc); rc = IFCALLRESULT(defaultReturn, primary->common.EllipseSC, context,
&primary->ellipse_sc);
} }
break; break;
case ORDER_TYPE_ELLIPSE_CB: case ORDER_TYPE_ELLIPSE_CB:
{ {
WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName); WLog_Print(up->log, WLOG_DEBUG, "Primary Drawing Order %s", orderName);
rc = IFCALLRESULT(defaultReturn, primary->EllipseCB, context, &primary->ellipse_cb); rc = IFCALLRESULT(defaultReturn, primary->common.EllipseCB, context,
&primary->ellipse_cb);
} }
break; break;

View File

@ -854,7 +854,7 @@ fail:
void update_reset_state(rdpUpdate* update) void update_reset_state(rdpUpdate* update)
{ {
rdp_update_internal* up = update_cast(update); rdp_update_internal* up = update_cast(update);
rdpPrimaryUpdate* primary = update->primary; rdp_primary_update_internal* primary = primary_update_cast(update->primary);
rdp_altsec_update_internal* altsec = altsec_update_cast(update->altsec); rdp_altsec_update_internal* altsec = altsec_update_cast(update->altsec);
WINPR_ASSERT(primary); WINPR_ASSERT(primary);
@ -3118,14 +3118,15 @@ void update_free(rdpUpdate* update)
if (update->primary) if (update->primary)
{ {
free(update->primary->polyline.points); rdp_primary_update_internal* primary = primary_update_cast(update->primary);
free(update->primary->polygon_sc.points); free(primary->polyline.points);
free(update->primary->fast_glyph.glyphData.aj); free(primary->polygon_sc.points);
free(update->primary); free(primary->fast_glyph.glyphData.aj);
free(primary);
} }
free(update->secondary); free(update->secondary);
free(update->altsec); free(altsec);
if (update->window) if (update->window)
{ {

View File

@ -85,6 +85,36 @@ typedef struct
DRAW_GDIPLUS_END_ORDER draw_gdiplus_end; DRAW_GDIPLUS_END_ORDER draw_gdiplus_end;
} rdp_altsec_update_internal; } rdp_altsec_update_internal;
typedef struct
{
rdpPrimaryUpdate common;
/* internal */
ORDER_INFO order_info;
DSTBLT_ORDER dstblt;
PATBLT_ORDER patblt;
SCRBLT_ORDER scrblt;
OPAQUE_RECT_ORDER opaque_rect;
DRAW_NINE_GRID_ORDER draw_nine_grid;
MULTI_DSTBLT_ORDER multi_dstblt;
MULTI_PATBLT_ORDER multi_patblt;
MULTI_SCRBLT_ORDER multi_scrblt;
MULTI_OPAQUE_RECT_ORDER multi_opaque_rect;
MULTI_DRAW_NINE_GRID_ORDER multi_draw_nine_grid;
LINE_TO_ORDER line_to;
POLYLINE_ORDER polyline;
MEMBLT_ORDER memblt;
MEM3BLT_ORDER mem3blt;
SAVE_BITMAP_ORDER save_bitmap;
GLYPH_INDEX_ORDER glyph_index;
FAST_INDEX_ORDER fast_index;
FAST_GLYPH_ORDER fast_glyph;
POLYGON_SC_ORDER polygon_sc;
POLYGON_CB_ORDER polygon_cb;
ELLIPSE_SC_ORDER ellipse_sc;
ELLIPSE_CB_ORDER ellipse_cb;
} rdp_primary_update_internal;
static INLINE rdp_update_internal* update_cast(rdpUpdate* update) static INLINE rdp_update_internal* update_cast(rdpUpdate* update)
{ {
union union
@ -111,6 +141,19 @@ static INLINE rdp_altsec_update_internal* altsec_update_cast(rdpAltSecUpdate* up
return cnv.internal; return cnv.internal;
} }
static INLINE rdp_primary_update_internal* primary_update_cast(rdpPrimaryUpdate* update)
{
union
{
rdpPrimaryUpdate* pub;
rdp_primary_update_internal* internal;
} cnv;
WINPR_ASSERT(update);
cnv.pub = update;
return cnv.internal;
}
FREERDP_LOCAL rdpUpdate* update_new(rdpRdp* rdp); FREERDP_LOCAL rdpUpdate* update_new(rdpRdp* rdp);
FREERDP_LOCAL void update_free(rdpUpdate* update); FREERDP_LOCAL void update_free(rdpUpdate* update);
FREERDP_LOCAL void update_reset_state(rdpUpdate* update); FREERDP_LOCAL void update_reset_state(rdpUpdate* update);