diff --git a/src/draw/lv_draw_label.c b/src/draw/lv_draw_label.c index 79659c7dc..1c686e1e3 100644 --- a/src/draw/lv_draw_label.c +++ b/src/draw/lv_draw_label.c @@ -664,6 +664,14 @@ static void draw_letter_subpx(lv_coord_t pos_x, lv_coord_t pos_y, lv_font_glyph_ int32_t col_bit; col_bit = bit_ofs & 0x7; /*"& 0x7" equals to "% 8" just faster*/ + lv_area_t map_area; + map_area.x1 = col_start / 3 + pos_x; + map_area.x2 = col_end / 3 + pos_x - 1; + map_area.y1 = row_start + pos_y; + map_area.y2 = map_area.y1; + + if(map_area.x2 <= map_area.x1) return; + int32_t mask_buf_size = box_w * box_h > _LV_MASK_BUF_MAX_SIZE ? _LV_MASK_BUF_MAX_SIZE : g->box_w * g->box_h; lv_opa_t * mask_buf = lv_mem_buf_get(mask_buf_size); int32_t mask_p = 0; @@ -682,12 +690,6 @@ static void draw_letter_subpx(lv_coord_t pos_x, lv_coord_t pos_y, lv_font_glyph_ /*If the letter is partially out of mask the move there on draw_buf*/ disp_buf_buf_tmp += (row_start * disp_buf_width) + col_start / 3; - lv_area_t map_area; - map_area.x1 = col_start / 3 + pos_x; - map_area.x2 = col_end / 3 + pos_x - 1; - map_area.y1 = row_start + pos_y; - map_area.y2 = map_area.y1; - uint8_t other_mask_cnt = lv_draw_mask_get_cnt(); uint8_t font_rgb[3];