fb-pool: Add setter for fb allocator

pull/80/head
Andri Yngvason 2022-10-29 18:40:02 +00:00
parent 411530b5da
commit adef210252
2 changed files with 14 additions and 1 deletions

View File

@ -112,6 +112,8 @@ typedef bool (*nvnc_auth_fn)(const char* username, const char* password,
void* userdata);
typedef void (*nvnc_cut_text_fn)(struct nvnc*, const char* text, uint32_t len);
typedef void (*nvnc_fb_release_fn)(struct nvnc_fb*, void* context);
typedef struct nvnc_fb* (*nvnc_fb_alloc_fn)(uint16_t width, uint16_t height,
uint32_t format, uint16_t stride);
typedef void (*nvnc_cleanup_fn)(void* userdata);
typedef void (*nvnc_log_fn)(const struct nvnc_log_data*, const char* message);
@ -176,6 +178,8 @@ struct nvnc_fb_pool* nvnc_fb_pool_new(uint16_t width, uint16_t height,
bool nvnc_fb_pool_resize(struct nvnc_fb_pool*, uint16_t width, uint16_t height,
uint32_t fourcc_format, uint16_t stride);
void nvnc_fb_pool_set_alloc_fn(struct nvnc_fb_pool*, nvnc_fb_alloc_fn);
void nvnc_fb_pool_ref(struct nvnc_fb_pool*);
void nvnc_fb_pool_unref(struct nvnc_fb_pool*);

View File

@ -40,6 +40,8 @@ struct nvnc_fb_pool {
uint16_t height;
int32_t stride;
uint32_t fourcc_format;
nvnc_fb_alloc_fn alloc_fn;
};
EXPORT
@ -57,6 +59,7 @@ struct nvnc_fb_pool* nvnc_fb_pool_new(uint16_t width, uint16_t height,
self->height = height;
self->stride = stride;
self->fourcc_format = fourcc_format;
self->alloc_fn = nvnc_fb_new;
return self;
}
@ -119,7 +122,7 @@ static void nvnc_fb_pool__on_fb_release(struct nvnc_fb* fb, void* userdata)
static struct nvnc_fb* nvnc_fb_pool__acquire_new(struct nvnc_fb_pool* self)
{
struct nvnc_fb* fb = nvnc_fb_new(self->width, self->height,
struct nvnc_fb* fb = self->alloc_fn(self->width, self->height,
self->fourcc_format, self->stride);
if (!fb)
return NULL;
@ -168,3 +171,9 @@ void nvnc_fb_pool_release(struct nvnc_fb_pool* self, struct nvnc_fb* fb)
item->fb = fb;
TAILQ_INSERT_TAIL(&self->fbs, item, link);
}
EXPORT
void nvnc_fb_pool_set_alloc_fn(struct nvnc_fb_pool* self, nvnc_fb_alloc_fn fn)
{
self->alloc_fn = fn;
}