neutirnordp: changes for rail proxy

ulab-next
speidy 11 years ago
parent 2360bef91a
commit b8cffeefe1

@ -27,7 +27,7 @@
#ifdef XRDP_DEBUG #ifdef XRDP_DEBUG
#define LOG_LEVEL 99 #define LOG_LEVEL 99
#else #else
#define LOG_LEVEL 10 #define LOG_LEVEL 11
#endif #endif
#define LLOG(_level, _args) \ #define LLOG(_level, _args) \
@ -256,11 +256,13 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
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;
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;
case 110: case 110:
break; break;
case 200: case 200:
@ -277,8 +279,9 @@ lxrdp_event(struct mod *mod, int msg, long param1, long param2,
size = (int)param2; size = (int)param2;
data = (char *)param3; data = (char *)param3;
total_size = (int)param4; total_size = (int)param4;
LLOGLN(12, ("lxrdp_event: client to server flags %d", flags));
LLOGLN(10, ("lxrdp_event: client to server ,chanid= %d flags= %d", chanid, flags));
g_hexdump(data, size); // for debugging
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));
@ -472,7 +475,7 @@ lfreerdp_begin_paint(rdpContext *context)
{ {
struct mod *mod; struct mod *mod;
LLOGLN(10, ("lfreerdp_begin_paint:")); LLOGLN(12, ("lfreerdp_begin_paint:"));
mod = ((struct mod_context *)context)->modi; mod = ((struct mod_context *)context)->modi;
mod->server_begin_update(mod); mod->server_begin_update(mod);
} }
@ -483,7 +486,7 @@ lfreerdp_end_paint(rdpContext *context)
{ {
struct mod *mod; struct mod *mod;
LLOGLN(10, ("lfreerdp_end_paint:")); LLOGLN(12, ("lfreerdp_end_paint:"));
mod = ((struct mod_context *)context)->modi; mod = ((struct mod_context *)context)->modi;
mod->server_end_update(mod); mod->server_end_update(mod);
} }
@ -498,7 +501,7 @@ lfreerdp_set_bounds(rdpContext *context, rdpBounds *bounds)
int cx; int cx;
int cy; int cy;
LLOGLN(10, ("lfreerdp_set_bounds: %p", bounds)); LLOGLN(12, ("lfreerdp_set_bounds: %p", bounds));
mod = ((struct mod_context *)context)->modi; mod = ((struct mod_context *)context)->modi;
if (bounds != 0) if (bounds != 0)
@ -715,7 +718,7 @@ lfreerdp_mem_blt(rdpContext *context, MEMBLT_ORDER *memblt)
struct bitmap_item *bi; struct bitmap_item *bi;
mod = ((struct mod_context *)context)->modi; mod = ((struct mod_context *)context)->modi;
LLOGLN(10, ("lfreerdp_mem_blt: cacheId %d cacheIndex %d", LLOGLN(12, ("lfreerdp_mem_blt: cacheId %d cacheIndex %d",
memblt->cacheId, memblt->cacheIndex)); memblt->cacheId, memblt->cacheIndex));
id = memblt->cacheId; id = memblt->cacheId;
@ -1334,7 +1337,7 @@ static void DEFAULT_CC lfreerdp_syncronize(rdpContext* context)
{ {
struct mod *mod; struct mod *mod;
mod = ((struct mod_context *)context)->modi; mod = ((struct mod_context *)context)->modi;
LLOGLN(0, ("lfreerdp_synchronize received - not handled")); LLOGLN(12, ("lfreerdp_synchronize received - not handled"));
} }
/******************************************************************************/ /******************************************************************************/
@ -1359,8 +1362,8 @@ lfreerdp_pre_connect(freerdp *instance)
while (error == 0) while (error == 0)
{ {
num_chans++; num_chans++;
LLOGLN(10, ("lfreerdp_pre_connect: got channel [%s], flags [0x%8.8x]", LLOGLN(10, ("lfreerdp_pre_connect: got channel [%s], id [%d], flags [0x%8.8x]",
ch_name, ch_flags)); ch_name, index, ch_flags));
dst_ch_name = instance->settings->channels[index].name; dst_ch_name = instance->settings->channels[index].name;
g_memset(dst_ch_name, 0, 8); g_memset(dst_ch_name, 0, 8);
g_snprintf(dst_ch_name, 8, "%s", ch_name); g_snprintf(dst_ch_name, 8, "%s", ch_name);
@ -1389,24 +1392,25 @@ lfreerdp_pre_connect(freerdp *instance)
instance->settings->order_support[NEG_MEM3BLT_INDEX] = 0; instance->settings->order_support[NEG_MEM3BLT_INDEX] = 0;
instance->settings->order_support[NEG_MEM3BLT_V2_INDEX] = 0; instance->settings->order_support[NEG_MEM3BLT_V2_INDEX] = 0;
instance->settings->bitmapCacheV2NumCells = 3; // 5; instance->settings->bitmapCacheV2NumCells = 3; // 5;
instance->settings->bitmapCacheV2CellInfo[0].numEntries = 0x78; // 600; instance->settings->bitmapCacheV2CellInfo[0].numEntries = 600; // 0x78;
instance->settings->bitmapCacheV2CellInfo[0].persistent = 0; instance->settings->bitmapCacheV2CellInfo[0].persistent = 0;
instance->settings->bitmapCacheV2CellInfo[1].numEntries = 0x78; // 600; instance->settings->bitmapCacheV2CellInfo[1].numEntries = 600; //0x78; // 600;
instance->settings->bitmapCacheV2CellInfo[1].persistent = 0; instance->settings->bitmapCacheV2CellInfo[1].persistent = 0;
instance->settings->bitmapCacheV2CellInfo[2].numEntries = 0x150; // 2048; instance->settings->bitmapCacheV2CellInfo[2].numEntries = 2048; //0x150; // 2048;
instance->settings->bitmapCacheV2CellInfo[2].persistent = 0; instance->settings->bitmapCacheV2CellInfo[2].persistent = 0;
instance->settings->bitmapCacheV2CellInfo[3].numEntries = 0; // 4096; instance->settings->bitmapCacheV2CellInfo[3].numEntries = 4096; // 4096;
instance->settings->bitmapCacheV2CellInfo[3].persistent = 0; instance->settings->bitmapCacheV2CellInfo[3].persistent = 0;
instance->settings->bitmapCacheV2CellInfo[4].numEntries = 0; // 2048; instance->settings->bitmapCacheV2CellInfo[4].numEntries = 2048; // 2048;
instance->settings->bitmapCacheV2CellInfo[4].persistent = 0; instance->settings->bitmapCacheV2CellInfo[4].persistent = 0;
// instance->settings->BitmapCacheV3Enabled = FALSE; instance->settings->bitmap_cache_v3 = 1;
instance->settings->order_support[NEG_MULTIDSTBLT_INDEX] = 0; instance->settings->order_support[NEG_MULTIDSTBLT_INDEX] = 0;
instance->settings->order_support[NEG_MULTIPATBLT_INDEX] = 0; instance->settings->order_support[NEG_MULTIPATBLT_INDEX] = 0;
instance->settings->order_support[NEG_MULTISCRBLT_INDEX] = 0; instance->settings->order_support[NEG_MULTISCRBLT_INDEX] = 0;
instance->settings->order_support[NEG_MULTIOPAQUERECT_INDEX] = 0; instance->settings->order_support[NEG_MULTIOPAQUERECT_INDEX] = 0;
instance->settings->order_support[NEG_POLYLINE_INDEX] = 0; instance->settings->order_support[NEG_POLYLINE_INDEX] = 0;
instance->settings->username = g_strdup(mod->username); instance->settings->username = g_strdup(mod->username);
instance->settings->password = g_strdup(mod->password); instance->settings->password = g_strdup(mod->password);
@ -1417,6 +1421,10 @@ lfreerdp_pre_connect(freerdp *instance)
instance->settings->rail_langbar_supported = 1; instance->settings->rail_langbar_supported = 1;
instance->settings->workarea = 1; instance->settings->workarea = 1;
instance->settings->performance_flags = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG; instance->settings->performance_flags = PERF_DISABLE_WALLPAPER | PERF_DISABLE_FULLWINDOWDRAG;
instance->settings->num_icon_caches = mod->client_info.wnd_num_icon_caches;
instance->settings->num_icon_cache_entries = mod->client_info.wnd_num_icon_cache_entries;
} }
else else
{ {
@ -1429,8 +1437,16 @@ lfreerdp_pre_connect(freerdp *instance)
instance->settings->compression = 0; instance->settings->compression = 0;
instance->settings->ignore_certificate = 1; instance->settings->ignore_certificate = 1;
// here // Multi Monitor Settings
//instance->settings->RdpVersion = 4; instance->settings->num_monitors = mod->client_info.monitorCount;
for (index = 0; index < mod->client_info.monitorCount; index++)
{
instance->settings->monitors[index].x = mod->client_info.minfo[index].left;
instance->settings->monitors[index].y = mod->client_info.minfo[index].top;
instance->settings->monitors[index].width = mod->client_info.minfo[index].right;
instance->settings->monitors[index].height = mod->client_info.minfo[index].bottom;
instance->settings->monitors[index].is_primary = mod->client_info.minfo[index].is_primary;
}
instance->update->BeginPaint = lfreerdp_begin_paint; instance->update->BeginPaint = lfreerdp_begin_paint;
instance->update->EndPaint = lfreerdp_end_paint; instance->update->EndPaint = lfreerdp_end_paint;
@ -1457,6 +1473,7 @@ lfreerdp_pre_connect(freerdp *instance)
instance->update->pointer->PointerNew = lfreerdp_pointer_new; instance->update->pointer->PointerNew = lfreerdp_pointer_new;
instance->update->pointer->PointerCached = lfreerdp_pointer_cached; instance->update->pointer->PointerCached = lfreerdp_pointer_cached;
if ((mod->username[0] != 0) && (mod->password[0] != 0)) if ((mod->username[0] != 0) && (mod->password[0] != 0))
{ {
/* since we have username and password, we can try nla */ /* since we have username and password, we can try nla */
@ -1629,21 +1646,21 @@ lrail_NotifyIconCreate(rdpContext *context, WINDOW_ORDER_INFO *orderInfo,
rnso.version = notify_icon_state->version; rnso.version = notify_icon_state->version;
if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_NOTIFY_TIP) if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_NOTIFY_TIP)
{ {
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;
rnso.infotip.flags = notify_icon_state->infoTip.flags; rnso.infotip.flags = notify_icon_state->infoTip.flags;
rnso.infotip.text = freerdp_uniconv_in(uniconv, rnso.infotip.text = freerdp_uniconv_in(uniconv,
notify_icon_state->infoTip.text.string, notify_icon_state->infoTip.text.string,
notify_icon_state->infoTip.text.length); notify_icon_state->infoTip.text.length);
rnso.infotip.title = freerdp_uniconv_in(uniconv, rnso.infotip.title = freerdp_uniconv_in(uniconv,
notify_icon_state->infoTip.title.string, notify_icon_state->infoTip.title.string,
notify_icon_state->infoTip.title.length); notify_icon_state->infoTip.title.length);
} }
rnso.state = notify_icon_state->state; rnso.state = notify_icon_state->state;
rnso.icon_cache_entry = notify_icon_state->icon.cacheEntry; rnso.icon_cache_entry = notify_icon_state->icon.cacheEntry;
@ -1744,6 +1761,7 @@ lfreerdp_post_connect(freerdp *instance)
mod = ((struct mod_context *)(instance->context))->modi; mod = ((struct mod_context *)(instance->context))->modi;
g_memset(mod->password, 0, sizeof(mod->password)); g_memset(mod->password, 0, sizeof(mod->password));
mod->inst->update->window->WindowCreate = lrail_WindowCreate; mod->inst->update->window->WindowCreate = lrail_WindowCreate;
mod->inst->update->window->WindowUpdate = lrail_WindowUpdate; mod->inst->update->window->WindowUpdate = lrail_WindowUpdate;
mod->inst->update->window->WindowDelete = lrail_WindowDelete; mod->inst->update->window->WindowDelete = lrail_WindowDelete;
@ -1755,6 +1773,7 @@ lfreerdp_post_connect(freerdp *instance)
mod->inst->update->window->MonitoredDesktop = lrail_MonitoredDesktop; mod->inst->update->window->MonitoredDesktop = lrail_MonitoredDesktop;
mod->inst->update->window->NonMonitoredDesktop = lrail_NonMonitoredDesktop; mod->inst->update->window->NonMonitoredDesktop = lrail_NonMonitoredDesktop;
return 1; return 1;
} }
@ -1796,7 +1815,8 @@ lfreerdp_receive_channel_data(freerdp *instance, int channelId, uint8 *data,
if (lchid >= 0) if (lchid >= 0)
{ {
LLOGLN(10, ("lfreerdp_receive_channel_data: server to client")); LLOGLN(10, ("lfreerdp_receive_channel_data: server to client, chanid: %d", lchid));
g_hexdump(data, size); // for debugging
error = mod->server_send_to_channel(mod, lchid, (char *)data, size, error = mod->server_send_to_channel(mod, lchid, (char *)data, size,
total_size, flags); total_size, flags);

Loading…
Cancel
Save