/*
* ion/ioncore/grouppholder.c
*
- * Copyright (c) Tuomo Valkonen 2005-2008.
+ * Copyright (c) Tuomo Valkonen 2005-2009.
*
* See the included file LICENSE for details.
*/
if(grp==NULL)
return NULL;
+
+ rp->ph->param.whatever=(fp->mode®ION_FIT_WHATEVER ? 1 : 0);
rp->reg_ret=group_do_attach(grp, &rp->ph->param, rp->data);
+ rp->ph->param.whatever=0;
+
if(rp->reg_ret==NULL){
destroy_obj((Obj*)grp);
return NULL;
phtmp->group=grp;
}
+ if(fp->mode®ION_FIT_WHATEVER)
+ REGION_GEOM(grp)=REGION_GEOM(rp->reg_ret);
+
return (WRegion*)grp;
}
{
WRegionAttachData data2;
WPHolder *root, *rph;
- WGroup *grp;
+ WRegion *res;
RP rp;
rp.ph_head=get_head(ph);
data2.u.n.fn=recreate_handler;
data2.u.n.param=&rp;
- grp=(WGroup*)pholder_do_attach(rph, flags, &data2);
+ res=pholder_do_attach(rph, flags, &data2);
- if(grp!=NULL){
- assert(OBJ_IS(grp, WGroup));
+ if(res!=NULL){
rp.ph_head->recreate_pholder=NULL;
/* It might be in use in attach chain! So defer. */
mainloop_defer_destroy((Obj*)rph);
}
- return rp.reg_ret;
+ return (flags&PHOLDER_ATTACH_RETURN_CREATEROOT
+ ? (WRegion*)res
+ : rp.reg_ret);
}