summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Michael <cp.michael@samsung.com>2017-11-20 08:25:25 -0500
committerChris Michael <cp.michael@samsung.com>2018-01-31 11:18:02 -0500
commitc181df8d0fc5ddff16ef71153ea744f2806a9a2b (patch)
tree7030de349e65e77642170788923e7a422fb1f25d
parent9302406f139f419e9dca5bd21ec93b6a62bae2f0 (diff)
downloadefl-c181df8d0fc5ddff16ef71153ea744f2806a9a2b.tar.gz
ecore-evas-drm: Make calls to ecore_animator_tick take output rectangle
Signed-off-by: Chris Michael <cp.michael@samsung.com>
-rw-r--r--src/modules/ecore_evas/engines/drm/ecore_evas_drm.c19
1 files changed, 15 insertions, 4 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 32d016f03a..c2e5911154 100644
--- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
+++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
@@ -733,11 +733,15 @@ _cb_pageflip(int fd EINA_UNUSED, unsigned int frame EINA_UNUSED, unsigned int se
if (edata->ticking)
{
double t;
+ int x, y, w, h;
t = (double)sec + ((double)usec / 1000000);
if (!edata->once) t = ecore_time_get();
- ecore_evas_animator_tick(ee, NULL, t - edata->offset);
+ ecore_drm2_output_info_get(output, &x, &y, &w, &h, NULL);
+
+ ecore_evas_animator_tick(ee, &(Eina_Rectangle){x, y, w, h},
+ t - edata->offset);
}
else if (ret)
ecore_drm2_fb_flip(NULL, output);
@@ -767,13 +771,20 @@ _drm_evas_changed(Ecore_Evas *ee, Eina_Bool changed)
static void
_tick_job(void *data)
{
+ Ecore_Drm2_Output *output;
Ecore_Evas_Engine_Drm_Data *edata;
Ecore_Evas *ee;
+ int x, y, w, h;
- ee = data;
+ output = data;
+ ee = ecore_drm2_output_user_data_get(output);
edata = ee->engine.data;
+
+ ecore_drm2_output_info_get(output, &x, &y, &w, &h, NULL);
+
edata->tick_job = NULL;
- ecore_evas_animator_tick(ee, NULL, edata->tick_job_timestamp);
+ ecore_evas_animator_tick(ee, &(Eina_Rectangle){x, y, w, h},
+ edata->tick_job_timestamp);
}
static void
@@ -836,7 +847,7 @@ _drm_animator_register(Ecore_Evas *ee)
{
edata->tick_job_timestamp = (double)sec
+ ((double)usec / 1000000);
- edata->tick_job = ecore_job_add(_tick_job, ee);
+ edata->tick_job = ecore_job_add(_tick_job, output);
break;
}
}