if (o->timer)
tdm_event_loop_source_remove(o->timer);
- free(o->output_modes);
+ if (o->output_modes)
+ free(o->output_modes);
free(o);
}
}
}
if (find) {
+ tdm_virtual_layer_data *l = NULL, *ll = NULL;
+
+ tdm_backend_unregister_output(virtual_data->dpy, output);
+
+ if (!LIST_IS_EMPTY(&o->timer_event_list)) {
+ tdm_virtual_event_data *e = NULL, *ee = NULL;
+ LIST_FOR_EACH_ENTRY_SAFE(e, ee, &o->timer_event_list, link) {
+ LIST_DEL(&e->link);
+ free(e);
+ }
+ }
+
+ if (o->timer)
+ tdm_event_loop_source_remove(o->timer);
+
+ LIST_FOR_EACH_ENTRY_SAFE(l, ll, &o->layer_list, link) {
+ LIST_DEL(&l->link);
+ free(l);
+ }
+
if (output_data->output_modes)
free(output_data->output_modes);
- tdm_backend_unregister_output(virtual_data->dpy, output);
- }
- else
+
+ LIST_DEL(&o->link);
+ free(o);
+ } else
return TDM_ERROR_INVALID_PARAMETER;
return TDM_ERROR_NONE;
return TDM_ERROR_NONE;
}
-tdm_error virtual_output_set_connect(tdm_output *output)
+tdm_error
+virtual_output_set_connect(tdm_output *output)
{
tdm_virtual_output_data *output_data = output;
return TDM_ERROR_NONE;
}
-tdm_error virtual_output_set_disconnect(tdm_output *output)
+tdm_error
+virtual_output_set_disconnect(tdm_output *output)
{
tdm_virtual_output_data *output_data = output;