update: move primary orders into sub-interface
This commit is contained in:
parent
7899915c78
commit
f17a25e08d
@ -288,9 +288,9 @@ void xf_gdi_set_bounds(rdpUpdate* update, BOUNDS* bounds)
|
||||
}
|
||||
}
|
||||
|
||||
void xf_gdi_dstblt(rdpUpdate* update, DSTBLT_ORDER* dstblt)
|
||||
void xf_gdi_dstblt(rdpContext* context, DSTBLT_ORDER* dstblt)
|
||||
{
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
xf_set_rop3(xfi, gdi_rop3_code(dstblt->bRop));
|
||||
|
||||
@ -312,13 +312,13 @@ void xf_gdi_dstblt(rdpUpdate* update, DSTBLT_ORDER* dstblt)
|
||||
XSetFunction(xfi->display, xfi->gc, GXcopy);
|
||||
}
|
||||
|
||||
void xf_gdi_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
void xf_gdi_patblt(rdpContext* context, PATBLT_ORDER* patblt)
|
||||
{
|
||||
Pixmap pattern;
|
||||
rdpBrush* brush;
|
||||
uint32 foreColor;
|
||||
uint32 backColor;
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
brush = &patblt->brush;
|
||||
xf_set_rop3(xfi, gdi_rop3_code(patblt->bRop));
|
||||
@ -385,9 +385,9 @@ void xf_gdi_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
XSetFunction(xfi->display, xfi->gc, GXcopy);
|
||||
}
|
||||
|
||||
void xf_gdi_scrblt(rdpUpdate* update, SCRBLT_ORDER* scrblt)
|
||||
void xf_gdi_scrblt(rdpContext* context, SCRBLT_ORDER* scrblt)
|
||||
{
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
xf_set_rop3(xfi, gdi_rop3_code(scrblt->bRop));
|
||||
|
||||
@ -419,10 +419,10 @@ void xf_gdi_scrblt(rdpUpdate* update, SCRBLT_ORDER* scrblt)
|
||||
XSetFunction(xfi->display, xfi->gc, GXcopy);
|
||||
}
|
||||
|
||||
void xf_gdi_opaque_rect(rdpUpdate* update, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
void xf_gdi_opaque_rect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
{
|
||||
uint32 color;
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
color = freerdp_color_convert(opaque_rect->color, xfi->srcBpp, 32, xfi->clrconv);
|
||||
|
||||
@ -446,12 +446,12 @@ void xf_gdi_opaque_rect(rdpUpdate* update, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
}
|
||||
}
|
||||
|
||||
void xf_gdi_multi_opaque_rect(rdpUpdate* update, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect)
|
||||
void xf_gdi_multi_opaque_rect(rdpContext* context, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect)
|
||||
{
|
||||
int i;
|
||||
uint32 color;
|
||||
DELTA_RECT* rectangle;
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
color = freerdp_color_convert(multi_opaque_rect->color, xfi->srcBpp, 32, xfi->clrconv);
|
||||
|
||||
@ -480,10 +480,10 @@ void xf_gdi_multi_opaque_rect(rdpUpdate* update, MULTI_OPAQUE_RECT_ORDER* multi_
|
||||
}
|
||||
}
|
||||
|
||||
void xf_gdi_line_to(rdpUpdate* update, LINE_TO_ORDER* line_to)
|
||||
void xf_gdi_line_to(rdpContext* context, LINE_TO_ORDER* line_to)
|
||||
{
|
||||
uint32 color;
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
xf_set_rop2(xfi, line_to->bRop2);
|
||||
color = freerdp_color_convert(line_to->penColor, xfi->srcBpp, 32, xfi->clrconv);
|
||||
@ -519,7 +519,7 @@ void xf_gdi_line_to(rdpUpdate* update, LINE_TO_ORDER* line_to)
|
||||
XSetFunction(xfi->display, xfi->gc, GXcopy);
|
||||
}
|
||||
|
||||
void xf_gdi_polyline(rdpUpdate* update, POLYLINE_ORDER* polyline)
|
||||
void xf_gdi_polyline(rdpContext* context, POLYLINE_ORDER* polyline)
|
||||
{
|
||||
int i;
|
||||
int x, y;
|
||||
@ -529,7 +529,7 @@ void xf_gdi_polyline(rdpUpdate* update, POLYLINE_ORDER* polyline)
|
||||
uint32 color;
|
||||
XPoint* points;
|
||||
int width, height;
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
xf_set_rop2(xfi, polyline->bRop2);
|
||||
color = freerdp_color_convert(polyline->penColor, xfi->srcBpp, 32, xfi->clrconv);
|
||||
@ -581,10 +581,10 @@ void xf_gdi_polyline(rdpUpdate* update, POLYLINE_ORDER* polyline)
|
||||
xfree(points);
|
||||
}
|
||||
|
||||
void xf_gdi_memblt(rdpUpdate* update, MEMBLT_ORDER* memblt)
|
||||
void xf_gdi_memblt(rdpContext* context, MEMBLT_ORDER* memblt)
|
||||
{
|
||||
xfBitmap* bitmap;
|
||||
xfInfo* xfi = ((xfContext*) update->context)->xfi;
|
||||
xfInfo* xfi = ((xfContext*) context)->xfi;
|
||||
|
||||
bitmap = (xfBitmap*) memblt->bitmap;
|
||||
xf_set_rop3(xfi, gdi_rop3_code(memblt->bRop));
|
||||
@ -608,7 +608,7 @@ void xf_gdi_memblt(rdpUpdate* update, MEMBLT_ORDER* memblt)
|
||||
XSetFunction(xfi->display, xfi->gc, GXcopy);
|
||||
}
|
||||
|
||||
void xf_gdi_mem3blt(rdpUpdate* update, MEM3BLT_ORDER* mem3blt)
|
||||
void xf_gdi_mem3blt(rdpContext* context, MEM3BLT_ORDER* mem3blt)
|
||||
{
|
||||
|
||||
}
|
||||
@ -738,30 +738,33 @@ void xf_gdi_surface_bits(rdpUpdate* update, SURFACE_BITS_COMMAND* surface_bits_c
|
||||
|
||||
void xf_gdi_register_update_callbacks(rdpUpdate* update)
|
||||
{
|
||||
rdpPrimaryUpdate* primary = update->primary;
|
||||
|
||||
update->Palette = xf_gdi_palette_update;
|
||||
update->SetBounds = xf_gdi_set_bounds;
|
||||
update->DstBlt = xf_gdi_dstblt;
|
||||
update->PatBlt = xf_gdi_patblt;
|
||||
update->ScrBlt = xf_gdi_scrblt;
|
||||
update->OpaqueRect = xf_gdi_opaque_rect;
|
||||
update->DrawNineGrid = NULL;
|
||||
update->MultiDstBlt = NULL;
|
||||
update->MultiPatBlt = NULL;
|
||||
update->MultiScrBlt = NULL;
|
||||
update->MultiOpaqueRect = xf_gdi_multi_opaque_rect;
|
||||
update->MultiDrawNineGrid = NULL;
|
||||
update->LineTo = xf_gdi_line_to;
|
||||
update->Polyline = xf_gdi_polyline;
|
||||
update->MemBlt = xf_gdi_memblt;
|
||||
update->Mem3Blt = xf_gdi_mem3blt;
|
||||
update->SaveBitmap = NULL;
|
||||
update->GlyphIndex = NULL;
|
||||
update->FastIndex = NULL;
|
||||
update->FastGlyph = NULL;
|
||||
update->PolygonSC = NULL;
|
||||
update->PolygonCB = NULL;
|
||||
update->EllipseSC = NULL;
|
||||
update->EllipseCB = NULL;
|
||||
|
||||
primary->DstBlt = xf_gdi_dstblt;
|
||||
primary->PatBlt = xf_gdi_patblt;
|
||||
primary->ScrBlt = xf_gdi_scrblt;
|
||||
primary->OpaqueRect = xf_gdi_opaque_rect;
|
||||
primary->DrawNineGrid = NULL;
|
||||
primary->MultiDstBlt = NULL;
|
||||
primary->MultiPatBlt = NULL;
|
||||
primary->MultiScrBlt = NULL;
|
||||
primary->MultiOpaqueRect = xf_gdi_multi_opaque_rect;
|
||||
primary->MultiDrawNineGrid = NULL;
|
||||
primary->LineTo = xf_gdi_line_to;
|
||||
primary->Polyline = xf_gdi_polyline;
|
||||
primary->MemBlt = xf_gdi_memblt;
|
||||
primary->Mem3Blt = xf_gdi_mem3blt;
|
||||
primary->SaveBitmap = NULL;
|
||||
primary->GlyphIndex = NULL;
|
||||
primary->FastIndex = NULL;
|
||||
primary->FastGlyph = NULL;
|
||||
primary->PolygonSC = NULL;
|
||||
primary->PolygonCB = NULL;
|
||||
primary->EllipseSC = NULL;
|
||||
primary->EllipseCB = NULL;
|
||||
|
||||
update->SurfaceBits = xf_gdi_surface_bits;
|
||||
}
|
||||
|
@ -739,17 +739,17 @@ uint8 orders_update_2[] =
|
||||
"\x50\x01\x01\x01\x55\x01\x50\xff\xff\xff\x16\x00\x17\x00\xea\x03"
|
||||
"\xea\x03\x02\x00\x85\x02\x16\x00\x02\x00\x00\x00\x03\x00\x14\xb2";
|
||||
|
||||
void test_opaque_rect(rdpUpdate* update, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
void test_opaque_rect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
{
|
||||
opaque_rect_count++;
|
||||
}
|
||||
|
||||
void test_polyline(rdpUpdate* update, POLYLINE_ORDER* polyline)
|
||||
void test_polyline(rdpContext* context, POLYLINE_ORDER* polyline)
|
||||
{
|
||||
polyline_count++;
|
||||
}
|
||||
|
||||
void test_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
void test_patblt(rdpContext* context, PATBLT_ORDER* patblt)
|
||||
{
|
||||
patblt_count++;
|
||||
}
|
||||
@ -766,9 +766,9 @@ void test_update_recv_orders(void)
|
||||
polyline_count = 0;
|
||||
patblt_count = 0;
|
||||
|
||||
update->OpaqueRect = test_opaque_rect;
|
||||
update->Polyline = test_polyline;
|
||||
update->PatBlt = test_patblt;
|
||||
update->primary->OpaqueRect = test_opaque_rect;
|
||||
update->primary->Polyline = test_polyline;
|
||||
update->primary->PatBlt = test_patblt;
|
||||
|
||||
s->p = s->data = orders_update_1;
|
||||
|
||||
@ -777,7 +777,7 @@ void test_update_recv_orders(void)
|
||||
CU_ASSERT(opaque_rect_count == 5);
|
||||
CU_ASSERT(polyline_count == 2);
|
||||
|
||||
update->order_info.orderType = ORDER_TYPE_PATBLT;
|
||||
update->primary->order_info.orderType = ORDER_TYPE_PATBLT;
|
||||
s->p = s->data = orders_update_2;
|
||||
|
||||
update_recv(update, s);
|
||||
|
@ -411,28 +411,28 @@ struct _ELLIPSE_CB_ORDER
|
||||
};
|
||||
typedef struct _ELLIPSE_CB_ORDER ELLIPSE_CB_ORDER;
|
||||
|
||||
typedef void (*pDstBlt)(rdpUpdate* update, DSTBLT_ORDER* dstblt);
|
||||
typedef void (*pPatBlt)(rdpUpdate* update, PATBLT_ORDER* patblt);
|
||||
typedef void (*pScrBlt)(rdpUpdate* update, SCRBLT_ORDER* scrblt);
|
||||
typedef void (*pOpaqueRect)(rdpUpdate* update, OPAQUE_RECT_ORDER* opaque_rect);
|
||||
typedef void (*pDrawNineGrid)(rdpUpdate* update, DRAW_NINE_GRID_ORDER* draw_nine_grid);
|
||||
typedef void (*pMultiDstBlt)(rdpUpdate* update, MULTI_DSTBLT_ORDER* multi_dstblt);
|
||||
typedef void (*pMultiPatBlt)(rdpUpdate* update, MULTI_PATBLT_ORDER* multi_patblt);
|
||||
typedef void (*pMultiScrBlt)(rdpUpdate* update, MULTI_SCRBLT_ORDER* multi_scrblt);
|
||||
typedef void (*pMultiOpaqueRect)(rdpUpdate* update, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect);
|
||||
typedef void (*pMultiDrawNineGrid)(rdpUpdate* update, MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid);
|
||||
typedef void (*pLineTo)(rdpUpdate* update, LINE_TO_ORDER* line_to);
|
||||
typedef void (*pPolyline)(rdpUpdate* update, POLYLINE_ORDER* polyline);
|
||||
typedef void (*pMemBlt)(rdpUpdate* update, MEMBLT_ORDER* memblt);
|
||||
typedef void (*pMem3Blt)(rdpUpdate* update, MEM3BLT_ORDER* memblt);
|
||||
typedef void (*pSaveBitmap)(rdpUpdate* update, SAVE_BITMAP_ORDER* save_bitmap);
|
||||
typedef void (*pGlyphIndex)(rdpUpdate* update, GLYPH_INDEX_ORDER* glyph_index);
|
||||
typedef void (*pFastIndex)(rdpUpdate* update, FAST_INDEX_ORDER* fast_index);
|
||||
typedef void (*pFastGlyph)(rdpUpdate* update, FAST_GLYPH_ORDER* fast_glyph);
|
||||
typedef void (*pPolygonSC)(rdpUpdate* update, POLYGON_SC_ORDER* polygon_sc);
|
||||
typedef void (*pPolygonCB)(rdpUpdate* update, POLYGON_CB_ORDER* polygon_cb);
|
||||
typedef void (*pEllipseSC)(rdpUpdate* update, ELLIPSE_SC_ORDER* ellipse_sc);
|
||||
typedef void (*pEllipseCB)(rdpUpdate* update, ELLIPSE_CB_ORDER* ellipse_cb);
|
||||
typedef void (*pDstBlt)(rdpContext* context, DSTBLT_ORDER* dstblt);
|
||||
typedef void (*pPatBlt)(rdpContext* context, PATBLT_ORDER* patblt);
|
||||
typedef void (*pScrBlt)(rdpContext* context, SCRBLT_ORDER* scrblt);
|
||||
typedef void (*pOpaqueRect)(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect);
|
||||
typedef void (*pDrawNineGrid)(rdpContext* context, DRAW_NINE_GRID_ORDER* draw_nine_grid);
|
||||
typedef void (*pMultiDstBlt)(rdpContext* context, MULTI_DSTBLT_ORDER* multi_dstblt);
|
||||
typedef void (*pMultiPatBlt)(rdpContext* context, MULTI_PATBLT_ORDER* multi_patblt);
|
||||
typedef void (*pMultiScrBlt)(rdpContext* context, MULTI_SCRBLT_ORDER* multi_scrblt);
|
||||
typedef void (*pMultiOpaqueRect)(rdpContext* context, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect);
|
||||
typedef void (*pMultiDrawNineGrid)(rdpContext* context, MULTI_DRAW_NINE_GRID_ORDER* multi_draw_nine_grid);
|
||||
typedef void (*pLineTo)(rdpContext* context, LINE_TO_ORDER* line_to);
|
||||
typedef void (*pPolyline)(rdpContext* context, POLYLINE_ORDER* polyline);
|
||||
typedef void (*pMemBlt)(rdpContext* context, MEMBLT_ORDER* memblt);
|
||||
typedef void (*pMem3Blt)(rdpContext* context, MEM3BLT_ORDER* memblt);
|
||||
typedef void (*pSaveBitmap)(rdpContext* context, SAVE_BITMAP_ORDER* save_bitmap);
|
||||
typedef void (*pGlyphIndex)(rdpContext* context, GLYPH_INDEX_ORDER* glyph_index);
|
||||
typedef void (*pFastIndex)(rdpContext* context, FAST_INDEX_ORDER* fast_index);
|
||||
typedef void (*pFastGlyph)(rdpContext* context, FAST_GLYPH_ORDER* fast_glyph);
|
||||
typedef void (*pPolygonSC)(rdpContext* context, POLYGON_SC_ORDER* polygon_sc);
|
||||
typedef void (*pPolygonCB)(rdpContext* context, POLYGON_CB_ORDER* polygon_cb);
|
||||
typedef void (*pEllipseSC)(rdpContext* context, ELLIPSE_SC_ORDER* ellipse_sc);
|
||||
typedef void (*pEllipseCB)(rdpContext* context, ELLIPSE_CB_ORDER* ellipse_cb);
|
||||
|
||||
struct rdp_primary_update
|
||||
{
|
||||
|
@ -148,29 +148,8 @@ struct rdp_update
|
||||
rdpPointerUpdate* pointer; /* 32 */
|
||||
uint32 paddingC[48 - 33]; /* 33 */
|
||||
|
||||
pDstBlt DstBlt; /* 48 */
|
||||
pPatBlt PatBlt; /* 49 */
|
||||
pScrBlt ScrBlt; /* 50 */
|
||||
pOpaqueRect OpaqueRect; /* 51 */
|
||||
pDrawNineGrid DrawNineGrid; /* 52 */
|
||||
pMultiDstBlt MultiDstBlt; /* 53 */
|
||||
pMultiPatBlt MultiPatBlt; /* 54 */
|
||||
pMultiScrBlt MultiScrBlt; /* 55 */
|
||||
pMultiOpaqueRect MultiOpaqueRect; /* 56 */
|
||||
pMultiDrawNineGrid MultiDrawNineGrid; /* 57 */
|
||||
pLineTo LineTo; /* 58 */
|
||||
pPolyline Polyline; /* 59 */
|
||||
pMemBlt MemBlt; /* 60 */
|
||||
pMem3Blt Mem3Blt; /* 61 */
|
||||
pSaveBitmap SaveBitmap; /* 62 */
|
||||
pGlyphIndex GlyphIndex; /* 63 */
|
||||
pFastIndex FastIndex; /* 64 */
|
||||
pFastGlyph FastGlyph; /* 65 */
|
||||
pPolygonSC PolygonSC; /* 66 */
|
||||
pPolygonCB PolygonCB; /* 67 */
|
||||
pEllipseSC EllipseSC; /* 68 */
|
||||
pEllipseCB EllipseCB; /* 69 */
|
||||
uint32 paddingD[80 - 70]; /* 70 */
|
||||
rdpPrimaryUpdate* primary; /* 48 */
|
||||
uint32 paddingD[80 - 49]; /* 49 */
|
||||
|
||||
pCacheBitmap CacheBitmap; /* 80 */
|
||||
pCacheBitmapV2 CacheBitmapV2; /* 81 */
|
||||
@ -227,30 +206,6 @@ struct rdp_update
|
||||
PALETTE_UPDATE palette_update;
|
||||
PLAY_SOUND_UPDATE play_sound;
|
||||
|
||||
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;
|
||||
|
||||
CACHE_BITMAP_ORDER cache_bitmap_order;
|
||||
CACHE_BITMAP_V2_ORDER cache_bitmap_v2_order;
|
||||
CACHE_BITMAP_V3_ORDER cache_bitmap_v3_order;
|
||||
|
@ -23,10 +23,10 @@
|
||||
|
||||
#include <freerdp/cache/bitmap.h>
|
||||
|
||||
void update_gdi_memblt(rdpUpdate* update, MEMBLT_ORDER* memblt)
|
||||
void update_gdi_memblt(rdpContext* context, MEMBLT_ORDER* memblt)
|
||||
{
|
||||
rdpBitmap* bitmap;
|
||||
rdpCache* cache = update->context->cache;
|
||||
rdpCache* cache = context->cache;
|
||||
|
||||
if (memblt->cacheId == 0xFF)
|
||||
bitmap = offscreen_cache_get(cache->offscreen, memblt->cacheIndex);
|
||||
@ -34,13 +34,13 @@ void update_gdi_memblt(rdpUpdate* update, MEMBLT_ORDER* memblt)
|
||||
bitmap = bitmap_cache_get(cache->bitmap, (uint8) memblt->cacheId, memblt->cacheIndex);
|
||||
|
||||
memblt->bitmap = bitmap;
|
||||
IFCALL(cache->bitmap->MemBlt, update, memblt);
|
||||
IFCALL(cache->bitmap->MemBlt, context, memblt);
|
||||
}
|
||||
|
||||
void update_gdi_mem3blt(rdpUpdate* update, MEM3BLT_ORDER* mem3blt)
|
||||
void update_gdi_mem3blt(rdpContext* context, MEM3BLT_ORDER* mem3blt)
|
||||
{
|
||||
rdpBitmap* bitmap;
|
||||
rdpCache* cache = update->context->cache;
|
||||
rdpCache* cache = context->cache;
|
||||
|
||||
if (mem3blt->cacheId == 0xFF)
|
||||
bitmap = offscreen_cache_get(cache->offscreen, mem3blt->cacheIndex);
|
||||
@ -48,7 +48,7 @@ void update_gdi_mem3blt(rdpUpdate* update, MEM3BLT_ORDER* mem3blt)
|
||||
bitmap = bitmap_cache_get(cache->bitmap, (uint8) mem3blt->cacheId, mem3blt->cacheIndex);
|
||||
|
||||
mem3blt->bitmap = bitmap;
|
||||
IFCALL(cache->bitmap->Mem3Blt, update, mem3blt);
|
||||
IFCALL(cache->bitmap->Mem3Blt, context, mem3blt);
|
||||
}
|
||||
|
||||
void update_gdi_cache_bitmap(rdpUpdate* update, CACHE_BITMAP_ORDER* cache_bitmap)
|
||||
@ -174,11 +174,11 @@ void bitmap_cache_register_callbacks(rdpUpdate* update)
|
||||
{
|
||||
rdpCache* cache = update->context->cache;
|
||||
|
||||
cache->bitmap->MemBlt = update->MemBlt;
|
||||
cache->bitmap->Mem3Blt = update->Mem3Blt;
|
||||
cache->bitmap->MemBlt = update->primary->MemBlt;
|
||||
cache->bitmap->Mem3Blt = update->primary->Mem3Blt;
|
||||
|
||||
update->MemBlt = update_gdi_memblt;
|
||||
update->Mem3Blt = update_gdi_mem3blt;
|
||||
update->primary->MemBlt = update_gdi_memblt;
|
||||
update->primary->Mem3Blt = update_gdi_mem3blt;
|
||||
update->CacheBitmap = update_gdi_cache_bitmap;
|
||||
update->CacheBitmapV2 = update_gdi_cache_bitmap_v2;
|
||||
update->BitmapUpdate = update_gdi_bitmap_update;
|
||||
|
@ -24,10 +24,10 @@
|
||||
|
||||
#include <freerdp/cache/brush.h>
|
||||
|
||||
void update_gdi_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
void update_gdi_patblt(rdpContext* context, PATBLT_ORDER* patblt)
|
||||
{
|
||||
rdpBrush* brush = &patblt->brush;
|
||||
rdpCache* cache = update->context->cache;
|
||||
rdpCache* cache = context->cache;
|
||||
|
||||
if (brush->style & CACHED_BRUSH)
|
||||
{
|
||||
@ -35,7 +35,7 @@ void update_gdi_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
brush->style = 0x03;
|
||||
}
|
||||
|
||||
IFCALL(cache->brush->PatBlt, update, patblt);
|
||||
IFCALL(cache->brush->PatBlt, context, patblt);
|
||||
}
|
||||
|
||||
void update_gdi_cache_brush(rdpUpdate* update, CACHE_BRUSH_ORDER* cache_brush)
|
||||
@ -110,9 +110,9 @@ void brush_cache_register_callbacks(rdpUpdate* update)
|
||||
{
|
||||
rdpCache* cache = update->context->cache;
|
||||
|
||||
cache->brush->PatBlt = update->PatBlt;
|
||||
cache->brush->PatBlt = update->primary->PatBlt;
|
||||
|
||||
update->PatBlt = update_gdi_patblt;
|
||||
update->primary->PatBlt = update_gdi_patblt;
|
||||
update->CacheBrush = update_gdi_cache_brush;
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
|
||||
#include <freerdp/cache/glyph.h>
|
||||
|
||||
void update_process_glyph(rdpUpdate* update, uint8* data, int* index,
|
||||
void update_process_glyph(rdpContext* context, uint8* data, int* index,
|
||||
int* x, int* y, uint8 cacheId, uint8 ulCharInc, uint8 flAccel)
|
||||
{
|
||||
int offset;
|
||||
@ -32,8 +32,8 @@ void update_process_glyph(rdpUpdate* update, uint8* data, int* index,
|
||||
rdpGraphics* graphics;
|
||||
rdpGlyphCache* glyph_cache;
|
||||
|
||||
graphics = update->context->graphics;
|
||||
glyph_cache = update->context->cache->glyph;
|
||||
graphics = context->graphics;
|
||||
glyph_cache = context->cache->glyph;
|
||||
|
||||
cacheIndex = data[(*index)++];
|
||||
|
||||
@ -58,14 +58,14 @@ void update_process_glyph(rdpUpdate* update, uint8* data, int* index,
|
||||
|
||||
if (glyph != NULL)
|
||||
{
|
||||
Glyph_Draw(update->context, glyph, glyph->x + *x, glyph->y + *y);
|
||||
Glyph_Draw(context, glyph, glyph->x + *x, glyph->y + *y);
|
||||
|
||||
if (flAccel & SO_CHAR_INC_EQUAL_BM_BASE)
|
||||
*x += glyph->cx;
|
||||
}
|
||||
}
|
||||
|
||||
void update_process_glyph_fragments(rdpUpdate* update, uint8* data, uint8 length,
|
||||
void update_process_glyph_fragments(rdpContext* context, uint8* data, uint8 length,
|
||||
uint8 cacheId, uint8 ulCharInc, uint8 flAccel, uint32 bgcolor, uint32 fgcolor, int x, int y,
|
||||
int bkX, int bkY, int bkWidth, int bkHeight, int opX, int opY, int opWidth, int opHeight)
|
||||
{
|
||||
@ -77,13 +77,13 @@ void update_process_glyph_fragments(rdpUpdate* update, uint8* data, uint8 length
|
||||
rdpGraphics* graphics;
|
||||
rdpGlyphCache* glyph_cache;
|
||||
|
||||
graphics = update->context->graphics;
|
||||
glyph_cache = update->context->cache->glyph;
|
||||
graphics = context->graphics;
|
||||
glyph_cache = context->cache->glyph;
|
||||
|
||||
if (opWidth > 1)
|
||||
Glyph_BeginDraw(update->context, opX, opY, opWidth, opHeight, bgcolor, fgcolor);
|
||||
Glyph_BeginDraw(context, opX, opY, opWidth, opHeight, bgcolor, fgcolor);
|
||||
else
|
||||
Glyph_BeginDraw(update->context, 0, 0, 0, 0, bgcolor, fgcolor);
|
||||
Glyph_BeginDraw(context, 0, 0, 0, 0, bgcolor, fgcolor);
|
||||
|
||||
while (index < length)
|
||||
{
|
||||
@ -115,7 +115,7 @@ void update_process_glyph_fragments(rdpUpdate* update, uint8* data, uint8 length
|
||||
|
||||
for (n = 0; n < size; n++)
|
||||
{
|
||||
update_process_glyph(update, fragments, &n, &x, &y, cacheId, ulCharInc, flAccel);
|
||||
update_process_glyph(context, fragments, &n, &x, &y, cacheId, ulCharInc, flAccel);
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,32 +154,32 @@ void update_process_glyph_fragments(rdpUpdate* update, uint8* data, uint8 length
|
||||
default:
|
||||
printf("GLYPH_FRAGMENT_NOP\n");
|
||||
|
||||
update_process_glyph(update, data, &index, &x, &y, cacheId, ulCharInc, flAccel);
|
||||
update_process_glyph(context, data, &index, &x, &y, cacheId, ulCharInc, flAccel);
|
||||
index++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (opWidth > 1)
|
||||
Glyph_EndDraw(update->context, opX, opY, opWidth, opHeight, bgcolor, fgcolor);
|
||||
Glyph_EndDraw(context, opX, opY, opWidth, opHeight, bgcolor, fgcolor);
|
||||
else
|
||||
Glyph_EndDraw(update->context, bkX, bkY, bkWidth, bkHeight, bgcolor, fgcolor);
|
||||
Glyph_EndDraw(context, bkX, bkY, bkWidth, bkHeight, bgcolor, fgcolor);
|
||||
}
|
||||
|
||||
void update_gdi_glyph_index(rdpUpdate* update, GLYPH_INDEX_ORDER* glyph_index)
|
||||
void update_gdi_glyph_index(rdpContext* context, GLYPH_INDEX_ORDER* glyph_index)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void update_gdi_fast_index(rdpUpdate* update, FAST_INDEX_ORDER* fast_index)
|
||||
void update_gdi_fast_index(rdpContext* context, FAST_INDEX_ORDER* fast_index)
|
||||
{
|
||||
rdpGlyphCache* glyph_cache;
|
||||
|
||||
glyph_cache = update->context->cache->glyph;
|
||||
glyph_cache = context->cache->glyph;
|
||||
|
||||
fast_index->x = fast_index->bkLeft;
|
||||
|
||||
update_process_glyph_fragments(update, fast_index->data, fast_index->cbData,
|
||||
update_process_glyph_fragments(context, fast_index->data, fast_index->cbData,
|
||||
fast_index->cacheId, fast_index->ulCharInc, fast_index->flAccel,
|
||||
fast_index->backColor, fast_index->foreColor, fast_index->x, fast_index->y,
|
||||
fast_index->bkLeft, fast_index->bkTop,
|
||||
@ -304,8 +304,8 @@ void glyph_cache_fragment_put(rdpGlyphCache* glyph_cache, uint8 index, uint8 siz
|
||||
|
||||
void glyph_cache_register_callbacks(rdpUpdate* update)
|
||||
{
|
||||
update->GlyphIndex = update_gdi_glyph_index;
|
||||
update->FastIndex = update_gdi_fast_index;
|
||||
update->primary->GlyphIndex = update_gdi_glyph_index;
|
||||
update->primary->FastIndex = update_gdi_fast_index;
|
||||
update->CacheGlyph = update_gdi_cache_glyph;
|
||||
update->CacheGlyphV2 = update_gdi_cache_glyph_v2;
|
||||
}
|
||||
|
@ -146,6 +146,7 @@ void freerdp_context_new(freerdp* instance)
|
||||
|
||||
instance->update->context = instance->context;
|
||||
instance->update->pointer->context = instance->context;
|
||||
instance->update->primary->context = instance->context;
|
||||
|
||||
instance->input->context = instance->context;
|
||||
input_register_client_callbacks(rdp->input);
|
||||
|
@ -1659,7 +1659,11 @@ void update_read_bounds(STREAM* s, BOUNDS* bounds)
|
||||
|
||||
void update_recv_primary_order(rdpUpdate* update, STREAM* s, uint8 flags)
|
||||
{
|
||||
ORDER_INFO* orderInfo = &(update->order_info);
|
||||
ORDER_INFO* orderInfo;
|
||||
rdpContext* context = update->context;
|
||||
rdpPrimaryUpdate* primary = update->primary;
|
||||
|
||||
orderInfo = &(primary->order_info);
|
||||
|
||||
if (flags & ORDER_TYPE_CHANGE)
|
||||
stream_read_uint8(s, orderInfo->orderType); /* orderType (1 byte) */
|
||||
@ -1687,113 +1691,113 @@ void update_recv_primary_order(rdpUpdate* update, STREAM* s, uint8 flags)
|
||||
switch (orderInfo->orderType)
|
||||
{
|
||||
case ORDER_TYPE_DSTBLT:
|
||||
update_read_dstblt_order(s, orderInfo, &(update->dstblt));
|
||||
IFCALL(update->DstBlt, update, &update->dstblt);
|
||||
update_read_dstblt_order(s, orderInfo, &(primary->dstblt));
|
||||
IFCALL(primary->DstBlt, context, &primary->dstblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_PATBLT:
|
||||
update_read_patblt_order(s, orderInfo, &(update->patblt));
|
||||
IFCALL(update->PatBlt, update, &update->patblt);
|
||||
update_read_patblt_order(s, orderInfo, &(primary->patblt));
|
||||
IFCALL(primary->PatBlt, context, &primary->patblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_SCRBLT:
|
||||
update_read_scrblt_order(s, orderInfo, &(update->scrblt));
|
||||
IFCALL(update->ScrBlt, update, &update->scrblt);
|
||||
update_read_scrblt_order(s, orderInfo, &(primary->scrblt));
|
||||
IFCALL(primary->ScrBlt, context, &primary->scrblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_OPAQUE_RECT:
|
||||
update_read_opaque_rect_order(s, orderInfo, &(update->opaque_rect));
|
||||
IFCALL(update->OpaqueRect, update, &update->opaque_rect);
|
||||
update_read_opaque_rect_order(s, orderInfo, &(primary->opaque_rect));
|
||||
IFCALL(primary->OpaqueRect, context, &primary->opaque_rect);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_DRAW_NINE_GRID:
|
||||
update_read_draw_nine_grid_order(s, orderInfo, &(update->draw_nine_grid));
|
||||
IFCALL(update->DrawNineGrid, update, &update->draw_nine_grid);
|
||||
update_read_draw_nine_grid_order(s, orderInfo, &(primary->draw_nine_grid));
|
||||
IFCALL(primary->DrawNineGrid, context, &primary->draw_nine_grid);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MULTI_DSTBLT:
|
||||
update_read_multi_dstblt_order(s, orderInfo, &(update->multi_dstblt));
|
||||
IFCALL(update->MultiDstBlt, update, &update->multi_dstblt);
|
||||
update_read_multi_dstblt_order(s, orderInfo, &(primary->multi_dstblt));
|
||||
IFCALL(primary->MultiDstBlt, context, &primary->multi_dstblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MULTI_PATBLT:
|
||||
update_read_multi_patblt_order(s, orderInfo, &(update->multi_patblt));
|
||||
IFCALL(update->MultiPatBlt, update, &update->multi_patblt);
|
||||
update_read_multi_patblt_order(s, orderInfo, &(primary->multi_patblt));
|
||||
IFCALL(primary->MultiPatBlt, context, &primary->multi_patblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MULTI_SCRBLT:
|
||||
update_read_multi_scrblt_order(s, orderInfo, &(update->multi_scrblt));
|
||||
IFCALL(update->MultiScrBlt, update, &update->multi_scrblt);
|
||||
update_read_multi_scrblt_order(s, orderInfo, &(primary->multi_scrblt));
|
||||
IFCALL(primary->MultiScrBlt, context, &primary->multi_scrblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MULTI_OPAQUE_RECT:
|
||||
update_read_multi_opaque_rect_order(s, orderInfo, &(update->multi_opaque_rect));
|
||||
IFCALL(update->MultiOpaqueRect, update, &update->multi_opaque_rect);
|
||||
update_read_multi_opaque_rect_order(s, orderInfo, &(primary->multi_opaque_rect));
|
||||
IFCALL(primary->MultiOpaqueRect, context, &primary->multi_opaque_rect);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MULTI_DRAW_NINE_GRID:
|
||||
update_read_multi_draw_nine_grid_order(s, orderInfo, &(update->multi_draw_nine_grid));
|
||||
IFCALL(update->MultiDrawNineGrid, update, &update->multi_draw_nine_grid);
|
||||
update_read_multi_draw_nine_grid_order(s, orderInfo, &(primary->multi_draw_nine_grid));
|
||||
IFCALL(primary->MultiDrawNineGrid, context, &primary->multi_draw_nine_grid);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_LINE_TO:
|
||||
update_read_line_to_order(s, orderInfo, &(update->line_to));
|
||||
IFCALL(update->LineTo, update, &update->line_to);
|
||||
update_read_line_to_order(s, orderInfo, &(primary->line_to));
|
||||
IFCALL(primary->LineTo, context, &primary->line_to);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_POLYLINE:
|
||||
update_read_polyline_order(s, orderInfo, &(update->polyline));
|
||||
IFCALL(update->Polyline, update, &update->polyline);
|
||||
update_read_polyline_order(s, orderInfo, &(primary->polyline));
|
||||
IFCALL(primary->Polyline, context, &primary->polyline);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MEMBLT:
|
||||
update_read_memblt_order(s, orderInfo, &(update->memblt));
|
||||
IFCALL(update->MemBlt, update, &update->memblt);
|
||||
update_read_memblt_order(s, orderInfo, &(primary->memblt));
|
||||
IFCALL(primary->MemBlt, context, &primary->memblt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_MEM3BLT:
|
||||
update_read_mem3blt_order(s, orderInfo, &(update->mem3blt));
|
||||
IFCALL(update->Mem3Blt, update, &update->mem3blt);
|
||||
update_read_mem3blt_order(s, orderInfo, &(primary->mem3blt));
|
||||
IFCALL(primary->Mem3Blt, context, &primary->mem3blt);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_SAVE_BITMAP:
|
||||
update_read_save_bitmap_order(s, orderInfo, &(update->save_bitmap));
|
||||
IFCALL(update->SaveBitmap, update, &update->save_bitmap);
|
||||
update_read_save_bitmap_order(s, orderInfo, &(primary->save_bitmap));
|
||||
IFCALL(primary->SaveBitmap, context, &primary->save_bitmap);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_GLYPH_INDEX:
|
||||
update_read_glyph_index_order(s, orderInfo, &(update->glyph_index));
|
||||
IFCALL(update->GlyphIndex, update, &update->glyph_index);
|
||||
update_read_glyph_index_order(s, orderInfo, &(primary->glyph_index));
|
||||
IFCALL(primary->GlyphIndex, context, &primary->glyph_index);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_FAST_INDEX:
|
||||
update_read_fast_index_order(s, orderInfo, &(update->fast_index));
|
||||
IFCALL(update->FastIndex, update, &update->fast_index);
|
||||
update_read_fast_index_order(s, orderInfo, &(primary->fast_index));
|
||||
IFCALL(primary->FastIndex, context, &primary->fast_index);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_FAST_GLYPH:
|
||||
update_read_fast_glyph_order(s, orderInfo, &(update->fast_glyph));
|
||||
IFCALL(update->FastGlyph, update, &update->fast_glyph);
|
||||
update_read_fast_glyph_order(s, orderInfo, &(primary->fast_glyph));
|
||||
IFCALL(primary->FastGlyph, context, &primary->fast_glyph);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_POLYGON_SC:
|
||||
update_read_polygon_sc_order(s, orderInfo, &(update->polygon_sc));
|
||||
IFCALL(update->PolygonSC, update, &update->polygon_sc);
|
||||
update_read_polygon_sc_order(s, orderInfo, &(primary->polygon_sc));
|
||||
IFCALL(primary->PolygonSC, context, &primary->polygon_sc);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_POLYGON_CB:
|
||||
update_read_polygon_cb_order(s, orderInfo, &(update->polygon_cb));
|
||||
IFCALL(update->PolygonCB, update, &update->polygon_cb);
|
||||
update_read_polygon_cb_order(s, orderInfo, &(primary->polygon_cb));
|
||||
IFCALL(primary->PolygonCB, context, &primary->polygon_cb);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_ELLIPSE_SC:
|
||||
update_read_ellipse_sc_order(s, orderInfo, &(update->ellipse_sc));
|
||||
IFCALL(update->EllipseSC, update, &update->ellipse_sc);
|
||||
update_read_ellipse_sc_order(s, orderInfo, &(primary->ellipse_sc));
|
||||
IFCALL(primary->EllipseSC, context, &primary->ellipse_sc);
|
||||
break;
|
||||
|
||||
case ORDER_TYPE_ELLIPSE_CB:
|
||||
update_read_ellipse_cb_order(s, orderInfo, &(update->ellipse_cb));
|
||||
IFCALL(update->EllipseCB, update, &update->ellipse_cb);
|
||||
update_read_ellipse_cb_order(s, orderInfo, &(primary->ellipse_cb));
|
||||
IFCALL(primary->EllipseCB, context, &primary->ellipse_cb);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -299,31 +299,33 @@ void update_recv(rdpUpdate* update, STREAM* s)
|
||||
|
||||
void update_reset_state(rdpUpdate* update)
|
||||
{
|
||||
memset(&update->order_info, 0, sizeof(ORDER_INFO));
|
||||
memset(&update->dstblt, 0, sizeof(DSTBLT_ORDER));
|
||||
memset(&update->patblt, 0, sizeof(PATBLT_ORDER));
|
||||
memset(&update->scrblt, 0, sizeof(SCRBLT_ORDER));
|
||||
memset(&update->opaque_rect, 0, sizeof(OPAQUE_RECT_ORDER));
|
||||
memset(&update->draw_nine_grid, 0, sizeof(DRAW_NINE_GRID_ORDER));
|
||||
memset(&update->multi_dstblt, 0, sizeof(MULTI_DSTBLT_ORDER));
|
||||
memset(&update->multi_patblt, 0, sizeof(MULTI_PATBLT_ORDER));
|
||||
memset(&update->multi_scrblt, 0, sizeof(MULTI_SCRBLT_ORDER));
|
||||
memset(&update->multi_opaque_rect, 0, sizeof(MULTI_OPAQUE_RECT_ORDER));
|
||||
memset(&update->multi_draw_nine_grid, 0, sizeof(MULTI_DRAW_NINE_GRID_ORDER));
|
||||
memset(&update->line_to, 0, sizeof(LINE_TO_ORDER));
|
||||
memset(&update->polyline, 0, sizeof(POLYLINE_ORDER));
|
||||
memset(&update->memblt, 0, sizeof(MEMBLT_ORDER));
|
||||
memset(&update->mem3blt, 0, sizeof(MEM3BLT_ORDER));
|
||||
memset(&update->save_bitmap, 0, sizeof(SAVE_BITMAP_ORDER));
|
||||
memset(&update->glyph_index, 0, sizeof(GLYPH_INDEX_ORDER));
|
||||
memset(&update->fast_index, 0, sizeof(FAST_INDEX_ORDER));
|
||||
memset(&update->fast_glyph, 0, sizeof(FAST_GLYPH_ORDER));
|
||||
memset(&update->polygon_sc, 0, sizeof(POLYGON_SC_ORDER));
|
||||
memset(&update->polygon_cb, 0, sizeof(POLYGON_CB_ORDER));
|
||||
memset(&update->ellipse_sc, 0, sizeof(ELLIPSE_SC_ORDER));
|
||||
memset(&update->ellipse_cb, 0, sizeof(ELLIPSE_CB_ORDER));
|
||||
rdpPrimaryUpdate* primary = update->primary;
|
||||
|
||||
update->order_info.orderType = ORDER_TYPE_PATBLT;
|
||||
memset(&primary->order_info, 0, sizeof(ORDER_INFO));
|
||||
memset(&primary->dstblt, 0, sizeof(DSTBLT_ORDER));
|
||||
memset(&primary->patblt, 0, sizeof(PATBLT_ORDER));
|
||||
memset(&primary->scrblt, 0, sizeof(SCRBLT_ORDER));
|
||||
memset(&primary->opaque_rect, 0, sizeof(OPAQUE_RECT_ORDER));
|
||||
memset(&primary->draw_nine_grid, 0, sizeof(DRAW_NINE_GRID_ORDER));
|
||||
memset(&primary->multi_dstblt, 0, sizeof(MULTI_DSTBLT_ORDER));
|
||||
memset(&primary->multi_patblt, 0, sizeof(MULTI_PATBLT_ORDER));
|
||||
memset(&primary->multi_scrblt, 0, sizeof(MULTI_SCRBLT_ORDER));
|
||||
memset(&primary->multi_opaque_rect, 0, sizeof(MULTI_OPAQUE_RECT_ORDER));
|
||||
memset(&primary->multi_draw_nine_grid, 0, sizeof(MULTI_DRAW_NINE_GRID_ORDER));
|
||||
memset(&primary->line_to, 0, sizeof(LINE_TO_ORDER));
|
||||
memset(&primary->polyline, 0, sizeof(POLYLINE_ORDER));
|
||||
memset(&primary->memblt, 0, sizeof(MEMBLT_ORDER));
|
||||
memset(&primary->mem3blt, 0, sizeof(MEM3BLT_ORDER));
|
||||
memset(&primary->save_bitmap, 0, sizeof(SAVE_BITMAP_ORDER));
|
||||
memset(&primary->glyph_index, 0, sizeof(GLYPH_INDEX_ORDER));
|
||||
memset(&primary->fast_index, 0, sizeof(FAST_INDEX_ORDER));
|
||||
memset(&primary->fast_glyph, 0, sizeof(FAST_GLYPH_ORDER));
|
||||
memset(&primary->polygon_sc, 0, sizeof(POLYGON_SC_ORDER));
|
||||
memset(&primary->polygon_cb, 0, sizeof(POLYGON_CB_ORDER));
|
||||
memset(&primary->ellipse_sc, 0, sizeof(ELLIPSE_SC_ORDER));
|
||||
memset(&primary->ellipse_cb, 0, sizeof(ELLIPSE_CB_ORDER));
|
||||
|
||||
primary->order_info.orderType = ORDER_TYPE_PATBLT;
|
||||
update->switch_surface.bitmapId = SCREEN_BITMAP_SURFACE;
|
||||
IFCALL(update->SwitchSurface, update, &(update->switch_surface));
|
||||
}
|
||||
@ -410,10 +412,10 @@ static void update_send_desktop_resize(rdpUpdate* update)
|
||||
rdp_server_reactivate(rdp);
|
||||
}
|
||||
|
||||
static void update_send_pointer_system(rdpUpdate* update, POINTER_SYSTEM_UPDATE* pointer_system)
|
||||
static void update_send_pointer_system(rdpContext* context, POINTER_SYSTEM_UPDATE* pointer_system)
|
||||
{
|
||||
STREAM* s;
|
||||
rdpRdp* rdp = update->context->rdp;
|
||||
rdpRdp* rdp = context->rdp;
|
||||
|
||||
s = fastpath_update_pdu_init(rdp->fastpath);
|
||||
/* updateHeader (1 byte) */
|
||||
@ -450,6 +452,7 @@ rdpUpdate* update_new(rdpRdp* rdp)
|
||||
update->bitmap_update.rectangles = (BITMAP_DATA*) xzalloc(sizeof(BITMAP_DATA) * update->bitmap_update.count);
|
||||
|
||||
update->pointer = xnew(rdpPointerUpdate);
|
||||
update->primary = xnew(rdpPrimaryUpdate);
|
||||
}
|
||||
|
||||
return update;
|
||||
|
@ -452,20 +452,20 @@ void gdi_set_bounds(rdpUpdate* update, BOUNDS* bounds)
|
||||
}
|
||||
}
|
||||
|
||||
void gdi_dstblt(rdpUpdate* update, DSTBLT_ORDER* dstblt)
|
||||
void gdi_dstblt(rdpContext* context, DSTBLT_ORDER* dstblt)
|
||||
{
|
||||
rdpGdi* gdi = update->context->gdi;
|
||||
rdpGdi* gdi = context->gdi;
|
||||
|
||||
gdi_BitBlt(gdi->drawing->hdc, dstblt->nLeftRect, dstblt->nTopRect,
|
||||
dstblt->nWidth, dstblt->nHeight, NULL, 0, 0, gdi_rop3_code(dstblt->bRop));
|
||||
}
|
||||
|
||||
void gdi_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
void gdi_patblt(rdpContext* context, PATBLT_ORDER* patblt)
|
||||
{
|
||||
uint8* data;
|
||||
rdpBrush* brush;
|
||||
HGDI_BRUSH originalBrush;
|
||||
rdpGdi* gdi = update->context->gdi;
|
||||
rdpGdi* gdi = context->gdi;
|
||||
|
||||
brush = &patblt->brush;
|
||||
|
||||
@ -514,21 +514,21 @@ void gdi_patblt(rdpUpdate* update, PATBLT_ORDER* patblt)
|
||||
}
|
||||
}
|
||||
|
||||
void gdi_scrblt(rdpUpdate* update, SCRBLT_ORDER* scrblt)
|
||||
void gdi_scrblt(rdpContext* context, SCRBLT_ORDER* scrblt)
|
||||
{
|
||||
rdpGdi* gdi = update->context->gdi;
|
||||
rdpGdi* gdi = context->gdi;
|
||||
|
||||
gdi_BitBlt(gdi->drawing->hdc, scrblt->nLeftRect, scrblt->nTopRect,
|
||||
scrblt->nWidth, scrblt->nHeight, gdi->primary->hdc,
|
||||
scrblt->nXSrc, scrblt->nYSrc, gdi_rop3_code(scrblt->bRop));
|
||||
}
|
||||
|
||||
void gdi_opaque_rect(rdpUpdate* update, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
void gdi_opaque_rect(rdpContext* context, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
{
|
||||
GDI_RECT rect;
|
||||
HGDI_BRUSH hBrush;
|
||||
uint32 brush_color;
|
||||
rdpGdi *gdi = update->context->gdi;
|
||||
rdpGdi *gdi = context->gdi;
|
||||
|
||||
gdi_CRgnToRect(opaque_rect->nLeftRect, opaque_rect->nTopRect,
|
||||
opaque_rect->nWidth, opaque_rect->nHeight, &rect);
|
||||
@ -541,14 +541,14 @@ void gdi_opaque_rect(rdpUpdate* update, OPAQUE_RECT_ORDER* opaque_rect)
|
||||
gdi_DeleteObject((HGDIOBJECT) hBrush);
|
||||
}
|
||||
|
||||
void gdi_multi_opaque_rect(rdpUpdate* update, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect)
|
||||
void gdi_multi_opaque_rect(rdpContext* context, MULTI_OPAQUE_RECT_ORDER* multi_opaque_rect)
|
||||
{
|
||||
int i;
|
||||
GDI_RECT rect;
|
||||
HGDI_BRUSH hBrush;
|
||||
uint32 brush_color;
|
||||
DELTA_RECT* rectangle;
|
||||
rdpGdi *gdi = update->context->gdi;
|
||||
rdpGdi *gdi = context->gdi;
|
||||
|
||||
for (i = 1; i < multi_opaque_rect->numRectangles + 1; i++)
|
||||
{
|
||||
@ -566,11 +566,11 @@ void gdi_multi_opaque_rect(rdpUpdate* update, MULTI_OPAQUE_RECT_ORDER* multi_opa
|
||||
}
|
||||
}
|
||||
|
||||
void gdi_line_to(rdpUpdate* update, LINE_TO_ORDER* line_to)
|
||||
void gdi_line_to(rdpContext* context, LINE_TO_ORDER* line_to)
|
||||
{
|
||||
uint32 color;
|
||||
HGDI_PEN hPen;
|
||||
rdpGdi *gdi = update->context->gdi;
|
||||
rdpGdi *gdi = context->gdi;
|
||||
|
||||
color = freerdp_color_convert(line_to->penColor, gdi->srcBpp, 32, gdi->clrconv);
|
||||
hPen = gdi_CreatePen(line_to->penStyle, line_to->penWidth, (GDI_COLOR) color);
|
||||
@ -583,13 +583,13 @@ void gdi_line_to(rdpUpdate* update, LINE_TO_ORDER* line_to)
|
||||
gdi_DeleteObject((HGDIOBJECT) hPen);
|
||||
}
|
||||
|
||||
void gdi_polyline(rdpUpdate* update, POLYLINE_ORDER* polyline)
|
||||
void gdi_polyline(rdpContext* context, POLYLINE_ORDER* polyline)
|
||||
{
|
||||
int i;
|
||||
uint32 color;
|
||||
HGDI_PEN hPen;
|
||||
DELTA_POINT* points;
|
||||
rdpGdi* gdi = update->context->gdi;
|
||||
rdpGdi* gdi = context->gdi;
|
||||
|
||||
color = freerdp_color_convert(polyline->penColor, gdi->srcBpp, 32, gdi->clrconv);
|
||||
hPen = gdi_CreatePen(0, 1, (GDI_COLOR) color);
|
||||
@ -608,10 +608,10 @@ void gdi_polyline(rdpUpdate* update, POLYLINE_ORDER* polyline)
|
||||
gdi_DeleteObject((HGDIOBJECT) hPen);
|
||||
}
|
||||
|
||||
void gdi_memblt(rdpUpdate* update, MEMBLT_ORDER* memblt)
|
||||
void gdi_memblt(rdpContext* context, MEMBLT_ORDER* memblt)
|
||||
{
|
||||
gdiBitmap* bitmap;
|
||||
rdpGdi* gdi = update->context->gdi;
|
||||
rdpGdi* gdi = context->gdi;
|
||||
|
||||
bitmap = (gdiBitmap*) memblt->bitmap;
|
||||
|
||||
@ -620,7 +620,7 @@ void gdi_memblt(rdpUpdate* update, MEMBLT_ORDER* memblt)
|
||||
memblt->nXSrc, memblt->nYSrc, gdi_rop3_code(memblt->bRop));
|
||||
}
|
||||
|
||||
void gdi_mem3blt(rdpUpdate* update, MEM3BLT_ORDER* mem3blt)
|
||||
void gdi_mem3blt(rdpContext* context, MEM3BLT_ORDER* mem3blt)
|
||||
{
|
||||
|
||||
}
|
||||
@ -746,30 +746,33 @@ void gdi_surface_bits(rdpUpdate* update, SURFACE_BITS_COMMAND* surface_bits_comm
|
||||
|
||||
void gdi_register_update_callbacks(rdpUpdate* update)
|
||||
{
|
||||
rdpPrimaryUpdate* primary = update->primary;
|
||||
|
||||
update->Palette = gdi_palette_update;
|
||||
update->SetBounds = gdi_set_bounds;
|
||||
update->DstBlt = gdi_dstblt;
|
||||
update->PatBlt = gdi_patblt;
|
||||
update->ScrBlt = gdi_scrblt;
|
||||
update->OpaqueRect = gdi_opaque_rect;
|
||||
update->DrawNineGrid = NULL;
|
||||
update->MultiDstBlt = NULL;
|
||||
update->MultiPatBlt = NULL;
|
||||
update->MultiScrBlt = NULL;
|
||||
update->MultiOpaqueRect = gdi_multi_opaque_rect;
|
||||
update->MultiDrawNineGrid = NULL;
|
||||
update->LineTo = gdi_line_to;
|
||||
update->Polyline = NULL;
|
||||
update->MemBlt = gdi_memblt;
|
||||
update->Mem3Blt = gdi_mem3blt;
|
||||
update->SaveBitmap = NULL;
|
||||
update->GlyphIndex = NULL;
|
||||
update->FastIndex = NULL;
|
||||
update->FastGlyph = NULL;
|
||||
update->PolygonSC = NULL;
|
||||
update->PolygonCB = NULL;
|
||||
update->EllipseSC = NULL;
|
||||
update->EllipseCB = NULL;
|
||||
|
||||
primary->DstBlt = gdi_dstblt;
|
||||
primary->PatBlt = gdi_patblt;
|
||||
primary->ScrBlt = gdi_scrblt;
|
||||
primary->OpaqueRect = gdi_opaque_rect;
|
||||
primary->DrawNineGrid = NULL;
|
||||
primary->MultiDstBlt = NULL;
|
||||
primary->MultiPatBlt = NULL;
|
||||
primary->MultiScrBlt = NULL;
|
||||
primary->MultiOpaqueRect = gdi_multi_opaque_rect;
|
||||
primary->MultiDrawNineGrid = NULL;
|
||||
primary->LineTo = gdi_line_to;
|
||||
primary->Polyline = NULL;
|
||||
primary->MemBlt = gdi_memblt;
|
||||
primary->Mem3Blt = gdi_mem3blt;
|
||||
primary->SaveBitmap = NULL;
|
||||
primary->GlyphIndex = NULL;
|
||||
primary->FastIndex = NULL;
|
||||
primary->FastGlyph = NULL;
|
||||
primary->PolygonSC = NULL;
|
||||
primary->PolygonCB = NULL;
|
||||
primary->EllipseSC = NULL;
|
||||
primary->EllipseCB = NULL;
|
||||
|
||||
update->SurfaceBits = gdi_surface_bits;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user