diff --git a/channels/rail/rail_main.c b/channels/rail/rail_main.c index 9cac111a4..35842c61b 100644 --- a/channels/rail/rail_main.c +++ b/channels/rail/rail_main.c @@ -31,7 +31,7 @@ #include "rail_orders.h" #include "rail_main.h" -static void rail_send_channel_data(void* rail_object, void* data, size_t length) +void rail_send_channel_data(void* rail_object, void* data, size_t length) { STREAM* s = NULL; railPlugin* plugin = (railPlugin*) rail_object; @@ -59,16 +59,9 @@ static void rail_process_connect(rdpSvcPlugin* plugin) { railPlugin* rail = (railPlugin*) plugin; - rail->rail_event_sender.event_sender_object = rail; - rail->rail_event_sender.send_rail_channel_event = rail_send_channel_event; - - rail->rail_data_sender.data_sender_object = rail; - rail->rail_data_sender.send_rail_channel_data = rail_send_channel_data; - rail->rail_order = rail_order_new(); rail->rail_order->plugin_data = (RDP_PLUGIN_DATA*)plugin->channel_entry_points.pExtendedData; - rail->rail_order->data_sender = &(rail->rail_data_sender); - rail->rail_order->event_sender = &(rail->rail_event_sender); + rail->rail_order->plugin = rail; } static void rail_process_terminate(rdpSvcPlugin* plugin) diff --git a/channels/rail/rail_main.h b/channels/rail/rail_main.h index d744a25e8..e51d97f8a 100644 --- a/channels/rail/rail_main.h +++ b/channels/rail/rail_main.h @@ -26,25 +26,11 @@ #include #include -typedef struct _RAIL_CHANNEL_DATA_SENDER RAIL_CHANNEL_DATA_SENDER; -typedef struct _RAIL_CHANNEL_EVENT_SENDER RAIL_CHANNEL_EVENT_SENDER; - -struct _RAIL_CHANNEL_DATA_SENDER -{ - void* data_sender_object; - void (*send_rail_channel_data)(void* sender_object, void* data, size_t length); -}; - -struct _RAIL_CHANNEL_EVENT_SENDER -{ - void * event_sender_object; - void (*send_rail_channel_event)(void* ui_event_sender_object, uint16 event_type, void* param); -}; - struct rdp_rail_order { UNICONV* uniconv; RDP_PLUGIN_DATA* plugin_data; + void* plugin; RAIL_HANDSHAKE_ORDER handshake; RAIL_CLIENT_STATUS_ORDER client_status; RAIL_EXEC_ORDER exec; @@ -60,21 +46,18 @@ struct rdp_rail_order RAIL_LANGBAR_INFO_ORDER langbar_info; RAIL_GET_APPID_REQ_ORDER get_appid_req; RAIL_GET_APPID_RESP_ORDER get_appid_resp; - RAIL_CHANNEL_DATA_SENDER* data_sender; - RAIL_CHANNEL_EVENT_SENDER* event_sender; }; typedef struct rdp_rail_order rdpRailOrder; struct rail_plugin { rdpSvcPlugin plugin; - RAIL_CHANNEL_DATA_SENDER rail_data_sender; - RAIL_CHANNEL_EVENT_SENDER rail_event_sender; rdpRailOrder* rail_order; }; typedef struct rail_plugin railPlugin; void rail_send_channel_event(void* rail_object, uint16 event_type, void* param); +void rail_send_channel_data(void* rail_object, void* data, size_t length); #define WITH_DEBUG_RAIL 1 diff --git a/channels/rail/rail_orders.c b/channels/rail/rail_orders.c index 17947a7c3..888c3a9e4 100644 --- a/channels/rail/rail_orders.c +++ b/channels/rail/rail_orders.c @@ -114,7 +114,7 @@ void rail_send_pdu(rdpRailOrder* rail_order, STREAM* s, uint16 orderType) printf("Sending %s PDU, length:%d\n", RAIL_ORDER_TYPE_STRINGS[((orderType & 0xF0) >> 3) + (orderType & 0x0F)], orderLength); - rail_order->data_sender->send_rail_channel_data(rail_order->data_sender->data_sender_object, s->data, orderLength); + rail_send_channel_data(rail_order->plugin, s->data, orderLength); } void rail_write_high_contrast(STREAM* s, HIGH_CONTRAST* high_contrast) @@ -357,8 +357,8 @@ void rail_recv_handshake_order(rdpRailOrder* rail_order, STREAM* s) rail_order->sysparam.workArea.right = 1024; rail_order->sysparam.workArea.bottom = 768; - rail_send_channel_event(rail_order->event_sender->event_sender_object, - RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS, (void*) &rail_order->sysparam); + rail_send_channel_event(rail_order->plugin, + RDP_EVENT_TYPE_RAIL_CHANNEL_GET_SYSPARAMS, (void*) &rail_order->sysparam); } void rail_order_recv(rdpRailOrder* rail_order, STREAM* s)