libfreerdp-core: cleanup message interface
This commit is contained in:
parent
64160af3a8
commit
bbcf081243
@ -1021,23 +1021,25 @@ int xfreerdp_run(freerdp* instance)
|
||||
int rcount;
|
||||
int wcount;
|
||||
int ret = 0;
|
||||
BOOL status;
|
||||
void* rfds[32];
|
||||
void* wfds[32];
|
||||
fd_set rfds_set;
|
||||
fd_set wfds_set;
|
||||
int fd_msg_event;
|
||||
HANDLE msg_event;
|
||||
int fd_evt_event;
|
||||
HANDLE evt_event;
|
||||
int fd_update_event;
|
||||
HANDLE update_event;
|
||||
int fd_input_event;
|
||||
HANDLE input_event;
|
||||
int select_status;
|
||||
rdpChannels* channels;
|
||||
struct timeval timeout;
|
||||
|
||||
memset(rfds, 0, sizeof(rfds));
|
||||
memset(wfds, 0, sizeof(wfds));
|
||||
memset(&timeout, 0, sizeof(struct timeval));
|
||||
ZeroMemory(rfds, sizeof(rfds));
|
||||
ZeroMemory(wfds, sizeof(wfds));
|
||||
ZeroMemory(&timeout, sizeof(struct timeval));
|
||||
|
||||
status = freerdp_connect(instance);
|
||||
|
||||
BOOL status = freerdp_connect(instance);
|
||||
/* Connection succeeded. --authonly ? */
|
||||
if (instance->settings->AuthenticationOnly)
|
||||
{
|
||||
@ -1055,17 +1057,17 @@ int xfreerdp_run(freerdp* instance)
|
||||
xfi = ((xfContext*) instance->context)->xfi;
|
||||
channels = instance->context->channels;
|
||||
|
||||
fd_msg_event = -1;
|
||||
msg_event = freerdp_get_message_queue_event_handle(instance);
|
||||
fd_update_event = -1;
|
||||
update_event = freerdp_get_message_queue_event_handle(instance, FREERDP_UPDATE_MESSAGE_QUEUE);
|
||||
|
||||
if (msg_event)
|
||||
fd_msg_event = GetEventFileDescriptor(msg_event);
|
||||
if (update_event)
|
||||
fd_update_event = GetEventFileDescriptor(update_event);
|
||||
|
||||
fd_evt_event = -1;
|
||||
evt_event = freerdp_get_input_queue_event_handle(instance);
|
||||
fd_input_event = -1;
|
||||
input_event = freerdp_get_message_queue_event_handle(instance, FREERDP_INPUT_MESSAGE_QUEUE);
|
||||
|
||||
if (evt_event)
|
||||
fd_evt_event = GetEventFileDescriptor(evt_event);
|
||||
if (input_event)
|
||||
fd_input_event = GetEventFileDescriptor(input_event);
|
||||
|
||||
while (!xfi->disconnect && !freerdp_shall_disconnect(instance))
|
||||
{
|
||||
@ -1091,11 +1093,11 @@ int xfreerdp_run(freerdp* instance)
|
||||
break;
|
||||
}
|
||||
|
||||
if (fd_msg_event > 0)
|
||||
rfds[rcount++] = (void*) (long) fd_msg_event;
|
||||
if (fd_update_event > 0)
|
||||
rfds[rcount++] = (void*) (long) fd_update_event;
|
||||
|
||||
if (fd_evt_event > 0)
|
||||
rfds[rcount++] = (void*) (long) fd_evt_event;
|
||||
if (fd_input_event > 0)
|
||||
rfds[rcount++] = (void*) (long) fd_input_event;
|
||||
|
||||
max_fds = 0;
|
||||
FD_ZERO(&rfds_set);
|
||||
@ -1153,11 +1155,11 @@ int xfreerdp_run(freerdp* instance)
|
||||
}
|
||||
xf_process_channel_event(channels, instance);
|
||||
|
||||
if (fd_msg_event > 0)
|
||||
freerdp_process_messages(instance);
|
||||
if (fd_update_event > 0)
|
||||
freerdp_message_queue_process_pending_messages(instance, FREERDP_UPDATE_MESSAGE_QUEUE);
|
||||
|
||||
if (fd_evt_event > 0)
|
||||
freerdp_process_input(instance);
|
||||
if (fd_input_event > 0)
|
||||
freerdp_message_queue_process_pending_messages(instance, FREERDP_INPUT_MESSAGE_QUEUE);
|
||||
}
|
||||
|
||||
FILE *fin = fopen("/tmp/tsmf.tid", "rt");
|
||||
|
@ -40,6 +40,7 @@ typedef struct rdp_freerdp_peer freerdp_peer;
|
||||
|
||||
#include <freerdp/input.h>
|
||||
#include <freerdp/update.h>
|
||||
#include <freerdp/message.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -196,11 +197,10 @@ FREERDP_API BOOL freerdp_disconnect(freerdp* instance);
|
||||
FREERDP_API BOOL freerdp_get_fds(freerdp* instance, void** rfds, int* rcount, void** wfds, int* wcount);
|
||||
FREERDP_API BOOL freerdp_check_fds(freerdp* instance);
|
||||
|
||||
FREERDP_API int freerdp_process_messages(freerdp* instance);
|
||||
FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance);
|
||||
|
||||
FREERDP_API HANDLE freerdp_get_input_queue_event_handle(freerdp* instance);
|
||||
FREERDP_API int freerdp_process_input(freerdp* instance);
|
||||
FREERDP_API wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id);
|
||||
FREERDP_API HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id);
|
||||
FREERDP_API int freerdp_message_queue_process_message(freerdp* instance, DWORD id, wMessage* message);
|
||||
FREERDP_API int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id);
|
||||
|
||||
FREERDP_API UINT32 freerdp_error_info(freerdp* instance);
|
||||
|
||||
|
238
include/freerdp/message.h
Normal file
238
include/freerdp/message.h
Normal file
@ -0,0 +1,238 @@
|
||||
/**
|
||||
* FreeRDP: A Remote Desktop Protocol Implementation
|
||||
* Asynchronous Message Interface
|
||||
*
|
||||
* Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef FREERDP_CORE_MESSAGE_H
|
||||
#define FREERDP_CORE_MESSAGE_H
|
||||
|
||||
#define GetMessageType(_id) (_id & 0xFF)
|
||||
#define GetMessageClass(_id) ((_id >> 16) & 0xFF)
|
||||
|
||||
#define MakeMessageId(_class, _type) \
|
||||
(((_class ##_Class) << 16) | (_class ## _ ## _type))
|
||||
|
||||
/**
|
||||
* Update Message Queue
|
||||
*/
|
||||
|
||||
#define FREERDP_UPDATE_MESSAGE_QUEUE 1
|
||||
|
||||
#define Update_Base 0
|
||||
|
||||
/* Update */
|
||||
|
||||
#define Update_Class (Update_Base + 1)
|
||||
|
||||
#define Update_BeginPaint 1
|
||||
#define Update_EndPaint 2
|
||||
#define Update_SetBounds 3
|
||||
#define Update_Synchronize 4
|
||||
#define Update_DesktopResize 5
|
||||
#define Update_BitmapUpdate 6
|
||||
#define Update_Palette 7
|
||||
#define Update_PlaySound 8
|
||||
#define Update_RefreshRect 9
|
||||
#define Update_SuppressOutput 10
|
||||
#define Update_SurfaceCommand 11
|
||||
#define Update_SurfaceBits 12
|
||||
#define Update_SurfaceFrameMarker 13
|
||||
#define Update_SurfaceFrameAcknowledge 14
|
||||
|
||||
#define FREERDP_UPDATE_BEGIN_PAINT MakeMessageId(Update, BeginPaint)
|
||||
#define FREERDP_UPDATE_ END_PAINT MakeMessageId(Update, EndPaint)
|
||||
#define FREERDP_UPDATE_SET_BOUNDS MakeMessageId(Update, SetBounds)
|
||||
#define FREERDP_UPDATE_SYNCHRONIZE MakeMessageId(Update, Synchronize)
|
||||
#define FREERDP_UPDATE_DESKTOP_RESIZE MakeMessageId(Update, DesktopResize)
|
||||
#define FREERDP_UPDATE_BITMAP_UPDATE MakeMessageId(Update, BitmapUpdate)
|
||||
#define FREERDP_UPDATE_PALETTE MakeMessageId(Update, Palette)
|
||||
#define FREERDP_UPDATE_PLAY_SOUND MakeMessageId(Update, PlaySound)
|
||||
#define FREERDP_UPDATE_REFRESH_RECT MakeMessageId(Update, RefreshRect)
|
||||
#define FREERDP_UPDATE_SUPPRESS_OUTPUT MakeMessageId(Update, SuppressOutput)
|
||||
#define FREERDP_UPDATE_SURFACE_COMMAND MakeMessageId(Update, SurfaceCommand)
|
||||
#define FREERDP_UPDATE_SURFACE_BITS MakeMessageId(Update, SurfaceBits)
|
||||
#define FREERDP_UPDATE_SURFACE_FRAME_MARKER MakeMessageId(Update, SurfaceFrameMarker)
|
||||
#define FREERDP_UPDATE_SURFACE_FRAME_ACKNOWLEDGE MakeMessageId(Update, SurfaceFrameAcknowledge)
|
||||
|
||||
/* Primary Update */
|
||||
|
||||
#define PrimaryUpdate_Class (Update_Base + 2)
|
||||
|
||||
#define PrimaryUpdate_DstBlt 1
|
||||
#define PrimaryUpdate_PatBlt 2
|
||||
#define PrimaryUpdate_ScrBlt 3
|
||||
#define PrimaryUpdate_OpaqueRect 4
|
||||
#define PrimaryUpdate_DrawNineGrid 5
|
||||
#define PrimaryUpdate_MultiDstBlt 6
|
||||
#define PrimaryUpdate_MultiPatBlt 7
|
||||
#define PrimaryUpdate_MultiScrBlt 8
|
||||
#define PrimaryUpdate_MultiOpaqueRect 9
|
||||
#define PrimaryUpdate_MultiDrawNineGrid 10
|
||||
#define PrimaryUpdate_LineTo 11
|
||||
#define PrimaryUpdate_Polyline 12
|
||||
#define PrimaryUpdate_MemBlt 13
|
||||
#define PrimaryUpdate_Mem3Blt 14
|
||||
#define PrimaryUpdate_SaveBitmap 15
|
||||
#define PrimaryUpdate_GlyphIndex 16
|
||||
#define PrimaryUpdate_FastIndex 17
|
||||
#define PrimaryUpdate_FastGlyph 18
|
||||
#define PrimaryUpdate_PolygonSC 19
|
||||
#define PrimaryUpdate_PolygonCB 20
|
||||
#define PrimaryUpdate_EllipseSC 21
|
||||
#define PrimaryUpdate_EllipseCB 22
|
||||
|
||||
#define FREERDP_PRIMARY_UPDATE_DSTBLT MakeMessageId(PrimaryUpdate, DstBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_PATBLT MakeMessageId(PrimaryUpdate, PatBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_SCRBLT MakeMessageId(PrimaryUpdate, ScrBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_OPAQUE_RECT MakeMessageId(PrimaryUpdate, OpaqueRect)
|
||||
#define FREERDP_PRIMARY_UPDATE_DRAW_NINE_GRID MakeMessageId(PrimaryUpdate, DrawNineGrid)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_DSTBLT MakeMessageId(PrimaryUpdate, MultiDstBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_PATBLT MakeMessageId(PrimaryUpdate, MultiPatBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_SCRBLT MakeMessageId(PrimaryUpdate, MultiScrBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_OPAQUE_RECT MakeMessageId(PrimaryUpdate, MultiOpaqueRect)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_DRAW_NINE_GRID MakeMessageId(PrimaryUpdate, MultiDrawNineGrid)
|
||||
#define FREERDP_PRIMARY_UPDATE_LINE_TO MakeMessageId(PrimaryUpdate, LineTo)
|
||||
#define FREERDP_PRIMARY_UPDATE_POLYLINE MakeMessageId(PrimaryUpdate, Polyline)
|
||||
#define FREERDP_PRIMARY_UPDATE_MEMBLT MakeMessageId(PrimaryUpdate, MemBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MEM3BLT MakeMessageId(PrimaryUpdate, Mem3Blt)
|
||||
#define FREERDP_PRIMARY_UPDATE_SAVE_BITMAP MakeMessageId(PrimaryUpdate, SaveBitmap)
|
||||
#define FREERDP_PRIMARY_UPDATE_GLYPH_INDEX MakeMessageId(PrimaryUpdate, GlyphIndex)
|
||||
#define FREERDP_PRIMARY_UPDATE_FAST_INDEX MakeMessageId(PrimaryUpdate, FastIndex)
|
||||
#define FREERDP_PRIMARY_UPDATE_FAST_GLYPH MakeMessageId(PrimaryUpdate, FastGlyph)
|
||||
#define FREERDP_PRIMARY_UPDATE_POLYGON_SC MakeMessageId(PrimaryUpdate, PolygonSC)
|
||||
#define FREERDP_PRIMARY_UPDATE_POLYGON_CB MakeMessageId(PrimaryUpdate, PolygonCB)
|
||||
#define FREERDP_PRIMARY_UPDATE_ELLIPSE_SC MakeMessageId(PrimaryUpdate, EllipseSC)
|
||||
#define FREERDP_PRIMARY_UPDATE_ELLIPSE_CB MakeMessageId(PrimaryUpdate, EllipseCB)
|
||||
|
||||
/* Secondary Update */
|
||||
|
||||
#define SecondaryUpdate_Class (Update_Base + 3)
|
||||
|
||||
#define SecondaryUpdate_CacheBitmap 1
|
||||
#define SecondaryUpdate_CacheBitmapV2 2
|
||||
#define SecondaryUpdate_CacheBitmapV3 3
|
||||
#define SecondaryUpdate_CacheColorTable 4
|
||||
#define SecondaryUpdate_CacheGlyph 5
|
||||
#define SecondaryUpdate_CacheGlyphV2 6
|
||||
#define SecondaryUpdate_CacheBrush 7
|
||||
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BITMAP MakeMessageId(SecondaryUpdate, CacheBitmap)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BITMAP_V2 MakeMessageId(SecondaryUpdate, CacheBitmapV2)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BITMAP_V3 MakeMessageId(SecondaryUpdate, CacheBitmapV3)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_COLOR_TABLE MakeMessageId(SecondaryUpdate, CacheColorTable)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_GLYPH MakeMessageId(SecondaryUpdate, CacheGlyph)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_GLYPH_V2 MakeMessageId(SecondaryUpdate, CacheGlyphV2)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BRUSH MakeMessageId(SecondaryUpdate, CacheBrush)
|
||||
|
||||
/* Alternate Secondary Update */
|
||||
|
||||
#define AltSecUpdate_Class (Update_Base + 4)
|
||||
|
||||
#define AltSecUpdate_CreateOffscreenBitmap 1
|
||||
#define AltSecUpdate_SwitchSurface 2
|
||||
#define AltSecUpdate_CreateNineGridBitmap 3
|
||||
#define AltSecUpdate_FrameMarker 4
|
||||
#define AltSecUpdate_StreamBitmapFirst 5
|
||||
#define AltSecUpdate_StreamBitmapNext 6
|
||||
#define AltSecUpdate_DrawGdiPlusFirst 7
|
||||
#define AltSecUpdate_DrawGdiPlusNext 8
|
||||
#define AltSecUpdate_DrawGdiPlusEnd 9
|
||||
#define AltSecUpdate_DrawGdiPlusCacheFirst 10
|
||||
#define AltSecUpdate_DrawGdiPlusCacheNext 11
|
||||
#define AltSecUpdate_DrawGdiPlusCacheEnd 12
|
||||
|
||||
#define FREERDP_ALTSEC_UPDATE_CREATE_OFFSCREEN_BITMAP MakeMessageId(AltSecUpdate, CreateOffscreenBitmap)
|
||||
#define FREERDP_ALTSEC_UPDATE_SWITCH_SURFACE MakeMessageId(AltSecUpdate, SwitchSurface)
|
||||
#define FREERDP_ALTSEC_UPDATE_CREATE_NINE_GRID_BITMAP MakeMessageId(AltSecUpdate, CreateNineGridBitmap)
|
||||
#define FREERDP_ALTSEC_UPDATE_FRAME_MARKER MakeMessageId(AltSecUpdate, FrameMarker)
|
||||
#define FREERDP_ALTSEC_UPDATE_STREAM_BITMAP_FIRST MakeMessageId(AltSecUpdate, StreamBitmapFirst)
|
||||
#define FREERDP_ALTSEC_UPDATE_STREAM_BITMAP_NEXT MakeMessageId(AltSecUpdate, StreamBitmapNext)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_FIRST MakeMessageId(AltSecUpdate, DrawGdiPlusFirst)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_NEXT MakeMessageId(AltSecUpdate, DrawGdiPlusNext)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_END MakeMessageId(AltSecUpdate, DrawGdiPlusEnd)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_CACHE_FIRST MakeMessageId(AltSecUpdate, DrawGdiPlusCacheFirst)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_CACHE_NEXT MakeMessageId(AltSecUpdate, DrawGdiPlusCacheNext)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_CACHE_END MakeMessageId(AltSecUpdate, DrawGdiPlusCacheEnd)
|
||||
|
||||
/* Window Update */
|
||||
|
||||
#define WindowUpdate_Class (Update_Base + 5)
|
||||
|
||||
#define WindowUpdate_WindowCreate 1
|
||||
#define WindowUpdate_WindowUpdate 2
|
||||
#define WindowUpdate_WindowIcon 3
|
||||
#define WindowUpdate_WindowCachedIcon 4
|
||||
#define WindowUpdate_WindowDelete 5
|
||||
#define WindowUpdate_NotifyIconCreate 6
|
||||
#define WindowUpdate_NotifyIconUpdate 7
|
||||
#define WindowUpdate_NotifyIconDelete 8
|
||||
#define WindowUpdate_MonitoredDesktop 9
|
||||
#define WindowUpdate_NonMonitoredDesktop 10
|
||||
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_CREATE MakeMessageId(WindowUpdate, WindowCreate)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_UPDATE MakeMessageId(WindowUpdate, WindowUpdate)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_ICON MakeMessageId(WindowUpdate, WindowIcon)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_CACHED_ICON MakeMessageId(WindowUpdate, WindowCachedIcon)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_DELETE MakeMessageId(WindowUpdate, WindowDelete)
|
||||
#define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_CREATE MakeMessageId(WindowUpdate, NotifyIconCreate)
|
||||
#define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_UPDATE MakeMessageId(WindowUpdate, NotifyIconUpdate)
|
||||
#define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_DELETE MakeMessageId(WindowUpdate, NotifyIconDelete)
|
||||
#define FREERDP_WINDOW_UPDATE_MONITORED_DESKTOP MakeMessageId(WindowUpdate, MonitoredDesktop)
|
||||
#define FREERDP_WINDOW_UPDATE_NON_MONITORED_DESKTOP MakeMessageId(WindowUpdate, NonMonitoredDesktop)
|
||||
|
||||
/* Pointer Update */
|
||||
|
||||
#define PointerUpdate_Class (Update_Base + 6)
|
||||
|
||||
#define PointerUpdate_PointerPosition 1
|
||||
#define PointerUpdate_PointerSystem 2
|
||||
#define PointerUpdate_PointerColor 3
|
||||
#define PointerUpdate_PointerNew 4
|
||||
#define PointerUpdate_PointerCached 5
|
||||
|
||||
#define FREERDP_POINTER_UPDATE_ POINTER_POSITION MakeMessageId(PointerUpdate, PointerPosition)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_SYSTEM MakeMessageId(PointerUpdate, PointerSystem)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_COLOR MakeMessageId(PointerUpdate, PointerColor)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_NEW MakeMessageId(PointerUpdate, PointerNew)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_CACHED MakeMessageId(PointerUpdate, PointerCached)
|
||||
|
||||
/**
|
||||
* Input Message Queue
|
||||
*/
|
||||
|
||||
#define FREERDP_INPUT_MESSAGE_QUEUE 2
|
||||
|
||||
#define Input_Base 16
|
||||
|
||||
/* Input */
|
||||
|
||||
#define Input_Class (Input_Base + 1)
|
||||
|
||||
#define Input_SynchronizeEvent 1
|
||||
#define Input_KeyboardEvent 2
|
||||
#define Input_UnicodeKeyboardEvent 3
|
||||
#define Input_MouseEvent 4
|
||||
#define Input_ExtendedMouseEvent 5
|
||||
|
||||
#define FREERDP_INPUT_SYNCHRONIZE_EVENT MakeMessageId(Input, SynchronizeEvent)
|
||||
#define FREERDP_INPUT_KEYBOARD_EVENT MakeMessageId(Input, KeyboardEvent)
|
||||
#define FREERDP_INPUT_UNICODE_KEYBOARD_EVENT MakeMessageId(Input, UnicodeKeyboardEvent)
|
||||
#define FREERDP_INPUT_MOUSE_EVENT MakeMessageId(Input, MouseEvent)
|
||||
#define FREERDP_INPUT_EXTENDED_MOUSE_EVENT MakeMessageId(Input, ExtendedMouseEvent)
|
||||
|
||||
#endif /* FREERDP_CORE_MESSAGE_H */
|
||||
|
@ -75,7 +75,7 @@ BOOL freerdp_connect(freerdp* instance)
|
||||
|
||||
if (status != TRUE)
|
||||
{
|
||||
if(!connectErrorCode)
|
||||
if (!connectErrorCode)
|
||||
{
|
||||
connectErrorCode = PREECONNECTERROR;
|
||||
}
|
||||
@ -185,34 +185,71 @@ BOOL freerdp_check_fds(freerdp* instance)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
HANDLE freerdp_get_message_queue_event_handle(freerdp* instance)
|
||||
wMessageQueue* freerdp_get_message_queue(freerdp* instance, DWORD id)
|
||||
{
|
||||
wMessageQueue* queue = NULL;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case FREERDP_UPDATE_MESSAGE_QUEUE:
|
||||
queue = instance->update->queue;
|
||||
break;
|
||||
|
||||
case FREERDP_INPUT_MESSAGE_QUEUE:
|
||||
queue = instance->input->queue;
|
||||
break;
|
||||
}
|
||||
|
||||
return queue;
|
||||
}
|
||||
|
||||
HANDLE freerdp_get_message_queue_event_handle(freerdp* instance, DWORD id)
|
||||
{
|
||||
HANDLE event = NULL;
|
||||
wMessageQueue* queue = NULL;
|
||||
|
||||
if (instance->update->queue)
|
||||
event = MessageQueue_Event(instance->update->queue);
|
||||
queue = freerdp_get_message_queue(instance, id);
|
||||
|
||||
if (queue)
|
||||
event = MessageQueue_Event(queue);
|
||||
|
||||
return event;
|
||||
}
|
||||
|
||||
int freerdp_process_messages(freerdp* instance)
|
||||
int freerdp_message_queue_process_message(freerdp* instance, DWORD id, wMessage* message)
|
||||
{
|
||||
return update_process_messages(instance->update);
|
||||
int status = -1;
|
||||
|
||||
switch (id)
|
||||
{
|
||||
case FREERDP_UPDATE_MESSAGE_QUEUE:
|
||||
status = update_message_queue_process_message(instance->update, message);
|
||||
break;
|
||||
|
||||
case FREERDP_INPUT_MESSAGE_QUEUE:
|
||||
status = input_message_queue_process_message(instance->input, message);
|
||||
break;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
HANDLE freerdp_get_input_queue_event_handle(freerdp* instance)
|
||||
int freerdp_message_queue_process_pending_messages(freerdp* instance, DWORD id)
|
||||
{
|
||||
HANDLE event = NULL;
|
||||
int status = -1;
|
||||
|
||||
if (instance->input->queue)
|
||||
event = MessageQueue_Event(instance->input->queue);
|
||||
switch (id)
|
||||
{
|
||||
case FREERDP_UPDATE_MESSAGE_QUEUE:
|
||||
status = update_message_queue_process_pending_messages(instance->update);
|
||||
break;
|
||||
|
||||
return event;
|
||||
}
|
||||
case FREERDP_INPUT_MESSAGE_QUEUE:
|
||||
status = input_message_queue_process_pending_messages(instance->input);
|
||||
break;
|
||||
}
|
||||
|
||||
int freerdp_process_input(freerdp* instance)
|
||||
{
|
||||
return input_process_events(instance->input);
|
||||
return status;
|
||||
}
|
||||
|
||||
static int freerdp_send_channel_data(freerdp* instance, int channel_id, BYTE* data, int size)
|
||||
|
@ -21,195 +21,12 @@
|
||||
#define FREERDP_CORE_MESSAGE_PRIVATE_H
|
||||
|
||||
#include <freerdp/freerdp.h>
|
||||
|
||||
#define GetMessageType(_id) (_id & 0xFF)
|
||||
#define GetMessageClass(_id) ((_id >> 16) & 0xFF)
|
||||
|
||||
#define MakeMessageId(_class, _type) \
|
||||
(((_class ##_Class) << 16) | (_class ## _ ## _type))
|
||||
#include <freerdp/message.h>
|
||||
|
||||
/**
|
||||
* Update Message Queue
|
||||
*/
|
||||
|
||||
#define Update_Base 0
|
||||
|
||||
/* Update */
|
||||
|
||||
#define Update_Class (Update_Base + 1)
|
||||
|
||||
#define Update_BeginPaint 1
|
||||
#define Update_EndPaint 2
|
||||
#define Update_SetBounds 3
|
||||
#define Update_Synchronize 4
|
||||
#define Update_DesktopResize 5
|
||||
#define Update_BitmapUpdate 6
|
||||
#define Update_Palette 7
|
||||
#define Update_PlaySound 8
|
||||
#define Update_RefreshRect 9
|
||||
#define Update_SuppressOutput 10
|
||||
#define Update_SurfaceCommand 11
|
||||
#define Update_SurfaceBits 12
|
||||
#define Update_SurfaceFrameMarker 13
|
||||
#define Update_SurfaceFrameAcknowledge 14
|
||||
|
||||
#define FREERDP_UPDATE_BEGIN_PAINT MakeMessageId(Update, BeginPaint)
|
||||
#define FREERDP_UPDATE_ END_PAINT MakeMessageId(Update, EndPaint)
|
||||
#define FREERDP_UPDATE_SET_BOUNDS MakeMessageId(Update, SetBounds)
|
||||
#define FREERDP_UPDATE_SYNCHRONIZE MakeMessageId(Update, Synchronize)
|
||||
#define FREERDP_UPDATE_DESKTOP_RESIZE MakeMessageId(Update, DesktopResize)
|
||||
#define FREERDP_UPDATE_BITMAP_UPDATE MakeMessageId(Update, BitmapUpdate)
|
||||
#define FREERDP_UPDATE_PALETTE MakeMessageId(Update, Palette)
|
||||
#define FREERDP_UPDATE_PLAY_SOUND MakeMessageId(Update, PlaySound)
|
||||
#define FREERDP_UPDATE_REFRESH_RECT MakeMessageId(Update, RefreshRect)
|
||||
#define FREERDP_UPDATE_SUPPRESS_OUTPUT MakeMessageId(Update, SuppressOutput)
|
||||
#define FREERDP_UPDATE_SURFACE_COMMAND MakeMessageId(Update, SurfaceCommand)
|
||||
#define FREERDP_UPDATE_SURFACE_BITS MakeMessageId(Update, SurfaceBits)
|
||||
#define FREERDP_UPDATE_SURFACE_FRAME_MARKER MakeMessageId(Update, SurfaceFrameMarker)
|
||||
#define FREERDP_UPDATE_SURFACE_FRAME_ACKNOWLEDGE MakeMessageId(Update, SurfaceFrameAcknowledge)
|
||||
|
||||
/* Primary Update */
|
||||
|
||||
#define PrimaryUpdate_Class (Update_Base + 2)
|
||||
|
||||
#define PrimaryUpdate_DstBlt 1
|
||||
#define PrimaryUpdate_PatBlt 2
|
||||
#define PrimaryUpdate_ScrBlt 3
|
||||
#define PrimaryUpdate_OpaqueRect 4
|
||||
#define PrimaryUpdate_DrawNineGrid 5
|
||||
#define PrimaryUpdate_MultiDstBlt 6
|
||||
#define PrimaryUpdate_MultiPatBlt 7
|
||||
#define PrimaryUpdate_MultiScrBlt 8
|
||||
#define PrimaryUpdate_MultiOpaqueRect 9
|
||||
#define PrimaryUpdate_MultiDrawNineGrid 10
|
||||
#define PrimaryUpdate_LineTo 11
|
||||
#define PrimaryUpdate_Polyline 12
|
||||
#define PrimaryUpdate_MemBlt 13
|
||||
#define PrimaryUpdate_Mem3Blt 14
|
||||
#define PrimaryUpdate_SaveBitmap 15
|
||||
#define PrimaryUpdate_GlyphIndex 16
|
||||
#define PrimaryUpdate_FastIndex 17
|
||||
#define PrimaryUpdate_FastGlyph 18
|
||||
#define PrimaryUpdate_PolygonSC 19
|
||||
#define PrimaryUpdate_PolygonCB 20
|
||||
#define PrimaryUpdate_EllipseSC 21
|
||||
#define PrimaryUpdate_EllipseCB 22
|
||||
|
||||
#define FREERDP_PRIMARY_UPDATE_DSTBLT MakeMessageId(PrimaryUpdate, DstBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_PATBLT MakeMessageId(PrimaryUpdate, PatBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_SCRBLT MakeMessageId(PrimaryUpdate, ScrBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_OPAQUE_RECT MakeMessageId(PrimaryUpdate, OpaqueRect)
|
||||
#define FREERDP_PRIMARY_UPDATE_DRAW_NINE_GRID MakeMessageId(PrimaryUpdate, DrawNineGrid)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_DSTBLT MakeMessageId(PrimaryUpdate, MultiDstBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_PATBLT MakeMessageId(PrimaryUpdate, MultiPatBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_SCRBLT MakeMessageId(PrimaryUpdate, MultiScrBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_OPAQUE_RECT MakeMessageId(PrimaryUpdate, MultiOpaqueRect)
|
||||
#define FREERDP_PRIMARY_UPDATE_MULTI_DRAW_NINE_GRID MakeMessageId(PrimaryUpdate, MultiDrawNineGrid)
|
||||
#define FREERDP_PRIMARY_UPDATE_LINE_TO MakeMessageId(PrimaryUpdate, LineTo)
|
||||
#define FREERDP_PRIMARY_UPDATE_POLYLINE MakeMessageId(PrimaryUpdate, Polyline)
|
||||
#define FREERDP_PRIMARY_UPDATE_MEMBLT MakeMessageId(PrimaryUpdate, MemBlt)
|
||||
#define FREERDP_PRIMARY_UPDATE_MEM3BLT MakeMessageId(PrimaryUpdate, Mem3Blt)
|
||||
#define FREERDP_PRIMARY_UPDATE_SAVE_BITMAP MakeMessageId(PrimaryUpdate, SaveBitmap)
|
||||
#define FREERDP_PRIMARY_UPDATE_GLYPH_INDEX MakeMessageId(PrimaryUpdate, GlyphIndex)
|
||||
#define FREERDP_PRIMARY_UPDATE_FAST_INDEX MakeMessageId(PrimaryUpdate, FastIndex)
|
||||
#define FREERDP_PRIMARY_UPDATE_FAST_GLYPH MakeMessageId(PrimaryUpdate, FastGlyph)
|
||||
#define FREERDP_PRIMARY_UPDATE_POLYGON_SC MakeMessageId(PrimaryUpdate, PolygonSC)
|
||||
#define FREERDP_PRIMARY_UPDATE_POLYGON_CB MakeMessageId(PrimaryUpdate, PolygonCB)
|
||||
#define FREERDP_PRIMARY_UPDATE_ELLIPSE_SC MakeMessageId(PrimaryUpdate, EllipseSC)
|
||||
#define FREERDP_PRIMARY_UPDATE_ELLIPSE_CB MakeMessageId(PrimaryUpdate, EllipseCB)
|
||||
|
||||
/* Secondary Update */
|
||||
|
||||
#define SecondaryUpdate_Class (Update_Base + 3)
|
||||
|
||||
#define SecondaryUpdate_CacheBitmap 1
|
||||
#define SecondaryUpdate_CacheBitmapV2 2
|
||||
#define SecondaryUpdate_CacheBitmapV3 3
|
||||
#define SecondaryUpdate_CacheColorTable 4
|
||||
#define SecondaryUpdate_CacheGlyph 5
|
||||
#define SecondaryUpdate_CacheGlyphV2 6
|
||||
#define SecondaryUpdate_CacheBrush 7
|
||||
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BITMAP MakeMessageId(SecondaryUpdate, CacheBitmap)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BITMAP_V2 MakeMessageId(SecondaryUpdate, CacheBitmapV2)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BITMAP_V3 MakeMessageId(SecondaryUpdate, CacheBitmapV3)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_COLOR_TABLE MakeMessageId(SecondaryUpdate, CacheColorTable)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_GLYPH MakeMessageId(SecondaryUpdate, CacheGlyph)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_GLYPH_V2 MakeMessageId(SecondaryUpdate, CacheGlyphV2)
|
||||
#define FREERDP_SECONDARY_UPDATE_CACHE_BRUSH MakeMessageId(SecondaryUpdate, CacheBrush)
|
||||
|
||||
/* Alternate Secondary Update */
|
||||
|
||||
#define AltSecUpdate_Class (Update_Base + 4)
|
||||
|
||||
#define AltSecUpdate_CreateOffscreenBitmap 1
|
||||
#define AltSecUpdate_SwitchSurface 2
|
||||
#define AltSecUpdate_CreateNineGridBitmap 3
|
||||
#define AltSecUpdate_FrameMarker 4
|
||||
#define AltSecUpdate_StreamBitmapFirst 5
|
||||
#define AltSecUpdate_StreamBitmapNext 6
|
||||
#define AltSecUpdate_DrawGdiPlusFirst 7
|
||||
#define AltSecUpdate_DrawGdiPlusNext 8
|
||||
#define AltSecUpdate_DrawGdiPlusEnd 9
|
||||
#define AltSecUpdate_DrawGdiPlusCacheFirst 10
|
||||
#define AltSecUpdate_DrawGdiPlusCacheNext 11
|
||||
#define AltSecUpdate_DrawGdiPlusCacheEnd 12
|
||||
|
||||
#define FREERDP_ALTSEC_UPDATE_CREATE_OFFSCREEN_BITMAP MakeMessageId(AltSecUpdate, CreateOffscreenBitmap)
|
||||
#define FREERDP_ALTSEC_UPDATE_SWITCH_SURFACE MakeMessageId(AltSecUpdate, SwitchSurface)
|
||||
#define FREERDP_ALTSEC_UPDATE_CREATE_NINE_GRID_BITMAP MakeMessageId(AltSecUpdate, CreateNineGridBitmap)
|
||||
#define FREERDP_ALTSEC_UPDATE_FRAME_MARKER MakeMessageId(AltSecUpdate, FrameMarker)
|
||||
#define FREERDP_ALTSEC_UPDATE_STREAM_BITMAP_FIRST MakeMessageId(AltSecUpdate, StreamBitmapFirst)
|
||||
#define FREERDP_ALTSEC_UPDATE_STREAM_BITMAP_NEXT MakeMessageId(AltSecUpdate, StreamBitmapNext)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_FIRST MakeMessageId(AltSecUpdate, DrawGdiPlusFirst)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_NEXT MakeMessageId(AltSecUpdate, DrawGdiPlusNext)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_END MakeMessageId(AltSecUpdate, DrawGdiPlusEnd)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_CACHE_FIRST MakeMessageId(AltSecUpdate, DrawGdiPlusCacheFirst)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_CACHE_NEXT MakeMessageId(AltSecUpdate, DrawGdiPlusCacheNext)
|
||||
#define FREERDP_ALTSEC_UPDATE_DRAW_GDI_PLUS_CACHE_END MakeMessageId(AltSecUpdate, DrawGdiPlusCacheEnd)
|
||||
|
||||
/* Window Update */
|
||||
|
||||
#define WindowUpdate_Class (Update_Base + 5)
|
||||
|
||||
#define WindowUpdate_WindowCreate 1
|
||||
#define WindowUpdate_WindowUpdate 2
|
||||
#define WindowUpdate_WindowIcon 3
|
||||
#define WindowUpdate_WindowCachedIcon 4
|
||||
#define WindowUpdate_WindowDelete 5
|
||||
#define WindowUpdate_NotifyIconCreate 6
|
||||
#define WindowUpdate_NotifyIconUpdate 7
|
||||
#define WindowUpdate_NotifyIconDelete 8
|
||||
#define WindowUpdate_MonitoredDesktop 9
|
||||
#define WindowUpdate_NonMonitoredDesktop 10
|
||||
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_CREATE MakeMessageId(WindowUpdate, WindowCreate)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_UPDATE MakeMessageId(WindowUpdate, WindowUpdate)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_ICON MakeMessageId(WindowUpdate, WindowIcon)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_CACHED_ICON MakeMessageId(WindowUpdate, WindowCachedIcon)
|
||||
#define FREERDP_WINDOW_UPDATE_WINDOW_DELETE MakeMessageId(WindowUpdate, WindowDelete)
|
||||
#define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_CREATE MakeMessageId(WindowUpdate, NotifyIconCreate)
|
||||
#define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_UPDATE MakeMessageId(WindowUpdate, NotifyIconUpdate)
|
||||
#define FREERDP_WINDOW_UPDATE_NOTIFY_ICON_DELETE MakeMessageId(WindowUpdate, NotifyIconDelete)
|
||||
#define FREERDP_WINDOW_UPDATE_MONITORED_DESKTOP MakeMessageId(WindowUpdate, MonitoredDesktop)
|
||||
#define FREERDP_WINDOW_UPDATE_NON_MONITORED_DESKTOP MakeMessageId(WindowUpdate, NonMonitoredDesktop)
|
||||
|
||||
/* Pointer Update */
|
||||
|
||||
#define PointerUpdate_Class (Update_Base + 6)
|
||||
|
||||
#define PointerUpdate_PointerPosition 1
|
||||
#define PointerUpdate_PointerSystem 2
|
||||
#define PointerUpdate_PointerColor 3
|
||||
#define PointerUpdate_PointerNew 4
|
||||
#define PointerUpdate_PointerCached 5
|
||||
|
||||
#define FREERDP_POINTER_UPDATE_ POINTER_POSITION MakeMessageId(PointerUpdate, PointerPosition)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_SYSTEM MakeMessageId(PointerUpdate, PointerSystem)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_COLOR MakeMessageId(PointerUpdate, PointerColor)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_NEW MakeMessageId(PointerUpdate, PointerNew)
|
||||
#define FREERDP_POINTER_UPDATE_POINTER_CACHED MakeMessageId(PointerUpdate, PointerCached)
|
||||
|
||||
/* Update Proxy Interface */
|
||||
|
||||
struct rdp_update_proxy
|
||||
@ -305,6 +122,7 @@ struct rdp_update_proxy
|
||||
pPointerCached PointerCached;
|
||||
};
|
||||
|
||||
int update_message_queue_process_message(rdpUpdate* update, wMessage* message);
|
||||
int update_message_queue_process_pending_messages(rdpUpdate* update);
|
||||
|
||||
rdpUpdateProxy* update_message_proxy_new(rdpUpdate* update);
|
||||
@ -314,24 +132,6 @@ void update_message_proxy_free(rdpUpdateProxy* message);
|
||||
* Input Message Queue
|
||||
*/
|
||||
|
||||
#define Input_Base 0
|
||||
|
||||
/* Input */
|
||||
|
||||
#define Input_Class (Input_Base + 1)
|
||||
|
||||
#define Input_SynchronizeEvent 1
|
||||
#define Input_KeyboardEvent 2
|
||||
#define Input_UnicodeKeyboardEvent 3
|
||||
#define Input_MouseEvent 4
|
||||
#define Input_ExtendedMouseEvent 5
|
||||
|
||||
#define FREERDP_INPUT_SYNCHRONIZE_EVENT MakeMessageId(Input, SynchronizeEvent)
|
||||
#define FREERDP_INPUT_KEYBOARD_EVENT MakeMessageId(Input, KeyboardEvent)
|
||||
#define FREERDP_INPUT_UNICODE_KEYBOARD_EVENT MakeMessageId(Input, UnicodeKeyboardEvent)
|
||||
#define FREERDP_INPUT_MOUSE_EVENT MakeMessageId(Input, MouseEvent)
|
||||
#define FREERDP_INPUT_EXTENDED_MOUSE_EVENT MakeMessageId(Input, ExtendedMouseEvent)
|
||||
|
||||
/* Input Proxy Interface */
|
||||
|
||||
struct rdp_input_proxy
|
||||
@ -347,6 +147,7 @@ struct rdp_input_proxy
|
||||
pExtendedMouseEvent ExtendedMouseEvent;
|
||||
};
|
||||
|
||||
int input_message_queue_process_message(rdpInput* input, wMessage* message);
|
||||
int input_message_queue_process_pending_messages(rdpInput* input);
|
||||
|
||||
rdpInputProxy* input_message_proxy_new(rdpInput* input);
|
||||
|
Loading…
Reference in New Issue
Block a user