/* Make the refreshing from an object. Draw all its children and the youngers too.  */
static void lv_refr_obj_and_children(lv_obj_t *top_p, const lv_area_t *mask_p)
/* Make the refreshing from an object. Draw all its children and the youngers too.  */
static void lv_refr_obj_and_children(lv_obj_t *top_p, const lv_area_t *mask_p)
{
    if(top_p == NULL) top_p = lv_scr_act();
    lv_refr_obj(top_p, mask_p);
    lv_obj_t * par;
    lv_obj_t * i;
    lv_obj_t * border_p = top_p;
    par = lv_obj_get_parent(top_p);
    while(par != NULL) {
        i = lv_ll_get_prev(&(par->child_ll), border_p);
        while(i != NULL) {
            lv_refr_obj(i, mask_p);
            i = lv_ll_get_prev(&(par->child_ll), i);
        }
        border_p = par;
        par = lv_obj_get_parent(par);
    }
    par = lv_obj_get_parent(top_p);
    while(par != NULL) {
        par->design_func(par, mask_p, LV_DESIGN_DRAW_POST);
        par = lv_obj_get_parent(par);
    }
}