diff --git a/configure.ac b/configure.ac index 88c01899b..672e8e89c 100644 --- a/configure.ac +++ b/configure.ac @@ -760,6 +760,17 @@ define([CHECK_MODULE_WL_WL], ]) AM_CONDITIONAL([HAVE_WL_WL], [test "x${WL_WL}" = "xtrue"]) +WL_BUFFER=false +define([CHECK_MODULE_WL_BUFFER], +[ + if test "x${have_wayland}" = "xyes"; then + WL_BUFFER=true + else + WL_BUFFER=false + fi +]) +AM_CONDITIONAL([HAVE_WL_BUFFER], [test "x${WL_BUFFER}" = "xtrue"]) + WL_DESKTOP_SHELL=false define([CHECK_MODULE_WL_DESKTOP_SHELL], [ @@ -893,6 +904,7 @@ AC_E_OPTIONAL_MODULE([packagekit], true) 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_buffer], $have_wayland_dep) #AC_E_OPTIONAL_MODULE([wl_fb], $have_wayland_dep, [CHECK_MODULE_WL_FB]) AC_E_OPTIONAL_MODULE([wl_drm], $have_wayland_dep, [CHECK_MODULE_WL_DRM]) AC_E_OPTIONAL_MODULE([wl_text_input], $have_wayland_dep) diff --git a/src/bin/e_module.c b/src/bin/e_module.c index 20156e0d0..8af645818 100644 --- a/src/bin/e_module.c +++ b/src/bin/e_module.c @@ -154,6 +154,7 @@ _module_is_important(const char *name) const char *list[] = { "xwayland", + "wl_buffer", "wl_desktop_shell", "wl_drm", "wl_fb", @@ -1043,6 +1044,7 @@ _e_module_whitelist_check(void) "winlist", "wireless", "wizard", + "wl_buffer", "wl_desktop_shell", "wl_x11", "wl_wl", diff --git a/src/modules/Makefile.mk b/src/modules/Makefile.mk index 057f081d2..bb2a65ffe 100644 --- a/src/modules/Makefile.mk +++ b/src/modules/Makefile.mk @@ -113,6 +113,8 @@ include src/modules/Makefile_packagekit.mk include src/modules/Makefile_wl_drm.mk +include src/modules/Makefile_wl_buffer.mk + include src/modules/Makefile_wl_wl.mk include src/modules/Makefile_wl_desktop_shell.mk diff --git a/src/modules/Makefile_wl_buffer.mk b/src/modules/Makefile_wl_buffer.mk new file mode 100644 index 000000000..566f57c5c --- /dev/null +++ b/src/modules/Makefile_wl_buffer.mk @@ -0,0 +1,17 @@ +if USE_MODULE_WL_BUFFER +wl_bufferdir = $(MDIR)/wl_buffer + +wl_bufferpkgdir = $(MDIR)/wl_buffer/$(MODULE_ARCH) +wl_bufferpkg_LTLIBRARIES = src/modules/wl_buffer/module.la + +src_modules_wl_buffer_module_la_DEPENDENCIES = $(MDEPENDENCIES) +src_modules_wl_buffer_module_la_CPPFLAGS = $(MOD_CPPFLAGS) @WAYLAND_CFLAGS@ +src_modules_wl_buffer_module_la_LIBADD = $(MOD_LIBS) @WAYLAND_LIBS@ +src_modules_wl_buffer_module_la_LDFLAGS = $(MOD_LDFLAGS) +src_modules_wl_buffer_module_la_SOURCES = \ +src/modules/wl_buffer/e_mod_main.c + +PHONIES += wl_buffer install-wl_buffer +wl_buffer: $(wl_bufferpkg_LTLIBRARIES) $(wl_buffer_DATA) +install-wl_buffer: install-wl_bufferpkgLTLIBRARIES +endif diff --git a/src/modules/wl_buffer/e_mod_main.c b/src/modules/wl_buffer/e_mod_main.c new file mode 100644 index 000000000..17de5ff78 --- /dev/null +++ b/src/modules/wl_buffer/e_mod_main.c @@ -0,0 +1,46 @@ +#include "e.h" + +E_API E_Module_Api e_modapi = { E_MODULE_API_VERSION, "Wl_Buffer" }; + +E_API void * +e_modapi_init(E_Module *m) +{ + char *bsize; + int w = 1024, h = 768; + + printf("LOAD Wl_Buffer MODULE\n"); + + bsize = getenv("E_WL_SIZE"); + if (bsize) + sscanf(bsize, "%dx%d", &w, &h); + + e_comp->ee = ecore_evas_buffer_new(w, h); + + if (!e_comp->ee) + { + ERR("Could not create ecore_evas canvas"); + return NULL; + } + e_comp_gl_set(EINA_FALSE); + elm_config_accel_preference_set("none"); + elm_config_accel_preference_override_set(EINA_TRUE); + ecore_evas_data_set(e_comp->ee, "comp", e_comp); + EINA_SAFETY_ON_TRUE_RETURN_VAL(!e_comp_wl_init(), NULL); + EINA_SAFETY_ON_TRUE_RETURN_VAL(!e_comp_canvas_init(1024, 768), NULL); + + 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->pointer = */ + /* e_pointer_window_new(ecore_evas_window_get(e_comp->ee), EINA_TRUE); */ + e_comp->pointer = e_pointer_canvas_new(e_comp->ee, EINA_TRUE); + e_comp->pointer->color = EINA_TRUE; + + e_comp_wl->dmabuf_disable = EINA_TRUE; + ecore_evas_pointer_xy_get(e_comp->ee, &e_comp_wl->ptr.x, + &e_comp_wl->ptr.y); + evas_event_feed_mouse_in(e_comp->evas, 0, NULL); + + return m; +}