aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorent Revest <revestflo@gmail.com>2015-07-21 18:09:04 +0200
committerNicolas Aguirre <aguirre.nicolas@gmail.com>2016-05-16 23:19:00 +0200
commit7ed7b8a2017d15dd23d034b0f2b915d10cd01745 (patch)
treeddf7f3a5ce0f9f18e5cd2c3bf89227d9fbe6b282
parentallow building shot+xkbswitch modules without ecore-x (diff)
downloadenlightenment-devs/captainigloo/eglfs_rpi.tar.gz
eglfs: Adds eglfs module to Enlightenmentdevs/captainigloo/eglfs_rpi
-rw-r--r--configure.ac13
-rw-r--r--src/bin/e_comp.c3
-rw-r--r--src/bin/e_comp_wl.c1
-rw-r--r--src/bin/e_module.c1
-rw-r--r--src/modules/Makefile.mk2
-rw-r--r--src/modules/Makefile_wl_eglfs.mk17
-rw-r--r--src/modules/wl_eglfs/e_mod_main.c62
7 files changed, 99 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index c602f3de8..abd28773e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -755,6 +755,17 @@ define([CHECK_MODULE_WL_FB],
])
AM_CONDITIONAL([HAVE_WL_FB], [test "x${WL_FB}" = "xtrue"])
+WL_EGLFS=false
+define([CHECK_MODULE_WL_EGLFS],
+[
+ if test "x${have_wayland}" = "xyes" ; then
+ AC_E_CHECK_PKG(WL_EGLFS, [ ecore-fb >= $efl_version ecore >= $efl_version eina >= $efl_version ], [WL_EGLFS=true], [WL_EGLFS=false])
+ else
+ WL_EGLFS=false
+ fi
+])
+AM_CONDITIONAL([HAVE_WL_EGLFS], [test "x${WL_EGLFS}" = "xtrue"])
+
WL_DRM=false
define([CHECK_MODULE_WL_DRM],
[
@@ -854,9 +865,11 @@ AC_E_OPTIONAL_MODULE([wl_desktop_shell], $have_wayland_dep)
AC_E_OPTIONAL_MODULE([wl_x11], $have_wayland_dep, [CHECK_MODULE_WL_X11])
AC_E_OPTIONAL_MODULE([wl_wl], $have_wayland_dep)
#AC_E_OPTIONAL_MODULE([wl_fb], $have_wayland_dep, [CHECK_MODULE_WL_FB])
+AC_E_OPTIONAL_MODULE([wl_eglfs], $have_wayland, [CHECK_MODULE_WL_EGLFS])
AC_E_OPTIONAL_MODULE([wl_drm], $have_wayland_dep, [CHECK_MODULE_WL_DRM])
AC_E_OPTIONAL_MODULE([wl_text_input], $have_wayland_dep)
AC_E_OPTIONAL_MODULE([wl_weekeyboard], $have_wayland_dep)
+
AC_E_OPTIONAL_MODULE([policy_mobile], true)
AC_E_OPTIONAL_MODULE([geolocation], true)
AC_E_OPTIONAL_MODULE([xwayland], $have_wayland_dep, [CHECK_MODULE_XWAYLAND])
diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index 4247099fb..839dcff15 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -1129,6 +1129,9 @@ e_comp_init(void)
#ifdef USE_MODULE_WL_DRM
"wl_drm",
#endif
+#ifdef HAVE_WL_EGLFS
+ "wl_eglfs",
+#endif
/* probably add other engines here; fb should be last? */
#ifdef USE_MODULE_WL_FB
"wl_fb",
diff --git a/src/bin/e_comp_wl.c b/src/bin/e_comp_wl.c
index 53a107f27..8a8b69dc6 100644
--- a/src/bin/e_comp_wl.c
+++ b/src/bin/e_comp_wl.c
@@ -2598,6 +2598,7 @@ e_comp_wl_init(void)
/* set gl available if we have ecore_evas support */
if (ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_WAYLAND_EGL) ||
+ ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_EGLFS) ||
ecore_evas_engine_type_supported_get(ECORE_EVAS_ENGINE_OPENGL_DRM))
e_comp_gl_set(EINA_TRUE);
diff --git a/src/bin/e_module.c b/src/bin/e_module.c
index 25ec3a7b1..9806c75bb 100644
--- a/src/bin/e_module.c
+++ b/src/bin/e_module.c
@@ -1032,6 +1032,7 @@ _e_module_whitelist_check(void)
"wl_x11",
"wl_wl",
"wl_drm",
+ "wl_eglfs",
"wl_shell",
"wl_desktop_shell",
"xkbswitch",
diff --git a/src/modules/Makefile.mk b/src/modules/Makefile.mk
index 0962f9ee9..c08c99836 100644
--- a/src/modules/Makefile.mk
+++ b/src/modules/Makefile.mk
@@ -112,6 +112,8 @@ include src/modules/Makefile_wl_drm.mk
include src/modules/Makefile_wl_wl.mk
+include src/modules/Makefile_wl_eglfs.mk
+
include src/modules/Makefile_wl_desktop_shell.mk
include src/modules/Makefile_wl_x11.mk
diff --git a/src/modules/Makefile_wl_eglfs.mk b/src/modules/Makefile_wl_eglfs.mk
new file mode 100644
index 000000000..a29b97f63
--- /dev/null
+++ b/src/modules/Makefile_wl_eglfs.mk
@@ -0,0 +1,17 @@
+if USE_MODULE_WL_EGLFS
+wl_eglfsdir = $(MDIR)/wl_eglfs
+
+wl_eglfspkgdir = $(MDIR)/wl_eglfs/$(MODULE_ARCH)
+wl_eglfspkg_LTLIBRARIES = src/modules/wl_eglfs/module.la
+
+src_modules_wl_eglfs_module_la_DEPENDENCIES = $(MDEPENDENCIES)
+src_modules_wl_eglfs_module_la_CPPFLAGS = $(MOD_CPPFLAGS) @WL_EGLFS_CFLAGS@ @WAYLAND_CFLAGS@
+src_modules_wl_eglfs_module_la_LIBADD = $(LIBS) @WL_EGLFS_LIBS@ @WAYLAND_LIBS@
+src_modules_wl_eglfs_module_la_LDFLAGS = $(MOD_LDFLAGS)
+src_modules_wl_eglfs_module_la_SOURCES = src/modules/wl_eglfs/e_mod_main.c
+
+# TODO: incomplete
+#.PHONY: wl_eglfs install-wl_eglfs
+#wl_eglfs: $(wl_eglfspkg_LTLIBRARIES) $(wl_eglfs_DATA)
+#install-wl_eglfs: install-wl_eglfsDATA install-wl_eglfspkgLTLIBRARIES
+endif
diff --git a/src/modules/wl_eglfs/e_mod_main.c b/src/modules/wl_eglfs/e_mod_main.c
new file mode 100644
index 000000000..5c2470def
--- /dev/null
+++ b/src/modules/wl_eglfs/e_mod_main.c
@@ -0,0 +1,62 @@
+#include "e.h"
+#include <Ecore_Fb.h>
+#include <Ecore_Wayland.h>
+
+E_API E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Wl_EGLFS" };
+
+E_API void *
+e_modapi_init(E_Module *m)
+{
+ Ecore_Evas *ee;
+ E_Screen *screen;
+ int w, h;
+
+ printf("LOAD WL_EGLFS MODULE\n");
+ e_util_env_set("HYBRIS_EGLPLATFORM", "fbdev");
+
+ /* try to init ecore_fb */
+ if (!ecore_fb_init(NULL))
+ {
+ fprintf(stderr, "Could not initialize ecore_fb");
+ return NULL;
+ }
+
+ ecore_fb_size_get(&w, &h);
+ ee = ecore_evas_eglfs_new(NULL, 0, w, h);
+
+ e_comp->ee = ee;
+ e_comp_gl_set(!!e_comp->ee);
+
+ if (!e_xinerama_fake_screens_exist())
+ {
+ screen = E_NEW(E_Screen, 1);
+ screen->escreen = screen->screen = 0;
+ screen->x = 0;
+ screen->y = 0;
+ screen->w = w;
+ screen->h = h;
+ e_xinerama_screens_set(eina_list_append(NULL, screen));
+ }
+ e_comp_wl_init();
+ e_comp_canvas_init(w, h);
+ e_comp->pointer = e_pointer_canvas_new(e_comp->ee, EINA_TRUE);
+
+ e_comp_wl_input_pointer_enabled_set(EINA_TRUE);
+ e_comp_wl_input_keyboard_enabled_set(EINA_TRUE);
+ e_comp_wl_input_touch_enabled_set(EINA_TRUE);
+ e_comp_wl_input_keymap_set(NULL, NULL, NULL);
+
+ ecore_wl_init(NULL);
+ ecore_wl_server_mode_set(1);
+ e_util_env_set("HYBRIS_EGLPLATFORM", "wayland");
+ return m;
+}
+
+E_API int
+e_modapi_shutdown(E_Module *m EINA_UNUSED)
+{
+ /* shutdown ecore_fb */
+ ecore_fb_shutdown();
+
+ return 1;
+}