static const char* event_class_to_name_table[] =
{
"rdpdbg", /* RDP_EVENT_CLASS_DEBUG */
- "cliprdr", /* RDP_EVENT_CLASS_CLIPRDR */
+ "", /* RDP_EVENT_CLASS_CLIPRDR */
"tsmf", /* RDP_EVENT_CLASS_TSMF */
"rail", /* RDP_EVENT_CLASS_RAIL */
NULL
FREERDP_API int freerdp_channels_send_event(rdpChannels* channels, RDP_EVENT* event)
{
int index;
- const char* name;
+ const char* name = NULL;
struct channel_data* lchannel_data;
name = event_class_to_name_table[event->event_class];
+ switch (GetMessageClass(event->id))
+ {
+ case DebugChannel_Class:
+ name = "rdpdbg";
+ break;
+
+ case CliprdrChannel_Class:
+ name = "cliprdr";
+ break;
+
+ case TsmfChannel_Class:
+ name = "tsmf";
+ break;
+
+ case RailChannel_Class:
+ name = "rail";
+ break;
+ }
+
if (!name)
{
DEBUG_CHANNELS("unknown event_class %d", event->event_class);
CLIPRDR_FORMAT_NAME* format_name;
RDP_CB_FORMAT_LIST_EVENT* cb_event;
- cb_event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ cb_event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_FormatList, NULL, NULL);
if (dataLen > 0)
{
{
RDP_CB_DATA_REQUEST_EVENT* cb_event;
- cb_event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_DATA_REQUEST, NULL, NULL);
+ cb_event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_DataRequest, NULL, NULL);
stream_read_UINT32(s, cb_event->format);
svc_plugin_send_event((rdpSvcPlugin*) cliprdr, (RDP_EVENT*) cb_event);
{
RDP_CB_DATA_RESPONSE_EVENT* cb_event;
- cb_event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_DATA_RESPONSE, NULL, NULL);
+ cb_event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_DataResponse, NULL, NULL);
if (dataLen > 0)
{
cb_event->size = dataLen;
cb_event->data = (BYTE*) malloc(dataLen);
- memcpy(cb_event->data, stream_get_tail(s), dataLen);
+ CopyMemory(cb_event->data, stream_get_tail(s), dataLen);
}
svc_plugin_send_event((rdpSvcPlugin*) cliprdr, (RDP_EVENT*) cb_event);
if (cliprdr->received_caps)
cliprdr_send_clip_caps(cliprdr);
- event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_MONITOR_READY, NULL, NULL);
+ event = freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_MonitorReady, NULL, NULL);
+
svc_plugin_send_event((rdpSvcPlugin*) cliprdr, event);
}
{
switch (event->event_type)
{
- case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+ case CliprdrChannel_FormatList:
cliprdr_process_format_list_event((cliprdrPlugin*) plugin, (RDP_CB_FORMAT_LIST_EVENT*) event);
break;
- case RDP_EVENT_TYPE_CB_DATA_REQUEST:
+ case CliprdrChannel_DataRequest:
cliprdr_process_format_data_request_event((cliprdrPlugin*) plugin, (RDP_CB_DATA_REQUEST_EVENT*) event);
break;
- case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+ case CliprdrChannel_DataResponse:
cliprdr_process_format_data_response_event((cliprdrPlugin*) plugin, (RDP_CB_DATA_RESPONSE_EVENT*) event);
break;
static void on_free_rail_channel_event(RDP_EVENT* event)
{
- if (event->event_class == RDP_EVENT_CLASS_RAIL)
- {
- rail_free_cloned_order(event->event_type, event->user_data);
- }
+ rail_free_cloned_order(event->event_type, event->user_data);
}
void rail_send_channel_event(void* rail_object, UINT16 event_type, void* param)
RDP_EVENT* event;
RDP_CB_FORMAT_LIST_EVENT* format_list_event;
- event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ event = freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_FormatList, NULL, NULL);
- format_list_event = (RDP_CB_FORMAT_LIST_EVENT*)event;
+ format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
format_list_event->num_formats = 0;
freerdp_channels_send_event(channels, event);
if (event)
{
- switch (event->event_type)
+ switch (GetMessageType(event->id))
{
- case RDP_EVENT_TYPE_CB_MONITOR_READY:
+ case CliprdrChannel_MonitorReady:
df_process_cb_monitor_ready_event(channels, instance);
break;
+
default:
printf("df_process_channel_event: unknown event type %d\n", event->event_type);
break;
dfContext* context;
rdpChannels* channels;
- memset(rfds, 0, sizeof(rfds));
- memset(wfds, 0, sizeof(wfds));
+ ZeroMemory(rfds, sizeof(rfds));
+ ZeroMemory(wfds, sizeof(wfds));
if (!freerdp_connect(instance))
return 0;
RDP_EVENT* event;
RDP_CB_FORMAT_LIST_EVENT* format_list_event;
- event = freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR, RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ event = freerdp_event_new(CliprdrChannel_Class, CliprdrChannel_FormatList, NULL, NULL);
format_list_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
format_list_event->num_formats = 0;
}
DEBUG_X11_CLIPRDR("format=%d len=%d bytes_left=%d", format, (int) length, (int) bytes_left);
- event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_FormatList, NULL, NULL);
event->raw_format_data = (BYTE*) malloc(length);
memcpy(event->raw_format_data, format_data, length);
RDP_CB_FORMAT_LIST_EVENT* event;
clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
- event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_FormatList, NULL, NULL);
event->num_formats = 0;
RDP_CB_FORMAT_LIST_EVENT* event;
clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
- event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_FormatList, NULL, NULL);
event->formats = (UINT32*) malloc(sizeof(UINT32) * cb->num_format_mappings);
event->num_formats = cb->num_format_mappings;
RDP_CB_DATA_REQUEST_EVENT* event;
clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
- event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_DATA_REQUEST, NULL, NULL);
+ event = (RDP_CB_DATA_REQUEST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_DataRequest, NULL, NULL);
event->format = format;
RDP_CB_DATA_RESPONSE_EVENT* event;
clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
- event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_DATA_RESPONSE, NULL, NULL);
+ event = (RDP_CB_DATA_RESPONSE_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_DataResponse, NULL, NULL);
event->data = data;
event->size = size;
clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
XGetWindowProperty(xfi->display, xfi->drawable, cb->property_atom,
- 0, 200, 0, XA_ATOM,
- &atom, &format, &length, &bytes_left, &data);
+ 0, 200, 0, XA_ATOM, &atom, &format, &length, &bytes_left, &data);
DEBUG_X11_CLIPRDR("type=%d format=%d length=%d bytes_left=%d",
(int) atom, format, (int) length, (int) bytes_left);
if (length > 0)
{
- event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(RDP_EVENT_CLASS_CLIPRDR,
- RDP_EVENT_TYPE_CB_FORMAT_LIST, NULL, NULL);
+ event = (RDP_CB_FORMAT_LIST_EVENT*) freerdp_event_new(CliprdrChannel_Class,
+ CliprdrChannel_FormatList, NULL, NULL);
event->formats = (UINT32*) malloc(sizeof(UINT32) * cb->num_format_mappings);
num = 0;
+
for (i = 0; i < length; i++)
{
atom = ((Atom*) data)[i];
}
}
}
+
event->num_formats = num;
XFree(data);
BYTE* outbuf;
/* length should be at least BMP header (14) + sizeof(BITMAPINFOHEADER) */
+
if (*size < 54)
{
- DEBUG_X11_CLIPRDR("bmp length %d too short", *capacity);
+ DEBUG_X11_CLIPRDR("bmp length %d too short", *size);
return NULL;
}
outbuf = (BYTE*) malloc(*size);
ZeroMemory(outbuf, *size);
- memcpy(outbuf, data + 14, *size);
+ CopyMemory(outbuf, data + 14, *size);
return outbuf;
}
UINT32 ncolors;
/* size should be at least sizeof(BITMAPINFOHEADER) */
+
if (size < 40)
{
- DEBUG_X11_CLIPRDR("dib size %d too short", capacity);
+ DEBUG_X11_CLIPRDR("dib size %d too short", size);
return;
}
{
clipboardContext* cb = (clipboardContext*) xfi->clipboard_context;
- DEBUG_X11_CLIPRDR("size=%d", event->capacity);
+ DEBUG_X11_CLIPRDR("size=%d", event->size);
- if (cb->respond == NULL)
+ if (!cb->respond)
{
DEBUG_X11_CLIPRDR("unexpected data");
return;
free(cb->data);
cb->data = NULL;
}
+
switch (cb->data_format)
{
case CB_FORMAT_RAW:
void xf_process_cliprdr_event(xfInfo* xfi, RDP_EVENT* event)
{
- switch (event->event_type)
+ switch (GetMessageType(event->id))
{
- case RDP_EVENT_TYPE_CB_MONITOR_READY:
+ case CliprdrChannel_MonitorReady:
xf_cliprdr_process_cb_monitor_ready_event(xfi);
break;
- case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+ case CliprdrChannel_FormatList:
xf_cliprdr_process_cb_format_list_event(xfi, (RDP_CB_FORMAT_LIST_EVENT*) event);
break;
- case RDP_EVENT_TYPE_CB_DATA_REQUEST:
+ case CliprdrChannel_DataRequest:
xf_cliprdr_process_cb_data_request_event(xfi, (RDP_CB_DATA_REQUEST_EVENT*) event);
break;
- case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+ case CliprdrChannel_DataResponse:
xf_cliprdr_process_cb_data_response_event(xfi, (RDP_CB_DATA_RESPONSE_EVENT*) event);
break;
default:
- DEBUG_X11_CLIPRDR("unknown event type %d", event->event_type);
+ DEBUG_X11_CLIPRDR("unknown event type %d", GetMessageType(event->id));
break;
}
}
static void xf_on_free_rail_client_event(RDP_EVENT* event)
{
- if (event->event_class == RDP_EVENT_CLASS_RAIL)
- {
- rail_free_cloned_order(event->event_type, event->user_data);
- }
+ rail_free_cloned_order(event->event_type, event->user_data);
}
static void xf_send_rail_client_event(rdpChannels* channels, UINT16 event_type, void* param)
{
out_event = freerdp_event_new(RDP_EVENT_CLASS_RAIL, event_type,
xf_on_free_rail_client_event, payload);
+
freerdp_channels_send_event(channels, out_event);
}
}
if (event)
{
- switch (event->event_class)
+ switch (GetMessageClass(event->id))
{
case RDP_EVENT_CLASS_RAIL:
xf_process_rail_event(xfi, channels, event);
xf_process_tsmf_event(xfi, event);
break;
- case RDP_EVENT_CLASS_CLIPRDR:
+ case CliprdrChannel_Class:
xf_process_cliprdr_event(xfi, event);
break;
/**
* Event Types
*/
-#define RDP_EVENT_TYPE_CB_MONITOR_READY 1
-#define RDP_EVENT_TYPE_CB_FORMAT_LIST 2
-#define RDP_EVENT_TYPE_CB_DATA_REQUEST 3
-#define RDP_EVENT_TYPE_CB_DATA_RESPONSE 4
/**
* Clipboard Formats
#ifndef FREERDP_CORE_MESSAGE_H
#define FREERDP_CORE_MESSAGE_H
-#define GetMessageType(_id) (_id & 0xFF)
-#define GetMessageClass(_id) ((_id >> 16) & 0xFF)
+#define GetMessageType(_id) (_id & 0xFF)
+#define GetMessageClass(_id) ((_id >> 16) & 0xFF)
+
+#define GetMessageId(_class, _type) ((_class << 16) | _type)
#define MakeMessageId(_class, _type) \
(((_class ##_Class) << 16) | (_class ## _ ## _type))
#define FREERDP_INPUT_MOUSE_EVENT MakeMessageId(Input, MouseEvent)
#define FREERDP_INPUT_EXTENDED_MOUSE_EVENT MakeMessageId(Input, ExtendedMouseEvent)
+/**
+ * Static Channel Message Queues
+ */
+
+#define FREERDP_CHANNEL_MESSAGE_QUEUE 3
+
+#define Channel_Base 20
+
+/**
+ * Debug Channel
+ */
+
+#define DebugChannel_Class (Channel_Base + 1)
+
+/**
+ * Clipboard Channel
+ */
+
+#define CliprdrChannel_Class (Channel_Base + 2)
+
+#define CliprdrChannel_MonitorReady 1
+#define CliprdrChannel_FormatList 2
+#define CliprdrChannel_DataRequest 3
+#define CliprdrChannel_DataResponse 4
+
+#define FREERDP_CLIPRDR_CHANNEL_MONITOR_READY MakeMessageId(CliprdrChannel, MonitorReady)
+#define FREERDP_CLIPRDR_CHANNEL_FORMAT_LIST MakeMessageId(CliprdrChannel, FormatList)
+#define FREERDP_CLIPRDR_CHANNEL_DATA_REQUEST MakeMessageId(CliprdrChannel, DataRequest)
+#define FREERDP_CLIPRDR_CHANNEL_DATA_RESPONSE MakeMessageId(CliprdrChannel, DataResponse)
+
+/**
+ * Multimedia Redirection Channel
+ */
+
+#define TsmfChannel_Class (Channel_Base + 3)
+
+#define TsmfChannel_VideoFrame 1
+#define TsmfChannel_Redraw 2
+
+#define FREERDP_TSMF_CHANNEL_VIDEO_FRAME MakeMessageId(TsmfChannel, VideoFrame)
+#define FREERDP_TSMF_CHANNEL_REDRAW MakeMessageId(TsmfChannel, Redraw)
+
+/**
+ * RemoteApp Channel
+ */
+
+#define RailChannel_Class (Channel_Base + 4)
+
+#define RailChannel_ClientExecute 1
+#define RailChannel_ClientActivate 2
+#define RailChannel_ClientSystemParameters 3
+#define RailChannel_ClientSystemCommand 4
+#define RailChannel_ClientHandshake 5
+#define RailChannel_ServerHandshake 6
+#define RailChannel_ClientNotifyEvent 7
+#define RailChannel_ClientWindowMove 8
+#define RailChannel_ServerLocalMoveSize 9
+#define RailChannel_ServerMinMaxInfo 10
+#define RailChannel_ClientInformation 11
+#define RailChannel_ClientSystemMenu 12
+#define RailChannel_ClientLanguageBarInfo 13
+#define RailChannel_ServerLanguageBarInfo 14
+#define RailChannel_ServerExecuteResult 15
+#define RailChannel_ClientGetAppIdRequest 16
+#define RailChannel_ServerGetAppIdResponse 17
+
+#define FREERDP_RAIL_CHANNEL_CLIENT_EXECUTE MakeMessageId(RailChannel, ClientExecute)
+#define FREERDP_RAIL_CHANNEL_CLIENT_ACTIVATE MakeMessageId(RailChannel, ClientActivate)
+#define FREERDP_RAIL_CHANNEL_CLIENT_SYSTEM_PARAMETERS MakeMessageId(RailChannel, ClientSystemParameters)
+#define FREERDP_RAIL_CHANNEL_CLIENT_SYSTEM_COMMAND MakeMessageId(RailChannel, ClientSystemCommand)
+#define FREERDP_RAIL_CHANNEL_CLIENT_HANDSHAKE MakeMessageId(RailChannel, ClientHandshake)
+#define FREERDP_RAIL_CHANNEL_SERVER_HANDSHAKE MakeMessageId(RailChannel, ServerHandshake)
+#define FREERDP_RAIL_CHANNEL_CLIENT_NOTIFY_EVENT MakeMessageId(RailChannel, ClientNotifyEvent)
+#define FREERDP_RAIL_CHANNEL_CLIENT_WINDOW_MOVE MakeMessageId(RailChannel, ClientWindowMove)
+#define FREERDP_RAIL_CHANNEL_SERVER_LOCAL_MOVE_SIZE MakeMessageId(RailChannel, ServerLocalMoveSize)
+#define FREERDP_RAIL_CHANNEL_SERVER_MIN_MAX_INFO MakeMessageId(RailChannel, ServerMinMaxInfo)
+#define FREERDP_RAIL_CHANNEL_CLIENT_INFORMATION MakeMessageId(RailChannel, ClientInformation)
+#define FREERDP_RAIL_CHANNEL_CLIENT_SYSTEM_MENU MakeMessageId(RailChannel, ClientSystemMenu)
+#define FREERDP_RAIL_CHANNEL_CLIENT_LANGUAGE_BAR_INFO MakeMessageId(RailChannel, ClientLanguageBarInfo)
+#define FREERDP_RAIL_CHANNEL_SERVER_LANGUAGE_BAR_INFO MakeMessageId(RailChannel, ServerLanguageBarInfo)
+#define FREERDP_RAIL_CHANNEL_SERVER_EXECUTE_RESULT MakeMessageId(RailChannel, ServerExecuteResult)
+#define FREERDP_RAIL_CHANNEL_CLIENT_GET_APP_ID_REQUEST MakeMessageId(RailChannel, ClientGetAppIdRequest)
+#define FREERDP_RAIL_CHANNEL_SERVER_GET_APP_ID_RESPONSE MakeMessageId(RailChannel, ServerGetAppIdResponse)
+
#endif /* FREERDP_CORE_MESSAGE_H */
typedef struct _RECTANGLE_16 RECTANGLE_16;
/* Plugin events */
+
+#include <freerdp/message.h>
+#include <winpr/collections.h>
+
typedef struct _RDP_EVENT RDP_EVENT;
typedef void (*RDP_EVENT_CALLBACK) (RDP_EVENT* event);
struct _RDP_EVENT
{
+ UINT32 id;
UINT16 event_class;
UINT16 event_type;
RDP_EVENT_CALLBACK on_event_free_callback;
enum RDP_EVENT_CLASS
{
RDP_EVENT_CLASS_DEBUG = 0,
- RDP_EVENT_CLASS_CLIPRDR,
RDP_EVENT_CLASS_TSMF,
RDP_EVENT_CLASS_RAIL
};
#include <winpr/crt.h>
+#include <freerdp/message.h>
#include <freerdp/utils/event.h>
#include <freerdp/client/cliprdr.h>
#include <freerdp/client/tsmf.h>
switch (event_type)
{
- case RDP_EVENT_TYPE_CB_MONITOR_READY:
+ case CliprdrChannel_MonitorReady:
event = (RDP_EVENT*) malloc(sizeof(RDP_CB_MONITOR_READY_EVENT));
ZeroMemory(event, sizeof(RDP_CB_MONITOR_READY_EVENT));
+ event->id = MakeMessageId(CliprdrChannel, MonitorReady);
break;
- case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+ case CliprdrChannel_FormatList:
event = (RDP_EVENT*) malloc(sizeof(RDP_CB_FORMAT_LIST_EVENT));
ZeroMemory(event, sizeof(RDP_CB_FORMAT_LIST_EVENT));
+ event->id = MakeMessageId(CliprdrChannel, FormatList);
break;
- case RDP_EVENT_TYPE_CB_DATA_REQUEST:
+ case CliprdrChannel_DataRequest:
event = (RDP_EVENT*) malloc(sizeof(RDP_CB_DATA_REQUEST_EVENT));
ZeroMemory(event, sizeof(RDP_CB_DATA_REQUEST_EVENT));
+ event->id = MakeMessageId(CliprdrChannel, DataRequest);
break;
- case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+ case CliprdrChannel_DataResponse:
event = (RDP_EVENT*) malloc(sizeof(RDP_CB_DATA_RESPONSE_EVENT));
ZeroMemory(event, sizeof(RDP_CB_DATA_RESPONSE_EVENT));
+ event->id = MakeMessageId(CliprdrChannel, DataResponse);
break;
}
ZeroMemory(event, sizeof(RDP_EVENT));
break;
- case RDP_EVENT_CLASS_CLIPRDR:
+ case CliprdrChannel_Class:
event = freerdp_cliprdr_event_new(event_type);
break;
event->event_type = event_type;
event->on_event_free_callback = on_event_free_callback;
event->user_data = user_data;
+
+ event->id = GetMessageId(event_class, event_type);
}
return event;
static void freerdp_cliprdr_event_free(RDP_EVENT* event)
{
- switch (event->event_type)
+ switch (GetMessageType(event->id))
{
- case RDP_EVENT_TYPE_CB_FORMAT_LIST:
+ case CliprdrChannel_FormatList:
{
- RDP_CB_FORMAT_LIST_EVENT* cb_event = (RDP_CB_FORMAT_LIST_EVENT*)event;
+ RDP_CB_FORMAT_LIST_EVENT* cb_event = (RDP_CB_FORMAT_LIST_EVENT*) event;
free(cb_event->formats);
free(cb_event->raw_format_data);
}
break;
- case RDP_EVENT_TYPE_CB_DATA_RESPONSE:
+
+ case CliprdrChannel_DataResponse:
{
- RDP_CB_DATA_RESPONSE_EVENT* cb_event = (RDP_CB_DATA_RESPONSE_EVENT*)event;
+ RDP_CB_DATA_RESPONSE_EVENT* cb_event = (RDP_CB_DATA_RESPONSE_EVENT*) event;
free(cb_event->data);
}
break;
static void freerdp_rail_event_free(RDP_EVENT* event)
{
+
}
void freerdp_event_free(RDP_EVENT* event)
if (event->on_event_free_callback)
event->on_event_free_callback(event);
- switch (event->event_class)
+ switch (GetMessageClass(event->id))
{
- case RDP_EVENT_CLASS_CLIPRDR:
+ case CliprdrChannel_Class:
freerdp_cliprdr_event_free(event);
break;
+
case RDP_EVENT_CLASS_TSMF:
freerdp_tsmf_event_free(event);
break;
+
case RDP_EVENT_CLASS_RAIL:
freerdp_rail_event_free(event);
break;