pane->root gets straight to the root, so we can efficiently access
global state.
Signed-off-by: NeilBrown <neil@brown.name>
if (par) {
p->parent = par;
list_add(&p->siblings, &par->children);
+ p->root = par->root;
} else {
p->parent = p;
INIT_LIST_HEAD(&p->siblings);
+ p->root = p;
}
INIT_LIST_HEAD(&p->children);
INIT_LIST_HEAD(&p->notifiers);
*/
unsigned int timestamp;
+ struct pane *root;
struct command *handle;
void *data safe;
struct attrset *attrs;
static inline struct pane * safe pane_root(struct pane *p safe)
{
- while (p->parent != p)
- p = p->parent;
- return p;
+ return p->root;
}
static inline struct pane *safe pane_leaf(struct pane *p safe)