zrle: Keep reference to encoder while encoding

pull/80/head
Andri Yngvason 2022-10-30 12:32:27 +00:00
parent 91dc5da243
commit 95742676c9
1 changed files with 4 additions and 0 deletions

View File

@ -378,6 +378,7 @@ static void zrle_encoder_on_done(void* obj)
encoder_finish_frame(&self->encoder, result, pts); encoder_finish_frame(&self->encoder, result, pts);
rcbuf_unref(result); rcbuf_unref(result);
encoder_unref(&self->encoder);
} }
struct encoder* zrle_encoder_new(void) struct encoder* zrle_encoder_new(void)
@ -439,8 +440,11 @@ static int zrle_encoder_encode(struct encoder* encoder, struct nvnc_fb* fb,
nvnc_fb_ref(self->current_fb); nvnc_fb_ref(self->current_fb);
pixman_region_copy(&self->current_damage, damage); pixman_region_copy(&self->current_damage, damage);
encoder_ref(&self->encoder);
int rc = aml_start(aml_get_default(), self->work); int rc = aml_start(aml_get_default(), self->work);
if (rc < 0) { if (rc < 0) {
encoder_unref(&self->encoder);
aml_unref(self->work); aml_unref(self->work);
self->work = NULL; self->work = NULL;
pixman_region_clear(&self->current_damage); pixman_region_clear(&self->current_damage);