Blame libfreerdp/core/message.h

Packit 1fb8d4
/**
Packit 1fb8d4
 * FreeRDP: A Remote Desktop Protocol Implementation
Packit 1fb8d4
 * Asynchronous Message Queue
Packit 1fb8d4
 *
Packit 1fb8d4
 * Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
Packit 1fb8d4
 *
Packit 1fb8d4
 * Licensed under the Apache License, Version 2.0 (the "License");
Packit 1fb8d4
 * you may not use this file except in compliance with the License.
Packit 1fb8d4
 * You may obtain a copy of the License at
Packit 1fb8d4
 *
Packit 1fb8d4
 *     http://www.apache.org/licenses/LICENSE-2.0
Packit 1fb8d4
 *
Packit 1fb8d4
 * Unless required by applicable law or agreed to in writing, software
Packit 1fb8d4
 * distributed under the License is distributed on an "AS IS" BASIS,
Packit 1fb8d4
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Packit 1fb8d4
 * See the License for the specific language governing permissions and
Packit 1fb8d4
 * limitations under the License.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#ifndef FREERDP_LIB_CORE_MESSAGE_H
Packit 1fb8d4
#define FREERDP_LIB_CORE_MESSAGE_H
Packit 1fb8d4
Packit 1fb8d4
#include <freerdp/freerdp.h>
Packit 1fb8d4
#include <freerdp/message.h>
Packit 1fb8d4
#include <freerdp/api.h>
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
 * Update Message Queue
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
/* Update Proxy Interface */
Packit 1fb8d4
Packit 1fb8d4
struct rdp_update_proxy
Packit 1fb8d4
{
Packit 1fb8d4
	rdpUpdate* update;
Packit 1fb8d4
Packit 1fb8d4
	/* Update */
Packit 1fb8d4
Packit 1fb8d4
	pBeginPaint BeginPaint;
Packit 1fb8d4
	pEndPaint EndPaint;
Packit 1fb8d4
	pSetBounds SetBounds;
Packit 1fb8d4
	pSynchronize Synchronize;
Packit 1fb8d4
	pDesktopResize DesktopResize;
Packit 1fb8d4
	pBitmapUpdate BitmapUpdate;
Packit 1fb8d4
	pPalette Palette;
Packit 1fb8d4
	pPlaySound PlaySound;
Packit 1fb8d4
	pSetKeyboardIndicators SetKeyboardIndicators;
Packit 1fb8d4
	pSetKeyboardImeStatus SetKeyboardImeStatus;
Packit 1fb8d4
	pRefreshRect RefreshRect;
Packit 1fb8d4
	pSuppressOutput SuppressOutput;
Packit 1fb8d4
	pSurfaceCommand SurfaceCommand;
Packit 1fb8d4
	pSurfaceBits SurfaceBits;
Packit 1fb8d4
	pSurfaceFrameMarker SurfaceFrameMarker;
Packit 1fb8d4
	pSurfaceFrameAcknowledge SurfaceFrameAcknowledge;
Packit 1fb8d4
Packit 1fb8d4
	/* Primary Update */
Packit 1fb8d4
Packit 1fb8d4
	pDstBlt DstBlt;
Packit 1fb8d4
	pPatBlt PatBlt;
Packit 1fb8d4
	pScrBlt ScrBlt;
Packit 1fb8d4
	pOpaqueRect OpaqueRect;
Packit 1fb8d4
	pDrawNineGrid DrawNineGrid;
Packit 1fb8d4
	pMultiDstBlt MultiDstBlt;
Packit 1fb8d4
	pMultiPatBlt MultiPatBlt;
Packit 1fb8d4
	pMultiScrBlt MultiScrBlt;
Packit 1fb8d4
	pMultiOpaqueRect MultiOpaqueRect;
Packit 1fb8d4
	pMultiDrawNineGrid MultiDrawNineGrid;
Packit 1fb8d4
	pLineTo LineTo;
Packit 1fb8d4
	pPolyline Polyline;
Packit 1fb8d4
	pMemBlt MemBlt;
Packit 1fb8d4
	pMem3Blt Mem3Blt;
Packit 1fb8d4
	pSaveBitmap SaveBitmap;
Packit 1fb8d4
	pGlyphIndex GlyphIndex;
Packit 1fb8d4
	pFastIndex FastIndex;
Packit 1fb8d4
	pFastGlyph FastGlyph;
Packit 1fb8d4
	pPolygonSC PolygonSC;
Packit 1fb8d4
	pPolygonCB PolygonCB;
Packit 1fb8d4
	pEllipseSC EllipseSC;
Packit 1fb8d4
	pEllipseCB EllipseCB;
Packit 1fb8d4
Packit 1fb8d4
	/* Secondary Update */
Packit 1fb8d4
Packit 1fb8d4
	pCacheBitmap CacheBitmap;
Packit 1fb8d4
	pCacheBitmapV2 CacheBitmapV2;
Packit 1fb8d4
	pCacheBitmapV3 CacheBitmapV3;
Packit 1fb8d4
	pCacheColorTable CacheColorTable;
Packit 1fb8d4
	pCacheGlyph CacheGlyph;
Packit 1fb8d4
	pCacheGlyphV2 CacheGlyphV2;
Packit 1fb8d4
	pCacheBrush CacheBrush;
Packit 1fb8d4
Packit 1fb8d4
	/* Alternate Secondary Update */
Packit 1fb8d4
Packit 1fb8d4
	pCreateOffscreenBitmap CreateOffscreenBitmap;
Packit 1fb8d4
	pSwitchSurface SwitchSurface;
Packit 1fb8d4
	pCreateNineGridBitmap CreateNineGridBitmap;
Packit 1fb8d4
	pFrameMarker FrameMarker;
Packit 1fb8d4
	pStreamBitmapFirst StreamBitmapFirst;
Packit 1fb8d4
	pStreamBitmapNext StreamBitmapNext;
Packit 1fb8d4
	pDrawGdiPlusFirst DrawGdiPlusFirst;
Packit 1fb8d4
	pDrawGdiPlusNext DrawGdiPlusNext;
Packit 1fb8d4
	pDrawGdiPlusEnd DrawGdiPlusEnd;
Packit 1fb8d4
	pDrawGdiPlusCacheFirst DrawGdiPlusCacheFirst;
Packit 1fb8d4
	pDrawGdiPlusCacheNext DrawGdiPlusCacheNext;
Packit 1fb8d4
	pDrawGdiPlusCacheEnd DrawGdiPlusCacheEnd;
Packit 1fb8d4
Packit 1fb8d4
	/* Window Update */
Packit 1fb8d4
Packit 1fb8d4
	pWindowCreate WindowCreate;
Packit 1fb8d4
	pWindowUpdate WindowUpdate;
Packit 1fb8d4
	pWindowIcon WindowIcon;
Packit 1fb8d4
	pWindowCachedIcon WindowCachedIcon;
Packit 1fb8d4
	pWindowDelete WindowDelete;
Packit 1fb8d4
	pNotifyIconCreate NotifyIconCreate;
Packit 1fb8d4
	pNotifyIconUpdate NotifyIconUpdate;
Packit 1fb8d4
	pNotifyIconDelete NotifyIconDelete;
Packit 1fb8d4
	pMonitoredDesktop MonitoredDesktop;
Packit 1fb8d4
	pNonMonitoredDesktop NonMonitoredDesktop;
Packit 1fb8d4
Packit 1fb8d4
	/* Pointer Update */
Packit 1fb8d4
Packit 1fb8d4
	pPointerPosition PointerPosition;
Packit 1fb8d4
	pPointerSystem PointerSystem;
Packit 1fb8d4
	pPointerColor PointerColor;
Packit 1fb8d4
	pPointerNew PointerNew;
Packit 1fb8d4
	pPointerCached PointerCached;
Packit Service 5a9772
	pPointerLarge PointerLarge;
Packit 1fb8d4
Packit 1fb8d4
	HANDLE thread;
Packit 1fb8d4
};
Packit 1fb8d4
Packit Service 5a9772
FREERDP_LOCAL int update_message_queue_process_message(rdpUpdate* update, wMessage* message);
Packit 1fb8d4
FREERDP_LOCAL int update_message_queue_free_message(wMessage* message);
Packit 1fb8d4
Packit Service 5a9772
FREERDP_LOCAL int update_message_queue_process_pending_messages(rdpUpdate* update);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_LOCAL rdpUpdateProxy* update_message_proxy_new(rdpUpdate* update);
Packit 1fb8d4
FREERDP_LOCAL void update_message_proxy_free(rdpUpdateProxy* message);
Packit 1fb8d4
Packit 1fb8d4
/**
Packit 1fb8d4
 * Input Message Queue
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
/* Input Proxy Interface */
Packit 1fb8d4
Packit 1fb8d4
struct rdp_input_proxy
Packit 1fb8d4
{
Packit 1fb8d4
	rdpInput* input;
Packit 1fb8d4
Packit 1fb8d4
	/* Input */
Packit 1fb8d4
Packit 1fb8d4
	pSynchronizeEvent SynchronizeEvent;
Packit 1fb8d4
	pKeyboardEvent KeyboardEvent;
Packit 1fb8d4
	pUnicodeKeyboardEvent UnicodeKeyboardEvent;
Packit 1fb8d4
	pMouseEvent MouseEvent;
Packit 1fb8d4
	pExtendedMouseEvent ExtendedMouseEvent;
Packit 1fb8d4
	pFocusInEvent FocusInEvent;
Packit 1fb8d4
	pKeyboardPauseEvent KeyboardPauseEvent;
Packit 1fb8d4
};
Packit 1fb8d4
Packit Service 5a9772
FREERDP_LOCAL int input_message_queue_process_message(rdpInput* input, wMessage* message);
Packit 1fb8d4
FREERDP_LOCAL int input_message_queue_free_message(wMessage* message);
Packit 1fb8d4
FREERDP_LOCAL int input_message_queue_process_pending_messages(rdpInput* input);
Packit 1fb8d4
Packit 1fb8d4
FREERDP_LOCAL rdpInputProxy* input_message_proxy_new(rdpInput* input);
Packit 1fb8d4
FREERDP_LOCAL void input_message_proxy_free(rdpInputProxy* proxy);
Packit 1fb8d4
Packit 1fb8d4
#endif /* FREERDP_LIB_CORE_MESSAGE_H */