server: follow context_size change.
authorVic Lee <llyzs@163.com>
Sun, 30 Oct 2011 05:43:04 +0000 (13:43 +0800)
committerVic Lee <llyzs@163.com>
Sun, 30 Oct 2011 05:43:04 +0000 (13:43 +0800)
include/freerdp/peer.h
libfreerdp-core/peer.c
server/X11/xf_peer.c
server/test/tfreerdp.c

index 6907c63..21d58bc 100644 (file)
@@ -26,7 +26,6 @@
 #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);
 
@@ -47,7 +46,7 @@ struct rdp_freerdp_peer
        rdpUpdate* update;
        rdpSettings* settings;
 
-       psPeerContextSize ContextSize;
+       size_t context_size;
        psPeerContextNew ContextNew;
        psPeerContextFree ContextFree;
 
index ab8ed36..27174d0 100644 (file)
@@ -242,16 +242,13 @@ static void freerdp_peer_disconnect(freerdp_peer* client)
 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;
 
@@ -280,11 +277,15 @@ freerdp_peer* freerdp_peer_new(int sockfd)
 
        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;
 }
index 453a195..e5a1bee 100644 (file)
@@ -117,11 +117,6 @@ xfInfo* xf_info_init()
        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();
@@ -146,7 +141,7 @@ void xf_peer_context_free(freerdp_peer* client, xfPeerContext* context)
 
 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);
index ba16f8f..5ccb0d2 100644 (file)
@@ -57,11 +57,6 @@ struct test_peer_context
 };
 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();
@@ -90,7 +85,7 @@ void test_peer_context_free(freerdp_peer* client, testPeerContext* context)
 
 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);