+INTERN void *
+tdm_display_find_private_voutput(tdm_private_display *private_display, double stamp)
+{
+ tdm_private_module *private_module = NULL;
+ tdm_private_voutput *private_voutput = NULL;
+ tdm_private_output *private_output = NULL;
+
+ private_module = private_display->virtual_module;
+ if (!private_module) return NULL;
+
+ LIST_FOR_EACH_ENTRY(private_voutput, &private_module->voutput_list, link) {
+ if (!private_voutput->private_output) continue;
+ private_output = private_voutput->private_output;
+ if (private_output->stamp == stamp)
+ return private_voutput;
+ }
+
+ return NULL;
+}
+
+tdm_private_hwc *
+tdm_display_find_private_hwc(tdm_private_display *private_display, tdm_hwc *hwc_backend)
+{
+ tdm_private_module *private_module = NULL;
+ tdm_private_output *private_output = NULL;
+ tdm_private_hwc *private_hwc = NULL;
+
+ LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) {
+ LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) {
+ if (!private_output->private_hwc) continue;
+ private_hwc = private_output->private_hwc;
+ if (private_hwc->hwc_backend == hwc_backend)
+ return private_hwc;
+ }
+ }
+
+ return NULL;
+}
+
+INTERN void *
+tdm_display_find_hwc_stamp(tdm_private_display *private_display, double stamp)
+{
+ tdm_private_module *private_module = NULL;
+ tdm_private_output *private_output = NULL;
+ tdm_private_hwc *private_hwc = NULL;
+
+ LIST_FOR_EACH_ENTRY(private_module, &private_display->module_list, link) {
+ LIST_FOR_EACH_ENTRY(private_output, &private_module->output_list, link) {
+ if (!private_output->private_hwc) continue;
+ private_hwc = private_output->private_hwc;
+ if (private_hwc->stamp == stamp)
+ return private_hwc;
+ }
+ }
+
+ return NULL;
+}
+