summaryrefslogtreecommitdiff
path: root/apps/plugins/plasma.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/plasma.c')
-rw-r--r--apps/plugins/plasma.c32
1 files changed, 13 insertions, 19 deletions
diff --git a/apps/plugins/plasma.c b/apps/plugins/plasma.c
index 637d948..35bc03b 100644
--- a/apps/plugins/plasma.c
+++ b/apps/plugins/plasma.c
@@ -27,6 +27,7 @@
#include "plugin.h"
#include "lib/helper.h"
#include "lib/pluginlib_actions.h"
+#include "lib/pluginlib_exit.h"
#ifdef HAVE_LCD_BITMAP
@@ -35,7 +36,6 @@
#endif
#include "lib/fixedpoint.h"
-PLUGIN_HEADER
/******************************* Globals ***********************************/
@@ -131,10 +131,8 @@ static void shades_generate(void)
}
#endif
-void cleanup(void *parameter)
+void cleanup(void)
{
- (void)parameter;
-
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
if (boosted)
rb->cpu_boost(false);
@@ -144,6 +142,9 @@ void cleanup(void *parameter)
#endif
/* Turn on backlight timeout (revert to settings) */
backlight_use_settings(); /* backlight control in lib/helper.c */
+#if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256)
+ rb->lcd_set_mode(LCD_MODE_RGB565);
+#endif
}
/*
@@ -180,10 +181,15 @@ int main(void)
/* get the remainder of the plugin buffer */
gbuf = (unsigned char *) rb->plugin_get_buffer(&gbuf_size);
- grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL);
+ if (!grey_init(gbuf, gbuf_size, GREY_ON_COP, LCD_WIDTH, LCD_HEIGHT, NULL))
+ {
+ rb->splash(HZ, "Couldn't init greyscale display");
+ return PLUGIN_ERROR;
+ }
/* switch on greyscale overlay */
grey_show(true);
#endif
+ atexit(cleanup);
sp1 = 4;
sp2 = 2;
sp3 = 4;
@@ -261,7 +267,6 @@ int main(void)
{
case PLA_EXIT:
case PLA_CANCEL:
- cleanup(NULL);
return PLUGIN_OK;
break;
@@ -299,9 +304,7 @@ int main(void)
#endif
default:
- if (rb->default_event_handler_ex(action, cleanup, NULL)
- == SYS_USB_CONNECTED)
- return PLUGIN_USB_CONNECTED;
+ exit_on_usb(action);
break;
}
}
@@ -311,8 +314,6 @@ int main(void)
enum plugin_status plugin_start(const void* parameter)
{
- int ret;
-
(void)parameter;
#if LCD_DEPTH > 1
rb->lcd_set_backdrop(NULL);
@@ -323,14 +324,7 @@ enum plugin_status plugin_start(const void* parameter)
#if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256)
rb->lcd_set_mode(LCD_MODE_PAL256);
#endif
-
- ret = main();
-
-#if defined(HAVE_LCD_MODES) && (HAVE_LCD_MODES & LCD_MODE_PAL256)
- rb->lcd_set_mode(LCD_MODE_RGB565);
-#endif
-
- return ret;
+ return main();
}
#endif /* HAVE_LCD_BITMAP */