diff options
Diffstat (limited to 'apps/plugins/ppmviewer.c')
-rw-r--r-- | apps/plugins/ppmviewer.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/apps/plugins/ppmviewer.c b/apps/plugins/ppmviewer.c index b186393d05..af66b58736 100644 --- a/apps/plugins/ppmviewer.c +++ b/apps/plugins/ppmviewer.c | |||
@@ -38,8 +38,7 @@ PLUGIN_HEADER | |||
38 | 38 | ||
39 | #define ppm_error(...) rb->splashf(HZ*2, __VA_ARGS__ ) | 39 | #define ppm_error(...) rb->splashf(HZ*2, __VA_ARGS__ ) |
40 | 40 | ||
41 | static fb_data buffer[PPM_MAXSIZE]; | 41 | static fb_data *buffer, *lcd_buf; |
42 | static fb_data lcd_buf[LCD_WIDTH * LCD_HEIGHT]; | ||
43 | 42 | ||
44 | int ppm_read_magic_number(int fd) | 43 | int ppm_read_magic_number(int fd) |
45 | { | 44 | { |
@@ -294,6 +293,19 @@ enum plugin_status plugin_start(const void* parameter) | |||
294 | 293 | ||
295 | if(!parameter) return PLUGIN_ERROR; | 294 | if(!parameter) return PLUGIN_ERROR; |
296 | 295 | ||
296 | size_t buffer_size; | ||
297 | char *audiobuf = rb->plugin_get_audio_buffer(&buffer_size); | ||
298 | if (buffer_size < PPM_MAXSIZE + LCD_WIDTH * LCD_HEIGHT + 1) | ||
299 | { | ||
300 | rb->splash(HZ, "Not enough memory"); | ||
301 | return PLUGIN_ERROR; | ||
302 | } | ||
303 | |||
304 | /* align on 16 bits */ | ||
305 | audiobuf = (char *)(((uintptr_t)audiobuf + 1) & ~1); | ||
306 | buffer = (fb_data *)audiobuf; | ||
307 | lcd_buf = (fb_data*) (audiobuf + PPM_MAXSIZE); | ||
308 | |||
297 | rb->strcpy(filename, parameter); | 309 | rb->strcpy(filename, parameter); |
298 | 310 | ||
299 | fd = rb->open(filename, O_RDONLY); | 311 | fd = rb->open(filename, O_RDONLY); |