summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libnsfb.h4
-rw-r--r--src/libnsfb.c17
2 files changed, 20 insertions, 1 deletions
diff --git a/include/libnsfb.h b/include/libnsfb.h
index 0869614..8e07c7c 100644
--- a/include/libnsfb.h
+++ b/include/libnsfb.h
@@ -85,6 +85,10 @@ int nsfb_release(nsfb_t *nsfb, nsfb_bbox_t *box);
*/
int nsfb_get_geometry(nsfb_t *nsfb, int *width, int *height, int *bpp);
+/** Alter a nsfb geometry
+ */
+int nsfb_set_geometry(nsfb_t *nsfb, int width, int height, int bpp);
+
/** Obtain the framebuffer memory base and stride. */
int nsfb_get_framebuffer(nsfb_t *nsfb, uint8_t **ptr, int *linelen);
diff --git a/src/libnsfb.c b/src/libnsfb.c
index f5c4ca5..d54c787 100644
--- a/src/libnsfb.c
+++ b/src/libnsfb.c
@@ -29,7 +29,10 @@ nsfb_init(const enum nsfb_frontend_e frontend_type)
int nsfb_finalise(nsfb_t *nsfb)
{
- return nsfb->frontend_rtns->finalise(nsfb);
+ int ret;
+ ret = nsfb->frontend_rtns->finalise(nsfb);
+ free(nsfb);
+ return ret;
}
@@ -54,6 +57,18 @@ int nsfb_release(nsfb_t *nsfb, nsfb_bbox_t *box)
return nsfb->frontend_rtns->release(nsfb, box);
}
+int nsfb_set_geometry(nsfb_t *nsfb, int width, int height, int bpp)
+{
+ if (width <= 0)
+ width = nsfb->width;
+
+ if (height <= 0)
+ height = nsfb->height;
+
+ if ((bpp != 32) && (bpp != 16) && (bpp != 8))
+ bpp = nsfb->bpp;
+}
+
int nsfb_get_geometry(nsfb_t *nsfb, int *width, int *height, int *bpp)
{
if (width != NULL)