int gdi_DeleteSurface(RdpgfxClientContext* context, RDPGFX_DELETE_SURFACE_PDU* deleteSurface) { gdiGfxSurface* surface; rdpGdi* gdi = (rdpGdi*) context->custom; surface = (gdiGfxSurface*) context->GetSurfaceData(context, deleteSurface->surfaceId); if (surface) { free(surface->data); free(surface); } context->SetSurfaceData(context, deleteSurface->surfaceId, NULL); if (gdi->codecs->progressive) progressive_delete_surface_context(gdi->codecs->progressive, deleteSurface->surfaceId); return 1; }
int xf_DeleteSurface(RdpgfxClientContext* context, RDPGFX_DELETE_SURFACE_PDU* deleteSurface) { xfGfxSurface* surface = NULL; xfContext* xfc = (xfContext*) context->custom; surface = (xfGfxSurface*) context->GetSurfaceData(context, deleteSurface->surfaceId); if (surface) { XFree(surface->image); _aligned_free(surface->data); _aligned_free(surface->stage); free(surface); } context->SetSurfaceData(context, deleteSurface->surfaceId, NULL); if (xfc->codecs->progressive) progressive_delete_surface_context(xfc->codecs->progressive, deleteSurface->surfaceId); return 1; }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ UINT gdi_DeleteSurface(RdpgfxClientContext* context, RDPGFX_DELETE_SURFACE_PDU* deleteSurface) { rdpCodecs* codecs = NULL; gdiGfxSurface* surface = NULL; surface = (gdiGfxSurface*) context->GetSurfaceData(context, deleteSurface->surfaceId); if (surface) { region16_uninit(&surface->invalidRegion); codecs = surface->codecs; free(surface->data); free(surface); } context->SetSurfaceData(context, deleteSurface->surfaceId, NULL); if (codecs && codecs->progressive) progressive_delete_surface_context(codecs->progressive, deleteSurface->surfaceId); codecs_free(codecs); return CHANNEL_RC_OK; }