diff options
Diffstat (limited to 'src/lib/ecore_drm/ecore_drm_device.c')
-rw-r--r-- | src/lib/ecore_drm/ecore_drm_device.c | 10 |
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 | ||
30 | static void | 36 | static 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 | } |