+WPHolder *rescueinfo_pholder(WRescueInfo *info)
+{
+ if(info->test)
+ return NULL;
+
+ if(info->ph==NULL){
+ info->ph=region_get_rescue_pholder(info->get_rescue);
+ if(info->ph==NULL){
+ info->failed_get=TRUE;
+ return NULL;
+ }
+ }
+
+ return info->ph;
+}
+
+
+/* Bah, unsplitissä oikestaan pitäisi tehä non-deep rescue */
+
+bool region_do_rescue_this(WRegion *tosave_, WRescueInfo *info, int ph_flags)
+{
+ WClientWin *cwin=OBJ_CAST(tosave_, WClientWin);
+ WRegion *tosave=NULL;
+
+ if(cwin!=NULL){
+ if(cwin->flags&CLIENTWIN_UNMAP_RQ)
+ return TRUE;
+ tosave=(WRegion*)cwin;
+ }else if(info->flags®ION_RESCUE_NODEEP){
+ tosave=tosave_;
+ }else{
+ /* Try to rescue whole groups. */
+ /*tosave=(WRegion*)OBJ_CAST(tosave_, WGroupCW);*/
+ }
+
+ if(tosave==NULL){
+ return region_rescue_clientwins(tosave_, info);
+ }else{
+ int phf=(info->flags®ION_RESCUE_PHFLAGS_OK ? ph_flags : 0);
+ WPHolder *ph=rescueinfo_pholder(info);
+
+ return (ph==NULL
+ ? FALSE
+ : pholder_attach(info->ph, phf, tosave));
+ }
+}
+
+