/** Deallocator function for a rdp context. * The function will deallocate the resources from the 'instance' parameter that were allocated from a call * to freerdp_context_new(). * If the ContextFree callback is set in the 'instance' parameter, it will be called before deallocation occurs. * * @param instance - Pointer to the rdp_freerdp structure that was initialized by a call to freerdp_context_new(). * On return, the fields associated to the context are invalid. */ void freerdp_context_free(freerdp* instance) { if (!instance) return; if (!instance->context) return; IFCALL(instance->ContextFree, instance, instance->context); rdp_free(instance->context->rdp); instance->context->rdp = NULL; graphics_free(instance->context->graphics); instance->context->graphics = NULL; PubSub_Free(instance->context->pubSub); metrics_free(instance->context->metrics); CloseHandle(instance->context->channelErrorEvent); free(instance->context->errorDescription); CloseHandle(instance->context->abortEvent); instance->context->abortEvent = NULL; free(instance->context); instance->context = NULL; }
void freerdp_peer_free(freerdp_peer* client) { rdpPeer* peer = (rdpPeer*)client->peer; rdp_free(peer->rdp); xfree(peer); xfree(client); }
void freerdp_free(freerdp* freerdp) { if (freerdp) { rdp_free(freerdp->rdp); xfree(freerdp); } }
void ReleaseGfx(void) { VLOG("ReleaseGfx ()\n"); grSstWinClose (0); rdp_free(); }
void freerdp_peer_free(freerdp_peer* client) { if (client) { rdp_free(client->context->rdp); free(client->context); free(client); } }
void freerdp_peer_free(freerdp_peer* client) { if (!client) return; rdp_free(client->context->rdp); free(client->context); free(client); }
void freerdp_free(rdpInst * inst) { rdpRdp * rdp; if (inst != NULL) { rdp = RDP_FROM_INST(inst); rdp_free(rdp); xfree(inst); } }
/** Deallocator function for a rdp context. * The function will deallocate the resources from the 'instance' parameter that were allocated from a call * to freerdp_context_new(). * If the ContextFree callback is set in the 'instance' parameter, it will be called before deallocation occurs. * * @param instance - Pointer to the rdp_freerdp structure that was initialized by a call to freerdp_context_new(). * On return, the fields associated to the context are invalid. */ void freerdp_context_free(freerdp* instance) { if (instance->context == NULL) return; IFCALL(instance->ContextFree, instance, instance->context); rdp_free(instance->context->rdp); graphics_free(instance->context->graphics); free(instance->context); instance->context = NULL; }
void freerdp_peer_context_free(freerdp_peer* client) { IFCALL(client->ContextFree, client, client->context); if (client->context) { free(client->context->errorDescription); client->context->errorDescription = NULL; rdp_free(client->context->rdp); client->context->rdp = NULL; metrics_free(client->context->metrics); client->context->metrics = NULL; free(client->context); client->context = NULL; } }
/** Deallocator function for a rdp context. * The function will deallocate the resources from the 'instance' parameter that were allocated from a call * to freerdp_context_new(). * If the ContextFree callback is set in the 'instance' parameter, it will be called before deallocation occurs. * * @param instance - Pointer to the rdp_freerdp structure that was initialized by a call to freerdp_context_new(). * On return, the fields associated to the context are invalid. */ void freerdp_context_free(freerdp* instance) { if (!instance) return; if (!instance->context) return; IFCALL(instance->ContextFree, instance, instance->context); rdp_free(instance->context->rdp); instance->context->rdp = NULL; graphics_free(instance->context->graphics); instance->context->graphics = NULL; PubSub_Free(instance->context->pubSub); free(instance->context); instance->context = NULL; }
BOOL freerdp_peer_context_new(freerdp_peer* client) { rdpRdp* rdp; rdpContext* context; BOOL ret = TRUE; if (!client) return FALSE; if (!(context = (rdpContext*) calloc(1, client->ContextSize))) goto fail_context; client->context = context; context->peer = client; context->ServerMode = TRUE; context->settings = client->settings; if (!(context->metrics = metrics_new(context))) goto fail_metrics; if (!(rdp = rdp_new(context))) goto fail_rdp; client->input = rdp->input; client->update = rdp->update; client->settings = rdp->settings; client->autodetect = rdp->autodetect; context->rdp = rdp; context->input = client->input; context->update = client->update; context->settings = client->settings; context->autodetect = client->autodetect; client->update->context = context; client->input->context = context; client->autodetect->context = context; update_register_server_callbacks(client->update); autodetect_register_server_callbacks(client->autodetect); if (!(context->errorDescription = calloc(1, 500))) { WLog_ERR(TAG, "calloc failed!"); goto fail_error_description; } if (!transport_attach(rdp->transport, client->sockfd)) goto fail_transport_attach; rdp->transport->ReceiveCallback = peer_recv_callback; rdp->transport->ReceiveExtra = client; transport_set_blocking_mode(rdp->transport, FALSE); client->IsWriteBlocked = freerdp_peer_is_write_blocked; client->DrainOutputBuffer = freerdp_peer_drain_output_buffer; client->HasMoreToRead = freerdp_peer_has_more_to_read; IFCALLRET(client->ContextNew, ret, client, client->context); if (ret) return TRUE; WLog_ERR(TAG, "ContextNew callback failed"); fail_transport_attach: free(context->errorDescription); fail_error_description: rdp_free(client->context->rdp); fail_rdp: metrics_free(context->metrics); fail_metrics: free(client->context); fail_context: client->context = NULL; WLog_ERR(TAG, "Failed to create new peer context"); return FALSE; }
/** Allocator function for a rdp context. * The function will allocate a rdpRdp structure using rdp_new(), then copy * its contents to the appropriate fields in the rdp_freerdp structure given in parameters. * It will also initialize the 'context' field in the rdp_freerdp structure as needed. * If the caller has set the ContextNew callback in the 'instance' parameter, it will be called at the end of the function. * * @param instance - Pointer to the rdp_freerdp structure that will be initialized with the new context. */ BOOL freerdp_context_new(freerdp* instance) { rdpRdp* rdp; rdpContext* context; BOOL ret = TRUE; instance->context = (rdpContext*) calloc(1, instance->ContextSize); if (!instance->context) return FALSE; context = instance->context; context->instance = instance; context->ServerMode = FALSE; context->settings = instance->settings; context->pubSub = PubSub_New(TRUE); if(!context->pubSub) goto out_error_pubsub; PubSub_AddEventTypes(context->pubSub, FreeRDP_Events, sizeof(FreeRDP_Events) / sizeof(wEventType)); context->metrics = metrics_new(context); if (!context->metrics) goto out_error_metrics_new; rdp = rdp_new(context); if (!rdp) goto out_error_rdp_new; instance->input = rdp->input; instance->update = rdp->update; instance->settings = rdp->settings; instance->autodetect = rdp->autodetect; context->graphics = graphics_new(context); if(!context->graphics) goto out_error_graphics_new; context->rdp = rdp; context->input = instance->input; context->update = instance->update; context->settings = instance->settings; context->autodetect = instance->autodetect; instance->update->context = instance->context; instance->update->pointer->context = instance->context; instance->update->primary->context = instance->context; instance->update->secondary->context = instance->context; instance->update->altsec->context = instance->context; instance->input->context = context; instance->autodetect->context = context; update_register_client_callbacks(rdp->update); IFCALLRET(instance->ContextNew, ret, instance, instance->context); if (ret) return TRUE; out_error_graphics_new: rdp_free(rdp); out_error_rdp_new: metrics_free(context->metrics); out_error_metrics_new: PubSub_Free(context->pubSub); out_error_pubsub: free(instance->context); return FALSE; }
/** Allocator function for a rdp context. * The function will allocate a rdpRdp structure using rdp_new(), then copy * its contents to the appropriate fields in the rdp_freerdp structure given in parameters. * It will also initialize the 'context' field in the rdp_freerdp structure as needed. * If the caller has set the ContextNew callback in the 'instance' parameter, it will be called at the end of the function. * * @param instance - Pointer to the rdp_freerdp structure that will be initialized with the new context. */ BOOL freerdp_context_new(freerdp* instance) { rdpRdp* rdp; rdpContext* context; BOOL ret = TRUE; instance->context = (rdpContext*) calloc(1, instance->ContextSize); if (!instance->context) return FALSE; context = instance->context; context->instance = instance; context->ServerMode = FALSE; context->settings = instance->settings; context->pubSub = PubSub_New(TRUE); if(!context->pubSub) goto out_error_pubsub; PubSub_AddEventTypes(context->pubSub, FreeRDP_Events, sizeof(FreeRDP_Events) / sizeof(wEventType)); context->metrics = metrics_new(context); if (!context->metrics) goto out_error_metrics_new; rdp = rdp_new(context); if (!rdp) goto out_error_rdp_new; instance->input = rdp->input; instance->update = rdp->update; instance->settings = rdp->settings; instance->autodetect = rdp->autodetect; context->graphics = graphics_new(context); if(!context->graphics) goto out_error_graphics_new; context->rdp = rdp; context->input = instance->input; context->update = instance->update; context->settings = instance->settings; context->autodetect = instance->autodetect; instance->update->context = instance->context; instance->update->pointer->context = instance->context; instance->update->primary->context = instance->context; instance->update->secondary->context = instance->context; instance->update->altsec->context = instance->context; instance->input->context = context; instance->autodetect->context = context; if (!(context->errorDescription = calloc(1, 500))) { WLog_ERR(TAG, "calloc failed!"); goto out_error_description; } if (!(context->channelErrorEvent = CreateEvent(NULL, TRUE, FALSE, NULL))) { WLog_ERR(TAG, "CreateEvent failed!"); goto out_error_create_event; } update_register_client_callbacks(rdp->update); instance->context->abortEvent = CreateEvent(NULL, TRUE, FALSE, NULL); if (!instance->context->abortEvent) goto out_error_abort_event; IFCALLRET(instance->ContextNew, ret, instance, instance->context); if (ret) return TRUE; CloseHandle(context->abortEvent); out_error_abort_event: CloseHandle(context->channelErrorEvent); out_error_create_event: free(context->errorDescription); out_error_description: graphics_free(context->graphics); out_error_graphics_new: rdp_free(rdp); out_error_rdp_new: metrics_free(context->metrics); out_error_metrics_new: PubSub_Free(context->pubSub); out_error_pubsub: free(instance->context); return FALSE; }
int clean_license_suite(void) { rdp_free(rdp); return 0; }