summaryrefslogtreecommitdiff
path: root/apps/plugins/fractals
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/fractals')
-rw-r--r--apps/plugins/fractals/fractal.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/apps/plugins/fractals/fractal.c b/apps/plugins/fractals/fractal.c
index 971ae50..179bc3e 100644
--- a/apps/plugins/fractals/fractal.c
+++ b/apps/plugins/fractals/fractal.c
@@ -29,6 +29,7 @@
#include "fractal_rect.h"
#include "fractal_sets.h"
#include "mandelbrot_set.h"
+#include "lib/pluginlib_exit.h"
#ifdef USEGSLIB
GREY_INFO_STRUCT
@@ -41,7 +42,7 @@ static size_t gbuf_size = 0;
#define REDRAW_FULL 2
#define REDRAW_FULL_OVERLAY 3
-PLUGIN_HEADER
+
/* returns 1 if a button has been pressed, 0 otherwise */
static int button_yield(void *ctx)
@@ -85,9 +86,8 @@ static int button_yield(void *ctx)
}
}
-static void cleanup(void *parameter)
+static void cleanup(void)
{
- (void)parameter;
#ifdef USEGSLIB
grey_release();
#endif
@@ -109,11 +109,13 @@ enum plugin_status plugin_start(const void* parameter)
if (!grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL))
{
rb->splash(HZ, "Couldn't init greyscale display");
- return 0;
+ return PLUGIN_ERROR;
}
grey_show(true); /* switch on greyscale overlay */
#endif
+ /* release greylib on exit */
+ atexit(cleanup);
#if LCD_DEPTH > 1
rb->lcd_set_backdrop(NULL);
#endif
@@ -161,9 +163,6 @@ enum plugin_status plugin_start(const void* parameter)
case FRACTAL_RC_QUIT:
#endif
case FRACTAL_QUIT:
-#ifdef USEGSLIB
- grey_release();
-#endif
return PLUGIN_OK;
case FRACTAL_ZOOM_OUT:
@@ -246,18 +245,13 @@ enum plugin_status plugin_start(const void* parameter)
break;
default:
- if (rb->default_event_handler_ex(button, cleanup, NULL)
- == SYS_USB_CONNECTED)
- return PLUGIN_USB_CONNECTED;
+ exit_on_usb(button);
break;
}
if (button != BUTTON_NONE)
lastbutton = button;
}
-#ifdef USEGSLIB
- grey_release();
-#endif
return PLUGIN_OK;
}