mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2025-12-26 06:32:44 +00:00
Start using GLib memory allocation
Start reducing the usage of spice_new*/spice_malloc allocations. They were designed in a similar way to GLib ones. Now that we use GLib make sense to remove them. However the versions we support for GLib can use different memory allocators so we have to match g_free with GLib allocations and spice_* ones (which uses always malloc allocator) with free(). This patch remove some easy ones. Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
1de104acfe
commit
a99043771a
@ -56,7 +56,7 @@ static uint8_t *common_alloc_recv_buf(RedChannelClient *rcc, uint16_t type, uint
|
||||
|
||||
/* SPICE_MSGC_MIGRATE_DATA is the only client message whose size is dynamic */
|
||||
if (type == SPICE_MSGC_MIGRATE_DATA) {
|
||||
return spice_malloc(size);
|
||||
return g_malloc(size);
|
||||
}
|
||||
|
||||
if (size > CHANNEL_RECEIVE_BUF_SIZE) {
|
||||
@ -70,7 +70,7 @@ static void common_release_recv_buf(RedChannelClient *rcc, uint16_t type, uint32
|
||||
uint8_t* msg)
|
||||
{
|
||||
if (type == SPICE_MSGC_MIGRATE_DATA) {
|
||||
free(msg);
|
||||
g_free(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -2280,7 +2280,7 @@ static void marshall_monitors_config(RedChannelClient *rcc, SpiceMarshaller *bas
|
||||
{
|
||||
int heads_size = sizeof(SpiceHead) * monitors_config->count;
|
||||
int i;
|
||||
SpiceMsgDisplayMonitorsConfig *msg = spice_malloc0(sizeof(*msg) + heads_size);
|
||||
SpiceMsgDisplayMonitorsConfig *msg = g_malloc0(sizeof(*msg) + heads_size);
|
||||
int count = 0; // ignore monitors_config->count, it may contain zero width monitors, remove them now
|
||||
|
||||
red_channel_client_init_send_data(rcc, SPICE_MSG_DISPLAY_MONITORS_CONFIG);
|
||||
@ -2299,7 +2299,7 @@ static void marshall_monitors_config(RedChannelClient *rcc, SpiceMarshaller *bas
|
||||
msg->count = count;
|
||||
msg->max_allowed = monitors_config->max_allowed;
|
||||
spice_marshall_msg_display_monitors_config(base_marshaller, msg);
|
||||
free(msg);
|
||||
g_free(msg);
|
||||
}
|
||||
|
||||
static void marshall_stream_activate_report(RedChannelClient *rcc,
|
||||
|
||||
@ -2014,7 +2014,7 @@ static void region_to_qxlrects(QRegion *region, QXLRect *qxl_rects, uint32_t num
|
||||
SpiceRect *rects;
|
||||
int i;
|
||||
|
||||
rects = spice_new0(SpiceRect, num_rects);
|
||||
rects = g_new0(SpiceRect, num_rects);
|
||||
region_ret_rects(region, rects, num_rects);
|
||||
for (i = 0; i < num_rects; i++) {
|
||||
qxl_rects[i].top = rects[i].top;
|
||||
@ -2022,7 +2022,7 @@ static void region_to_qxlrects(QRegion *region, QXLRect *qxl_rects, uint32_t num
|
||||
qxl_rects[i].bottom = rects[i].bottom;
|
||||
qxl_rects[i].right = rects[i].right;
|
||||
}
|
||||
free(rects);
|
||||
g_free(rects);
|
||||
}
|
||||
|
||||
void display_channel_update(DisplayChannel *display,
|
||||
@ -2040,7 +2040,7 @@ void display_channel_update(DisplayChannel *display,
|
||||
surface = &display->priv->surfaces[surface_id];
|
||||
if (*qxl_dirty_rects == NULL) {
|
||||
*num_dirty_rects = pixman_region32_n_rects(&surface->draw_dirty_region);
|
||||
*qxl_dirty_rects = spice_new0(QXLRect, *num_dirty_rects);
|
||||
*qxl_dirty_rects = g_new0(QXLRect, *num_dirty_rects);
|
||||
}
|
||||
|
||||
region_to_qxlrects(&surface->draw_dirty_region, *qxl_dirty_rects, *num_dirty_rects);
|
||||
|
||||
@ -84,7 +84,7 @@ JpegEncoderContext* jpeg_encoder_create(JpegEncoderUsrContext *usr)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enc = spice_new0(JpegEncoder, 1);
|
||||
enc = g_new0(JpegEncoder, 1);
|
||||
|
||||
enc->usr = usr;
|
||||
|
||||
@ -103,7 +103,7 @@ JpegEncoderContext* jpeg_encoder_create(JpegEncoderUsrContext *usr)
|
||||
void jpeg_encoder_destroy(JpegEncoderContext* encoder)
|
||||
{
|
||||
jpeg_destroy_compress(&((JpegEncoder*)encoder)->cinfo);
|
||||
free(encoder);
|
||||
g_free(encoder);
|
||||
}
|
||||
|
||||
static void convert_RGB16_to_RGB24(void *line, int width, uint8_t **out_line)
|
||||
@ -185,7 +185,7 @@ static void do_jpeg_encode(JpegEncoder *jpeg, uint8_t *lines, unsigned int num_l
|
||||
stride = jpeg->cur_image.stride;
|
||||
|
||||
if (jpeg->cur_image.type != JPEG_IMAGE_TYPE_RGB24) {
|
||||
RGB24_line = (uint8_t *)spice_malloc(width*3);
|
||||
RGB24_line = g_new(uint8_t, width*3);
|
||||
}
|
||||
|
||||
lines_end = lines + (stride * num_lines);
|
||||
@ -198,7 +198,7 @@ static void do_jpeg_encode(JpegEncoder *jpeg, uint8_t *lines, unsigned int num_l
|
||||
}
|
||||
|
||||
if (jpeg->cur_image.type != JPEG_IMAGE_TYPE_RGB24) {
|
||||
free(RGB24_line);
|
||||
g_free(RGB24_line);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ Lz4EncoderContext* lz4_encoder_create(Lz4EncoderUsrContext *usr)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enc = spice_new0(Lz4Encoder, 1);
|
||||
enc = g_new0(Lz4Encoder, 1);
|
||||
enc->usr = usr;
|
||||
|
||||
return (Lz4EncoderContext*)enc;
|
||||
@ -42,7 +42,7 @@ Lz4EncoderContext* lz4_encoder_create(Lz4EncoderUsrContext *usr)
|
||||
|
||||
void lz4_encoder_destroy(Lz4EncoderContext* encoder)
|
||||
{
|
||||
free(encoder);
|
||||
g_free(encoder);
|
||||
}
|
||||
|
||||
int lz4_encode(Lz4EncoderContext *lz4, int height, int stride, uint8_t *io_ptr,
|
||||
|
||||
@ -238,17 +238,17 @@ static bool main_channel_client_push_ping(MainChannelClient *mcc, int size);
|
||||
static void main_notify_item_free(RedPipeItem *base)
|
||||
{
|
||||
RedNotifyPipeItem *data = SPICE_UPCAST(RedNotifyPipeItem, base);
|
||||
free(data->msg);
|
||||
free(data);
|
||||
g_free(data->msg);
|
||||
g_free(data);
|
||||
}
|
||||
|
||||
static RedPipeItem *main_notify_item_new(const char *msg, int num)
|
||||
{
|
||||
RedNotifyPipeItem *item = spice_malloc(sizeof(RedNotifyPipeItem));
|
||||
RedNotifyPipeItem *item = g_new(RedNotifyPipeItem, 1);
|
||||
|
||||
red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_MAIN_NOTIFY,
|
||||
main_notify_item_free);
|
||||
item->msg = spice_strdup(msg);
|
||||
item->msg = g_strdup(msg);
|
||||
return &item->base;
|
||||
}
|
||||
|
||||
@ -314,14 +314,14 @@ static void main_agent_data_item_free(RedPipeItem *base)
|
||||
{
|
||||
RedAgentDataPipeItem *item = SPICE_UPCAST(RedAgentDataPipeItem, base);
|
||||
item->free_data(item->data, item->opaque);
|
||||
free(item);
|
||||
g_free(item);
|
||||
}
|
||||
|
||||
static RedPipeItem *main_agent_data_item_new(uint8_t* data, size_t len,
|
||||
spice_marshaller_item_free_func free_data,
|
||||
void *opaque)
|
||||
{
|
||||
RedAgentDataPipeItem *item = spice_malloc(sizeof(RedAgentDataPipeItem));
|
||||
RedAgentDataPipeItem *item = g_new(RedAgentDataPipeItem, 1);
|
||||
|
||||
red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_MAIN_AGENT_DATA,
|
||||
main_agent_data_item_free);
|
||||
@ -722,7 +722,7 @@ static void main_channel_marshall_channels(RedChannelClient *rcc,
|
||||
red_channel_client_init_send_data(rcc, SPICE_MSG_MAIN_CHANNELS_LIST);
|
||||
channels_info = reds_msg_channels_new(red_channel_get_server(channel));
|
||||
spice_marshall_msg_main_channels_list(m, channels_info);
|
||||
free(channels_info);
|
||||
g_free(channels_info);
|
||||
}
|
||||
|
||||
static void main_channel_marshall_ping(RedChannelClient *rcc,
|
||||
|
||||
@ -152,10 +152,10 @@ void memslot_info_init(RedMemSlotInfo *info,
|
||||
info->mem_slot_bits = id_bits;
|
||||
info->internal_groupslot_id = internal_groupslot_id;
|
||||
|
||||
info->mem_slots = spice_new(MemSlot *, num_groups);
|
||||
info->mem_slots = g_new(MemSlot *, num_groups);
|
||||
|
||||
for (i = 0; i < num_groups; ++i) {
|
||||
info->mem_slots[i] = spice_new0(MemSlot, num_slots);
|
||||
info->mem_slots[i] = g_new0(MemSlot, num_slots);
|
||||
}
|
||||
|
||||
/* TODO: use QXLPHYSICAL_BITS */
|
||||
@ -171,9 +171,9 @@ void memslot_info_destroy(RedMemSlotInfo *info)
|
||||
uint32_t i;
|
||||
|
||||
for (i = 0; i < info->num_memslots_groups; ++i) {
|
||||
free(info->mem_slots[i]);
|
||||
g_free(info->mem_slots[i]);
|
||||
}
|
||||
free(info->mem_slots);
|
||||
g_free(info->mem_slots);
|
||||
}
|
||||
|
||||
void memslot_info_add_slot(RedMemSlotInfo *info, uint32_t slot_group_id, uint32_t slot_id,
|
||||
|
||||
@ -31,24 +31,24 @@ void red_channel_capabilities_init(RedChannelCapabilities *dest,
|
||||
{
|
||||
*dest = *caps;
|
||||
if (caps->common_caps) {
|
||||
dest->common_caps = spice_memdup(caps->common_caps,
|
||||
caps->num_common_caps * sizeof(uint32_t));
|
||||
dest->common_caps = g_memdup(caps->common_caps,
|
||||
caps->num_common_caps * sizeof(uint32_t));
|
||||
}
|
||||
if (caps->num_caps) {
|
||||
dest->caps = spice_memdup(caps->caps, caps->num_caps * sizeof(uint32_t));
|
||||
dest->caps = g_memdup(caps->caps, caps->num_caps * sizeof(uint32_t));
|
||||
}
|
||||
}
|
||||
|
||||
void red_channel_capabilities_reset(RedChannelCapabilities *caps)
|
||||
{
|
||||
free(caps->common_caps);
|
||||
free(caps->caps);
|
||||
g_free(caps->common_caps);
|
||||
g_free(caps->caps);
|
||||
memset(caps, 0, sizeof(*caps));
|
||||
}
|
||||
|
||||
static RedChannelCapabilities *red_channel_capabilities_dup(const RedChannelCapabilities *caps)
|
||||
{
|
||||
RedChannelCapabilities *res = spice_new(RedChannelCapabilities, 1);
|
||||
RedChannelCapabilities *res = g_new(RedChannelCapabilities, 1);
|
||||
red_channel_capabilities_init(res, caps);
|
||||
return res;
|
||||
}
|
||||
@ -56,7 +56,7 @@ static RedChannelCapabilities *red_channel_capabilities_dup(const RedChannelCapa
|
||||
static void red_channel_capabilities_free(RedChannelCapabilities *caps)
|
||||
{
|
||||
red_channel_capabilities_reset(caps);
|
||||
free(caps);
|
||||
g_free(caps);
|
||||
}
|
||||
|
||||
SPICE_CONSTRUCTOR_FUNC(red_channel_capabilities_construct)
|
||||
|
||||
@ -889,7 +889,7 @@ void red_qxl_init(RedsState *reds, QXLInstance *qxl)
|
||||
|
||||
spice_return_if_fail(qxl != NULL);
|
||||
|
||||
qxl_state = spice_new0(QXLState, 1);
|
||||
qxl_state = g_new0(QXLState, 1);
|
||||
qxl_state->reds = reds;
|
||||
qxl_state->qxl = qxl;
|
||||
pthread_mutex_init(&qxl_state->scanout_mutex, NULL);
|
||||
@ -949,7 +949,7 @@ void red_qxl_destroy(QXLInstance *qxl)
|
||||
/* this must be done after calling red_worker_free */
|
||||
qxl->st = NULL;
|
||||
pthread_mutex_destroy(&qxl_state->scanout_mutex);
|
||||
free(qxl_state);
|
||||
g_free(qxl_state);
|
||||
}
|
||||
|
||||
Dispatcher *red_qxl_get_dispatcher(QXLInstance *qxl)
|
||||
|
||||
@ -431,7 +431,7 @@ static void handle_dev_update_async(void *opaque, void *payload)
|
||||
|
||||
red_qxl_update_area_complete(worker->qxl, msg->surface_id,
|
||||
qxl_dirty_rects, num_dirty_rects);
|
||||
free(qxl_dirty_rects);
|
||||
g_free(qxl_dirty_rects);
|
||||
red_qxl_async_complete(worker->qxl, msg->base.cookie);
|
||||
}
|
||||
|
||||
@ -448,7 +448,7 @@ static void handle_dev_update(void *opaque, void *payload)
|
||||
msg->surface_id, msg->qxl_area, msg->clear_dirty_region,
|
||||
&qxl_dirty_rects, &msg->num_dirty_rects);
|
||||
if (msg->qxl_dirty_rects == NULL) {
|
||||
free(qxl_dirty_rects);
|
||||
g_free(qxl_dirty_rects);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1289,7 +1289,7 @@ RedWorker* red_worker_new(QXLInstance *qxl,
|
||||
|
||||
red_qxl_get_init_info(qxl, &init_info);
|
||||
|
||||
worker = spice_new0(RedWorker, 1);
|
||||
worker = g_new0(RedWorker, 1);
|
||||
worker->core = event_loop_core;
|
||||
worker->core.main_context = g_main_context_new();
|
||||
|
||||
@ -1429,5 +1429,5 @@ void red_worker_free(RedWorker *worker)
|
||||
red_record_unref(worker->record);
|
||||
}
|
||||
memslot_info_destroy(&worker->mem_slots);
|
||||
free(worker);
|
||||
g_free(worker);
|
||||
}
|
||||
|
||||
@ -1004,7 +1004,7 @@ SpiceMsgChannels *reds_msg_channels_new(RedsState *reds)
|
||||
|
||||
spice_assert(reds != NULL);
|
||||
|
||||
channels_info = (SpiceMsgChannels *)spice_malloc(sizeof(SpiceMsgChannels)
|
||||
channels_info = (SpiceMsgChannels *)g_malloc(sizeof(SpiceMsgChannels)
|
||||
+ g_list_length(reds->channels) * sizeof(SpiceChannelId));
|
||||
|
||||
reds_fill_channels(reds, channels_info);
|
||||
@ -1749,14 +1749,14 @@ red_channel_capabilities_init_from_link_message(RedChannelCapabilities *caps,
|
||||
caps->num_common_caps = link_mess->num_common_caps;
|
||||
caps->common_caps = NULL;
|
||||
if (caps->num_common_caps) {
|
||||
caps->common_caps = spice_memdup(raw_caps,
|
||||
link_mess->num_common_caps * sizeof(uint32_t));
|
||||
caps->common_caps = g_memdup(raw_caps,
|
||||
link_mess->num_common_caps * sizeof(uint32_t));
|
||||
}
|
||||
caps->num_caps = link_mess->num_channel_caps;
|
||||
caps->caps = NULL;
|
||||
if (link_mess->num_channel_caps) {
|
||||
caps->caps = spice_memdup(raw_caps + link_mess->num_common_caps,
|
||||
link_mess->num_channel_caps * sizeof(uint32_t));
|
||||
caps->caps = g_memdup(raw_caps + link_mess->num_common_caps,
|
||||
link_mess->num_channel_caps * sizeof(uint32_t));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -135,7 +135,7 @@ smartcard_channel_client_alloc_msg_rcv_buf(RedChannelClient *rcc,
|
||||
* differenc channels */
|
||||
if (!scc->priv->smartcard) {
|
||||
scc->priv->msg_in_write_buf = FALSE;
|
||||
return spice_malloc(size);
|
||||
return g_malloc(size);
|
||||
} else {
|
||||
RedCharDeviceSmartcard *smartcard;
|
||||
|
||||
@ -168,7 +168,7 @@ smartcard_channel_client_release_msg_rcv_buf(RedChannelClient *rcc,
|
||||
|
||||
if (!scc->priv->msg_in_write_buf) {
|
||||
spice_assert(!scc->priv->write_buf);
|
||||
free(msg);
|
||||
g_free(msg);
|
||||
} else {
|
||||
if (scc->priv->write_buf) { /* msg hasn't been pushed to the guest */
|
||||
spice_assert(scc->priv->write_buf->buf == msg);
|
||||
|
||||
@ -29,7 +29,6 @@
|
||||
#include <sys/mman.h>
|
||||
#include <spice/stats.h>
|
||||
#include <common/log.h>
|
||||
#include <common/mem.h>
|
||||
|
||||
#include "stat-file.h"
|
||||
|
||||
@ -47,7 +46,7 @@ RedStatFile *stat_file_new(unsigned int max_nodes)
|
||||
{
|
||||
int fd;
|
||||
size_t shm_size = STAT_SHM_SIZE(max_nodes);
|
||||
RedStatFile *stat_file = spice_new0(RedStatFile, 1);
|
||||
RedStatFile *stat_file = g_new0(RedStatFile, 1);
|
||||
|
||||
stat_file->max_nodes = max_nodes;
|
||||
stat_file->shm_name = g_strdup_printf(SPICE_STAT_SHM_NAME, getpid());
|
||||
@ -78,7 +77,7 @@ RedStatFile *stat_file_new(unsigned int max_nodes)
|
||||
return stat_file;
|
||||
|
||||
cleanup:
|
||||
free(stat_file);
|
||||
g_free(stat_file);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -96,7 +95,7 @@ void stat_file_free(RedStatFile *stat_file)
|
||||
#endif
|
||||
|
||||
pthread_mutex_destroy(&stat_file->lock);
|
||||
free(stat_file);
|
||||
g_free(stat_file);
|
||||
}
|
||||
|
||||
const char *stat_file_get_shm_name(RedStatFile *stat_file)
|
||||
|
||||
@ -68,12 +68,12 @@ static void stream_create_destroy_item_release(RedPipeItem *base)
|
||||
StreamCreateDestroyItem *item = SPICE_UPCAST(StreamCreateDestroyItem, base);
|
||||
DisplayChannel *display = DCC_TO_DC(item->agent->dcc);
|
||||
stream_agent_unref(display, item->agent);
|
||||
free(item);
|
||||
g_free(item);
|
||||
}
|
||||
|
||||
static RedPipeItem *stream_create_destroy_item_new(StreamAgent *agent, gint type)
|
||||
{
|
||||
StreamCreateDestroyItem *item = spice_new0(StreamCreateDestroyItem, 1);
|
||||
StreamCreateDestroyItem *item = g_new0(StreamCreateDestroyItem, 1);
|
||||
|
||||
red_pipe_item_init_full(&item->base, type,
|
||||
stream_create_destroy_item_release);
|
||||
@ -170,12 +170,12 @@ static void red_stream_clip_item_free(RedPipeItem *base)
|
||||
|
||||
stream_agent_unref(display, item->stream_agent);
|
||||
free(item->rects);
|
||||
free(item);
|
||||
g_free(item);
|
||||
}
|
||||
|
||||
RedStreamClipItem *red_stream_clip_item_new(StreamAgent *agent)
|
||||
{
|
||||
RedStreamClipItem *item = spice_new(RedStreamClipItem, 1);
|
||||
RedStreamClipItem *item = g_new(RedStreamClipItem, 1);
|
||||
red_pipe_item_init_full(&item->base, RED_PIPE_ITEM_TYPE_STREAM_CLIP,
|
||||
red_stream_clip_item_free);
|
||||
|
||||
@ -778,7 +778,7 @@ static void red_upgrade_item_free(RedPipeItem *base)
|
||||
|
||||
drawable_unref(item->drawable);
|
||||
free(item->rects);
|
||||
free(item);
|
||||
g_free(item);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -819,7 +819,7 @@ static void dcc_detach_stream_gracefully(DisplayChannelClient *dcc,
|
||||
spice_debug("stream %d: upgrade by drawable. box ==>", stream_id);
|
||||
rect_debug(&stream->current->red_drawable->bbox);
|
||||
rcc = RED_CHANNEL_CLIENT(dcc);
|
||||
upgrade_item = spice_new(RedUpgradeItem, 1);
|
||||
upgrade_item = g_new(RedUpgradeItem, 1);
|
||||
red_pipe_item_init_full(&upgrade_item->base, RED_PIPE_ITEM_TYPE_UPGRADE,
|
||||
red_upgrade_item_free);
|
||||
upgrade_item->drawable = stream->current;
|
||||
|
||||
@ -40,7 +40,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
enc = spice_new0(ZlibEncoder, 1);
|
||||
enc = g_new0(ZlibEncoder, 1);
|
||||
|
||||
enc->usr = usr;
|
||||
|
||||
@ -52,7 +52,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level)
|
||||
enc->last_level = level;
|
||||
if (z_ret != Z_OK) {
|
||||
spice_printerr("zlib error");
|
||||
free(enc);
|
||||
g_free(enc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ ZlibEncoder* zlib_encoder_create(ZlibEncoderUsrContext *usr, int level)
|
||||
void zlib_encoder_destroy(ZlibEncoder *encoder)
|
||||
{
|
||||
deflateEnd(&encoder->strm);
|
||||
free(encoder);
|
||||
g_free(encoder);
|
||||
}
|
||||
|
||||
/* returns the total size of the encoded data */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user