virtual: treat unset buffer commit 28/196928/1
authorJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 8 Jan 2019 04:30:01 +0000 (13:30 +0900)
committerJunkyeong Kim <jk0430.kim@samsung.com>
Tue, 8 Jan 2019 04:30:06 +0000 (13:30 +0900)
Change-Id: I41ad012b0fbbdc5ea22b6e1b50be38f8aa99c060
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
backends/virtual/tdm_virtual_display.c

index 2d407fe..e9e503f 100644 (file)
@@ -459,6 +459,25 @@ virtual_output_commit(tdm_output *output, int sync, void *user_data)
 
        layer_data = output_data->primary_layer;
 
+       if (layer_data->display_buffer == NULL && layer_data->display_buffer_changed == 1) {
+               event_data = calloc(1, sizeof(tdm_virtual_event_data));
+               if (!event_data) {
+                       TDM_ERR("alloc failed");
+                       return TDM_ERROR_OUT_OF_MEMORY;
+               }
+
+               event_data->type = TDM_VIRTUAL_EVENT_TYPE_COMMIT;
+               event_data->output_data = output_data;
+               event_data->user_data = user_data;
+
+               ret = _tdm_virtual_display_wait_vblank(output_data, 3, event_data);
+               if (ret != TDM_ERROR_NONE) {
+                       free(event_data);
+                       return ret;
+               }
+               goto done;
+       }
+
        if (voutput_data->vcommit_func) {
                if (layer_data->display_buffer_changed) {
                        output_data->commit_user_data = user_data;
@@ -496,6 +515,7 @@ virtual_output_commit(tdm_output *output, int sync, void *user_data)
                }
        }
 
+done:
        layer_data->display_buffer_changed = 0;
 
        return TDM_ERROR_NONE;