1
0
Fork 0
mirror of https://github.com/opentx/opentx.git synced 2025-07-24 00:35:18 +03:00

[Horus] Freeze when invalid (or no) model bitmap

This commit is contained in:
Bertrand Songis 2015-11-26 22:59:06 +01:00
parent d2155ef089
commit 787d2ffa92
5 changed files with 9 additions and 7 deletions

View file

@ -896,6 +896,10 @@ void lcdDrawBitmap(coord_t x, coord_t y, const uint8_t * bmp, coord_t offset, co
width = LCD_W-x; width = LCD_W-x;
} }
if (width == 0 || height == 0) {
return;
}
if (scale == 0) { if (scale == 0) {
lcdDrawBitmapDMA(x, y, width, height, bmp+4); lcdDrawBitmapDMA(x, y, width, height, bmp+4);
} }

View file

@ -390,12 +390,10 @@ bool menuMainView(evt_t event)
lcdDrawBitmapPattern(MODELPANEL_LEFT+6, MODELPANEL_TOP+4, LBM_MODEL_ICON, TITLE_BGCOLOR); lcdDrawBitmapPattern(MODELPANEL_LEFT+6, MODELPANEL_TOP+4, LBM_MODEL_ICON, TITLE_BGCOLOR);
lcdDrawSizedText(MODELPANEL_LEFT+45, MODELPANEL_TOP+10, g_model.header.name, LEN_MODEL_NAME, ZCHAR|SMLSIZE); lcdDrawSizedText(MODELPANEL_LEFT+45, MODELPANEL_TOP+10, g_model.header.name, LEN_MODEL_NAME, ZCHAR|SMLSIZE);
lcdDrawSolidHorizontalLine(MODELPANEL_LEFT+39, MODELPANEL_TOP+27, MODELPANEL_WIDTH-48, TITLE_BGCOLOR); lcdDrawSolidHorizontalLine(MODELPANEL_LEFT+39, MODELPANEL_TOP+27, MODELPANEL_WIDTH-48, TITLE_BGCOLOR);
// #if 0
int scale = getBitmapScale(modelBitmap, MODEL_BITMAP_WIDTH, MODEL_BITMAP_HEIGHT); int scale = getBitmapScale(modelBitmap, MODEL_BITMAP_WIDTH, MODEL_BITMAP_HEIGHT);
int width = getBitmapScaledSize(getBitmapWidth(modelBitmap), scale); int width = getBitmapScaledSize(getBitmapWidth(modelBitmap), scale);
int height = getBitmapScaledSize(getBitmapHeight(modelBitmap), scale); int height = getBitmapScaledSize(getBitmapHeight(modelBitmap), scale);
lcdDrawBitmap(MODELPANEL_LEFT+(MODEL_BITMAP_WIDTH-width)/2, MODELPANEL_TOP+MODELPANEL_HEIGHT-MODEL_BITMAP_HEIGHT/2-height/2, modelBitmap, 0, 0, scale); lcdDrawBitmap(MODELPANEL_LEFT+(MODEL_BITMAP_WIDTH-width)/2, MODELPANEL_TOP+MODELPANEL_HEIGHT-MODEL_BITMAP_HEIGHT/2-height/2, modelBitmap, 0, 0, scale);
// #endif
// Timers // Timers
if (g_model.timers[0].mode) { if (g_model.timers[0].mode) {

View file

@ -69,7 +69,10 @@ bool loadModelBitmap(char * name, uint8_t * bitmap)
} }
} }
#if !defined(COLORLCD) #if defined(COLORLCD)
// TODO only the first bytes can be set to 0
memset(bitmap, 0, MODEL_BITMAP_SIZE);
#else
// In all error cases, we set the default logo // In all error cases, we set the default logo
memcpy(bitmap, logo_taranis, MODEL_BITMAP_SIZE); memcpy(bitmap, logo_taranis, MODEL_BITMAP_SIZE);
#endif #endif

View file

@ -414,8 +414,6 @@ const char * storageModifyLine(unsigned int operation, int category, int positio
} }
} }
f_close(&file); f_close(&file);
f_unlink(RADIO_PATH "/models.old"); f_unlink(RADIO_PATH "/models.old");
f_rename(RADIO_MODELSLIST_PATH, RADIO_PATH "/models.old"); f_rename(RADIO_MODELSLIST_PATH, RADIO_PATH "/models.old");

View file

@ -123,7 +123,6 @@ void storageEraseAll(bool warn)
MESSAGE(STR_STORAGE_WARNING, STR_STORAGE_FORMAT, NULL, AU_STORAGE_FORMAT); MESSAGE(STR_STORAGE_WARNING, STR_STORAGE_FORMAT, NULL, AU_STORAGE_FORMAT);
storageFormat(); storageFormat();
storageDirty(EE_GENERAL); storageDirty(EE_GENERAL|EE_MODEL);
storageDirty(EE_MODEL);
storageCheck(true); storageCheck(true);
} }