neutrinordp: indentation fixes
This commit is contained in:
parent
a42cb4842c
commit
80b91c0a7b
@ -20,10 +20,10 @@
|
|||||||
#ifndef __XRDP_COLOR_H
|
#ifndef __XRDP_COLOR_H
|
||||||
#define __XRDP_COLOR_H
|
#define __XRDP_COLOR_H
|
||||||
|
|
||||||
char* APP_CC
|
char *APP_CC
|
||||||
convert_bitmap(int in_bpp, int out_bpp, char* bmpdata,
|
convert_bitmap(int in_bpp, int out_bpp, char *bmpdata,
|
||||||
int width, int height, int* palette);
|
int width, int height, int *palette);
|
||||||
int APP_CC
|
int APP_CC
|
||||||
convert_color(int in_bpp, int out_bpp, int in_color, int* palette);
|
convert_color(int in_bpp, int out_bpp, int in_color, int *palette);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -48,13 +48,14 @@ verifyColorMap(struct mod *mod)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for(i = 0; i < 255; i++)
|
for (i = 0; i < 255; i++)
|
||||||
{
|
{
|
||||||
if (mod->colormap[i] != 0)
|
if (mod->colormap[i] != 0)
|
||||||
{
|
{
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LLOGLN(0, ("The colormap is all NULL"));
|
LLOGLN(0, ("The colormap is all NULL"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,45 +117,56 @@ lxrdp_connect(struct mod *mod)
|
|||||||
g_snprintf(buf, 128, "The error code from connect is "
|
g_snprintf(buf, 128, "The error code from connect is "
|
||||||
"PREECONNECTERROR");
|
"PREECONNECTERROR");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UNDEFINEDCONNECTERROR:
|
case UNDEFINEDCONNECTERROR:
|
||||||
g_snprintf(buf, 128, "The error code from connect is "
|
g_snprintf(buf, 128, "The error code from connect is "
|
||||||
"UNDEFINEDCONNECTERROR");
|
"UNDEFINEDCONNECTERROR");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case POSTCONNECTERROR:
|
case POSTCONNECTERROR:
|
||||||
g_snprintf(buf, 128, "The error code from connect is "
|
g_snprintf(buf, 128, "The error code from connect is "
|
||||||
"POSTCONNECTERROR");
|
"POSTCONNECTERROR");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DNSERROR:
|
case DNSERROR:
|
||||||
g_snprintf(buf, 128, "The DNS system generated an error");
|
g_snprintf(buf, 128, "The DNS system generated an error");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DNSNAMENOTFOUND:
|
case DNSNAMENOTFOUND:
|
||||||
g_snprintf(buf, 128, "The DNS system could not find the "
|
g_snprintf(buf, 128, "The DNS system could not find the "
|
||||||
"specified name");
|
"specified name");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CONNECTERROR:
|
case CONNECTERROR:
|
||||||
g_snprintf(buf, 128, "A general connect error was returned");
|
g_snprintf(buf, 128, "A general connect error was returned");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MCSCONNECTINITIALERROR:
|
case MCSCONNECTINITIALERROR:
|
||||||
g_snprintf(buf, 128, "The error code from connect is "
|
g_snprintf(buf, 128, "The error code from connect is "
|
||||||
"MCSCONNECTINITIALERROR");
|
"MCSCONNECTINITIALERROR");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TLSCONNECTERROR:
|
case TLSCONNECTERROR:
|
||||||
g_snprintf(buf, 128, "Error in TLS handshake");
|
g_snprintf(buf, 128, "Error in TLS handshake");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AUTHENTICATIONERROR:
|
case AUTHENTICATIONERROR:
|
||||||
g_snprintf(buf, 128, "Authentication error check your password "
|
g_snprintf(buf, 128, "Authentication error check your password "
|
||||||
"and username");
|
"and username");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INSUFFICIENTPRIVILEGESERROR:
|
case INSUFFICIENTPRIVILEGESERROR:
|
||||||
g_snprintf(buf, 128, "Insufficent privileges on target server");
|
g_snprintf(buf, 128, "Insufficent privileges on target server");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
g_snprintf(buf, 128, "Unhandled Errorcode from connect : %d",
|
g_snprintf(buf, 128, "Unhandled Errorcode from connect : %d",
|
||||||
connectErrorCode);
|
connectErrorCode);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log_message(LOG_LEVEL_INFO,buf);
|
|
||||||
|
log_message(LOG_LEVEL_INFO, buf);
|
||||||
mod->server_msg(mod, buf, 0);
|
mod->server_msg(mod, buf, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,6 +210,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case 15: /* key down */
|
case 15: /* key down */
|
||||||
|
|
||||||
/* Before we handle the first character we synchronize
|
/* Before we handle the first character we synchronize
|
||||||
capslock and numlock. */
|
capslock and numlock. */
|
||||||
/* We collect the state during the first synchronize
|
/* We collect the state during the first synchronize
|
||||||
@ -208,24 +221,30 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
mod->inst->input->SynchronizeEvent(mod->inst->input, mod->keyBoardLockInfo);
|
mod->inst->input->SynchronizeEvent(mod->inst->input, mod->keyBoardLockInfo);
|
||||||
mod->bool_keyBoardSynced = 1;
|
mod->bool_keyBoardSynced = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 16: /* key up */
|
case 16: /* key up */
|
||||||
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
mod->inst->input->KeyboardEvent(mod->inst->input, param4, param3);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 17: /* Synchronize */
|
case 17: /* Synchronize */
|
||||||
LLOGLN(11, ("Synchronized event handled : %d",param1));
|
LLOGLN(11, ("Synchronized event handled : %d", param1));
|
||||||
/* In some situations the Synchronize event come to early.
|
/* In some situations the Synchronize event come to early.
|
||||||
Therefore we store this information and use it when we
|
Therefore we store this information and use it when we
|
||||||
receive the first keyboard event
|
receive the first keyboard event
|
||||||
Without this fix numlock and capslock can come
|
Without this fix numlock and capslock can come
|
||||||
out of sync. */
|
out of sync. */
|
||||||
mod->inst->input->SynchronizeEvent(mod->inst->input, param1);
|
mod->inst->input->SynchronizeEvent(mod->inst->input, param1);
|
||||||
|
|
||||||
if (!mod->bool_keyBoardSynced)
|
if (!mod->bool_keyBoardSynced)
|
||||||
{
|
{
|
||||||
mod->keyBoardLockInfo = param1;
|
mod->keyBoardLockInfo = param1;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 100: /* mouse move */
|
case 100: /* mouse move */
|
||||||
LLOGLN(12, ("mouse move %d %d", param1, param2));
|
LLOGLN(12, ("mouse move %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -233,6 +252,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_MOVE;
|
flags = PTR_FLAGS_MOVE;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 101: /* left button up */
|
case 101: /* left button up */
|
||||||
LLOGLN(12, ("left button up %d %d", param1, param2));
|
LLOGLN(12, ("left button up %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -240,6 +260,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_BUTTON1;
|
flags = PTR_FLAGS_BUTTON1;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 102: /* left button down */
|
case 102: /* left button down */
|
||||||
LLOGLN(12, ("left button down %d %d", param1, param2));
|
LLOGLN(12, ("left button down %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -247,6 +268,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_BUTTON1 | PTR_FLAGS_DOWN;
|
flags = PTR_FLAGS_BUTTON1 | PTR_FLAGS_DOWN;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 103: /* right button up */
|
case 103: /* right button up */
|
||||||
LLOGLN(12, ("right button up %d %d", param1, param2));
|
LLOGLN(12, ("right button up %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -254,6 +276,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_BUTTON2;
|
flags = PTR_FLAGS_BUTTON2;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 104: /* right button down */
|
case 104: /* right button down */
|
||||||
LLOGLN(12, ("right button down %d %d", param1, param2));
|
LLOGLN(12, ("right button down %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -261,6 +284,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_BUTTON2 | PTR_FLAGS_DOWN;
|
flags = PTR_FLAGS_BUTTON2 | PTR_FLAGS_DOWN;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 105: /* middle button up */
|
case 105: /* middle button up */
|
||||||
LLOGLN(12, ("middle button up %d %d", param1, param2));
|
LLOGLN(12, ("middle button up %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -268,6 +292,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_BUTTON3;
|
flags = PTR_FLAGS_BUTTON3;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 106: /* middle button down */
|
case 106: /* middle button down */
|
||||||
LLOGLN(12, ("middle button down %d %d", param1, param2));
|
LLOGLN(12, ("middle button down %d %d", param1, param2));
|
||||||
x = param1;
|
x = param1;
|
||||||
@ -275,18 +300,23 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
flags = PTR_FLAGS_BUTTON3 | PTR_FLAGS_DOWN;
|
flags = PTR_FLAGS_BUTTON3 | PTR_FLAGS_DOWN;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, x, y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 107: /* wheel up */
|
case 107: /* wheel up */
|
||||||
flags = PTR_FLAGS_WHEEL | 0x0078;
|
flags = PTR_FLAGS_WHEEL | 0x0078;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 108:
|
case 108:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 109: /* wheel down */
|
case 109: /* wheel down */
|
||||||
flags = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
|
flags = PTR_FLAGS_WHEEL | PTR_FLAGS_WHEEL_NEGATIVE | 0x0088;
|
||||||
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
mod->inst->input->MouseEvent(mod->inst->input, flags, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 110:
|
case 110:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 200:
|
case 200:
|
||||||
LLOGLN(10, ("Invalidate request sent from client"));
|
LLOGLN(10, ("Invalidate request sent from client"));
|
||||||
x = (param1 >> 16) & 0xffff;
|
x = (param1 >> 16) & 0xffff;
|
||||||
@ -295,6 +325,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
cy = (param2 >> 0) & 0xffff;
|
cy = (param2 >> 0) & 0xffff;
|
||||||
mod->inst->SendInvalidate(mod->inst, -1, x, y, cx, cy);
|
mod->inst->SendInvalidate(mod->inst, -1, x, y, cx, cy);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x5555:
|
case 0x5555:
|
||||||
chanid = LOWORD(param1);
|
chanid = LOWORD(param1);
|
||||||
flags = HIWORD(param1);
|
flags = HIWORD(param1);
|
||||||
@ -303,6 +334,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
total_size = (int)param4;
|
total_size = (int)param4;
|
||||||
|
|
||||||
LLOGLN(12, ("lxrdp_event: client to server ,chanid= %d flags= %d", chanid, flags));
|
LLOGLN(12, ("lxrdp_event: client to server ,chanid= %d flags= %d", chanid, flags));
|
||||||
|
|
||||||
if ((chanid < 0) || (chanid >= mod->inst->settings->num_channels))
|
if ((chanid < 0) || (chanid >= mod->inst->settings->num_channels))
|
||||||
{
|
{
|
||||||
LLOGLN(0, ("lxrdp_event: error chanid %d", chanid));
|
LLOGLN(0, ("lxrdp_event: error chanid %d", chanid));
|
||||||
@ -316,6 +348,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
case 3:
|
case 3:
|
||||||
mod->inst->SendChannelData(mod->inst, lchid, (tui8 *)data, total_size);
|
mod->inst->SendChannelData(mod->inst, lchid, (tui8 *)data, total_size);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
/* end */
|
/* end */
|
||||||
g_memcpy(mod->chan_buf + mod->chan_buf_valid, data, size);
|
g_memcpy(mod->chan_buf + mod->chan_buf_valid, data, size);
|
||||||
@ -327,6 +360,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
mod->chan_buf_bytes = 0;
|
mod->chan_buf_bytes = 0;
|
||||||
mod->chan_buf_valid = 0;
|
mod->chan_buf_valid = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
/* start */
|
/* start */
|
||||||
g_free(mod->chan_buf);
|
g_free(mod->chan_buf);
|
||||||
@ -336,6 +370,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
g_memcpy(mod->chan_buf + mod->chan_buf_valid, data, size);
|
g_memcpy(mod->chan_buf + mod->chan_buf_valid, data, size);
|
||||||
mod->chan_buf_valid += size;
|
mod->chan_buf_valid += size;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
/* middle */
|
/* middle */
|
||||||
g_memcpy(mod->chan_buf + mod->chan_buf_valid, data, size);
|
g_memcpy(mod->chan_buf + mod->chan_buf_valid, data, size);
|
||||||
@ -344,6 +379,7 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
|
|||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LLOGLN(0, ("Unhandled message type in eventhandler %d", msg));
|
LLOGLN(0, ("Unhandled message type in eventhandler %d", msg));
|
||||||
break;
|
break;
|
||||||
@ -587,16 +623,18 @@ lfreerdp_bitmap_update(rdpContext *context, BITMAP_UPDATE *bitmap)
|
|||||||
|
|
||||||
if (bd->compressed)
|
if (bd->compressed)
|
||||||
{
|
{
|
||||||
LLOGLN(20,("decompress size : %d",bd->bitmapLength));
|
LLOGLN(20, ("decompress size : %d", bd->bitmapLength));
|
||||||
if(!bitmap_decompress(bd->bitmapDataStream, (tui8 *)dst_data, bd->width,
|
|
||||||
bd->height, bd->bitmapLength, server_bpp, server_bpp)){
|
if (!bitmap_decompress(bd->bitmapDataStream, (tui8 *)dst_data, bd->width,
|
||||||
LLOGLN(0,("Failure to decompress the bitmap"));
|
bd->height, bd->bitmapLength, server_bpp, server_bpp))
|
||||||
|
{
|
||||||
|
LLOGLN(0, ("Failure to decompress the bitmap"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* bitmap is upside down */
|
/* bitmap is upside down */
|
||||||
LLOGLN(10,("bitmap upside down"));
|
LLOGLN(10, ("bitmap upside down"));
|
||||||
src = (char *)(bd->bitmapDataStream);
|
src = (char *)(bd->bitmapDataStream);
|
||||||
dst = dst_data + bd->height * line_bytes;
|
dst = dst_data + bd->height * line_bytes;
|
||||||
|
|
||||||
@ -669,6 +707,7 @@ lfreerdp_pat_blt(rdpContext *context, PATBLT_ORDER *patblt)
|
|||||||
{
|
{
|
||||||
LLOGLN(0, ("Warning same color on both bg and fg"));
|
LLOGLN(0, ("Warning same color on both bg and fg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
mod->server_set_mixmode(mod, 1);
|
mod->server_set_mixmode(mod, 1);
|
||||||
mod->server_set_opcode(mod, patblt->bRop);
|
mod->server_set_opcode(mod, patblt->bRop);
|
||||||
mod->server_set_fgcolor(mod, fgcolor);
|
mod->server_set_fgcolor(mod, fgcolor);
|
||||||
@ -825,6 +864,7 @@ lfreerdp_glyph_index(rdpContext *context, GLYPH_INDEX_ORDER *glyph_index)
|
|||||||
opRight = glyph_index->opRight;
|
opRight = glyph_index->opRight;
|
||||||
opBottom = glyph_index->opBottom;
|
opBottom = glyph_index->opBottom;
|
||||||
#if 1
|
#if 1
|
||||||
|
|
||||||
/* workarounds for freerdp not using fOpRedundant in
|
/* workarounds for freerdp not using fOpRedundant in
|
||||||
glyph.c::update_gdi_glyph_index */
|
glyph.c::update_gdi_glyph_index */
|
||||||
if (glyph_index->fOpRedundant)
|
if (glyph_index->fOpRedundant)
|
||||||
@ -832,8 +872,9 @@ lfreerdp_glyph_index(rdpContext *context, GLYPH_INDEX_ORDER *glyph_index)
|
|||||||
opLeft = glyph_index->bkLeft;
|
opLeft = glyph_index->bkLeft;
|
||||||
opTop = glyph_index->bkTop;
|
opTop = glyph_index->bkTop;
|
||||||
opRight = glyph_index->bkRight;
|
opRight = glyph_index->bkRight;
|
||||||
opBottom =glyph_index->bkBottom;
|
opBottom = glyph_index->bkBottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
mod->server_draw_text(mod, glyph_index->cacheId, glyph_index->flAccel,
|
mod->server_draw_text(mod, glyph_index->cacheId, glyph_index->flAccel,
|
||||||
glyph_index->fOpRedundant,
|
glyph_index->fOpRedundant,
|
||||||
@ -881,7 +922,7 @@ lfreerdp_cache_bitmap(rdpContext *context, CACHE_BITMAP_ORDER *cache_bitmap_orde
|
|||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* Turn the bitmap upside down*/
|
/* Turn the bitmap upside down*/
|
||||||
static void DEFAULT_CC
|
static void DEFAULT_CC
|
||||||
lfreerdp_upsidedown(uint8* destination, CACHE_BITMAP_V2_ORDER* cache_bitmap_v2_order, int server_Bpp)
|
lfreerdp_upsidedown(uint8 *destination, CACHE_BITMAP_V2_ORDER *cache_bitmap_v2_order, int server_Bpp)
|
||||||
{
|
{
|
||||||
tui8 *src;
|
tui8 *src;
|
||||||
tui8 *dst;
|
tui8 *dst;
|
||||||
@ -1094,7 +1135,7 @@ static void DEFAULT_CC
|
|||||||
lfreerdp_pointer_system(rdpContext *context,
|
lfreerdp_pointer_system(rdpContext *context,
|
||||||
POINTER_SYSTEM_UPDATE *pointer_system)
|
POINTER_SYSTEM_UPDATE *pointer_system)
|
||||||
{
|
{
|
||||||
LLOGLN(0, ("lfreerdp_pointer_system: - no code here type value = %d",pointer_system->type));
|
LLOGLN(0, ("lfreerdp_pointer_system: - no code here type value = %d", pointer_system->type));
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
@ -1127,7 +1168,7 @@ lfreerdp_get_pixel(void *bits, int width, int height, int bpp,
|
|||||||
{
|
{
|
||||||
src8 = (tui8 *)bits;
|
src8 = (tui8 *)bits;
|
||||||
src8 += y * delta + x * 4;
|
src8 += y * delta + x * 4;
|
||||||
pixel = ((int*)(src8))[0];
|
pixel = ((int *)(src8))[0];
|
||||||
return pixel;
|
return pixel;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1174,7 +1215,7 @@ lfreerdp_set_pixel(int pixel, void *bits, int width, int height, int bpp,
|
|||||||
{
|
{
|
||||||
dst8 = (tui8 *)bits;
|
dst8 = (tui8 *)bits;
|
||||||
dst8 += y * delta + x * 4;
|
dst8 += y * delta + x * 4;
|
||||||
((int*)(dst8))[0] = pixel;
|
((int *)(dst8))[0] = pixel;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1232,11 +1273,13 @@ lfreerdp_pointer_new(rdpContext *context,
|
|||||||
pointer_new->colorPtrAttr.lengthAndMask));
|
pointer_new->colorPtrAttr.lengthAndMask));
|
||||||
|
|
||||||
index = pointer_new->colorPtrAttr.cacheIndex;
|
index = pointer_new->colorPtrAttr.cacheIndex;
|
||||||
|
|
||||||
if (index >= 32)
|
if (index >= 32)
|
||||||
{
|
{
|
||||||
LLOGLN(0, ("lfreerdp_pointer_new: pointer index too big"));
|
LLOGLN(0, ("lfreerdp_pointer_new: pointer index too big"));
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pointer_new->xorBpp == 1 &&
|
if (pointer_new->xorBpp == 1 &&
|
||||||
pointer_new->colorPtrAttr.width == 32 &&
|
pointer_new->colorPtrAttr.width == 32 &&
|
||||||
pointer_new->colorPtrAttr.height == 32)
|
pointer_new->colorPtrAttr.height == 32)
|
||||||
@ -1256,7 +1299,7 @@ lfreerdp_pointer_new(rdpContext *context,
|
|||||||
lfreerdp_convert_color_image(dst, 32, 32, 1, 32 / -8,
|
lfreerdp_convert_color_image(dst, 32, 32, 1, 32 / -8,
|
||||||
src, 32, 32, 1, 32 / 8);
|
src, 32, 32, 1, 32 / 8);
|
||||||
}
|
}
|
||||||
else if(pointer_new->xorBpp >= 8 &&
|
else if (pointer_new->xorBpp >= 8 &&
|
||||||
pointer_new->colorPtrAttr.width == 32 &&
|
pointer_new->colorPtrAttr.width == 32 &&
|
||||||
pointer_new->colorPtrAttr.height == 32)
|
pointer_new->colorPtrAttr.height == 32)
|
||||||
{
|
{
|
||||||
@ -1278,7 +1321,7 @@ lfreerdp_pointer_new(rdpContext *context,
|
|||||||
{
|
{
|
||||||
LLOGLN(0, ("lfreerdp_pointer_new: error bpp %d width %d height %d index: %d",
|
LLOGLN(0, ("lfreerdp_pointer_new: error bpp %d width %d height %d index: %d",
|
||||||
pointer_new->xorBpp, pointer_new->colorPtrAttr.width,
|
pointer_new->xorBpp, pointer_new->colorPtrAttr.width,
|
||||||
pointer_new->colorPtrAttr.height,index));
|
pointer_new->colorPtrAttr.height, index));
|
||||||
}
|
}
|
||||||
|
|
||||||
mod->server_set_pointer_ex(mod, mod->pointer_cache[index].hotx,
|
mod->server_set_pointer_ex(mod, mod->pointer_cache[index].hotx,
|
||||||
@ -1314,14 +1357,14 @@ lfreerdp_pointer_cached(rdpContext *context,
|
|||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
static void DEFAULT_CC
|
static void DEFAULT_CC
|
||||||
lfreerdp_polygon_cb(rdpContext* context, POLYGON_CB_ORDER* polygon_cb)
|
lfreerdp_polygon_cb(rdpContext *context, POLYGON_CB_ORDER *polygon_cb)
|
||||||
{
|
{
|
||||||
LLOGLN(0, ("lfreerdp_polygon_sc called:- not supported!!!!!!!!!!!!!!!!!!!!"));
|
LLOGLN(0, ("lfreerdp_polygon_sc called:- not supported!!!!!!!!!!!!!!!!!!!!"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
static void DEFAULT_CC
|
static void DEFAULT_CC
|
||||||
lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc)
|
lfreerdp_polygon_sc(rdpContext *context, POLYGON_SC_ORDER *polygon_sc)
|
||||||
{
|
{
|
||||||
struct mod *mod;
|
struct mod *mod;
|
||||||
int i, npoints;
|
int i, npoints;
|
||||||
@ -1336,6 +1379,7 @@ lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc)
|
|||||||
polygon_sc->fillMode, polygon_sc->bRop2,
|
polygon_sc->fillMode, polygon_sc->bRop2,
|
||||||
polygon_sc->cbData, polygon_sc->xStart,
|
polygon_sc->cbData, polygon_sc->xStart,
|
||||||
polygon_sc->yStart));
|
polygon_sc->yStart));
|
||||||
|
|
||||||
if (polygon_sc->nDeltaEntries == 3)
|
if (polygon_sc->nDeltaEntries == 3)
|
||||||
{
|
{
|
||||||
server_bpp = mod->inst->settings->color_depth;
|
server_bpp = mod->inst->settings->color_depth;
|
||||||
@ -1349,6 +1393,7 @@ lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc)
|
|||||||
points[i + 1].x = 0; // polygon_sc->points[i].x;
|
points[i + 1].x = 0; // polygon_sc->points[i].x;
|
||||||
points[i + 1].y = 0; // polygon_sc->points[i].y;
|
points[i + 1].y = 0; // polygon_sc->points[i].y;
|
||||||
}
|
}
|
||||||
|
|
||||||
fgcolor = convert_color(server_bpp, client_bpp,
|
fgcolor = convert_color(server_bpp, client_bpp,
|
||||||
polygon_sc->brushColor, mod->colormap);
|
polygon_sc->brushColor, mod->colormap);
|
||||||
|
|
||||||
@ -1358,10 +1403,10 @@ lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc)
|
|||||||
mod->server_set_pen(mod, 1, 1); // style, width
|
mod->server_set_pen(mod, 1, 1); // style, width
|
||||||
// TODO replace with correct brush; this is a workaround
|
// TODO replace with correct brush; this is a workaround
|
||||||
// This workaround handles the text cursor in microsoft word.
|
// This workaround handles the text cursor in microsoft word.
|
||||||
mod->server_draw_line(mod,polygon_sc->xStart,polygon_sc->yStart,polygon_sc->xStart,polygon_sc->yStart+points[2].y);
|
mod->server_draw_line(mod, polygon_sc->xStart, polygon_sc->yStart, polygon_sc->xStart, polygon_sc->yStart + points[2].y);
|
||||||
// mod->server_fill_rect(mod, points[0].x, points[0].y,
|
// mod->server_fill_rect(mod, points[0].x, points[0].y,
|
||||||
// points[0].x-points[3].x, points[0].y-points[2].y);
|
// points[0].x-points[3].x, points[0].y-points[2].y);
|
||||||
// mod->server_set_brush(mod,); // howto use this on our indata??
|
// mod->server_set_brush(mod,); // howto use this on our indata??
|
||||||
mod->server_set_opcode(mod, 0xcc);
|
mod->server_set_opcode(mod, 0xcc);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1372,7 +1417,7 @@ lfreerdp_polygon_sc(rdpContext* context, POLYGON_SC_ORDER* polygon_sc)
|
|||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
static void DEFAULT_CC
|
static void DEFAULT_CC
|
||||||
lfreerdp_synchronize(rdpContext* context)
|
lfreerdp_synchronize(rdpContext *context)
|
||||||
{
|
{
|
||||||
struct mod *mod;
|
struct mod *mod;
|
||||||
mod = ((struct mod_context *)context)->modi;
|
mod = ((struct mod_context *)context)->modi;
|
||||||
@ -1492,11 +1537,13 @@ lfreerdp_pre_connect(freerdp *instance)
|
|||||||
PERF_DISABLE_THEMING;
|
PERF_DISABLE_THEMING;
|
||||||
// | PERF_DISABLE_CURSOR_SHADOW | PERF_DISABLE_CURSORSETTINGS;
|
// | PERF_DISABLE_CURSOR_SHADOW | PERF_DISABLE_CURSORSETTINGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
instance->settings->compression = 0;
|
instance->settings->compression = 0;
|
||||||
instance->settings->ignore_certificate = 1;
|
instance->settings->ignore_certificate = 1;
|
||||||
|
|
||||||
// Multi Monitor Settings
|
// Multi Monitor Settings
|
||||||
instance->settings->num_monitors = mod->client_info.monitorCount;
|
instance->settings->num_monitors = mod->client_info.monitorCount;
|
||||||
|
|
||||||
for (index = 0; index < mod->client_info.monitorCount; index++)
|
for (index = 0; index < mod->client_info.monitorCount; index++)
|
||||||
{
|
{
|
||||||
instance->settings->monitors[index].x = mod->client_info.minfo[index].left;
|
instance->settings->monitors[index].x = mod->client_info.minfo[index].left;
|
||||||
@ -1552,7 +1599,7 @@ lrail_WindowCreate(rdpContext *context, WINDOW_ORDER_INFO *orderInfo,
|
|||||||
int index;
|
int index;
|
||||||
struct mod *mod;
|
struct mod *mod;
|
||||||
struct rail_window_state_order wso;
|
struct rail_window_state_order wso;
|
||||||
UNICONV* uniconv;
|
UNICONV *uniconv;
|
||||||
|
|
||||||
LLOGLN(10, ("lrail_WindowCreate:"));
|
LLOGLN(10, ("lrail_WindowCreate:"));
|
||||||
uniconv = freerdp_uniconv_new();
|
uniconv = freerdp_uniconv_new();
|
||||||
@ -1693,7 +1740,7 @@ lrail_NotifyIconCreate(rdpContext *context, WINDOW_ORDER_INFO *orderInfo,
|
|||||||
{
|
{
|
||||||
struct mod *mod;
|
struct mod *mod;
|
||||||
struct rail_notify_state_order rnso;
|
struct rail_notify_state_order rnso;
|
||||||
UNICONV* uniconv;
|
UNICONV *uniconv;
|
||||||
|
|
||||||
LLOGLN(10, ("lrail_NotifyIconCreate:"));
|
LLOGLN(10, ("lrail_NotifyIconCreate:"));
|
||||||
uniconv = freerdp_uniconv_new();
|
uniconv = freerdp_uniconv_new();
|
||||||
@ -1707,6 +1754,7 @@ lrail_NotifyIconCreate(rdpContext *context, WINDOW_ORDER_INFO *orderInfo,
|
|||||||
rnso.tool_tip = freerdp_uniconv_in(uniconv,
|
rnso.tool_tip = freerdp_uniconv_in(uniconv,
|
||||||
notify_icon_state->toolTip.string, notify_icon_state->toolTip.length);
|
notify_icon_state->toolTip.string, notify_icon_state->toolTip.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_NOTIFY_INFO_TIP)
|
if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_NOTIFY_INFO_TIP)
|
||||||
{
|
{
|
||||||
rnso.infotip.timeout = notify_icon_state->infoTip.timeout;
|
rnso.infotip.timeout = notify_icon_state->infoTip.timeout;
|
||||||
|
@ -37,7 +37,7 @@ struct bitmap_item
|
|||||||
{
|
{
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
char* data;
|
char *data;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct brush_item
|
struct brush_item
|
||||||
@ -45,7 +45,7 @@ struct brush_item
|
|||||||
int bpp;
|
int bpp;
|
||||||
int width;
|
int width;
|
||||||
int height;
|
int height;
|
||||||
char* data;
|
char *data;
|
||||||
char b8x8[8];
|
char b8x8[8];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -65,92 +65,92 @@ struct mod
|
|||||||
int size; /* size of this struct */
|
int size; /* size of this struct */
|
||||||
int version; /* internal version */
|
int version; /* internal version */
|
||||||
/* client functions */
|
/* client functions */
|
||||||
int (*mod_start)(struct mod* v, int w, int h, int bpp);
|
int (*mod_start)(struct mod *v, int w, int h, int bpp);
|
||||||
int (*mod_connect)(struct mod* v);
|
int (*mod_connect)(struct mod *v);
|
||||||
int (*mod_event)(struct mod* v, int msg, long param1, long param2,
|
int (*mod_event)(struct mod *v, int msg, long param1, long param2,
|
||||||
long param3, long param4);
|
long param3, long param4);
|
||||||
int (*mod_signal)(struct mod* v);
|
int (*mod_signal)(struct mod *v);
|
||||||
int (*mod_end)(struct mod* v);
|
int (*mod_end)(struct mod *v);
|
||||||
int (*mod_set_param)(struct mod* v, char* name, char* value);
|
int (*mod_set_param)(struct mod *v, char *name, char *value);
|
||||||
int (*mod_session_change)(struct mod* v, int, int);
|
int (*mod_session_change)(struct mod *v, int, int);
|
||||||
int (*mod_get_wait_objs)(struct mod* v, tbus* read_objs, int* rcount,
|
int (*mod_get_wait_objs)(struct mod *v, tbus *read_objs, int *rcount,
|
||||||
tbus* write_objs, int* wcount, int* timeout);
|
tbus *write_objs, int *wcount, int *timeout);
|
||||||
int (*mod_check_wait_objs)(struct mod* v);
|
int (*mod_check_wait_objs)(struct mod *v);
|
||||||
tintptr mod_dumby[100 - 9]; /* align, 100 minus the number of mod
|
tintptr mod_dumby[100 - 9]; /* align, 100 minus the number of mod
|
||||||
functions above */
|
functions above */
|
||||||
/* server functions */
|
/* server functions */
|
||||||
int (*server_begin_update)(struct mod* v);
|
int (*server_begin_update)(struct mod *v);
|
||||||
int (*server_end_update)(struct mod* v);
|
int (*server_end_update)(struct mod *v);
|
||||||
int (*server_fill_rect)(struct mod* v, int x, int y, int cx, int cy);
|
int (*server_fill_rect)(struct mod *v, int x, int y, int cx, int cy);
|
||||||
int (*server_screen_blt)(struct mod* v, int x, int y, int cx, int cy,
|
int (*server_screen_blt)(struct mod *v, int x, int y, int cx, int cy,
|
||||||
int srcx, int srcy);
|
int srcx, int srcy);
|
||||||
int (*server_paint_rect)(struct mod* v, int x, int y, int cx, int cy,
|
int (*server_paint_rect)(struct mod *v, int x, int y, int cx, int cy,
|
||||||
char* data, int width, int height, int srcx, int srcy);
|
char *data, int width, int height, int srcx, int srcy);
|
||||||
int (*server_set_pointer)(struct mod* v, int x, int y, char* data, char* mask);
|
int (*server_set_pointer)(struct mod *v, int x, int y, char *data, char *mask);
|
||||||
int (*server_palette)(struct mod* v, int* palette);
|
int (*server_palette)(struct mod *v, int *palette);
|
||||||
int (*server_msg)(struct mod* v, char* msg, int code);
|
int (*server_msg)(struct mod *v, char *msg, int code);
|
||||||
int (*server_is_term)(struct mod* v);
|
int (*server_is_term)(struct mod *v);
|
||||||
int (*server_set_clip)(struct mod* v, int x, int y, int cx, int cy);
|
int (*server_set_clip)(struct mod *v, int x, int y, int cx, int cy);
|
||||||
int (*server_reset_clip)(struct mod* v);
|
int (*server_reset_clip)(struct mod *v);
|
||||||
int (*server_set_fgcolor)(struct mod* v, int fgcolor);
|
int (*server_set_fgcolor)(struct mod *v, int fgcolor);
|
||||||
int (*server_set_bgcolor)(struct mod* v, int bgcolor);
|
int (*server_set_bgcolor)(struct mod *v, int bgcolor);
|
||||||
int (*server_set_opcode)(struct mod* v, int opcode);
|
int (*server_set_opcode)(struct mod *v, int opcode);
|
||||||
int (*server_set_mixmode)(struct mod* v, int mixmode);
|
int (*server_set_mixmode)(struct mod *v, int mixmode);
|
||||||
int (*server_set_brush)(struct mod* v, int x_origin, int y_origin,
|
int (*server_set_brush)(struct mod *v, int x_origin, int y_origin,
|
||||||
int style, char* pattern);
|
int style, char *pattern);
|
||||||
int (*server_set_pen)(struct mod* v, int style,
|
int (*server_set_pen)(struct mod *v, int style,
|
||||||
int width);
|
int width);
|
||||||
int (*server_draw_line)(struct mod* v, int x1, int y1, int x2, int y2);
|
int (*server_draw_line)(struct mod *v, int x1, int y1, int x2, int y2);
|
||||||
int (*server_add_char)(struct mod* v, int font, int character,
|
int (*server_add_char)(struct mod *v, int font, int character,
|
||||||
int offset, int baseline,
|
int offset, int baseline,
|
||||||
int width, int height, char* data);
|
int width, int height, char *data);
|
||||||
int (*server_draw_text)(struct mod* v, int font,
|
int (*server_draw_text)(struct mod *v, int font,
|
||||||
int flags, int mixmode, int clip_left, int clip_top,
|
int flags, int mixmode, int clip_left, int clip_top,
|
||||||
int clip_right, int clip_bottom,
|
int clip_right, int clip_bottom,
|
||||||
int box_left, int box_top,
|
int box_left, int box_top,
|
||||||
int box_right, int box_bottom,
|
int box_right, int box_bottom,
|
||||||
int x, int y, char* data, int data_len);
|
int x, int y, char *data, int data_len);
|
||||||
int (*server_reset)(struct mod* v, int width, int height, int bpp);
|
int (*server_reset)(struct mod *v, int width, int height, int bpp);
|
||||||
int (*server_query_channel)(struct mod* v, int index,
|
int (*server_query_channel)(struct mod *v, int index,
|
||||||
char* channel_name,
|
char *channel_name,
|
||||||
int* channel_flags);
|
int *channel_flags);
|
||||||
int (*server_get_channel_id)(struct mod* v, char* name);
|
int (*server_get_channel_id)(struct mod *v, char *name);
|
||||||
int (*server_send_to_channel)(struct mod* v, int channel_id,
|
int (*server_send_to_channel)(struct mod *v, int channel_id,
|
||||||
char* data, int data_len,
|
char *data, int data_len,
|
||||||
int total_data_len, int flags);
|
int total_data_len, int flags);
|
||||||
int (*server_bell_trigger)(struct mod* v);
|
int (*server_bell_trigger)(struct mod *v);
|
||||||
/* off screen bitmaps */
|
/* off screen bitmaps */
|
||||||
int (*server_create_os_surface)(struct mod* v, int rdpindex,
|
int (*server_create_os_surface)(struct mod *v, int rdpindex,
|
||||||
int width, int height);
|
int width, int height);
|
||||||
int (*server_switch_os_surface)(struct mod* v, int rdpindex);
|
int (*server_switch_os_surface)(struct mod *v, int rdpindex);
|
||||||
int (*server_delete_os_surface)(struct mod* v, int rdpindex);
|
int (*server_delete_os_surface)(struct mod *v, int rdpindex);
|
||||||
int (*server_paint_rect_os)(struct mod* mod, int x, int y,
|
int (*server_paint_rect_os)(struct mod *mod, int x, int y,
|
||||||
int cx, int cy,
|
int cx, int cy,
|
||||||
int rdpindex, int srcx, int srcy);
|
int rdpindex, int srcx, int srcy);
|
||||||
int (*server_set_hints)(struct mod* mod, int hints, int mask);
|
int (*server_set_hints)(struct mod *mod, int hints, int mask);
|
||||||
/* rail */
|
/* rail */
|
||||||
int (*server_window_new_update)(struct mod* mod, int window_id,
|
int (*server_window_new_update)(struct mod *mod, int window_id,
|
||||||
struct rail_window_state_order* window_state,
|
struct rail_window_state_order *window_state,
|
||||||
int flags);
|
int flags);
|
||||||
int (*server_window_delete)(struct mod* mod, int window_id);
|
int (*server_window_delete)(struct mod *mod, int window_id);
|
||||||
int (*server_window_icon)(struct mod* mod,
|
int (*server_window_icon)(struct mod *mod,
|
||||||
int window_id, int cache_entry, int cache_id,
|
int window_id, int cache_entry, int cache_id,
|
||||||
struct rail_icon_info* icon_info,
|
struct rail_icon_info *icon_info,
|
||||||
int flags);
|
int flags);
|
||||||
int (*server_window_cached_icon)(struct mod* mod,
|
int (*server_window_cached_icon)(struct mod *mod,
|
||||||
int window_id, int cache_entry,
|
int window_id, int cache_entry,
|
||||||
int cache_id, int flags);
|
int cache_id, int flags);
|
||||||
int (*server_notify_new_update)(struct mod* mod,
|
int (*server_notify_new_update)(struct mod *mod,
|
||||||
int window_id, int notify_id,
|
int window_id, int notify_id,
|
||||||
struct rail_notify_state_order* notify_state,
|
struct rail_notify_state_order *notify_state,
|
||||||
int flags);
|
int flags);
|
||||||
int (*server_notify_delete)(struct mod* mod, int window_id,
|
int (*server_notify_delete)(struct mod *mod, int window_id,
|
||||||
int notify_id);
|
int notify_id);
|
||||||
int (*server_monitored_desktop)(struct mod* mod,
|
int (*server_monitored_desktop)(struct mod *mod,
|
||||||
struct rail_monitored_desktop_order* mdo,
|
struct rail_monitored_desktop_order *mdo,
|
||||||
int flags);
|
int flags);
|
||||||
int (*server_set_pointer_ex)(struct mod* mod, int x, int y, char* data,
|
int (*server_set_pointer_ex)(struct mod *mod, int x, int y, char *data,
|
||||||
char* mask, int bpp);
|
char *mask, int bpp);
|
||||||
|
|
||||||
tintptr server_dumby[100 - 37]; /* align, 100 minus the number of server
|
tintptr server_dumby[100 - 37]; /* align, 100 minus the number of server
|
||||||
functions above */
|
functions above */
|
||||||
@ -166,7 +166,7 @@ struct mod
|
|||||||
int height;
|
int height;
|
||||||
int bpp;
|
int bpp;
|
||||||
int colormap[256];
|
int colormap[256];
|
||||||
char* chan_buf;
|
char *chan_buf;
|
||||||
int chan_buf_valid;
|
int chan_buf_valid;
|
||||||
int chan_buf_bytes;
|
int chan_buf_bytes;
|
||||||
int vmaj;
|
int vmaj;
|
||||||
@ -180,7 +180,7 @@ struct mod
|
|||||||
|
|
||||||
struct xrdp_client_info client_info;
|
struct xrdp_client_info client_info;
|
||||||
|
|
||||||
struct rdp_freerdp* inst;
|
struct rdp_freerdp *inst;
|
||||||
struct bitmap_item bitmap_cache[4][4096];
|
struct bitmap_item bitmap_cache[4][4096];
|
||||||
struct brush_item brush_cache[64];
|
struct brush_item brush_cache[64];
|
||||||
struct pointer_item pointer_cache[32];
|
struct pointer_item pointer_cache[32];
|
||||||
|
Loading…
Reference in New Issue
Block a user