mirror of https://github.com/FreeRDP/FreeRDP
Add a callback that allows to adjust monitors layout
This callback is useful in server mode when you want to adjust the monitor layout just before the server monitor layout PDU is built and sent.
This commit is contained in:
parent
e775a2a46f
commit
f68888a978
|
@ -47,6 +47,7 @@ typedef BOOL (*psPeerCapabilities)(freerdp_peer* peer);
|
|||
typedef BOOL (*psPeerPostConnect)(freerdp_peer* peer);
|
||||
typedef BOOL (*psPeerActivate)(freerdp_peer* peer);
|
||||
typedef BOOL (*psPeerLogon)(freerdp_peer* peer, SEC_WINNT_AUTH_IDENTITY* identity, BOOL automatic);
|
||||
typedef BOOL (*psPeerAdjustMonitorsLayout)(freerdp_peer* peer);
|
||||
|
||||
typedef int (*psPeerSendChannelData)(freerdp_peer* peer, UINT16 channelId, BYTE* data, int size);
|
||||
typedef int (*psPeerReceiveChannelData)(freerdp_peer* peer, UINT16 channelId, BYTE* data, int size,
|
||||
|
@ -61,6 +62,7 @@ typedef int (*psPeerVirtualChannelWrite)(freerdp_peer* peer, HANDLE hChannel, BY
|
|||
typedef void* (*psPeerVirtualChannelGetData)(freerdp_peer* peer, HANDLE hChannel);
|
||||
typedef int (*psPeerVirtualChannelSetData)(freerdp_peer* peer, HANDLE hChannel, void* data);
|
||||
|
||||
|
||||
struct rdp_freerdp_peer
|
||||
{
|
||||
rdpContext* context;
|
||||
|
@ -113,6 +115,7 @@ struct rdp_freerdp_peer
|
|||
psPeerDrainOutputBuffer DrainOutputBuffer;
|
||||
psPeerHasMoreToRead HasMoreToRead;
|
||||
psPeerGetEventHandles GetEventHandles;
|
||||
psPeerAdjustMonitorsLayout AdjustMonitorsLayout;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -365,11 +365,13 @@ BOOL rdp_server_accept_client_control_pdu(rdpRdp* rdp, wStream* s)
|
|||
BOOL rdp_server_accept_client_font_list_pdu(rdpRdp* rdp, wStream* s)
|
||||
{
|
||||
rdpSettings *settings = rdp->settings;
|
||||
freerdp_peer *peer = rdp->context->peer;
|
||||
|
||||
if (!rdp_recv_client_font_list_pdu(s))
|
||||
return FALSE;
|
||||
|
||||
if (settings->SupportMonitorLayoutPdu && settings->MonitorCount)
|
||||
if (settings->SupportMonitorLayoutPdu && settings->MonitorCount && peer->AdjustMonitorsLayout &&
|
||||
peer->AdjustMonitorsLayout(peer))
|
||||
{
|
||||
/* client supports the monitorLayout PDU, let's send him the monitors if any */
|
||||
wStream *st;
|
||||
|
@ -386,8 +388,6 @@ BOOL rdp_server_accept_client_font_list_pdu(rdpRdp* rdp, wStream* s)
|
|||
}
|
||||
|
||||
r = rdp_send_data_pdu(rdp, st, DATA_PDU_TYPE_MONITOR_LAYOUT, 0);
|
||||
Stream_Free(st, TRUE);
|
||||
|
||||
if (!r)
|
||||
return FALSE;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue