This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch devs/devilhorns/apos
in repository efl.
View the commit online.
commit feaa7e00ec9a7fb07b9ecd79dab0c995bb8deb87
Author: Christopher Michael <devilho...@comcast.net>
AuthorDate: Thu Sep 4 07:17:54 2025 -0500
ecore_evas_drm: Add support for setting fullscreen and fix handling
rotated ecore_evas in some places
---
.../ecore_evas/engines/drm/ecore_evas_drm.c | 116 +++++++++++++++++----
1 file changed, 93 insertions(+), 23 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 65ac263875..df2d6f95c4 100644
--- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
+++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
@@ -151,9 +151,9 @@ _drm_avoid_damage_do(Ecore_Evas *ee, int on)
if (ee->prop.avoid_damage)
{
if (ECORE_EVAS_PORTRAIT(ee))
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+ evas_damage_rectangle_add(ee->evas, ee->x, ee->y, ee->w, ee->h);
else
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+ evas_damage_rectangle_add(ee->evas, ee->y, ee->x, ee->h, ee->w);
}
}
@@ -173,7 +173,10 @@ _drm_alpha_do(Ecore_Evas *ee, int on)
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
ERR("evas_engine_info_set() for engine '%s' failed", ee->driver);
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->req.w, ee->req.h);
+ if (ECORE_EVAS_PORTRAIT(ee))
+ evas_damage_rectangle_add(ee->evas, ee->x, ee->y, ee->w, ee->h);
+ else
+ evas_damage_rectangle_add(ee->evas, ee->y, ee->x, ee->h, ee->w);
}
static void
@@ -192,7 +195,10 @@ _drm_transparent_do(Ecore_Evas *ee, int on)
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
ERR("evas_engine_info_set() for engine '%s' failed", ee->driver);
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->req.w, ee->req.h);
+ if (ECORE_EVAS_PORTRAIT(ee))
+ evas_damage_rectangle_add(ee->evas, ee->x, ee->y, ee->w, ee->h);
+ else
+ evas_damage_rectangle_add(ee->evas, ee->y, ee->x, ee->h, ee->w);
}
static void
@@ -223,44 +229,46 @@ _drm_rotation_do(Ecore_Evas *ee, int rotation, int resize)
ee->expecting_resize.w = ee->h;
ee->expecting_resize.h = ee->w;
evas_output_size_set(ee->evas, ee->req.h, ee->req.w);
- evas_output_viewport_set(ee->evas, 0, 0, ee->req.h, ee->req.w);
+ evas_output_viewport_set(ee->evas, ee->x, ee->y, ee->req.h, ee->req.w);
}
else
{
if (PORTRAIT_CHECK(rotation))
{
evas_output_size_set(ee->evas, ee->req.w, ee->req.h);
- evas_output_viewport_set(ee->evas, 0, 0, ee->req.w, ee->req.h);
+ evas_output_viewport_set(ee->evas, ee->x, ee->y, ee->req.w, ee->req.h);
}
else
{
evas_output_size_set(ee->evas, ee->req.h, ee->req.w);
- evas_output_viewport_set(ee->evas, 0, 0, ee->req.h, ee->req.w);
+ evas_output_viewport_set(ee->evas, ee->y, ee->x, ee->req.h, ee->req.w);
}
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
if (PORTRAIT_CHECK(rotation))
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->req.w, ee->req.h);
+ evas_damage_rectangle_add(ee->evas, ee->x, ee->y, ee->req.w, ee->req.h);
else
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->req.h, ee->req.w);
+ evas_damage_rectangle_add(ee->evas, ee->y, ee->x, ee->req.h, ee->req.w);
}
else
{
if (PORTRAIT_CHECK(rotation))
{
evas_output_size_set(ee->evas, ee->w, ee->h);
- evas_output_viewport_set(ee->evas, 0, 0, ee->w, ee->h);
+ evas_output_viewport_set(ee->evas, ee->x, ee->y, ee->w, ee->h);
}
else
{
evas_output_size_set(ee->evas, ee->h, ee->w);
- evas_output_viewport_set(ee->evas, 0, 0, ee->h, ee->w);
+ evas_output_viewport_set(ee->evas, ee->y, ee->x, ee->h, ee->w);
}
+
if (ee->func.fn_resize) ee->func.fn_resize(ee);
+
if (PORTRAIT_CHECK(rotation))
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+ evas_damage_rectangle_add(ee->evas, ee->x, ee->y, ee->w, ee->h);
else
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+ evas_damage_rectangle_add(ee->evas, ee->y, ee->x, ee->h, ee->w);
}
ecore_evas_size_min_get(ee, &minw, &minh);
ecore_evas_size_max_get(ee, &maxw, &maxh);
@@ -279,12 +287,15 @@ _drm_rotation_do(Ecore_Evas *ee, int rotation, int resize)
ERR("evas_engine_info_set() for engine '%s' failed", ee->driver);
ee->rotation = rotation;
+
/* TODO: mouse_move_process ?? */
+
if (ee->func.fn_resize) ee->func.fn_resize(ee);
+
if (PORTRAIT_CHECK(rotation))
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->w, ee->h);
+ evas_damage_rectangle_add(ee->evas, ee->x, ee->y, ee->w, ee->h);
else
- evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
+ evas_damage_rectangle_add(ee->evas, ee->y, ee->x, ee->h, ee->w);
}
}
@@ -394,8 +405,18 @@ _drm_resize(Ecore_Evas *ee, int w, int h)
ee->h = h;
edata->w = w;
edata->h = h;
- evas_output_size_set(ee->evas, w, h);
- evas_output_viewport_set(ee->evas, ee->x, ee->y, w, h);
+
+ if (ECORE_EVAS_PORTRAIT(ee))
+ {
+ evas_output_size_set(ee->evas, ee->req.w, ee->req.h);
+ evas_output_viewport_set(ee->evas, ee->x, ee->y, ee->req.w, ee->req.h);
+ }
+ else
+ {
+ evas_output_size_set(ee->evas, ee->req.h, ee->req.w);
+ evas_output_viewport_set(ee->evas, ee->y, ee->x, ee->req.h, ee->req.w);
+ }
+
if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
@@ -573,9 +594,44 @@ _drm_maximized_set(Ecore_Evas *ee, Eina_Bool on)
static void
_drm_fullscreen_set(Ecore_Evas *ee, Eina_Bool on)
{
+ Ecore_Evas_Engine_Drm_Data *edata;
+ Eina_Bool resized = EINA_FALSE;
+
+ edata = ee->engine.data;
+
if (ee->prop.fullscreen == on) return;
ee->prop.fullscreen = on;
- /* TODO */
+
+ if (on)
+ {
+ /* TODO: get output size */
+ }
+ else
+ {
+ if ((edata->w != ee->w) || (edata->h != ee->h))
+ resized = EINA_TRUE;
+ ee->w = edata->w;
+ ee->h = edata->h;
+ }
+
+ ee->req.w = ee->w;
+ ee->req.h = ee->h;
+
+ evas_output_size_set(ee->evas, ee->w, ee->h);
+
+ if (ECORE_EVAS_PORTRAIT(ee))
+ {
+ evas_output_size_set(ee->evas, ee->req.w, ee->req.h);
+ evas_output_viewport_set(ee->evas, ee->x, ee->y, ee->req.w, ee->req.h);
+ }
+ else
+ {
+ evas_output_size_set(ee->evas, ee->req.h, ee->req.w);
+ evas_output_viewport_set(ee->evas, ee->y, ee->x, ee->req.h, ee->req.w);
+ }
+
+ if (resized)
+ if (ee->func.fn_resize) ee->func.fn_resize(ee);
}
static void
@@ -647,7 +703,7 @@ _drm_aspect_set(Ecore_Evas *ee, double aspect)
ee->prop.aspect = aspect;
}
-/* TODO */
+/* TODO: use relative mode for these */
//screen_geom
//screen_dpi
@@ -705,6 +761,7 @@ _drm_animator_register(Ecore_Evas *ee)
if (!edata->blanktime)
{
+ /* FIXME: Account for multiple outputs ? */
ret = ecore_drm2_display_blanktime_get(edata->disp, 1, &sec, &usec);
if (ret)
{
@@ -718,6 +775,7 @@ _drm_animator_register(Ecore_Evas *ee)
if ((!edata->ticking) || (ee->in_async_render))
{
+ /* FIXME: Account for multiple outputs ? */
ret = ecore_drm2_display_blanktime_get(edata->disp, 0, &sec, &usec);
if (ret)
{
@@ -890,6 +948,18 @@ _cb_drm_pageflip2(int fd EINA_UNUSED, unsigned int seq EINA_UNUSED, unsigned int
/* TODO */
}
+static void
+_cb_drm_render_flush_post(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED)
+{
+ Ecore_Evas *ee;
+ Ecore_Evas_Engine_Drm_Data *edata;
+
+ ee = data;
+ edata = ee->engine.data;
+
+ /* TODO: flip buffers */
+}
+
static void
_cb_drm_render_updates(void *data, Evas *evas EINA_UNUSED, void *event)
{
@@ -920,9 +990,7 @@ _cb_drm_render_updates(void *data, Evas *evas EINA_UNUSED, void *event)
_drm_avoid_damage_do(ee, ee->delayed.avoid_damage);
if (ee->delayed.rotation_changed)
- {
- ee->delayed.rotation_changed = EINA_FALSE;
- }
+ ee->delayed.rotation_changed = EINA_FALSE;
}
static Ecore_Evas *
@@ -1010,6 +1078,8 @@ _ecore_evas_new_internal(const char *device, int x, int y, int w, int h, Eina_Bo
evas_output_method_set(ee->evas, method);
evas_output_viewport_set(ee->evas, x, y, w, h);
+ evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_POST,
+ _cb_drm_render_flush_post, ee);
if (ee->can_async_render)
evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST,
_cb_drm_render_updates, ee);
@@ -1017,7 +1087,7 @@ _ecore_evas_new_internal(const char *device, int x, int y, int w, int h, Eina_Bo
#ifdef BUILD_ECORE_EVAS_GL_DRM
if (gl)
{
-
+ /* TODO */
}
else
#endif
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.