- if (settings_get_output_routing (type) & d->device_type)
- d->class->submit (d, item);
+ for (size_t i = 0; i < in->group.n_children; i++)
+ make_driver_output_subset (in->group.children[i], d, out);
+ }
+ else
+ {
+ if (output_driver_should_show (d, in)
+ && (in->show || d->class->handles_show))
+ group_item_add_child (out, output_item_ref (in));
+ }
+}
+
+static void
+output_submit__ (struct output_engine *e, struct output_item *item)
+{
+ if (e->n_groups > 0)
+ {
+ group_item_add_child (e->groups[e->n_groups - 1], item);
+ return;
+ }
+
+ struct llx *llx, *next;
+ llx_for_each_safe (llx, next, &e->drivers)
+ {
+ struct output_driver *d = llx_data (llx);
+
+ struct output_item *root = root_item_create ();
+ make_driver_output_subset (item, d, root);
+ for (size_t i = 0; i < root->group.n_children; i++)
+ d->class->submit (d, root->group.children[i]);
+ output_item_unref (root);