#include <freerdp/input.h>
#include <freerdp/update.h>
-typedef void (*psPeerContextSize)(freerdp_peer* client, uint32* size);
typedef void (*psPeerContextNew)(freerdp_peer* client, rdpContext* context);
typedef void (*psPeerContextFree)(freerdp_peer* client, rdpContext* context);
rdpUpdate* update;
rdpSettings* settings;
- psPeerContextSize ContextSize;
+ size_t context_size;
psPeerContextNew ContextNew;
psPeerContextFree ContextFree;
void freerdp_peer_context_new(freerdp_peer* client)
{
rdpRdp* rdp;
- uint32 size = sizeof(rdpContext);
rdp = rdp_new(NULL);
client->input = rdp->input;
client->update = rdp->update;
client->settings = rdp->settings;
- IFCALL(client->ContextSize, client, &size);
-
- client->context = (rdpContext*) xzalloc(size);
+ client->context = (rdpContext*) xzalloc(client->context_size);
client->context->rdp = rdp;
client->context->peer = client;
client = xnew(freerdp_peer);
- client->sockfd = sockfd;
- client->Initialize = freerdp_peer_initialize;
- client->GetFileDescriptor = freerdp_peer_get_fds;
- client->CheckFileDescriptor = freerdp_peer_check_fds;
- client->Disconnect = freerdp_peer_disconnect;
+ if (client != NULL)
+ {
+ client->sockfd = sockfd;
+ client->context_size = sizeof(rdpContext);
+ client->Initialize = freerdp_peer_initialize;
+ client->GetFileDescriptor = freerdp_peer_get_fds;
+ client->CheckFileDescriptor = freerdp_peer_check_fds;
+ client->Disconnect = freerdp_peer_disconnect;
+ }
return client;
}
return xfi;
}
-void xf_peer_context_size(freerdp_peer* client, uint32* size)
-{
- *size = sizeof(xfPeerContext);
-}
-
void xf_peer_context_new(freerdp_peer* client, xfPeerContext* context)
{
context->info = xf_info_init();
void xf_peer_init(freerdp_peer* client)
{
- client->ContextSize = (psPeerContextSize) xf_peer_context_size;
+ client->context_size = sizeof(xfPeerContext);
client->ContextNew = (psPeerContextNew) xf_peer_context_new;
client->ContextFree = (psPeerContextFree) xf_peer_context_free;
freerdp_peer_context_new(client);
};
typedef struct test_peer_context testPeerContext;
-void test_peer_context_size(freerdp_peer* client, uint32* size)
-{
- *size = sizeof(testPeerContext);
-}
-
void test_peer_context_new(freerdp_peer* client, testPeerContext* context)
{
context->rfx_context = rfx_context_new();
static void test_peer_init(freerdp_peer* client)
{
- client->ContextSize = (psPeerContextSize) test_peer_context_size;
+ client->context_size = sizeof(testPeerContext);
client->ContextNew = (psPeerContextNew) test_peer_context_new;
client->ContextFree = (psPeerContextFree) test_peer_context_free;
freerdp_peer_context_new(client);