summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-06-10 18:28:31 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-06-10 18:28:31 +0000
commit0acf34fc2dac40aca238d77a5813a4dc91de340f (patch)
treed0d6de2712645ef04f396fb055f2304068f1ab6d
parent05ca8978c4fe965a619f016d79aaf6955767abf9 (diff)
downloadrockbox-0acf34fc2dac40aca238d77a5813a4dc91de340f.tar.gz
rockbox-0acf34fc2dac40aca238d77a5813a4dc91de340f.zip
ppmviewer: steal from audiobuffer for large arrays
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26744 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/ppmviewer.c16
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
41static fb_data buffer[PPM_MAXSIZE]; 41static fb_data *buffer, *lcd_buf;
42static fb_data lcd_buf[LCD_WIDTH * LCD_HEIGHT];
43 42
44int ppm_read_magic_number(int fd) 43int 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);