Пример #1
0
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);
}
Пример #2
0
//-----------------------------------------------------------------------------
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);
	}
}
Пример #3
0
//-----------------------------------------------------------------------------
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
}
Пример #4
0
//-----------------------------------------------------------------------------
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--;
}
Пример #5
0
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);
		}
	}
}