
Hi,
On Thu, 24 May 2012 14:42:44 +0300 Igor Grinberg grinberg@compulab.co.il wrote:
From: Nikita Kiryanov nikita@compulab.co.il
Move highly platform dependant code into its own functions to reduce the number of #ifdefs in lcd_display_bitmap
Signed-off-by: Nikita Kiryanov nikita@compulab.co.il Signed-off-by: Igor Grinberg grinberg@compulab.co.il
common/lcd.c | 44 +++++++++++++++++++++++++++----------------- 1 files changed, 27 insertions(+), 17 deletions(-)
diff --git a/common/lcd.c b/common/lcd.c index 199a8c2..a55ee58 100644 --- a/common/lcd.c +++ b/common/lcd.c @@ -638,6 +638,29 @@ static void splash_align_axis(int *axis, unsigned long panel_size,
...
+#if defined(CONFIG_BMP_16BPP) +#if defined(CONFIG_ATMEL_LCD_BGR555) +static inline void configuration_fb_puts(uchar *fb, uchar *from) +{
- *(fb++) = ((from[0] & 0x1f) << 2) | (from[1] & 0x03);
- *(fb++) = (from[0] & 0xe0) | ((from[1] & 0x7c) >> 2);
- from += 2;
+} +#else +static inline void configuration_fb_puts(uchar *fb, uchar *from) +{
- *(fb++) = *(from++);
- *(fb++) = *(from++);
+} +#endif +#endif /* CONFIG_BMP_16BPP */
This won't work. The original code increments 'fb' and 'bmap' pointers in the inner for loop. Using this function in the inner loop won't increment the pointers as needed, as these will only be incremented in the function itself (as local variables).
Also please use a different name for the macro, CONFIGURATION_FB_PUTB isn't a descriptive name. FB_PUT_PIXEL or similar perhaps?
Thanks,
Anatolij