diff options
author | Derek Foreman <derekf@osg.samsung.com> | 2017-05-03 10:51:14 -0500 |
---|---|---|
committer | Derek Foreman <derekf@osg.samsung.com> | 2017-05-04 16:51:18 -0500 |
commit | 9f3273a33c294865a891091ce7e6e4907a390812 (patch) | |
tree | 7123ff046fe7cabbff091e7140989018a66925b1 | |
parent | f124c84b13eda2ae7dadf57ba941453fd2317cd9 (diff) | |
download | efl-9f3273a33c294865a891091ce7e6e4907a390812.tar.gz |
ecore_drm2: Require x and y value in plane assign
Saves us a flip test, and gaurantees that we're always testing with a
reasonable x, y and not something leftover from a previous assignment.
-rw-r--r-- | src/lib/ecore_drm2/Ecore_Drm2.h | 2 | ||||
-rw-r--r-- | src/lib/ecore_drm2/ecore_drm2_plane.c | 7 | ||||
-rw-r--r-- | src/modules/evas/engines/drm/evas_outbuf.c | 2 | ||||
-rw-r--r-- | src/modules/evas/engines/gl_drm/evas_outbuf.c | 3 |
4 files changed, 10 insertions, 4 deletions
diff --git a/src/lib/ecore_drm2/Ecore_Drm2.h b/src/lib/ecore_drm2/Ecore_Drm2.h index 4fa46ce4e6..af2f396442 100644 --- a/src/lib/ecore_drm2/Ecore_Drm2.h +++ b/src/lib/ecore_drm2/Ecore_Drm2.h @@ -1006,7 +1006,7 @@ EAPI Ecore_Drm2_Fb *ecore_drm2_fb_dmabuf_import(int fd, int width, int height, i * @ingroup Ecore_Drm2_Plane_Group * @since 1.20 */ -EAPI Ecore_Drm2_Plane *ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb); +EAPI Ecore_Drm2_Plane *ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb, int x, int y); /** * Remove a hardware plane from display diff --git a/src/lib/ecore_drm2/ecore_drm2_plane.c b/src/lib/ecore_drm2/ecore_drm2_plane.c index 2ecf96b19f..cb765edc4b 100644 --- a/src/lib/ecore_drm2/ecore_drm2_plane.c +++ b/src/lib/ecore_drm2/ecore_drm2_plane.c @@ -39,7 +39,7 @@ _plane_cursor_size_get(int fd, int *width, int *height) } EAPI Ecore_Drm2_Plane * -ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb) +ecore_drm2_plane_assign(Ecore_Drm2_Output *output, Ecore_Drm2_Fb *fb, int x, int y) { Eina_List *l; Ecore_Drm2_Plane *plane; @@ -102,6 +102,11 @@ out: pstate->sw.value = fb->w << 16; pstate->sh.value = fb->h << 16; + pstate->cx.value = x; + pstate->cy.value = y; + pstate->cw.value = fb->w; + pstate->ch.value = fb->h; + plane->state = pstate; plane->type = pstate->type.value; plane->output = output; diff --git a/src/modules/evas/engines/drm/evas_outbuf.c b/src/modules/evas/engines/drm/evas_outbuf.c index 4331e2d158..f45e45c119 100644 --- a/src/modules/evas/engines/drm/evas_outbuf.c +++ b/src/modules/evas/engines/drm/evas_outbuf.c @@ -20,7 +20,7 @@ _outbuf_buffer_swap(Outbuf *ob, Eina_Rectangle *rects, unsigned int count) ecore_drm2_fb_dirty(ofb->fb, rects, count); if (!ob->priv.plane) - ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, ofb->fb); + ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, ofb->fb, 0, 0); else ecore_drm2_plane_fb_set(ob->priv.plane, ofb->fb); ecore_drm2_fb_flip(ofb->fb, ob->priv.output); diff --git a/src/modules/evas/engines/gl_drm/evas_outbuf.c b/src/modules/evas/engines/gl_drm/evas_outbuf.c index bd4648ca27..efc9977195 100644 --- a/src/modules/evas/engines/gl_drm/evas_outbuf.c +++ b/src/modules/evas/engines/gl_drm/evas_outbuf.c @@ -103,8 +103,9 @@ _evas_outbuf_buffer_swap(Outbuf *ob) if (fb) { if (!ob->priv.plane) - ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, fb); + ob->priv.plane = ecore_drm2_plane_assign(ob->priv.output, fb, 0, 0); else ecore_drm2_plane_fb_set(ob->priv.plane, fb); + ecore_drm2_fb_flip(fb, ob->priv.output); /* Ecore_Drm2_Plane *plane; */ |