mirror of https://github.com/FreeRDP/FreeRDP
freerdp: pad multiple interfaces for improved ABI stability
This commit is contained in:
parent
28647840ba
commit
666fbb0405
|
@ -58,9 +58,11 @@ struct rdp_context
|
|||
{
|
||||
freerdp* instance;
|
||||
freerdp_peer* peer;
|
||||
uint32 paddingA[16 - 2]; /* offset 16 */
|
||||
|
||||
int argc;
|
||||
char** argv;
|
||||
uint32 paddingB[16 - 2]; /* offset 32 */
|
||||
|
||||
rdpRdp* rdp;
|
||||
rdpGdi* gdi;
|
||||
|
@ -68,27 +70,33 @@ struct rdp_context
|
|||
rdpCache* cache;
|
||||
rdpChannels* channels;
|
||||
rdpGraphics* graphics;
|
||||
uint32 paddingC[32 - 6]; /* offset 64 */
|
||||
};
|
||||
|
||||
struct rdp_freerdp
|
||||
{
|
||||
rdpContext* context;
|
||||
uint32 paddingA[16 - 1]; /* offset 16 */
|
||||
|
||||
rdpInput* input;
|
||||
rdpUpdate* update;
|
||||
rdpSettings* settings;
|
||||
uint32 paddingB[16 - 3]; /* offset 32 */
|
||||
|
||||
size_t context_size;
|
||||
pContextNew ContextNew;
|
||||
pContextFree ContextFree;
|
||||
uint32 paddingC[16 - 3]; /* offset 48 */
|
||||
|
||||
pPreConnect PreConnect;
|
||||
pPostConnect PostConnect;
|
||||
pAuthenticate Authenticate;
|
||||
pVerifyCertificate VerifyCertificate;
|
||||
uint32 paddingD[16 - 4]; /* offset 64 */
|
||||
|
||||
pSendChannelData SendChannelData;
|
||||
pReceiveChannelData ReceiveChannelData;
|
||||
uint32 paddingE[16 - 2]; /* offset 80 */
|
||||
};
|
||||
|
||||
FREERDP_API void freerdp_context_new(freerdp* instance);
|
||||
|
|
|
@ -41,27 +41,28 @@ typedef void (*pBitmap_SetSurface)(rdpContext* context, rdpBitmap* bitmap, boole
|
|||
struct rdp_bitmap
|
||||
{
|
||||
size_t size;
|
||||
|
||||
pBitmap_New New;
|
||||
pBitmap_Free Free;
|
||||
pBitmap_Paint Paint;
|
||||
pBitmap_Decompress Decompress;
|
||||
pBitmap_SetSurface SetSurface;
|
||||
uint32 paddingA[16 - 6]; /* offset 16 */
|
||||
|
||||
uint16 left;
|
||||
uint16 top;
|
||||
uint16 right;
|
||||
uint16 bottom;
|
||||
|
||||
uint16 width;
|
||||
uint16 height;
|
||||
uint16 bpp;
|
||||
uint16 flags;
|
||||
uint32 left;
|
||||
uint32 top;
|
||||
uint32 right;
|
||||
uint32 bottom;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
uint32 bpp;
|
||||
uint32 flags;
|
||||
uint32 length;
|
||||
uint8* data;
|
||||
uint32 paddingB[16 - 10]; /* offset 32 */
|
||||
|
||||
boolean compressed;
|
||||
boolean ephemeral;
|
||||
uint32 paddingC[16 - 2]; /* offset 48 */
|
||||
};
|
||||
|
||||
FREERDP_API rdpBitmap* Bitmap_Alloc(rdpContext* context);
|
||||
|
@ -84,20 +85,21 @@ typedef void (*pPointer_Set)(rdpContext* context, rdpPointer* pointer);
|
|||
struct rdp_pointer
|
||||
{
|
||||
size_t size;
|
||||
|
||||
pPointer_New New;
|
||||
pPointer_Free Free;
|
||||
pPointer_Set Set;
|
||||
uint32 paddingA[16 - 4]; /* offset 16 */
|
||||
|
||||
uint16 xPos;
|
||||
uint16 yPos;
|
||||
uint16 width;
|
||||
uint16 height;
|
||||
uint16 xorBpp;
|
||||
uint16 lengthAndMask;
|
||||
uint16 lengthXorMask;
|
||||
uint32 xPos;
|
||||
uint32 yPos;
|
||||
uint32 width;
|
||||
uint32 height;
|
||||
uint32 xorBpp;
|
||||
uint32 lengthAndMask;
|
||||
uint32 lengthXorMask;
|
||||
uint8* xorMaskData;
|
||||
uint8* andMaskData;
|
||||
uint32 paddingB[16 - 9]; /* offset 32 */
|
||||
};
|
||||
|
||||
FREERDP_API rdpPointer* Pointer_Alloc(rdpContext* context);
|
||||
|
@ -116,19 +118,20 @@ typedef void (*pGlyph_EndDraw)(rdpContext* context, int x, int y, int width, int
|
|||
struct rdp_glyph
|
||||
{
|
||||
size_t size;
|
||||
|
||||
sint16 x;
|
||||
sint16 y;
|
||||
uint16 cx;
|
||||
uint16 cy;
|
||||
uint16 cb;
|
||||
uint8* aj;
|
||||
|
||||
pGlyph_New New;
|
||||
pGlyph_Free Free;
|
||||
pGlyph_Draw Draw;
|
||||
pGlyph_BeginDraw BeginDraw;
|
||||
pGlyph_EndDraw EndDraw;
|
||||
uint32 paddingA[16 - 6]; /* offset 16 */
|
||||
|
||||
sint32 x;
|
||||
sint32 y;
|
||||
uint32 cx;
|
||||
uint32 cy;
|
||||
uint32 cb;
|
||||
uint8* aj;
|
||||
uint32 paddingB[16 - 6]; /* offset 32 */
|
||||
};
|
||||
|
||||
FREERDP_API rdpGlyph* Glyph_Alloc(rdpContext* context);
|
||||
|
@ -146,6 +149,7 @@ struct rdp_graphics
|
|||
rdpBitmap* Bitmap_Prototype;
|
||||
rdpPointer* Pointer_Prototype;
|
||||
rdpGlyph* Glyph_Prototype;
|
||||
uint32 paddingA[16 - 4]; /* offset 16 */
|
||||
};
|
||||
|
||||
FREERDP_API void graphics_register_bitmap(rdpGraphics* graphics, rdpBitmap* bitmap);
|
||||
|
|
|
@ -61,14 +61,15 @@ typedef void (*pExtendedMouseEvent)(rdpInput* input, uint16 flags, uint16 x, uin
|
|||
struct rdp_input
|
||||
{
|
||||
rdpContext* context;
|
||||
void* param1;
|
||||
uint32 paddingA[16 - 2]; /* offset 16 */
|
||||
|
||||
pSynchronizeEvent SynchronizeEvent;
|
||||
pKeyboardEvent KeyboardEvent;
|
||||
pUnicodeKeyboardEvent UnicodeKeyboardEvent;
|
||||
pMouseEvent MouseEvent;
|
||||
pExtendedMouseEvent ExtendedMouseEvent;
|
||||
|
||||
void* param1;
|
||||
uint32 paddingB[16 - 5]; /* offset 32 */
|
||||
};
|
||||
|
||||
#endif /* __INPUT_API_H */
|
||||
|
|
|
@ -183,7 +183,7 @@ struct rdp_monitor
|
|||
struct rdp_settings
|
||||
{
|
||||
void* instance;
|
||||
uint32 paddingA[16 - 1];
|
||||
uint32 paddingA[16 - 1]; /* offset 16 */
|
||||
|
||||
/* Core Protocol Parameters */
|
||||
uint32 width;
|
||||
|
@ -200,7 +200,7 @@ struct rdp_settings
|
|||
uint32 encryption_method;
|
||||
uint32 encryption_level;
|
||||
boolean authentication;
|
||||
uint32 paddingB[32 - 14];
|
||||
uint32 paddingB[32 - 14]; /* offset 48 */
|
||||
|
||||
/* Connection Settings */
|
||||
uint32 port;
|
||||
|
@ -216,7 +216,7 @@ struct rdp_settings
|
|||
boolean autologon;
|
||||
boolean compression;
|
||||
uint32 performance_flags;
|
||||
uint32 paddingC[32 - 13];
|
||||
uint32 paddingC[32 - 13]; /* offset 80 */
|
||||
|
||||
/* User Interface Parameters */
|
||||
boolean sw_gdi;
|
||||
|
@ -226,7 +226,7 @@ struct rdp_settings
|
|||
boolean decorations;
|
||||
uint32 percent_screen;
|
||||
boolean mouse_motion;
|
||||
uint32 paddingD[32 - 7];
|
||||
uint32 paddingD[32 - 7]; /* offset 112 */
|
||||
|
||||
/* Internal Parameters */
|
||||
char* home_path;
|
||||
|
@ -234,7 +234,7 @@ struct rdp_settings
|
|||
uint32 pdu_source;
|
||||
UNICONV* uniconv;
|
||||
boolean server_mode;
|
||||
uint32 paddingE[32 - 5];
|
||||
uint32 paddingE[32 - 5]; /* offset 144 */
|
||||
|
||||
/* Session */
|
||||
boolean console_audio;
|
||||
|
|
|
@ -1141,6 +1141,7 @@ typedef void (*pSurfaceCommand)(rdpUpdate* update, STREAM* s);
|
|||
struct rdp_update
|
||||
{
|
||||
rdpContext* context;
|
||||
uint32 paddingA[16 - 1];
|
||||
|
||||
pBeginPaint BeginPaint;
|
||||
pEndPaint EndPaint;
|
||||
|
@ -1150,11 +1151,14 @@ struct rdp_update
|
|||
pBitmapUpdate BitmapUpdate;
|
||||
pPalette Palette;
|
||||
pPlaySound PlaySound;
|
||||
uint32 paddingB[16 - 8];
|
||||
|
||||
pPointerPosition PointerPosition;
|
||||
pPointerSystem PointerSystem;
|
||||
pPointerColor PointerColor;
|
||||
pPointerNew PointerNew;
|
||||
pPointerCached PointerCached;
|
||||
uint32 paddingC[16 - 5];
|
||||
|
||||
pDstBlt DstBlt;
|
||||
pPatBlt PatBlt;
|
||||
|
@ -1178,6 +1182,7 @@ struct rdp_update
|
|||
pPolygonCB PolygonCB;
|
||||
pEllipseSC EllipseSC;
|
||||
pEllipseCB EllipseCB;
|
||||
uint32 paddingD[32 - 22];
|
||||
|
||||
pCacheBitmap CacheBitmap;
|
||||
pCacheBitmapV2 CacheBitmapV2;
|
||||
|
@ -1186,6 +1191,7 @@ struct rdp_update
|
|||
pCacheGlyph CacheGlyph;
|
||||
pCacheGlyphV2 CacheGlyphV2;
|
||||
pCacheBrush CacheBrush;
|
||||
uint32 paddingE[32 - 7];
|
||||
|
||||
pCreateOffscreenBitmap CreateOffscreenBitmap;
|
||||
pSwitchSurface SwitchSurface;
|
||||
|
@ -1199,6 +1205,7 @@ struct rdp_update
|
|||
pDrawGdiPlusCacheFirst DrawGdiPlusCacheFirst;
|
||||
pDrawGdiPlusCacheNext DrawGdiPlusCacheNext;
|
||||
pDrawGdiPlusCacheEnd DrawGdiPlusCacheEnd;
|
||||
uint32 paddingF[32 - 12];
|
||||
|
||||
pWindowCreate WindowCreate;
|
||||
pWindowUpdate WindowUpdate;
|
||||
|
@ -1210,12 +1217,17 @@ struct rdp_update
|
|||
pNotifyIconDelete NotifyIconDelete;
|
||||
pMonitoredDesktop MonitoredDesktop;
|
||||
pNonMonitoredDesktop NonMonitoredDesktop;
|
||||
uint32 paddingG[32 - 10];
|
||||
|
||||
pRefreshRect RefreshRect;
|
||||
pSuppressOutput SuppressOutput;
|
||||
uint32 paddingH[16 - 2];
|
||||
|
||||
pSurfaceBits SurfaceBits;
|
||||
pSurfaceCommand SurfaceCommand;
|
||||
uint32 paddingI[16 - 2];
|
||||
|
||||
/* everything below is internal, and should not be directly accessed */
|
||||
|
||||
boolean glyph_v2;
|
||||
|
||||
|
|
|
@ -1739,6 +1739,7 @@ boolean rdp_recv_demand_active(rdpRdp* rdp, STREAM* s)
|
|||
uint16 channelId;
|
||||
uint16 pduType;
|
||||
uint16 pduLength;
|
||||
uint16 pduSource;
|
||||
uint16 numberCapabilities;
|
||||
uint16 lengthSourceDescriptor;
|
||||
uint16 lengthCombinedCapabilities;
|
||||
|
@ -1771,12 +1772,14 @@ boolean rdp_recv_demand_active(rdpRdp* rdp, STREAM* s)
|
|||
return False;
|
||||
}
|
||||
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &rdp->settings->pdu_source))
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &pduSource))
|
||||
{
|
||||
printf("rdp_read_share_control_header failed\n");
|
||||
return False;
|
||||
}
|
||||
|
||||
rdp->settings->pdu_source = pduSource;
|
||||
|
||||
if (pduType != PDU_TYPE_DEMAND_ACTIVE)
|
||||
{
|
||||
printf("pduType bad\n");
|
||||
|
@ -1870,6 +1873,7 @@ boolean rdp_recv_confirm_active(rdpRdp* rdp, STREAM* s)
|
|||
uint16 channelId;
|
||||
uint16 pduType;
|
||||
uint16 pduLength;
|
||||
uint16 pduSource;
|
||||
uint16 lengthSourceDescriptor;
|
||||
uint16 lengthCombinedCapabilities;
|
||||
uint16 numberCapabilities;
|
||||
|
@ -1879,8 +1883,11 @@ boolean rdp_recv_confirm_active(rdpRdp* rdp, STREAM* s)
|
|||
if (channelId != MCS_GLOBAL_CHANNEL_ID)
|
||||
return False;
|
||||
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &rdp->settings->pdu_source))
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &pduSource))
|
||||
return False;
|
||||
|
||||
rdp->settings->pdu_source = pduSource;
|
||||
|
||||
if (pduType != PDU_TYPE_CONFIRM_ACTIVE)
|
||||
return False;
|
||||
|
||||
|
|
|
@ -115,6 +115,7 @@ static boolean peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
|||
uint16 length;
|
||||
uint16 pduType;
|
||||
uint16 pduLength;
|
||||
uint16 pduSource;
|
||||
uint16 channelId;
|
||||
|
||||
if (!rdp_read_header(client->context->rdp, s, &length, &channelId))
|
||||
|
@ -129,9 +130,11 @@ static boolean peer_recv_tpkt_pdu(freerdp_peer* client, STREAM* s)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &client->settings->pdu_source))
|
||||
if (!rdp_read_share_control_header(s, &pduLength, &pduType, &pduSource))
|
||||
return False;
|
||||
|
||||
client->settings->pdu_source = pduSource;
|
||||
|
||||
switch (pduType)
|
||||
{
|
||||
case PDU_TYPE_DATA:
|
||||
|
|
|
@ -619,6 +619,7 @@ static boolean rdp_recv_tpkt_pdu(rdpRdp* rdp, STREAM* s)
|
|||
uint16 length;
|
||||
uint16 pduType;
|
||||
uint16 pduLength;
|
||||
uint16 pduSource;
|
||||
uint16 channelId;
|
||||
uint32 securityHeader;
|
||||
|
||||
|
@ -652,7 +653,9 @@ static boolean rdp_recv_tpkt_pdu(rdpRdp* rdp, STREAM* s)
|
|||
}
|
||||
else
|
||||
{
|
||||
rdp_read_share_control_header(s, &pduLength, &pduType, &rdp->settings->pdu_source);
|
||||
rdp_read_share_control_header(s, &pduLength, &pduType, &pduSource);
|
||||
|
||||
rdp->settings->pdu_source = pduSource;
|
||||
|
||||
switch (pduType)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue