summaryrefslogtreecommitdiff
path: root/src/lib/ecore_drm/ecore_drm_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/ecore_drm/ecore_drm_device.c')
-rw-r--r--src/lib/ecore_drm/ecore_drm_device.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/ecore_drm/ecore_drm_device.c b/src/lib/ecore_drm/ecore_drm_device.c
index 69a8e1c05f..1ba4a2668d 100644
--- a/src/lib/ecore_drm/ecore_drm_device.c
+++ b/src/lib/ecore_drm/ecore_drm_device.c
@@ -24,7 +24,13 @@ _ecore_drm_device_cb_page_flip(int fd EINA_UNUSED, unsigned int frame EINA_UNUSE
24 } 24 }
25 25
26 output->pending_flip = EINA_FALSE; 26 output->pending_flip = EINA_FALSE;
27 if (!output->pending_vblank) ecore_drm_output_repaint(output); 27 if (output->pending_destroy)
28 {
29 output->pending_destroy = EINA_FALSE;
30 ecore_drm_output_free(output);
31 }
32 else if (!output->pending_vblank)
33 ecore_drm_output_repaint(output);
28} 34}
29 35
30static void 36static void
@@ -79,7 +85,7 @@ _ecore_drm_device_cb_idle(void *data)
79 85
80 EINA_LIST_FOREACH(dev->outputs, l, output) 86 EINA_LIST_FOREACH(dev->outputs, l, output)
81 { 87 {
82 output->need_repaint = EINA_TRUE; 88 if ((!output->enabled) || (!output->need_repaint)) continue;
83 if (output->repaint_scheduled) continue; 89 if (output->repaint_scheduled) continue;
84 _ecore_drm_output_repaint_start(output); 90 _ecore_drm_output_repaint_start(output);
85 } 91 }