diff options
Diffstat (limited to 'src/fb.c')
| -rw-r--r-- | src/fb.c | 12 | 
1 files changed, 10 insertions, 2 deletions
| @@ -5,6 +5,7 @@  #include <stdint.h>  #include "fb.h" +#include "settings.h"  #include "util.h"  /* Copyright (C) 2016-2017 Vito Caputo <vcaputo@pengaru.com> */ @@ -240,6 +241,9 @@ void fb_free(fb_t *fb)  	/* TODO: free all the pages */ +	if (fb->ops->shutdown && fb->ops_context) +		fb->ops->shutdown(fb->ops_context); +  	pthread_mutex_destroy(&fb->ready_mutex);  	pthread_cond_destroy(&fb->ready_cond);  	pthread_mutex_destroy(&fb->inactive_mutex); @@ -250,7 +254,7 @@ void fb_free(fb_t *fb)  /* create a new fb instance */ -fb_t * fb_new(const fb_ops_t *ops, void *context, int n_pages) +fb_t * fb_new(const fb_ops_t *ops, settings_t *settings, int n_pages)  {  	_fb_page_t	*page;  	fb_t		*fb; @@ -271,7 +275,11 @@ fb_t * fb_new(const fb_ops_t *ops, void *context, int n_pages)  		return NULL;  	fb->ops = ops; -	fb->ops_context = context; +	if (ops->init) { +		fb->ops_context = ops->init(settings); +		if (!fb->ops_context) +			goto fail; +	}  	for (i = 0; i < n_pages; i++)  		fb_page_new(fb); | 
