virtual: implementations for virtual output
[platform/core/uifw/libtdm.git] / src / tdm.c
index 30f3c07..886e847 100644 (file)
--- a/src/tdm.c
+++ b/src/tdm.c
@@ -127,6 +127,26 @@ tdm_display_find_output_stamp(tdm_private_display *private_display, double stamp
        return NULL;
 }
 
+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)
 {
@@ -530,6 +550,7 @@ tdm_display_update_output(tdm_private_module *private_module, tdm_output *output
                LIST_INITHEAD(&private_output->pending_commit_handler_list);
                LIST_INITHEAD(&private_output->destroy_handler_list);
                LIST_INITHEAD(&private_output->change_handler_list);
+               LIST_INITHEAD(&private_output->mode_change_request_handler_list);
 
                if (func_output->output_set_status_handler) {
                        func_output->output_set_status_handler(private_output->output_backend,
@@ -1024,6 +1045,7 @@ _tdm_display_load_module_with_file(tdm_private_display *private_display,
        }
 
        LIST_INITHEAD(&private_module->output_list);
+       LIST_INITHEAD(&private_module->voutput_list);
        LIST_INITHEAD(&private_module->pp_list);
        LIST_INITHEAD(&private_module->capture_list);