提交 e31e3694 编写于 作者: C Corentin Chary 提交者: Anthony Liguori

vnc: palette: use a pool to reduce memory allocations

We now that the palette will never have more than 256
elements. Let's use a pool to reduce malloc calls.
Signed-off-by: NCorentin Chary <corentincj@iksaif.net>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 ce702e93
......@@ -63,23 +63,9 @@ VncPalette *palette_new(size_t max, int bpp)
void palette_destroy(VncPalette *palette)
{
int i;
if (palette == NULL) {
return ;
qemu_free(palette);
}
for (i = 0; i < VNC_PALETTE_HASH_SIZE; i++) {
VncPaletteEntry *entry = QLIST_FIRST(&palette->table[i]);
while (entry) {
VncPaletteEntry *tmp = QLIST_NEXT(entry, next);
QLIST_REMOVE(entry, next);
qemu_free(entry);
entry = tmp;
}
}
qemu_free(palette);
}
int palette_put(VncPalette *palette, uint32_t color)
......@@ -97,7 +83,7 @@ int palette_put(VncPalette *palette, uint32_t color)
if (!entry) {
VncPaletteEntry *entry;
entry = qemu_mallocz(sizeof(*entry));
entry = &palette->pool[palette->size];
entry->color = color;
entry->idx = idx;
QLIST_INSERT_HEAD(&palette->table[hash], entry, next);
......
......@@ -34,6 +34,7 @@
#include <stdint.h>
#define VNC_PALETTE_HASH_SIZE 256
#define VNC_PALETTE_MAX_SIZE 256
typedef struct VncPaletteEntry {
int idx;
......@@ -42,7 +43,7 @@ typedef struct VncPaletteEntry {
} VncPaletteEntry;
typedef struct VncPalette {
QObject_HEAD;
VncPaletteEntry pool[VNC_PALETTE_MAX_SIZE];
size_t size;
size_t max;
int bpp;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册