summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Foreman <derekf@osg.samsung.com>2016-11-21 16:23:03 -0600
committerDerek Foreman <derekf@osg.samsung.com>2016-11-21 16:23:03 -0600
commitf2fa8f67f5f13144fee961b03dcd8b9c5b99f00b (patch)
tree84aa15469bb81bab824bde3a74f5568e96938392
parent02d352e1f29c32cb072c54308a43cde104f29bb8 (diff)
ecore_evas_drm: Fix render freezes
Missed setting pending to true in one of the paths, this resulted in an extra pageflip being scheduled too soon and returning EBUSY. This was more likely to happen on slow systems, and is hopefully the last remaining cause of render freeze on the RPI3.
-rw-r--r--src/modules/ecore_evas/engines/drm/ecore_evas_drm.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
index 5115b7d9c8..8132fd6b3a 100644
--- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
+++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
@@ -674,7 +674,11 @@ _drm_evas_changed(Ecore_Evas *ee, Eina_Bool changed)
674 if (changed) return; 674 if (changed) return;
675 675
676 edata = ee->engine.data; 676 edata = ee->engine.data;
677 if (edata->ticking && !edata->pending) ecore_drm2_fb_flip(NULL, edata->output); 677 if (edata->ticking && !edata->pending)
678 {
679 edata->pending = EINA_TRUE;
680 ecore_drm2_fb_flip(NULL, edata->output);
681 }
678} 682}
679 683
680static void 684static void
@@ -684,8 +688,11 @@ _drm_animator_register(Ecore_Evas *ee)
684 688
685 edata = ee->engine.data; 689 edata = ee->engine.data;
686 edata->ticking = EINA_TRUE; 690 edata->ticking = EINA_TRUE;
687 if (!edata->pending && !ee->in_async_render) ecore_drm2_fb_flip(NULL, edata->output); 691 if (!edata->pending && !ee->in_async_render)
688 edata->pending = EINA_TRUE; 692 {
693 edata->pending = EINA_TRUE;
694 ecore_drm2_fb_flip(NULL, edata->output);
695 }
689} 696}
690 697
691static void 698static void