static void screen_delarea(bContext *C, bScreen *sc, ScrArea *sa) { ED_area_exit(C, sa); BKE_screen_area_free(sa); BLI_remlink(&sc->areabase, sa); MEM_freeN(sa); }
/* don't free screen itself */ void BKE_screen_free(bScreen *sc) { ScrArea *sa, *san; ARegion *ar; for (ar = sc->regionbase.first; ar; ar = ar->next) BKE_area_region_free(NULL, ar); BLI_freelistN(&sc->regionbase); for (sa = sc->areabase.first; sa; sa = san) { san = sa->next; BKE_screen_area_free(sa); } BLI_freelistN(&sc->vertbase); BLI_freelistN(&sc->edgebase); BLI_freelistN(&sc->areabase); }