/* Refresh a part of an area which is on the actual Virtual Display Buffer  */
static void lv_refr_area_part(const lv_area_t *area_p)
/* Refresh a part of an area which is on the actual Virtual Display Buffer  */
static void lv_refr_area_part(const lv_area_t *area_p)
{
    lv_disp_buf_t * vdb = lv_disp_get_buf(disp_refr);
    if(lv_disp_is_double_buf(disp_refr) == false) {
        while(vdb->flushing)
            ;
    }
    lv_obj_t * top_p;
    lv_area_t start_mask;
    lv_area_intersect(&start_mask, area_p, &vdb->area);
    top_p = lv_refr_get_top_obj(&start_mask, lv_disp_get_scr_act(disp_refr));
    lv_refr_obj_and_children(top_p, &start_mask);
    lv_refr_obj_and_children(lv_disp_get_layer_top(disp_refr), &start_mask);
    lv_refr_obj_and_children(lv_disp_get_layer_sys(disp_refr), &start_mask);
    if(lv_disp_is_true_double_buf(disp_refr) == false) {
        lv_refr_vdb_flush();
    }
}