static void rail_WindowIcon(rdpContext* context, WINDOW_ORDER_INFO* orderInfo, WINDOW_ICON_ORDER* window_icon) { rdpIcon* icon; rdpWindow* window; rdpRail* rail = context->rail; if (window_icon->iconInfo->cacheEntry != 0xFFFF) { /* cache icon */ } window = window_list_get_by_id(rail->list, orderInfo->windowId); if (!window) return ; icon = (rdpIcon*) xzalloc(sizeof(rdpIcon)); icon->entry = window_icon->iconInfo; icon->big = (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_ICON_BIG) ? true : false; DEBUG_RAIL("Window Icon: %dx%d@%dbpp cbBitsColor:%d cbBitsMask:%d cbColorTable:%d", window_icon->iconInfo->width, window_icon->iconInfo->height, window_icon->iconInfo->bpp, window_icon->iconInfo->cbBitsColor, window_icon->iconInfo->cbBitsMask, window_icon->iconInfo->cbColorTable); if (icon->big) window->bigIcon = icon; else window->smallIcon = icon; IFCALL(rail->rail_SetWindowIcon, rail, window, icon); }
//----------------------------------------------------------------------------- void debug_event(FRDP_EVENT* event) { uint32 rail_event_id = 0; if (event->event_type == FRDP_EVENT_TYPE_RAIL_VCHANNEL_2_UI) { RAIL_VCHANNEL_EVENT* rail_event = (RAIL_VCHANNEL_EVENT*)event->user_data; DEBUG_RAIL("RAIL event 0x%X.", rail_event->event_id); } }
//----------------------------------------------------------------------------- static int emulate_client_send_channel_data( freerdp* freerdp, int channelId, uint8* data, int size ) { DEBUG_RAIL("Client send to server:"); freerdp_hexdump(data, size); // add to global dumps list }
//----------------------------------------------------------------------------- static void process_events_and_channel_data_from_plugin(thread_param* param) { FRDP_EVENT* event; param->th_count++; while (param->th_to_finish == 0) { freerdp_chanman_check_fds(param->chan_man, param->instance); event = freerdp_chanman_pop_event(param->chan_man); if (event) { DEBUG_RAIL("UI receive %d event.", event->event_type); debug_event(event); // add to global event list freerdp_event_free(event); } usleep(1000); } param->th_count--; }
void window_state_update(rdpWindow* window, WINDOW_ORDER_INFO* orderInfo, WINDOW_STATE_ORDER* window_state) { window->fieldFlags = orderInfo->fieldFlags; if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_OWNER) { window->ownerWindowId = window_state->ownerWindowId; DEBUG_RAIL("ownerWindowId:0x%08X", window->ownerWindowId); } DEBUG_RAIL("windowId=0x%X ownerWindowId=0x%X", window->windowId, window->ownerWindowId); if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_STYLE) { window->style = window_state->style; window->extendedStyle = window_state->extendedStyle; #ifdef WITH_DEBUG_RAIL print_window_styles(window->style); print_extended_window_styles(window->extendedStyle); #endif } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_SHOW) { window->showState = window_state->showState; DEBUG_RAIL("ShowState:%d", window->showState); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_TITLE) { window->titleInfo.length = window_state->titleInfo.length; window->titleInfo.string = xmalloc(window_state->titleInfo.length); memcpy(window->titleInfo.string, window_state->titleInfo.string, window->titleInfo.length); #ifdef WITH_DEBUG_RAIL freerdp_hexdump(window->titleInfo.string, window->titleInfo.length); #endif } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_CLIENT_AREA_OFFSET) { window->clientOffsetX = window_state->clientOffsetX; window->clientOffsetY = window_state->clientOffsetY; DEBUG_RAIL("Client Area Offset: (%d, %d)", window->clientOffsetX, window->clientOffsetY); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_CLIENT_AREA_SIZE) { window->clientAreaWidth = window_state->clientAreaWidth; window->clientAreaHeight = window_state->clientAreaHeight; DEBUG_RAIL("Client Area Size: (%d, %d)", window->clientAreaWidth, window->clientAreaHeight); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_RP_CONTENT) { window->RPContent = window_state->RPContent; } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_ROOT_PARENT) { window->rootParentHandle = window_state->rootParentHandle; } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_OFFSET) { window->windowOffsetX = window_state->windowOffsetX; window->windowOffsetY = window_state->windowOffsetY; DEBUG_RAIL("Window Offset: (%d, %d)", window->windowOffsetX, window->windowOffsetY); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_CLIENT_DELTA) { window->windowClientDeltaX = window_state->windowClientDeltaX; window->windowClientDeltaY = window_state->windowClientDeltaY; DEBUG_RAIL("Window Client Delta: (%d, %d)", window->windowClientDeltaX, window->windowClientDeltaY); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_SIZE) { window->windowWidth = window_state->windowWidth; window->windowHeight = window_state->windowHeight; DEBUG_RAIL("Window Size: (%d, %d)", window->windowWidth, window->windowHeight); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_WND_RECTS) { int i; if (window->windowRects != NULL) xfree(window->windowRects); window->windowRects = window_state->windowRects; window->numWindowRects = window_state->numWindowRects; for (i = 0; i < (int) window_state->numWindowRects; i++) { DEBUG_RAIL("Window Rect #%d: left:%d top:%d right:%d bottom:%d", i, window_state->windowRects[i].left, window_state->windowRects[i].top, window_state->windowRects[i].right, window_state->windowRects[i].bottom); } } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_VIS_OFFSET) { window->visibleOffsetX = window_state->visibleOffsetX; window->visibleOffsetY = window_state->visibleOffsetY; DEBUG_RAIL("Window Visible Offset: (%d, %d)", window->visibleOffsetX, window->visibleOffsetY); } if (orderInfo->fieldFlags & WINDOW_ORDER_FIELD_VISIBILITY) { int i; if (window->visibilityRects != NULL) xfree(window->visibilityRects); window->visibilityRects = window_state->visibilityRects; window->numVisibilityRects = window_state->numVisibilityRects; for (i = 0; i < (int) window_state->numVisibilityRects; i++) { DEBUG_RAIL("Visibility Rect #%d: left:%d top:%d right:%d bottom:%d", i, window_state->visibilityRects[i].left, window_state->visibilityRects[i].top, window_state->visibilityRects[i].right, window_state->visibilityRects[i].bottom); } } }