event_sources = hal_tdm_backend_get_event_sources(hal_tdm, &num, &hret);
if (num != 0 && hret == HAL_TDM_ERROR_NONE) {
+ private_module->event_source_num = num;
for (int i = 0; i < num; i++) {
hal_tdm_event_source *event_source = event_sources[i];
- private_module->htdm_event_source = tdm_event_loop_add_fd_handler(private_display, event_source->event_fd,
+ private_module->htdm_event_source[i] = tdm_event_loop_add_fd_handler(private_display, event_source->event_fd,
TDM_EVENT_LOOP_READABLE, (tdm_event_loop_fd_handler)event_source->func, event_source->user_data, &error);
break;
}
LIST_FOR_EACH_ENTRY_SAFE(private_module, bb, &private_display->module_list, link) {
LIST_DEL(&private_module->link);
if (private_module->use_hal_tdm) {
- if (private_module->htdm_event_source)
- tdm_event_loop_source_remove(private_module->htdm_event_source);
+ if (private_module->event_source_num != 0) {
+ for (int i = 0; i < private_module->event_source_num; i++) {
+ tdm_event_loop_source *htdm_event_source = private_module->htdm_event_source[i];
+ tdm_event_loop_source_remove(htdm_event_source);
+ }
+ }
hal_tdm_put_backend(private_module->htdm_backend);
free(private_module);
continue;
int use_hal_tdm;
hal_tdm_backend *htdm_backend;
hal_tdm_display *htdm_dpy;
- tdm_event_loop_source *htdm_event_source;
+ tdm_event_loop_source *htdm_event_source[HAL_TDM_EVENT_SOURCE_MAX];
+ int event_source_num;
};
struct _tdm_private_display {