aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-11-01 23:04:47 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2016-11-03 22:22:54 +0900
commit4ed2e01591e1575800d9aa871f76a5f7559060b3 (patch)
treee2ff598e015fecd3f26a9c717a2bae1334e1bb1d
parenteolian: rename is_ref API to is_ptr to match syntax (diff)
downloadefl-4ed2e01591e1575800d9aa871f76a5f7559060b3.tar.gz
remove xcb support in ecore_x and evas engines as per mailing list
as per mailing list discussion about dropping xcb support now. it hasn't been complete for a long time, thus not recommented for being turned on. as we are moving to a wayland world xcbmakes even less sense. as agreed, time to clean up a bit and remove a distraction as well as not well tested code. this also updates po's too. @feature
-rw-r--r--configure.ac232
-rw-r--r--m4/evas_check_engine.m4161
-rw-r--r--pc/evas-opengl-x11.pc.in1
-rw-r--r--pc/evas-software-x11.pc.in1
-rw-r--r--po/ca.po30
-rw-r--r--po/cs.po30
-rw-r--r--po/de.po30
-rw-r--r--po/el.po30
-rw-r--r--po/eo.po30
-rw-r--r--po/es.po30
-rw-r--r--po/fi.po30
-rw-r--r--po/fr.po30
-rw-r--r--po/gl.po30
-rw-r--r--po/hu.po30
-rw-r--r--po/it.po30
-rw-r--r--po/ja.po30
-rw-r--r--po/ko.po30
-rw-r--r--po/lt.po30
-rw-r--r--po/nl.po30
-rw-r--r--po/pl.po30
-rw-r--r--po/pt.po30
-rw-r--r--po/ru.po30
-rw-r--r--po/sl.po30
-rw-r--r--po/sr.po30
-rw-r--r--po/tr.po30
-rw-r--r--po/vi.po30
-rw-r--r--po/zh_CN.po30
-rw-r--r--src/Makefile_Ecore_X.am142
-rw-r--r--src/Makefile_Evas.am30
-rw-r--r--src/lib/ecore_evas/Ecore_Evas.h4
-rw-r--r--src/lib/ecore_evas/ecore_evas.c8
-rw-r--r--src/lib/ecore_evas/ecore_evas_module.c4
-rw-r--r--src/lib/ecore_x/Ecore_X.h10
-rw-r--r--src/lib/ecore_x/ecore_x.c (renamed from src/lib/ecore_x/xlib/ecore_x.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_atoms.c (renamed from src/lib/ecore_x/xlib/ecore_x_atoms.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_composite.c (renamed from src/lib/ecore_x/xlib/ecore_x_composite.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_cursor.c (renamed from src/lib/ecore_x/xlib/ecore_x_cursor.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_damage.c (renamed from src/lib/ecore_x/xlib/ecore_x_damage.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_dnd.c (renamed from src/lib/ecore_x/xlib/ecore_x_dnd.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_dpms.c (renamed from src/lib/ecore_x/xlib/ecore_x_dpms.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_drawable.c (renamed from src/lib/ecore_x/xlib/ecore_x_drawable.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_e.c (renamed from src/lib/ecore_x/xlib/ecore_x_e.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_error.c (renamed from src/lib/ecore_x/xlib/ecore_x_error.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_events.c (renamed from src/lib/ecore_x/xlib/ecore_x_events.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_fixes.c (renamed from src/lib/ecore_x/xlib/ecore_x_fixes.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_gc.c (renamed from src/lib/ecore_x/xlib/ecore_x_gc.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_gesture.c (renamed from src/lib/ecore_x/xlib/ecore_x_gesture.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_icccm.c (renamed from src/lib/ecore_x/xlib/ecore_x_icccm.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_image.c (renamed from src/lib/ecore_x/xlib/ecore_x_image.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_keygrab.c (renamed from src/lib/ecore_x/xlib/ecore_x_keygrab.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_mwm.c (renamed from src/lib/ecore_x/xlib/ecore_x_mwm.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_netwm.c (renamed from src/lib/ecore_x/xlib/ecore_x_netwm.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_pixmap.c (renamed from src/lib/ecore_x/xlib/ecore_x_pixmap.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_present.c (renamed from src/lib/ecore_x/xlib/ecore_x_present.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_private.h (renamed from src/lib/ecore_x/xlib/ecore_x_private.h)0
-rw-r--r--src/lib/ecore_x/ecore_x_randr.c (renamed from src/lib/ecore_x/xlib/ecore_x_randr.c)2
-rw-r--r--src/lib/ecore_x/ecore_x_region.c (renamed from src/lib/ecore_x/xlib/ecore_x_region.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_screensaver.c (renamed from src/lib/ecore_x/xlib/ecore_x_screensaver.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_selection.c (renamed from src/lib/ecore_x/xlib/ecore_x_selection.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_sync.c (renamed from src/lib/ecore_x/xlib/ecore_x_sync.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_test.c (renamed from src/lib/ecore_x/xlib/ecore_x_test.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_vsync.c (renamed from src/lib/ecore_x/xlib/ecore_x_vsync.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_window.c (renamed from src/lib/ecore_x/xlib/ecore_x_window.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_window_prop.c (renamed from src/lib/ecore_x/xlib/ecore_x_window_prop.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_window_shape.c (renamed from src/lib/ecore_x/xlib/ecore_x_window_shape.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_xi2.c (renamed from src/lib/ecore_x/xlib/ecore_x_xi2.c)0
-rw-r--r--src/lib/ecore_x/ecore_x_xinerama.c (renamed from src/lib/ecore_x/xlib/ecore_x_xinerama.c)0
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb.c1605
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_atoms.c155
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_composite.c291
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_cursor.c400
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_damage.c156
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_dnd.c720
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_dpms.c354
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_drawable.c124
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_e.c2266
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_error.c116
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_events.c2831
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_extensions.c156
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_gc.c173
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_gesture.c203
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_icccm.c1259
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_image.c782
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_input.c295
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_keygrab.c442
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_keymap.c534
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_mwm.c105
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_netwm.c1590
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_pixmap.c129
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_present.c200
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_private.h448
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_randr.c4323
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_region.c159
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_render.c225
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_screensaver.c404
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_selection.c1111
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_shape.c50
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_sync.c338
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_textlist.c509
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_vsync.c375
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_window.c2255
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_window_prop.c689
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_window_shadow.c410
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_window_shape.c791
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_xdefaults.c120
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_xfixes.c745
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_xinerama.c139
-rw-r--r--src/lib/ecore_x/xcb/ecore_xcb_xtest.c215
-rw-r--r--src/modules/ecore_evas/engines/x/ecore_evas_x.c12
-rw-r--r--src/modules/evas/engines/software_x11/Evas_Engine_Software_X11.h3
-rw-r--r--src/modules/evas/engines/software_x11/evas_engine.c300
-rw-r--r--src/modules/evas/engines/software_x11/evas_engine.h36
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_buffer.c513
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_buffer.h32
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_color.c424
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_color.h10
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_image.c123
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_image.h5
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_main.c8
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_outbuf.c1310
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_outbuf.h26
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_xdefaults.c108
-rw-r--r--src/modules/evas/engines/software_x11/evas_xcb_xdefaults.h11
-rw-r--r--src/tests/ecore/ecore_test_ecore_x.c3
-rw-r--r--src/utils/ecore/.gitignore2
-rw-r--r--src/utils/ecore/makekeys.c326
-rwxr-xr-xsrc/utils/ecore/mkks.sh10
127 files changed, 417 insertions, 32322 deletions
diff --git a/configure.ac b/configure.ac
index cd7ba3bffc..c709f7f0f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1912,7 +1912,7 @@ EFL_LIB_START([Evas])
# X11
AC_ARG_WITH([x11],
- [AS_HELP_STRING([--with-x11=xlib|xcb|none],[X11 method to use: xlib, xcb or none])])
+ [AS_HELP_STRING([--with-x11=xlib|none],[Use X11 (Xlib) or not])])
if test "x${have_windows}" = "xyes" || test "x${have_ps3}" = "xyes" || test "x${have_darwin}" = "xyes"; then
with_x11="none"
@@ -1921,7 +1921,6 @@ elif test "x${with_x11}" = "x"; then
fi
want_x11_xlib="no"
-want_x11_xcb="no"
want_x11_none="no"
want_x11_any="no"
case "${with_x11}" in
@@ -1929,11 +1928,6 @@ case "${with_x11}" in
want_x11_xlib="yes"
want_x11_any="yes"
;;
- xcb)
- want_x11_xcb="yes"
- want_x11_any="yes"
- CFOPT_WARNING="xyes"
- ;;
none)
want_x11_none="yes"
;;
@@ -1961,10 +1955,8 @@ case "${with_opengl}" in
esac
want_x11_xlib_opengl="no"
-want_x11_xcb_opengl="no"
if test "${with_opengl}" != "none"; then
want_x11_xlib_opengl="${want_x11_xlib}"
- want_x11_xcb_opengl="${want_x11_xcb}"
want_x11_any_opengl="${want_x11_any}"
fi
@@ -2529,50 +2521,30 @@ EVAS_CHECK_ENGINE([gl-drm], [${want_gl_drm}], [no], [OpenGL Drm])
EVAS_CHECK_ENGINE([eglfs], [${want_eglfs}], [no], [OpenGL Fb])
-# Software XCB
-
-have_evas_engine_software_xcb="no"
-if test "${with_x11}" = "xcb" ; then
- EVAS_CHECK_ENGINE([software-xcb], [${want_x11_xcb}], [no], [Software XCB])
-else
- AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XCB], [false])
- AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XCB], [false])
-fi
-
-AC_MSG_CHECKING([whether to build Software XCB Engine])
-AC_MSG_RESULT([${have_evas_engine_software_xcb}])
-
-# No Software XCB ? Then try Software Xlib
+# Software Xlib
have_evas_engine_software_xlib="no"
-if test "x${want_x11_xcb}" = "xno" ; then
- EVAS_CHECK_ENGINE([software-xlib], [${want_x11_xlib}], [no], [Software Xlib])
-else
- AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XLIB], [false])
- AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XLIB], [false])
-fi
-
+EVAS_CHECK_ENGINE([software-xlib], [${want_x11_xlib}], [no], [Software Xlib])
AC_MSG_CHECKING([whether to build Software Xlib Engine])
AC_MSG_RESULT([${have_evas_engine_software_xlib}])
# If software_x11 is available, define everything needed for X11
have_evas_engine_software_x11="no"
-if test "x${have_evas_engine_software_xlib}" = "xyes" || test "x${have_evas_engine_software_xlib}" = "xstatic" || test "x${have_evas_engine_software_xcb}" = "xyes" || test "x${have_evas_engine_software_xcb}" = "xstatic" ; then
+if test "x${have_evas_engine_software_xlib}" = "xyes" || test "x${have_evas_engine_software_xlib}" = "xstatic"; then
have_evas_engine_software_x11="yes"
AC_DEFINE_UNQUOTED([BUILD_ENGINE_SOFTWARE_X11], [1], [Build software X11 engine])
fi
AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_X11], [test "x${have_evas_engine_software_x11}" = "xyes"])
-if test "x${have_evas_engine_software_xlib}" = "xstatic" || test "x${have_evas_engine_software_xcb}" = "xstatic"; then
+if test "x${have_evas_engine_software_xlib}" = "xstatic"; then
AC_DEFINE_UNQUOTED([EVAS_STATIC_BUILD_SOFTWARE_X11], [1], [Build software X11 engine as part of libevas])
fi
-AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xcb}" = "xstatic" || test "x${have_evas_engine_software_xlib}" = "xstatic"])
+AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xlib}" = "xstatic"])
# Needed for evas-software-x11.pc
AC_SUBST([have_evas_engine_software_xlib])
-AC_SUBST([have_evas_engine_software_xcb])
# Software generic
AC_DEFINE([EVAS_STATIC_BUILD_SOFTWARE_GENERIC], [1], [Build software generic engine as part of libevas])
@@ -2584,28 +2556,10 @@ if test "${with_opengl}" = "es" ; then
AC_DEFINE(GL_GLES, 1, [GLSL runtime shader GLES2 support])
fi
-# OpenGL XCB
-
-have_evas_engine_gl_xcb="no"
-if test "${want_x11_xcb_opengl}" = "yes"; then
- EVAS_CHECK_ENGINE([gl-xcb], [${want_x11_xcb_opengl}], [no], [OpenGL XCB])
-else
- AM_CONDITIONAL([BUILD_ENGINE_GL_XCB], [false])
- AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XCB], [false])
-fi
-
-AC_MSG_CHECKING([whether to build OpenGL XCB Engine])
-AC_MSG_RESULT([${have_evas_engine_gl_xcb}])
-
-# No openGL XCB ? Then try OpenGL Xlib
+# OpenGL Xlib
have_evas_engine_gl_xlib="no"
-if test "x${have_evas_engine_gl_xcb}" = "xno" ; then
- EVAS_CHECK_ENGINE([gl-xlib], [${want_x11_xlib_opengl}], [no], [OpenGL XLib])
-else
- AM_CONDITIONAL([BUILD_ENGINE_GL_XLIB], [false])
- AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XLIB], [false])
-fi
+EVAS_CHECK_ENGINE([gl-xlib], [${want_x11_xlib_opengl}], [no], [OpenGL XLib])
AC_MSG_CHECKING([whether to build OpenGL Xlib Engine])
AC_MSG_RESULT([${have_evas_engine_gl_xlib}])
@@ -2613,21 +2567,20 @@ AC_MSG_RESULT([${have_evas_engine_gl_xlib}])
# If opengl_x11 is available, define everything needed for X11
have_evas_engine_gl_x11="no"
-if test "x${have_evas_engine_gl_xlib}" = "xyes" || test "x${have_evas_engine_gl_xlib}" = "xstatic" || test "x${have_evas_engine_gl_xcb}" = "xyes" || test "x${have_evas_engine_gl_xcb}" = "xstatic" ; then
+if test "x${have_evas_engine_gl_xlib}" = "xyes" || test "x${have_evas_engine_gl_xlib}" = "xstatic"; then
have_evas_engine_gl_x11="yes"
AC_DEFINE_UNQUOTED([BUILD_ENGINE_GL_X11], [1], [Build OpenGL X11 engine])
fi
AM_CONDITIONAL([BUILD_ENGINE_GL_X11], [test "x${have_evas_engine_gl_x11}" = "xyes"])
-if test "x${have_evas_engine_gl_xlib}" = "xstatic" || test "x${have_evas_engine_gl_xcb}" = "xstatic"; then
+if test "x${have_evas_engine_gl_xlib}" = "xstatic"; then
AC_DEFINE_UNQUOTED([EVAS_STATIC_BUILD_GL_X11], [1], [Build OpenGL X11 engine as part of libevas])
fi
-AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xcb}" = "xstatic" || test "x${have_evas_engine_gl_xlib}" = "xstatic"])
+AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xlib}" = "xstatic"])
# Needed for evas-opengl-x11.pc
AC_SUBST([have_evas_engine_gl_xlib])
-AC_SUBST([have_evas_engine_gl_xcb])
# OpenGL SDL
@@ -2679,7 +2632,6 @@ AC_SUBST([evas_engine_gl_common_libs])
have_evas_engine_gl_common="no"
have_static_evas_engine_gl_common="no"
if test "x$have_evas_engine_gl_xlib" = "xyes" || \
- test "x$have_evas_engine_gl_xcb" = "xyes" || \
test "x$have_evas_engine_gl_sdl" = "xyes" || \
test "x$have_evas_engine_gl_cocoa" = "xyes" || \
test "x$have_evas_engine_gl_drm" = "xyes" || \
@@ -2688,7 +2640,6 @@ if test "x$have_evas_engine_gl_xlib" = "xyes" || \
have_evas_engine_gl_common="yes"
fi
if test "x$have_evas_engine_gl_xlib" = "xstatic" || \
- test "x$have_evas_engine_gl_xcb" = "xstatic" || \
test "x$have_evas_engine_gl_sdl" = "xstatic" || \
test "x$have_evas_engine_gl_cocoa" = "xstatic" || \
test "x$have_evas_engine_gl_drm" = "xstatic" || \
@@ -4177,65 +4128,6 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_X], [eina])
## Xlib
-## XCB
-
-### Checks for header files
-
-AC_CHECK_DECL([MAXHOSTNAMELEN], [FOUND_MAXHOSTNAMELEN=yes])
-
-if test "x${FOUND_MAXHOSTNAMELEN}" != "xyes" ; then
- FOUND_MAXHOSTNAMELEN="not found"
-
- AC_COMPILE_IFELSE(
- [
- AC_LANG_PROGRAM(
- [[
-#include <sys/param.h>
- ]],
- [[
-int h = MAXHOSTNAMELEN;
- ]])
- ],
- [
- FOUND_MAXHOSTNAMELEN="sys/param.h"
- AC_DEFINE([NEED_SYS_PARAM_H], [1], [Define to 1 if you need <sys/param.h> to define MAXHOSTNAMELEN])
- ])
-
- AC_COMPILE_IFELSE(
- [
- AC_LANG_PROGRAM(
- [[
-#include <netdb.h>
- ]],
- [[
-int h = MAXHOSTNAMELEN;
- ]])
- ],
- [
- FOUND_MAXHOSTNAMELEN="netdb.h"
- AC_DEFINE([NEED_NETDB_H], [1], [Define to 1 if you need <netdb.h> to define MAXHOSTNAMELEN])
- ])
-
- AC_MSG_CHECKING([for header that defines MAXHOSTNAMELEN])
- AC_MSG_RESULT([$FOUND_MAXHOSTNAMELEN])
-fi
-
-## Xlib
-if test "x${want_x11_xcb}" = "xyes" ; then
- KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
- FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
- for i in $FILES; do
- if test -f "$KEYSYMDEFDIR/$i"; then
- KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i"
- elif test "x$i" = "xkeysymdef.h"; then
- AC_MSG_ERROR([Cannot find keysymdef.h])
- fi
- done
- AC_MSG_CHECKING([keysym definitions])
- AC_MSG_RESULT([$KEYSYMDEFS])
- AC_SUBST([KEYSYMDEFS])
-fi
-
### Checks for types
### Checks for structures
@@ -4302,54 +4194,6 @@ if test "x${want_x11_xlib}" = "xyes" ; then
EFL_CHECK_FUNCS([ECORE_X], [dlopen dlsym])
fi
-## XCB
-
-if test "${want_x11_xcb}" = "yes"; then
-dnl note: added pixman-1 as ecore_xcb_region uses that
- EFL_DEPEND_PKG([ECORE_X], [ECORE_X_XCB],
- [x11-xcb xcb xcb-shm xcb-event xcb-icccm >= 0.3.8 xcb-util >= 0.3.8 xcb-image xcb-keysyms >= 0.3.8 xcb-composite xcb-present xcb-damage xcb-dpms xcb-randr xcb-render xcb-screensaver xcb-shape xcb-sync xcb-xfixes xcb-xinerama xcb-xtest xcb-renderutil pixman-1])
-
-dnl TODO: remove these ifdefs from code!
- AC_DEFINE([ECORE_XCB_COMPOSITE], [1], [Build support for XCB composite])
- AC_DEFINE([ECORE_XCB_DAMAGE], [1], [Build support for XCB damage])
- AC_DEFINE([ECORE_XCB_DPMS], [1], [Build support for XCB dpms])
- AC_DEFINE([ECORE_XCB_RANDR], [1], [Build support for XCB randr])
- AC_DEFINE([ECORE_XCB_RENDER], [1], [Build support for XCB render])
- AC_DEFINE([ECORE_XCB_SCREENSAVER], [1], [Build support for XCB screensaver])
- AC_DEFINE([ECORE_XCB_SHAPE], [1], [Build support for XCB shape])
- AC_DEFINE([ECORE_XCB_SYNC], [1], [Build support for XCB sync])
- AC_DEFINE([ECORE_XCB_XFIXES], [1], [Build support for XCB xfixes])
- AC_DEFINE([ECORE_XCB_XINERAMA], [1], [Build support for XCB xinerama])
- AC_DEFINE([ECORE_XCB_XTEST], [1], [Build support for XCB xtest])
- AC_DEFINE([ECORE_XCB_CURSOR], [1], [Build support for XCB cursor])
-
- EFL_OPTIONAL_DEPEND_PKG([ECORE_X], [${want_xpresent}], [ECORE_XCB_XPRESENT],
- [xcb-present])
- AC_DEFINE_IF([ECORE_XCB_XPRESENT], [test "${want_xpresent}" = "yes"],
- [1], [Build support for XCB Present])
- EFL_ADD_FEATURE([ECORE_X], [xpresent])
-
- EFL_OPTIONAL_DEPEND_PKG([ECORE_X], [${want_gesture}], [ECORE_XCB_GESTURE],
- [xcb-gesture])
- AC_DEFINE_IF([ECORE_XCB_XGESTURE], [test "${want_gesture}" = "yes"],
- [1], [Build support for XCB xgesture])
-
- EFL_ADD_FEATURE([ECORE_X], [gesture])
-
-dnl input extension disabled currently in xcb as xcb-input has some issues
-dnl remember to add xcb-xinput to EFL_DEPEND_PKG()
-dnl AC_DEFINE([ECORE_XCB_XINPUT], [1], [Build support for XCB input])
-
-dnl dri extension disabled currently in xcb
-dnl remember to add xcb-dri2 to EFL_DEPEND_PKG()
-dnl AC_DEFINE([ECORE_XCB_DRI], [1], [Build support for XCB dri])
-
- EFL_EVAL_PKGS([ECORE_X])
- EFL_CHECK_FUNCS([ECORE_X], [dlopen iconv])
-
- HAVE_ECORE_X_BACKEND="HAVE_ECORE_X_XCB"
-fi
-
EFL_ADD_LIBS([ECORE_X], [${ECORE_X_LIBS}])
AC_SUBST([HAVE_ECORE_X_BACKEND])
@@ -4357,7 +4201,6 @@ AC_SUBST([HAVE_ECORE_X_BACKEND])
EFL_LIB_END_OPTIONAL([Ecore_X])
AM_CONDITIONAL([HAVE_ECORE_X_XLIB], [test "${want_x11_xlib}" = "yes"])
-AM_CONDITIONAL([HAVE_ECORE_X_XCB], [test "${want_x11_xcb}" = "yes"])
#### End of Ecore_X
@@ -4610,7 +4453,6 @@ AM_CONDITIONAL([BUILD_ECORE_EVAS_WIN32],
ECORE_EVAS_MODULE([software-x11], [${want_x11_any}])
have_ecore_evas_software_xlib="no"
-have_ecore_evas_software_xcb="no"
if test "x$have_ecore_evas_software_x11" = "xyes" ; then
have_ecore_evas_software_xlib=${have_evas_engine_software_xlib}
if test "x${have_ecore_evas_software_xlib}" = "xstatic"; then
@@ -4619,13 +4461,6 @@ if test "x$have_ecore_evas_software_x11" = "xyes" ; then
if test "x${have_ecore_evas_software_xlib}" = "xyes"; then
AC_DEFINE([BUILD_ECORE_EVAS_SOFTWARE_XLIB], [1], [Evas Software Xlib Engine Support])
fi
- have_ecore_evas_software_xcb=${have_evas_engine_software_xcb}
- if test "x$have_ecore_evas_software_xcb" = "xstatic"; then
- have_ecore_evas_software_xcb="yes"
- fi
- if test "x$have_ecore_evas_software_xcb" = "xyes"; then
- AC_DEFINE([BUILD_ECORE_EVAS_SOFTWARE_XCB], [1], [Evas Software XCB Engine Support])
- fi
fi
# XXX TODO: ecore_evas_opengl_x11
@@ -4633,39 +4468,17 @@ fi
ECORE_EVAS_MODULE([opengl-x11], [${want_x11_any_opengl}])
have_ecore_evas_opengl_xlib="no"
-have_ecore_evas_opengl_xcb="no"
if test "x${have_ecore_evas_opengl_x11}" = "xyes" || test "x${have_ecore_evas_opengl_x11}" = "xstatic" ; then
have_ecore_evas_opengl_xlib=${have_evas_engine_gl_xlib}
if test "x${have_ecore_evas_opengl_xlib}" = "xyes" ; then
AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_XLIB], [1], [OpenGL Xlib rendering backend])
fi
-
-# opengl does not work with xcb (yet)
- have_ecore_evas_opengl_xcb=${have_evas_engine_gl_xcb}
- if test "x${have_ecore_evas_opengl_xcb}" = "xstatic"; then
- have_ecore_evas_opengl_xcb="yes"
- fi
- if test "x${have_ecore_evas_opengl_xcb}" = "xyes"; then
- PKG_CHECK_MODULES([XCB_X11],
- [x11-xcb],
- [
- have_ecore_x_opengl_xcb="yes"
- requirements_ecore_x="x11-xcb ${requirements_ecore_x}"
- AC_DEFINE([BUILD_ECORE_X_OPENGL_XCB], [1], [Build support for XCB-based OpenGL])
- AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_XCB], [1], [OpenGL XCB rendering backend])
- ],
- [have_ecore_x_opengl_xcb="no"])
- else
- have_ecore_x_opengl_xcb="no"
- AC_MSG_NOTICE([XCB-based OpenGL explicitly disabled])
- fi
fi
build_ecore_evas_x11="no"
build_ecore_evas_vnc="no"
if test "x$have_ecore_evas_software_x11" = "xyes" || \
- test "x$have_ecore_evas_opengl_x11" = "xyes" || \
- test "x$have_ecore_evas_software_xcb" = "xyes"; then
+ test "x$have_ecore_evas_opengl_x11" = "xyes"; then
AC_DEFINE([BUILD_ECORE_EVAS_X11], [1], [Support for X Window Engines in Ecore_Evas])
build_ecore_evas_x11="yes"
if test "$want_vnc_server" = "yes"; then
@@ -6062,27 +5875,6 @@ if test -n "$CFOPT_WARNING"; then
echo "==-- WARNING --=="
echo ""
echo "_____________________________________________________________________"
- if test "x${with_x11}" = "xxcb"; then
- echo "_____________________________________________________________________"
- echo "You have chosen to use XCB instead of Xlib. It is a myth that XCB"
- echo "is amazingly faster than Xlib (when used sensibly). It can be"
- echo "faster in a few corner cases on startup of an app, but it comes"
- echo "with many downsides. One of those is more complex code inside"
- echo "ecore_x, which is far less tested in XCB mode than Xlib. Also"
- echo "the big catch is that OpenGL support basically requires Xlib anyway"
- echo "so if you want OpenGL in X11, you need Xlib regardless and so you"
- echo "gain nothing really in terms of speed and no savings in memory"
- echo "because Xlib is still linked, loaded and used, BUT instead you"
- echo "have OpenGL drivers working with an hybrid XCB/Xlib (mostly XCB)"
- echo "toolkit and this is basically never tested by anyone working on"
- echo "the OpenGL drivers, so you will have bugs. Do not enable XCB"
- echo "and use OpenGL. XCB is only useful if you wish to shave a few Kb"
- echo "off the memory footprint of a whole system and live with less"
- echo "tested code, and possibly unimplemented features in ecore_x. To"
- echo "remove the XCB setup, remove the --with-x11=xcb option to"
- echo "configure."
- echo "_____________________________________________________________________"
- fi
if test "x${want_physics}" = "xno"; then
echo "_____________________________________________________________________"
echo "You have chosen to disable physics support. This disables lots of"
diff --git a/m4/evas_check_engine.m4 b/m4/evas_check_engine.m4
index a7e00851ec..4ab7e4cfa0 100644
--- a/m4/evas_check_engine.m4
+++ b/m4/evas_check_engine.m4
@@ -123,167 +123,6 @@ pthread_create(NULL, NULL, NULL, NULL);
])
])
-dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-
-AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB],
-[
-
-requirement=""
-have_dep="no"
-evas_engine_[]$1[]_cflags=""
-evas_engine_[]$1[]_libs=""
-
-PKG_CHECK_EXISTS([xcb xcb-shm xcb-image >= 0.2.1 pixman-1],
- [
- have_dep="yes"
- requirement="xcb xcb-shm xcb-image >= 0.2.1 pixman-1"
- ],
- [have_dep="no"])
-
-if test "x${have_dep}" = "xyes" ; then
- if test "x$3" = "xstatic" ; then
- requirements_pc_evas="${requirement} ${requirements_pc_evas}"
- requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}"
- else
- PKG_CHECK_MODULES([XCB], [${requirement}])
- evas_engine_[]$1[]_cflags="${XCB_CFLAGS}"
- evas_engine_[]$1[]_libs="${XCB_LIBS}"
- fi
-fi
-
-AC_SUBST([evas_engine_$1_cflags])
-AC_SUBST([evas_engine_$1_libs])
-
-AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5])
-
-])
-
-
-dnl use: EVAS_CHECK_ENGINE_DEP_GL_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
-
-AC_DEFUN([EVAS_CHECK_ENGINE_DEP_GL_XCB],
-[
-
-requirement=""
-
-EFL_FIND_X(evas_engine_[]$1, [GL/gl.h],
- [X11 XCreateColormap Xrender XRenderCreatePicture],
- [
- CFLAGS_save="$CFLAGS"
- CFLAGS="$CFLAGS $evas_engine_[]$1[]_cflags"
- CPPFLAGS_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $evas_engine_[]$1[]_cflags"
- AC_CHECK_HEADER([GL/glext.h],
- [have_dep="yes"],
- [have_dep="no"],
- [
-#include <GL/gl.h>
-#include <GL/glext.h>
-#include <GL/glx.h>
- ])
- CPPFLAGS=$CPPFLAGS_save
- CFLAGS=$CFLAGS_save
-
- gl_pt_lib="";
- have_gl_pt="no"
-
- AC_MSG_CHECKING([whether pthread_create() is supported])
- CFLAGS_save="${CFLAGS}"
- CFLAGS="${CFLAGS} -pthread"
- LIBS_save="${LIBS}"
- LIBS="${LIBS} -pthread"
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[
-#include <pthread.h>
- ]],
- [[
-pthread_create(NULL, NULL, NULL, NULL);
- ]])],
- [have_gl_pt="yes"],
- [have_gl_pt="no"])
- CFLAGS=${CFLAGS_save}
- LIBS=${LIBS_save}
- AC_MSG_RESULT([${have_gl_pt}])
-
- if test "x$have_gl_pt" = "xyes" ; then
- gl_pt_lib=" -pthread"
- fi
-
- if test "x$have_dep" = "xyes" ; then
- LIBS_save="$LIBS"
- LIBS="$LIBS $evas_engine_[]$1[]_libs"
- AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"], [-lm $gl_pt_lib])
- LIBS="$LIBS_save"
- fi
- ],[
- have_dep=no
- ])
-
-PKG_CHECK_EXISTS([x11-xcb xcb xcb-glx xcb-render xcb-renderutil],
- [
- have_dep="yes"
- requirement="x11-xcb xcb xcb-glx xcb-render xcb-renderutil"
- ],
- [have_dep="no"])
-
-if test "x${have_dep}" = "xyes" ; then
- if test "x$3" = "xstatic" ; then
- requirements_pc_evas="${requirement} ${requirements_pc_evas}"
- requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}"
- else
- PKG_CHECK_MODULES([XCB_GL], [${requirement}])
- fi
-fi
-
-if test "x${with_opengl}" = "xes" ; then
- have_dep=no
-fi
-
-if test "x${have_dep}" = "xyes" ; then
- evas_engine_[]$1[]_cflags="$evas_engine_[]$1[]_cflags $XCB_GL_CFLAGS"
- evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs $XCB_GL_LIBS -lGL $gl_pt_lib"
- evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGL $gl_pt_lib"
-else
- CFLAGS_save="$CFLAGS"
- CFLAGS="$CFLAGS $evas_engine_[]$1[]_cflags"
- CPPFLAGS_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $evas_engine_[]$1[]_cflags"
- AC_CHECK_HEADER([GLES2/gl2.h],
- [have_egl="yes"],
- [have_egl="no"],
- [
-#include <GLES2/gl2.h>
-#include <GLES2/gl2ext.h>
-#include <EGL/egl.h>
- ])
- CPPFLAGS=$CPPFLAGS_save
- CFLAGS=$CFLAGS_save
- if test "x${have_egl}" = "xyes" ; then
- LIBS_save="$LIBS"
- LIBS="$LIBS $evas_engine_[]$1[]_libs"
- AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL -lm $gl_pt_lib)
- if test "x${have_glesv2}" = "xyes" ; then
- evas_engine_[]$1[]_cflags="$evas_engine_[]$1[]_cflags $XCB_GL_CFLAGS"
- evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs $XCB_GL_LIBS -lGLESv2 -lEGL -lm $gl_pt_lib"
- evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGLESv2 -lm $gl_pt_lib"
- have_dep="yes"
- AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support])
- gles_variety_sgx="yes"
- fi
- fi
-fi
-
-if test "x$3" = "xstatic" && test "x${have_dep}" = "xyes" ; then
- requirements_libs_evas="${evas_engine_[]$1[]_libs} ${requirements_libs_evas}"
- requirements_pc_evas="${requirement} ${requirements_pc_evas}"
- requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}"
-fi
-
-AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5])
-
-])
-
-
dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI],
diff --git a/pc/evas-opengl-x11.pc.in b/pc/evas-opengl-x11.pc.in
index 2cb1ec264e..753e7900a5 100644
--- a/pc/evas-opengl-x11.pc.in
+++ b/pc/evas-opengl-x11.pc.in
@@ -3,4 +3,3 @@ Description: Evas OpenGL X11 engine
Version: @VERSION@
Xlib=@have_evas_engine_gl_xlib@
-XCB=@have_evas_engine_gl_xcb@
diff --git a/pc/evas-software-x11.pc.in b/pc/evas-software-x11.pc.in
index b32556c7da..a92d072add 100644
--- a/pc/evas-software-x11.pc.in
+++ b/pc/evas-software-x11.pc.in
@@ -3,4 +3,3 @@ Description: Evas software X11 engine
Version: @VERSION@
Xlib=@have_evas_engine_software_xlib@
-XCB=@have_evas_engine_software_xcb@
diff --git a/po/ca.po b/po/ca.po
index 40b38f08b2..10e5ffce91 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-02-10 09:34+0000\n"
"Last-Translator: JoanColl <Unknown>\n"
"Language-Team: Catalan\n"
@@ -143,67 +143,67 @@ msgstr "no s'ha definit la llicència.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERROR: opció desconeguda --%s, s'ha ignorat.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERROR: l'opció --%s requereix un argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERROR: opció desconeguda -%c, s'ha ignorat.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERROR: L'opció -%c requereix un argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERROR: es requereix argument posicional %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERROR: acció no permesa %d per argument posicional %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERROR: no s'ha proporcionat cap analitzador.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERROR: no s'ha proporcionat cap valor.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERROR: no s'ha proporcionat cap argument.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERROR: s'han trobat opcions no vàlides."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Miri --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Miri -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERROR: arguments posicionals no vàlids."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERROR: valor geomètric incorrecte '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERROR: tamany incorrecte '%s'\n"
diff --git a/po/cs.po b/po/cs.po
index 6d944099c5..1d196b4e7e 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-05-22 22:44+0200\n"
"Last-Translator: Tomáš Čech <sleep_walker@suse.cz>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@@ -145,68 +145,68 @@ msgstr "nebyla definována licence.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "CHYBA: neznámá volba --%s, ignoruji.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "CHYBA: volba --%s vyžaduje argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "CHYBA: neznámá volba -%c, ignoruji.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "CHYBA: volba -%c vyžaduje argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "CHYBA: volba -%c vyžaduje argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "CHYBA: nebyl poskytnut parser.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "CHYBA: nebyly poskytnuty hodnoty.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "CHYBA: nebyly poskytnuty argumenty.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "CHYBA: nalezeny neplatné volby."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Viz --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Viz -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "CHYBA: nalezeny neplatné volby."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "CHYBA: neplatná hodnota geometrie '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "CHYBA: neplatná hodnota velikosti '%s'\n"
diff --git a/po/de.po b/po/de.po
index 838aec0339..cec88c9fe4 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2011-02-25 20:22+0100\n"
"Last-Translator: Fabian Nowak <timystery@arcor.de>\n"
"Language-Team: German\n"
@@ -143,68 +143,68 @@ msgstr "es wurde keine Lizenz angegeben.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "FEHLER: Unbekannte Option --%s, ignoriert\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "FEHLER: Option --%s benötigt ein Argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "FEHLER: Unbekannte Option -%c, ignoriert\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "FEHLER: Option -%c benötigt ein Argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "FEHLER: Option -%c benötigt ein Argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "FEHLER: Kein Parser bereitgestellt.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "FEHLER: Keine Werte bereitgestellt.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "FEHLER: Keine Argumente bereitgestellt.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "FEHLER: Ungültige Optionen gefunden."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Siehe --%s\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Siehe -%c\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "FEHLER: Ungültige Optionen gefunden."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "FEHLER: Falscher Geometriewert \"%s\"\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "FEHLER: Falscher Größenwert \"%s\"\n"
diff --git a/po/el.po b/po/el.po
index 6915edb083..3506e52a98 100644
--- a/po/el.po
+++ b/po/el.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2012-12-19 15:58+0200\n"
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
"Language-Team: Ελληνικά, Σύγχρονα <opensuse-translation-el@opensuse.org>\n"
@@ -146,68 +146,68 @@ msgstr "δεν έχει οριστεί άδεια.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή --%s, αγνοήθηκε.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ΣΦΑΛΜΑ: η επιλογή --%s απαιτεί μια παράμετρο!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή -%c, αγνοήθηκε.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ΣΦΑΛΜΑ: δεν παρέχεται αναλυτής.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ΣΦΑΛΜΑ: δεν έχουν δοθεί τιμές.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ΣΦΑΛΜΑ:δεν έχουν δοθεί παράμετροι.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Δείτε --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Δείτε -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ΣΦΑΛΜΑ: μη έγκυρη γεωμετρική τιμή '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ΣΦΑΛΜΑ: μη έγκυρη τιμή μεγέθους '%s'\n"
diff --git a/po/eo.po b/po/eo.po
index 97340bffbc..ae65f90601 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2013-11-05 18:59+0000\n"
"Last-Translator: Eliovir <Unknown>\n"
"Language-Team: Esperanto <eo@li.org>\n"
@@ -142,67 +142,67 @@ msgstr "neniu permesilo estas difinita.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERARO: nekonata opcio --%s. Ignorita.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERARO: opcio --%s postulas argumenton!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERARO: nekonata opcio -%c. Ignorata.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERARO: opcio -%c postulas argumenton!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERARO: nepra poziciaj argumento %s mankas.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERARO: neeltena tipo de agado %d por pozicia argumento %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERARO: neniu sintaksa analizilo provizita.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERARO: neniu valoro provizita.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERARO: neniu argumento provizita.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERARO: nevalidaj opcioj trovitaj."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Vidu --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Vidu -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERARO: nevalida poziciaj argumentoj trovitaj."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERARO: nekorekta geometria valoro '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERARO: nekorekta valoro de grando '%s'\n"
diff --git a/po/es.po b/po/es.po
index b9ff6e3b7e..d44249e69a 100644
--- a/po/es.po
+++ b/po/es.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-05-03 18:19+0100\n"
"Last-Translator: Adrián Arévalo <adri58@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@@ -142,67 +142,67 @@ msgstr "no se definió la licencia.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERROR: opción desconocida --%s, ignorada.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERROR: La opción --%s requiere un argumento!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERROR: opción desconocida -%c, ignorada.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERROR: La opción -%c requiere un argumento!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERROR: Falta un argumento posicional requerido %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERROR: tipo de acción %d no permitido para argumento posicional %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERROR: no se proporcionó ningún parser.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERROR: no se proporcionó ningún valor.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERROR: no se proporcionó ningún argumento.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERROR: opciones inválidas."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Vea --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Vea -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERROR: argumentos posicionales inválidos encontrados."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERROR: valor geométrico incorrecto '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERROR: tamaño incorrecto '%s'\n"
diff --git a/po/fi.po b/po/fi.po
index 31004e4cee..95227eb7b4 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-08-31 15:13+0000\n"
"Last-Translator: Kai Huuhko <kai.huuhko@gmail.com>\n"
"Language-Team: Finnish <fi@li.org>\n"
@@ -142,67 +142,67 @@ msgstr "lisenssiä ei määritelty.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "VIRHE: tuntematon optio --%s, jätetty huomioimatta.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "VIRHE: optio --%s tarvitsee argumentin!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "VIRHE: tuntematon optio -%c, jätetty huomioimatta.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "VIRHE: optio -%c tarvitsee argumentin\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "VIRHE: puuttuva pakollinen sija-argumentti %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "VIRHE: toimintotyyppi %d ei ole tuettu sija-argumentille %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "VIRHE: jäsennintä ei annettu.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "VIRHE: yhtään arvoa ei annettu.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "VIRHE: yhtään argumenttia ei annettu.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "VIRHE: virheellisiä optioita löydetty."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Katso --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Katso -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "VIRHE: virheellisiä sija-argumentteja löydetty."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "VIRHE: virheellinen geometrinen arvo '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "VIRHE: virheellinen koon arvo '%s'\n"
diff --git a/po/fr.po b/po/fr.po
index 421b9b8723..e3acb6473b 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-05-25 20:18+0000\n"
"Last-Translator: Eliovir <Unknown>\n"
"Language-Team: French <sansgourou@gmail.com>\n"
@@ -148,67 +148,67 @@ msgstr "aucune licence n’est définie.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERREUR : option inconnue --%s, non prise en compte.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERREUR : l’option --%s requiert un argument !\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERREUR : option inconnue -%c, non prise en compte.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERREUR : l’option -%c requiert un argument !\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERREUR : aucun analyseur n’est fourni.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERREUR : aucune valeur n’est fournie.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERREUR : aucun argument n’est fourni.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERREUR : options non valides détectées."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Voir --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Voir -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERREUR : valeur géométrique incorrecte « %s »\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERREUR : valeur de taille incorrecte « %s »\n"
diff --git a/po/gl.po b/po/gl.po
index b262ac9d9f..fb7b63efe9 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-05-24 08:39+0000\n"
"Last-Translator: Kaptan <khanyux@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
@@ -141,67 +141,67 @@ msgstr "non se definiu a licenza.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERRO: opción descoñecida --%s, ignorada.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERRO: opción --%s require un argumento!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERRO: opción descoñecida -%c, ignorada.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERRO: opción -%c require un argumento!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERRO: non se forneceu ningún procesador.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERRO: non se forneceu ningún valor.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERRO: non se forneceu ningún argumento.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERRO: atopadas opcións inválidas."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Consulte --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Consulte -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERRO: valor xeométrico incorrecto '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERRO: valor do tamaño incorrecto '%s'\n"
diff --git a/po/hu.po b/po/hu.po
index 5df53c4119..852234dd29 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 1.8.2\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-01-29 15:27+0100\n"
"Last-Translator: rezso <rezso@rezso.net>\n"
"Language-Team: General\n"
@@ -142,68 +142,68 @@ msgstr "Nincs definiált licenc.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "HIBA: ismeretlen opció: --%s, figyelmen kívül hagyva.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "HIBA: --%s opció argumentumot igényel.\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "HIBA: ismeretlen opció: -%c, figyelmen kívül hagyva.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "HIBA: -%c opció argumentumot igényel.\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "HIBA: -%c opció argumentumot igényel.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "HIBA: hiányzó parser.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "HIBA: hiányzó értékek.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "HIBA: hiányzó argumentumok.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "HIBA: érvénytelen opciók találhatók."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Lásd --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Lásd -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "HIBA: érvénytelen opciók találhatók."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "HIBA: helytelen geometria érték: '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "HIBA: helytelen méret érték: '%s'\n"
diff --git a/po/it.po b/po/it.po
index 7efa1032f7..1ddace687c 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-06-11 14:19+0200\n"
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
"Language-Team: General\n"
@@ -140,68 +140,68 @@ msgstr "nessuna licenza definita.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERRORE: opzione sconosciuta --%s, ignorata.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERRORE: l'opzione --%s richiede un argomento!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERRORE: opzione sconosciuta -%c, ignorata.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERRORE: l'opzione -%c richiede un argomento!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERRORE: manca l'argomento posizionale %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
"ERRORE: azione di tipo %d non supportata per argomento posizionale %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERRORE: nessun parser fornito.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERRORE: nessun valore fornito.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERRORE: nessun argomento fornito.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERRORE: trovate opzioni non valide."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Vedere --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Vedere -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERRORE: trovati argomenti posizionali non validi."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERRORE: valore geometrico non corretto '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERRORE: valore dimensione non corretto '%s'\n"
diff --git a/po/ja.po b/po/ja.po
index 2024859f86..5afd236056 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Efl\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2012-06-24 17:10+0900\n"
"Last-Translator: Daichi Fukui<when.a.cat.sits.beside.you@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@@ -140,68 +140,68 @@ msgstr "ライセンスが定義されていません.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "エラー: 不明なオプション --%s, 無視.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "エラー: オプション --%s には引数が必要です.\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "エラー: 不明なオプション -%c, 無視.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "エラー: オプション -%c には引数が必要です.\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "エラー: オプション -%c には引数が必要です.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "エラー: パーサーがありません.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "エラー: 値がありません.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "エラー: 引数がありません.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "エラー: 不正なオプションです."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "--%s を参照.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "-%c を参照.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "エラー: 不正なオプションです."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "エラー: 不正なジオメトリ値 '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "エラー: 不正なsize値です '%s'\n"
diff --git a/po/ko.po b/po/ko.po
index 1285605ec1..af6a91a3f4 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Efl\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-11-10 01:01+0900\n"
"Last-Translator: Daniel Juyung Seo <seojuyung2@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@@ -145,67 +145,67 @@ msgstr "정의한 라이선스가 없습니다.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "오류: 알 수 없는 --%s 옵션을 무시합니다.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "오류: --%s 옵션에 인자가 필요합니다!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "오류: 알 수 없는 -%c 옵션을 무시합니다.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "오류: -%c 옵션에 인자가 필요합니다!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "오류: %s 옵션에 위치 인자가 필요합니다!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "오류: 지원하지 않는 동작 형식 %d의 위치 인자 %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "오류: 해석 프로그램이 존재하지 않습니다.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "오류: 값이 존재하지 않습니다.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "인자가 존재하지 않습니다.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "오류: 잘못된 옵션이 있습니다."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " --%s 옵션을 참조하십시오.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " -%c 옵션을 참조하십시오.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "오류: 잘못된 위치 인자가 있습니다."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "오류: '%s' 값의 좌표가 올바르지 않습니다\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "오류: '%s' 값의 크기가 올바르지 않습니다\n"
diff --git a/po/lt.po b/po/lt.po
index cf404eb1e8..f4d428b512 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-02-21 22:38+0000\n"
"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
"Language-Team: Lithuanian <lt@li.org>\n"
@@ -142,67 +142,67 @@ msgstr ""
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "KLAIDA: nežinomas parametras --%s, nepaisomas.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "KLAIDA: nežinomas parametras -%c, nepaisomas.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "KLAIDA: aptikti netinkami parametrai."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr ""
diff --git a/po/nl.po b/po/nl.po
index 4a10b382ff..d7d981bd5d 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2011-06-19 16:41+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@gmail.com>\n"
"Language-Team: Dutch <vistausss@gmail.com>\n"
@@ -144,68 +144,68 @@ msgstr "geen licentie was gedefinieerd.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "FOUT: onbekende optie --%s, genegeerd.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "FOUT: optie --%s vereist een argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "FOUT: onbekende opties -%c, genegeerd.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "FOUT: optie -%c vereist een argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "FOUT: optie -%c vereist een argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "FOUT: geen doorvoerder beschikbaar gesteld.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "FOUT: geen waarden beschikbaar gesteld.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "FOUT: geen argumenten beschibaar gesteld.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "FOUT: ongeldige opties gevonden."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Zie --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Zie -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "FOUT: ongeldige opties gevonden."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "Fout: foutieve wiskundige waarde '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "FOUT: foutieve grootte-waarden '%s'\n"
diff --git a/po/pl.po b/po/pl.po
index a3b3a613d2..8c54ab6c49 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2013-11-23 14:48+0100\n"
"Last-Translator: Konrad Makowski <poczta@konradmakowski.pl>\n"
"Language-Team: General\n"
@@ -143,68 +143,68 @@ msgstr "nie zdefiniowano licencji.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "BŁĄD: nieznana opcja --%s, zignorowano.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "BŁĄD: opcja --%s wymaga argumentu!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "BŁĄD: nieznana opcja --%c, zignorowano.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "BŁĄD: opcja --%c wymaga argumentu!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "BŁĄD: opcja --%c wymaga argumentu!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "BŁĄD: nie dostarczono parsera.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "BŁĄD: nie podano wartości.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "BŁĄD: nie podano argumentów.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "BŁĄD: wykryto błędne funkcje."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Zobacz --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Zobacz -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "BŁĄD: wykryto błędne funkcje."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "BŁĄD: nieprawidłowa wartość geometryczna \"%s\"\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "BŁĄD: nieprawdiłowy rozmiar wartości \"%s\"\n"
diff --git a/po/pt.po b/po/pt.po
index 7a9dab6a92..6f16727d30 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2013-11-05 14:11-0000\n"
"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
"Language-Team: General\n"
@@ -142,67 +142,67 @@ msgstr "licença não definida.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERRO: opção desconhecida --%s, ignorada.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERRO: a opção --%s requer um argumento!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERRO: opção desconhecida --%c, ignorada.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERRO: a opção --%c requer um argumento!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERRO: falta o argumento de posição necessário %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERRO: tipo de ação não suportado %d para o argumento de posição %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERRO: nenhum processador fornecido.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERRO: nenhum valor fornecido.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERRO: nenhum argumento fornecido.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERRO: encontradas opções inválidas."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Consulte --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Consulte -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERRO: encontrados argumentos de posição inválidos."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERRO: valor geométrico incorreto \"%s\"\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERRO: tamanho incorreto \"%s\"\n"
diff --git a/po/ru.po b/po/ru.po
index 2b6a5f9ab1..6d294051f5 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 1.11\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-02-07 15:16+0300\n"
"Last-Translator: Игорь Мурзов <garik@efl.so>\n"
"Language-Team: ru <enlightenment-intl@lists.sourceforge.net>\n"
@@ -143,67 +143,67 @@ msgstr ""
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr ""
diff --git a/po/sl.po b/po/sl.po
index 06a325a37a..ffb5e516ce 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Efl\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2016-09-21 17:00+0200\n"
"Last-Translator: Renato Rener <renato.rener@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@@ -141,67 +141,67 @@ msgstr "definirana ni bila nobena licenca.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "NAPAKA:·neznana možnost·--%s,·prezrto.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "NAPAKA:·možnost·--%s·zahteva argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "NAPAKA:·neznana možnost·-%c,·prezrto.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "NAPAKA:·možnost·-%c zahteva argument!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "NAPAKA: manjka zahtevani argument nahajališča %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "NAPAKA: nepodprto dejanje vrste %d za argumente nahajališča %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "NAPAKA:·ni podan razčlenjevalnik.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "NAPAKA::·ni podanih vrednosti.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "NAPAKA::·ni podanih argumentov.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "NAPAKA::·najdene nepravilne možnosti"
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "·Glej·--%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "·Glej·-%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "NAPAKA: nepravilni argumenti nahajališča najdeni."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "NAPAKA::·nepravilna geometrijska vrednost·'%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "NAPAKA::·nepravilna vrednost velikosti·'%s'\n"
diff --git a/po/sr.po b/po/sr.po
index cc0579a3e9..a7cd58ce01 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: а\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-01-31 14:06+0100\n"
"Last-Translator: Саша Петровић <salepetronije@gmail.com>\n"
"Language-Team: српски <xfce4@xfce4.org>\n"
@@ -145,67 +145,67 @@ msgstr "није одређена дозвола.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ГРЕШКА: непозната могућност --%s, занемарујем.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ГРЕШКА: могућност --%s захтева одредницу!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ГРЕШКА: непозната могућност -%c, занемарујем.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ГРЕШКА: могућност -%c захтева одредницу!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "Грешка: недостаје потребна одредница положаја %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "Грешка: неподржана радња врсте %d за одредницу положаја %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ГРЕШКА: није обезбеђен рашчлањивач.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ГРЕШКА: нема обезбеђених вредности.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ГРЕШКА: није обезбеђена одредница.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ГРЕШКА: нађена је неисправна могућност."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Погледајте --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Погледајте -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "Грешка: нађена је неисправна одредница положаја."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ГРЕШКА: неисправна геометријска вредност „%s“\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ГРЕШКА: неисправна вредност величине „%s“\n"
diff --git a/po/tr.po b/po/tr.po
index 04be26eb5c..855d7b57cd 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-04-18 13:35+0000\n"
"Last-Translator: Ali E.İMREK <alierkanimrek@gmail.com>\n"
"Language-Team: Turkish <tr@li.org>\n"
@@ -142,67 +142,67 @@ msgstr "lisans tanımlanmadı.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "HATA: bilinmeyen seçenek --%s, yoksayıldı.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "HATA: seçenek --%s bağımsız bir değişken gerektirir!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "HATA: bilinmeyen seçenek --%c, yoksayıldı.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "HATA: seçenek --%c bağımsız bir değişken gerektirir!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "HATA: konumsal argüman kayıp %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "HATA: %d desteklenmeyen eylem türü %s konumsal argümanı için.\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "HATA: ayrıştırıcı sağlanmadı.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "HATA: değerler sağlanmadı.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "HATA: bağımsız değişkenler sağlanmadı.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "HATA: geçersiz seçenekler bulundu."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Bakın --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Bakın -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "HATA: geçersiz konumsal argümanlar bulundu."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "HATA: yanlış geometri değeri '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "HATA: yanlış boyut değeri '%s'\n"
diff --git a/po/vi.po b/po/vi.po
index 3d63c1ca42..978d75e798 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-09-29 18:06+0900\n"
"Last-Translator: Thiep Ha <thiepha@gmail.com>\n"
"Language-Team: General\n"
@@ -143,67 +143,67 @@ msgstr "không định nghĩa giấy phép.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "LỖI: không rõ lựa chọn --%s, bỏ qua.\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "LỖI: lựa chọn --%s đòi hỏi một tham số!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "LỖI: không rõ lựa chọn -%c, bỏ qua.\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "LỖI: lựa chọn -%c đòi hỏi một tham số!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "LỖI: thiếu tham số vị trí được yêu cầu %s.\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "LỖI: kiểu hoạt động không được hỗ trợ %d cho tham số vị trí %s\n"
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "LỖI: không cung cấp bộ phân tích.\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "LỖI: không cung cấp giá trị.\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "LỖI: không cung cấp đối số.\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "LỖI: phát hiện các tùy chọn không hợp lệ."
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Xem --%s.\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Xem -%c.\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "LỖI: phát hiện các đối số vị trí không hợp lệ."
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "LỖI: giá trị hình học không đúng '%s'\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "LỖI: giá trị kích thước không đúng '%s'\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index b71cf8b45c..42b75888e7 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-10-28 09:22+0900\n"
+"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2012-12-22 03:55+0800\n"
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
"Language-Team: Chinese (simplified)\n"
@@ -142,68 +142,68 @@ msgstr "未定义许可证。\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "错误:未知选项 --%s,忽略。\n"
-#: src/lib/ecore/ecore_getopt.c:1703
+#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "错误:选项 --%s 需要一个参数!\n"
-#: src/lib/ecore/ecore_getopt.c:1745
+#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "错误:未知选项 -%c,忽略。\n"
-#: src/lib/ecore/ecore_getopt.c:1783
+#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "错误:选项 -%c 需要一个参数!\n"
-#: src/lib/ecore/ecore_getopt.c:1878
+#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "错误:选项 -%c 需要一个参数!\n"
-#: src/lib/ecore/ecore_getopt.c:1910
+#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
-#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
+#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "错误:未提供解析器。\n"
-#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
+#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "错误:未提供值。\n"
-#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
+#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "错误:未提供参数。\n"
-#: src/lib/ecore/ecore_getopt.c:2071
+#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "错误:无效的选项。"
-#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
+#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " 参看 --%s\n"
-#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
+#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " 参看 -%c\n"
-#: src/lib/ecore/ecore_getopt.c:2137
+#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "错误:无效的选项。"
-#: src/lib/ecore/ecore_getopt.c:2172
+#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "错误:不正确的形状 %s\n"
-#: src/lib/ecore/ecore_getopt.c:2190
+#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "错误:不正确的大小 %s\n"
diff --git a/src/Makefile_Ecore_X.am b/src/Makefile_Ecore_X.am
index 673cb704b4..7172114042 100644
--- a/src/Makefile_Ecore_X.am
+++ b/src/Makefile_Ecore_X.am
@@ -12,88 +12,41 @@ lib/ecore_x/Ecore_X_Atoms.h \
lib/ecore_x/Ecore_X_Cursor.h
lib_ecore_x_libecore_x_la_SOURCES = \
-lib/ecore_x/ecore_x_atoms_decl.h
-
-if HAVE_ECORE_X_XCB
-lib_ecore_x_libecore_x_la_SOURCES += \
-lib/ecore_x/xcb/ecore_xcb.c \
-lib/ecore_x/xcb/ecore_xcb_atoms.c \
-lib/ecore_x/xcb/ecore_xcb_extensions.c \
-lib/ecore_x/xcb/ecore_xcb_shape.c \
-lib/ecore_x/xcb/ecore_xcb_screensaver.c \
-lib/ecore_x/xcb/ecore_xcb_sync.c \
-lib/ecore_x/xcb/ecore_xcb_render.c \
-lib/ecore_x/xcb/ecore_xcb_randr.c \
-lib/ecore_x/xcb/ecore_xcb_xfixes.c \
-lib/ecore_x/xcb/ecore_xcb_composite.c \
-lib/ecore_x/xcb/ecore_xcb_cursor.c \
-lib/ecore_x/xcb/ecore_xcb_damage.c \
-lib/ecore_x/xcb/ecore_xcb_dnd.c \
-lib/ecore_x/xcb/ecore_xcb_dpms.c \
-lib/ecore_x/xcb/ecore_xcb_drawable.c \
-lib/ecore_x/xcb/ecore_xcb_e.c \
-lib/ecore_x/xcb/ecore_xcb_gc.c \
-lib/ecore_x/xcb/ecore_xcb_image.c \
-lib/ecore_x/xcb/ecore_xcb_input.c \
-lib/ecore_x/xcb/ecore_xcb_gesture.c \
-lib/ecore_x/xcb/ecore_xcb_mwm.c \
-lib/ecore_x/xcb/ecore_xcb_pixmap.c \
-lib/ecore_x/xcb/ecore_xcb_present.c \
-lib/ecore_x/xcb/ecore_xcb_region.c \
-lib/ecore_x/xcb/ecore_xcb_selection.c \
-lib/ecore_x/xcb/ecore_xcb_textlist.c \
-lib/ecore_x/xcb/ecore_xcb_events.c \
-lib/ecore_x/xcb/ecore_xcb_keymap.c \
-lib/ecore_x/xcb/ecore_xcb_keygrab.c \
-lib/ecore_x/xcb/ecore_xcb_netwm.c \
-lib/ecore_x/xcb/ecore_xcb_icccm.c \
-lib/ecore_x/xcb/ecore_xcb_window.c \
-lib/ecore_x/xcb/ecore_xcb_window_prop.c \
-lib/ecore_x/xcb/ecore_xcb_window_shape.c \
-lib/ecore_x/xcb/ecore_xcb_window_shadow.c \
-lib/ecore_x/xcb/ecore_xcb_xinerama.c \
-lib/ecore_x/xcb/ecore_xcb_error.c \
-lib/ecore_x/xcb/ecore_xcb_xtest.c \
-lib/ecore_x/xcb/ecore_xcb_vsync.c \
-lib/ecore_x/xcb/ecore_xcb_xdefaults.c \
-lib/ecore_x/xcb/ecore_xcb_private.h
-else
-lib_ecore_x_libecore_x_la_SOURCES += \
-lib/ecore_x/xlib/ecore_x.c \
-lib/ecore_x/xlib/ecore_x_dnd.c \
-lib/ecore_x/xlib/ecore_x_sync.c \
-lib/ecore_x/xlib/ecore_x_randr.c \
-lib/ecore_x/xlib/ecore_x_fixes.c \
-lib/ecore_x/xlib/ecore_x_damage.c \
-lib/ecore_x/xlib/ecore_x_composite.c \
-lib/ecore_x/xlib/ecore_x_error.c \
-lib/ecore_x/xlib/ecore_x_events.c \
-lib/ecore_x/xlib/ecore_x_icccm.c \
-lib/ecore_x/xlib/ecore_x_keygrab.c \
-lib/ecore_x/xlib/ecore_x_netwm.c \
-lib/ecore_x/xlib/ecore_x_mwm.c \
-lib/ecore_x/xlib/ecore_x_e.c \
-lib/ecore_x/xlib/ecore_x_selection.c \
-lib/ecore_x/xlib/ecore_x_window.c \
-lib/ecore_x/xlib/ecore_x_window_prop.c \
-lib/ecore_x/xlib/ecore_x_window_shape.c \
-lib/ecore_x/xlib/ecore_x_pixmap.c \
-lib/ecore_x/xlib/ecore_x_present.c \
-lib/ecore_x/xlib/ecore_x_gc.c \
-lib/ecore_x/xlib/ecore_x_xinerama.c \
-lib/ecore_x/xlib/ecore_x_screensaver.c \
-lib/ecore_x/xlib/ecore_x_dpms.c \
-lib/ecore_x/xlib/ecore_x_drawable.c \
-lib/ecore_x/xlib/ecore_x_cursor.c \
-lib/ecore_x/xlib/ecore_x_test.c \
-lib/ecore_x/xlib/ecore_x_atoms.c \
-lib/ecore_x/xlib/ecore_x_region.c \
-lib/ecore_x/xlib/ecore_x_image.c \
-lib/ecore_x/xlib/ecore_x_xi2.c \
-lib/ecore_x/xlib/ecore_x_vsync.c \
-lib/ecore_x/xlib/ecore_x_gesture.c \
-lib/ecore_x/xlib/ecore_x_private.h
-endif
+lib/ecore_x/ecore_x_atoms_decl.h \
+lib/ecore_x/ecore_x.c \
+lib/ecore_x/ecore_x_dnd.c \
+lib/ecore_x/ecore_x_sync.c \
+lib/ecore_x/ecore_x_randr.c \
+lib/ecore_x/ecore_x_fixes.c \
+lib/ecore_x/ecore_x_damage.c \
+lib/ecore_x/ecore_x_composite.c \
+lib/ecore_x/ecore_x_error.c \
+lib/ecore_x/ecore_x_events.c \
+lib/ecore_x/ecore_x_icccm.c \
+lib/ecore_x/ecore_x_keygrab.c \
+lib/ecore_x/ecore_x_netwm.c \
+lib/ecore_x/ecore_x_mwm.c \
+lib/ecore_x/ecore_x_e.c \
+lib/ecore_x/ecore_x_selection.c \
+lib/ecore_x/ecore_x_window.c \
+lib/ecore_x/ecore_x_window_prop.c \
+lib/ecore_x/ecore_x_window_shape.c \
+lib/ecore_x/ecore_x_pixmap.c \
+lib/ecore_x/ecore_x_present.c \
+lib/ecore_x/ecore_x_gc.c \
+lib/ecore_x/ecore_x_xinerama.c \
+lib/ecore_x/ecore_x_screensaver.c \
+lib/ecore_x/ecore_x_dpms.c \
+lib/ecore_x/ecore_x_drawable.c \
+lib/ecore_x/ecore_x_cursor.c \
+lib/ecore_x/ecore_x_test.c \
+lib/ecore_x/ecore_x_atoms.c \
+lib/ecore_x/ecore_x_region.c \
+lib/ecore_x/ecore_x_image.c \
+lib/ecore_x/ecore_x_xi2.c \
+lib/ecore_x/ecore_x_vsync.c \
+lib/ecore_x/ecore_x_gesture.c \
+lib/ecore_x/ecore_x_private.h
lib_ecore_x_libecore_x_la_CPPFLAGS = \
-I$(top_builddir)/src/lib/efl \
@@ -101,34 +54,9 @@ lib_ecore_x_libecore_x_la_CPPFLAGS = \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/ecore_x\"
-if HAVE_ECORE_X_XCB
-lib_ecore_x_libecore_x_la_CPPFLAGS += -I$(top_builddir)/src/lib/ecore_x/xcb
-endif
lib_ecore_x_libecore_x_la_LIBADD = @ECORE_X_LIBS@ @USE_ECORE_CON_LIBS@
lib_ecore_x_libecore_x_la_DEPENDENCIES = @ECORE_X_INTERNAL_LIBS@ @USE_ECORE_CON_INTERNAL_LIBS@
lib_ecore_x_libecore_x_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
-if HAVE_ECORE_X_XCB
-MAINTAINERCLEANFILES += \
-$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h \
-$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h
-
-BUILT_SOURCES += \
-$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
-
-$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h: $(KEYSYMDEFS) utils/ecore/makekeys$(EXEEXT)
- $(MKDIR_P) $(top_builddir)/src/lib/ecore_x/xcb
- $(top_builddir)/src/utils/ecore/makekeys $(KEYSYMDEFS) > $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h
- mv -f $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
-endif
-
-### Utils
-
-noinst_PROGRAMS += utils/ecore/makekeys
-
-utils_ecore_makekeys_SOURCES = utils/ecore/makekeys.c
-utils_ecore_makekeys_CFLAGS = @ECORE_X_CFLAGS@
-
endif
-EXTRA_DIST2 += utils/ecore/mkks.sh
diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index a7bb362814..f690335831 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -894,7 +894,7 @@ modules_evas_engines_gl_generic_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_evas_engines_gl_generic_module_la_LIBTOOLFLAGS = --tag=disable-static
if BUILD_ENGINE_GL_X11
-modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@
+modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@
endif
if BUILD_ENGINE_WAYLAND_EGL
modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_wayland_egl_cflags@
@@ -996,10 +996,8 @@ modules/evas/engines/gl_x11/evas_x_main.c \
modules/evas/engines/gl_x11/evas_engine.h
if EVAS_STATIC_BUILD_GL_X11
lib_evas_libevas_la_SOURCES += $(GL_X11_SOURCES)
-lib_evas_libevas_la_CPPFLAGS += \
-@evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@
-lib_evas_libevas_la_LIBADD += \
-@evas_engine_gl_xlib_libs@ @evas_engine_gl_xcb_libs@
+lib_evas_libevas_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@
+lib_evas_libevas_la_LIBADD += @evas_engine_gl_xlib_libs@
else
engineglx11pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH)
engineglx11pkg_LTLIBRARIES = modules/evas/engines/gl_x11/module.la
@@ -1014,12 +1012,10 @@ modules_evas_engines_gl_x11_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
-I$(top_srcdir)/src/lib/evas/include \
-I$(top_srcdir)/src/lib/evas/cserve2 \
@EVAS_CFLAGS@ \
-@evas_engine_gl_xlib_cflags@ \
-@evas_engine_gl_xcb_cflags@
+@evas_engine_gl_xlib_cflags@
modules_evas_engines_gl_x11_module_la_LIBADD = \
@USE_EVAS_LIBS@ \
-@evas_engine_gl_xlib_libs@ \
-@evas_engine_gl_xcb_libs@
+@evas_engine_gl_xlib_libs@
modules_evas_engines_gl_x11_module_la_DEPENDENCIES = \
@USE_EVAS_INTERNAL_LIBS@
modules_evas_engines_gl_x11_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
@@ -1169,22 +1165,6 @@ modules/evas/engines/software_x11/evas_xlib_dri_image.h
SOFTWARE_X11_CPPFLAGS += @evas_engine_software_xlib_cflags@
SOFTWARE_X11_LIBADD += @evas_engine_software_xlib_libs@
endif
-if BUILD_ENGINE_SOFTWARE_XCB
-SOFTWARE_X11_SOURCES += \
-modules/evas/engines/software_x11/evas_xcb_xdefaults.c \
-modules/evas/engines/software_x11/evas_xcb_outbuf.c \
-modules/evas/engines/software_x11/evas_xcb_buffer.c \
-modules/evas/engines/software_x11/evas_xcb_color.c \
-modules/evas/engines/software_x11/evas_xcb_main.c \
-modules/evas/engines/software_x11/evas_xcb_image.c \
-modules/evas/engines/software_x11/evas_xcb_outbuf.h \
-modules/evas/engines/software_x11/evas_xcb_buffer.h \
-modules/evas/engines/software_x11/evas_xcb_color.h \
-modules/evas/engines/software_x11/evas_xcb_xdefaults.h \
-modules/evas/engines/software_x11/evas_xcb_image.h
-SOFTWARE_X11_CPPFLAGS += @evas_engine_software_xcb_cflags@
-SOFTWARE_X11_LIBADD += @evas_engine_software_xcb_libs@
-endif
if EVAS_STATIC_BUILD_SOFTWARE_X11
lib_evas_libevas_la_SOURCES += $(SOFTWARE_X11_SOURCES)
lib_evas_libevas_la_CPPFLAGS += $(SOFTWARE_X11_CPPFLAGS)
diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h
index e504fc8f9e..e669422144 100644
--- a/src/lib/ecore_evas/Ecore_Evas.h
+++ b/src/lib/ecore_evas/Ecore_Evas.h
@@ -111,8 +111,8 @@ typedef enum _Ecore_Evas_Engine_Type
ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
ECORE_EVAS_ENGINE_XRENDER_X11,
ECORE_EVAS_ENGINE_OPENGL_X11,
- ECORE_EVAS_ENGINE_SOFTWARE_XCB,
- ECORE_EVAS_ENGINE_XRENDER_XCB,
+ ECORE_EVAS_ENGINE_SOFTWARE_XCB, /* @deprecated */
+ ECORE_EVAS_ENGINE_XRENDER_XCB, /* @deprecated */
ECORE_EVAS_ENGINE_SOFTWARE_GDI,
ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
ECORE_EVAS_ENGINE_DIRECT3D,
diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c
index cc7f02f29d..5a722a6a6f 100644
--- a/src/lib/ecore_evas/ecore_evas.c
+++ b/src/lib/ecore_evas/ecore_evas.c
@@ -261,13 +261,9 @@ ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine)
#else
return EINA_FALSE;
#endif
- case ECORE_EVAS_ENGINE_SOFTWARE_XCB:
-#ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
- return EINA_TRUE;
-#else
+ case ECORE_EVAS_ENGINE_SOFTWARE_XCB: /* @deprecated */
return EINA_FALSE;
-#endif
- case ECORE_EVAS_ENGINE_XRENDER_XCB:
+ case ECORE_EVAS_ENGINE_XRENDER_XCB: /* @deprecated */
return EINA_FALSE;
case ECORE_EVAS_ENGINE_SOFTWARE_GDI:
#ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
diff --git a/src/lib/ecore_evas/ecore_evas_module.c b/src/lib/ecore_evas/ecore_evas_module.c
index 320d035ee5..a587ee93aa 100644
--- a/src/lib/ecore_evas/ecore_evas_module.c
+++ b/src/lib/ecore_evas/ecore_evas_module.c
@@ -264,10 +264,6 @@ _ecore_evas_available_engines_get(void)
#endif
#ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
ADDENG("software_x11");
-#else
-# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
- ADDENG("software_x11");
-# endif
#endif
}
else if (!strcmp(name, "buffer"))
diff --git a/src/lib/ecore_x/Ecore_X.h b/src/lib/ecore_x/Ecore_X.h
index 7337ae20ce..e732fb9f33 100644
--- a/src/lib/ecore_x/Ecore_X.h
+++ b/src/lib/ecore_x/Ecore_X.h
@@ -72,8 +72,8 @@ EAPI extern Ecore_X_Version *ecore_x_version;
* @li @ref Ecore_X_Window_Parent_Group
* @li @ref Ecore_X_Window_Shape
*
- * When using the XLib backend, setting the ECORE_X_SYNC environment variable
- * will cause X calls to be run synchronously for easier debugging.
+ * The ECORE_X_SYNC environment variable will cause X calls to be run
+ * synchronously for easier debugging.
*/
typedef unsigned int Ecore_X_ID;
@@ -89,11 +89,7 @@ typedef struct _Ecore_X_Icon
#endif // ifndef _ECORE_X_WINDOW_PREDEF
typedef void *Ecore_X_Visual;
typedef Ecore_X_ID Ecore_X_Drawable;
-#ifdef HAVE_ECORE_X_XCB
-typedef Ecore_X_ID Ecore_X_GC;
-#else // ifdef HAVE_ECORE_X_XCB
typedef void *Ecore_X_GC;
-#endif /* HAVE_ECORE_X_XCB */
typedef Ecore_X_ID Ecore_X_Colormap;
typedef Ecore_X_ID Ecore_X_Time;
typedef Ecore_X_ID Ecore_X_Cursor;
@@ -1118,7 +1114,7 @@ struct Ecore_X_Event_Present_Idle
}; /**< @since 1.9 */
EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
- backend in use, if Xlib will be XEvent, if XCB will be xcb_generic_event_t.
+ backend in use, will be XEvent.
@warning avoid using it.
*/
EAPI extern int ECORE_X_EVENT_MOUSE_IN;
diff --git a/src/lib/ecore_x/xlib/ecore_x.c b/src/lib/ecore_x/ecore_x.c
index ae8b5bd2cf..ae8b5bd2cf 100644
--- a/src/lib/ecore_x/xlib/ecore_x.c
+++ b/src/lib/ecore_x/ecore_x.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_atoms.c b/src/lib/ecore_x/ecore_x_atoms.c
index 5276238fd4..5276238fd4 100644
--- a/src/lib/ecore_x/xlib/ecore_x_atoms.c
+++ b/src/lib/ecore_x/ecore_x_atoms.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_composite.c b/src/lib/ecore_x/ecore_x_composite.c
index 913839f481..913839f481 100644
--- a/src/lib/ecore_x/xlib/ecore_x_composite.c
+++ b/src/lib/ecore_x/ecore_x_composite.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_cursor.c b/src/lib/ecore_x/ecore_x_cursor.c
index 46ac42e59a..46ac42e59a 100644
--- a/src/lib/ecore_x/xlib/ecore_x_cursor.c
+++ b/src/lib/ecore_x/ecore_x_cursor.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_damage.c b/src/lib/ecore_x/ecore_x_damage.c
index c5906b4531..c5906b4531 100644
--- a/src/lib/ecore_x/xlib/ecore_x_damage.c
+++ b/src/lib/ecore_x/ecore_x_damage.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_dnd.c b/src/lib/ecore_x/ecore_x_dnd.c
index d673094807..d673094807 100644
--- a/src/lib/ecore_x/xlib/ecore_x_dnd.c
+++ b/src/lib/ecore_x/ecore_x_dnd.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_dpms.c b/src/lib/ecore_x/ecore_x_dpms.c
index a44825c4c7..a44825c4c7 100644
--- a/src/lib/ecore_x/xlib/ecore_x_dpms.c
+++ b/src/lib/ecore_x/ecore_x_dpms.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_drawable.c b/src/lib/ecore_x/ecore_x_drawable.c
index e0edbe2776..e0edbe2776 100644
--- a/src/lib/ecore_x/xlib/ecore_x_drawable.c
+++ b/src/lib/ecore_x/ecore_x_drawable.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_e.c b/src/lib/ecore_x/ecore_x_e.c
index 742d9d64e8..742d9d64e8 100644
--- a/src/lib/ecore_x/xlib/ecore_x_e.c
+++ b/src/lib/ecore_x/ecore_x_e.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_error.c b/src/lib/ecore_x/ecore_x_error.c
index ad3d32257a..ad3d32257a 100644
--- a/src/lib/ecore_x/xlib/ecore_x_error.c
+++ b/src/lib/ecore_x/ecore_x_error.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_events.c b/src/lib/ecore_x/ecore_x_events.c
index 0049fca25d..0049fca25d 100644
--- a/src/lib/ecore_x/xlib/ecore_x_events.c
+++ b/src/lib/ecore_x/ecore_x_events.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_fixes.c b/src/lib/ecore_x/ecore_x_fixes.c
index 012e458743..012e458743 100644
--- a/src/lib/ecore_x/xlib/ecore_x_fixes.c
+++ b/src/lib/ecore_x/ecore_x_fixes.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_gc.c b/src/lib/ecore_x/ecore_x_gc.c
index 6b8168bb3b..6b8168bb3b 100644
--- a/src/lib/ecore_x/xlib/ecore_x_gc.c
+++ b/src/lib/ecore_x/ecore_x_gc.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_gesture.c b/src/lib/ecore_x/ecore_x_gesture.c
index 15a9efdc1f..15a9efdc1f 100644
--- a/src/lib/ecore_x/xlib/ecore_x_gesture.c
+++ b/src/lib/ecore_x/ecore_x_gesture.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_icccm.c b/src/lib/ecore_x/ecore_x_icccm.c
index d335fd2dea..d335fd2dea 100644
--- a/src/lib/ecore_x/xlib/ecore_x_icccm.c
+++ b/src/lib/ecore_x/ecore_x_icccm.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_image.c b/src/lib/ecore_x/ecore_x_image.c
index 016323c175..016323c175 100644
--- a/src/lib/ecore_x/xlib/ecore_x_image.c
+++ b/src/lib/ecore_x/ecore_x_image.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_keygrab.c b/src/lib/ecore_x/ecore_x_keygrab.c
index 4ed762d39b..4ed762d39b 100644
--- a/src/lib/ecore_x/xlib/ecore_x_keygrab.c
+++ b/src/lib/ecore_x/ecore_x_keygrab.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_mwm.c b/src/lib/ecore_x/ecore_x_mwm.c
index c2d298bc81..c2d298bc81 100644
--- a/src/lib/ecore_x/xlib/ecore_x_mwm.c
+++ b/src/lib/ecore_x/ecore_x_mwm.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_netwm.c b/src/lib/ecore_x/ecore_x_netwm.c
index 83615e7419..83615e7419 100644
--- a/src/lib/ecore_x/xlib/ecore_x_netwm.c
+++ b/src/lib/ecore_x/ecore_x_netwm.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_pixmap.c b/src/lib/ecore_x/ecore_x_pixmap.c
index 30903c1cf4..30903c1cf4 100644
--- a/src/lib/ecore_x/xlib/ecore_x_pixmap.c
+++ b/src/lib/ecore_x/ecore_x_pixmap.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_present.c b/src/lib/ecore_x/ecore_x_present.c
index eb190b7560..eb190b7560 100644
--- a/src/lib/ecore_x/xlib/ecore_x_present.c
+++ b/src/lib/ecore_x/ecore_x_present.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_private.h b/src/lib/ecore_x/ecore_x_private.h
index 07c09fb16f..07c09fb16f 100644
--- a/src/lib/ecore_x/xlib/ecore_x_private.h
+++ b/src/lib/ecore_x/ecore_x_private.h
diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c b/src/lib/ecore_x/ecore_x_randr.c
index 03da85020c..f2288cc404 100644
--- a/src/lib/ecore_x/xlib/ecore_x_randr.c
+++ b/src/lib/ecore_x/ecore_x_randr.c
@@ -1966,8 +1966,6 @@ ecore_x_randr_crtc_info_free(Ecore_X_Randr_Crtc_Info *info)
* @param mode The mode added to the output.
* @return @c EINA_FALSE if output or mode equal Ecore_X_Randr_None, else
* @c EINA_TRUE.
- * Additionally, if xcb backend is used, the success of the addition is
- * reported back directly.
* @since 1.2.0
*/
EAPI Eina_Bool
diff --git a/src/lib/ecore_x/xlib/ecore_x_region.c b/src/lib/ecore_x/ecore_x_region.c
index 01f1fa76a3..01f1fa76a3 100644
--- a/src/lib/ecore_x/xlib/ecore_x_region.c
+++ b/src/lib/ecore_x/ecore_x_region.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_screensaver.c b/src/lib/ecore_x/ecore_x_screensaver.c
index 8c186ea45e..8c186ea45e 100644
--- a/src/lib/ecore_x/xlib/ecore_x_screensaver.c
+++ b/src/lib/ecore_x/ecore_x_screensaver.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_selection.c b/src/lib/ecore_x/ecore_x_selection.c
index ff0480d041..ff0480d041 100644
--- a/src/lib/ecore_x/xlib/ecore_x_selection.c
+++ b/src/lib/ecore_x/ecore_x_selection.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_sync.c b/src/lib/ecore_x/ecore_x_sync.c
index 0c7f546f1a..0c7f546f1a 100644
--- a/src/lib/ecore_x/xlib/ecore_x_sync.c
+++ b/src/lib/ecore_x/ecore_x_sync.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_test.c b/src/lib/ecore_x/ecore_x_test.c
index f55291069e..f55291069e 100644
--- a/src/lib/ecore_x/xlib/ecore_x_test.c
+++ b/src/lib/ecore_x/ecore_x_test.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_vsync.c b/src/lib/ecore_x/ecore_x_vsync.c
index ee43406ab5..ee43406ab5 100644
--- a/src/lib/ecore_x/xlib/ecore_x_vsync.c
+++ b/src/lib/ecore_x/ecore_x_vsync.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_window.c b/src/lib/ecore_x/ecore_x_window.c
index 444538a1c4..444538a1c4 100644
--- a/src/lib/ecore_x/xlib/ecore_x_window.c
+++ b/src/lib/ecore_x/ecore_x_window.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_window_prop.c b/src/lib/ecore_x/ecore_x_window_prop.c
index 043e50e391..043e50e391 100644
--- a/src/lib/ecore_x/xlib/ecore_x_window_prop.c
+++ b/src/lib/ecore_x/ecore_x_window_prop.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_window_shape.c b/src/lib/ecore_x/ecore_x_window_shape.c
index 987aa07cf8..987aa07cf8 100644
--- a/src/lib/ecore_x/xlib/ecore_x_window_shape.c
+++ b/src/lib/ecore_x/ecore_x_window_shape.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_xi2.c b/src/lib/ecore_x/ecore_x_xi2.c
index 089c2a7029..089c2a7029 100644
--- a/src/lib/ecore_x/xlib/ecore_x_xi2.c
+++ b/src/lib/ecore_x/ecore_x_xi2.c
diff --git a/src/lib/ecore_x/xlib/ecore_x_xinerama.c b/src/lib/ecore_x/ecore_x_xinerama.c
index 4a591f9753..4a591f9753 100644
--- a/src/lib/ecore_x/xlib/ecore_x_xinerama.c
+++ b/src/lib/ecore_x/ecore_x_xinerama.c
diff --git a/src/lib/ecore_x/xcb/ecore_xcb.c b/src/lib/ecore_x/xcb/ecore_xcb.c
deleted file mode 100644
index 9e08aef726..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb.c
+++ /dev/null
@@ -1,1605 +0,0 @@
-#include "ecore_xcb_private.h"
-#include <X11/Xlib-xcb.h>
-#include <dlfcn.h>
-
-/* local function prototypes */
-static int _ecore_xcb_shutdown(Eina_Bool close_display);
-static Eina_Bool _ecore_xcb_fd_handle(void *data, Ecore_Fd_Handler *hdlr EINA_UNUSED);
-static Eina_Bool _ecore_xcb_fd_handle_buff(void *data, Ecore_Fd_Handler *hdlr EINA_UNUSED);
-static Eina_Bool _ecore_xcb_idle_enter(void *data EINA_UNUSED);
-
-/* local variables */
-static int _ecore_xcb_init_count = 0;
-static int _ecore_xcb_grab_count = 0;
-static Ecore_Fd_Handler *_ecore_xcb_fd_handler = NULL;
-static xcb_generic_event_t *_ecore_xcb_event_buffered = NULL;
-static Ecore_Idle_Enterer *_ecore_xcb_idle_enterer = NULL;
-
-static Ecore_X_Version _version = { VMAJ, VMIN, VMIC, VREV };
-EAPI Ecore_X_Version *ecore_x_version = &_version;
-
-/* external variables */
-int _ecore_xcb_log_dom = -1;
-Ecore_X_Display *_ecore_xcb_display = NULL;
-Ecore_X_Connection *_ecore_xcb_conn = NULL;
-Ecore_X_Screen *_ecore_xcb_screen = NULL;
-Ecore_X_Atom _ecore_xcb_atoms_wm_protocol[ECORE_X_WM_PROTOCOL_NUM];
-double _ecore_xcb_double_click_time = 0.25;
-
-/**
- * @defgroup Ecore_X_Init_Group X Library Init and Shutdown Functions
- * @ingroup Ecore_X_Group
- *
- * Functions that start and shut down the Ecore X Library.
- */
-
-static int
-_ecore_x_init(const char *name, Ecore_X_Display *display)
-{
- char *gl = NULL;
- uint32_t mask, list[1];
-
- /* check if we have initialized already */
- if (++_ecore_xcb_init_count != 1)
- return _ecore_xcb_init_count;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- /* try to initialize eina */
- if (!eina_init()) return --_ecore_xcb_init_count;
-
- /* setup ecore_xcb log domain */
- _ecore_xcb_log_dom =
- eina_log_domain_register("ecore_x", ECORE_XCB_DEFAULT_LOG_COLOR);
- if (_ecore_xcb_log_dom < 0)
- {
- EINA_LOG_ERR("Cannot create Ecore Xcb log domain");
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
-
- /* try to initialize ecore */
- if (!ecore_init())
- {
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
-
- /* try to initialize ecore_event */
- if (!ecore_event_init())
- {
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- ecore_shutdown();
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
-
- /* NB: XLib has XInitThreads */
-
- /* check for env var which says we are not going to use GL @ all
- *
- * NB: This is done because if someone wants a 'pure' xcb implementation
- * of ecore_x, all they need do is export this variable in the environment
- * and ecore_x will not use xlib stuff at all.
- *
- * The upside is you can get pure xcb-based ecore_x (w/ all the speed), but
- * there is a down-side here in that you cannot get OpenGL without XLib :(
- */
- if ((gl = getenv("ECORE_X_NO_XLIB")))
- {
- /* we found the env var that says 'Yes, we are not ever gonna try
- * OpenGL so it is safe to not use XLib at all' */
-
- /* try to connect to the display server */
- _ecore_xcb_conn = xcb_connect(name, NULL);
- }
- else
- {
- /* env var was not specified, so we will assume that the user
- * may want opengl @ some point. connect this way for opengl to work */
- void *libxcb, *libxlib;
- Display *(*_real_display)(const char *display);
- xcb_connection_t *(*_real_connection)(Display * dpy);
- void (*_real_queue)(Display *dpy, enum XEventQueueOwner owner);
- int (*_real_close)(Display *dpy);
-#ifdef EVAS_FRAME_QUEUING
- Status (*_real_threads)(void);
-#endif
-
- /* want to dlopen here to avoid actual library linkage */
- libxlib = dlopen("libX11.so", (RTLD_LAZY | RTLD_GLOBAL));
- if (!libxlib)
- libxlib = dlopen("libX11.so.6", (RTLD_LAZY | RTLD_GLOBAL));
- if (!libxlib)
- libxlib = dlopen("libX11.so.6.3.0", (RTLD_LAZY | RTLD_GLOBAL));
- if (!libxlib)
- {
- ERR("Could not dlsym to libX11");
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- ecore_event_shutdown();
- ecore_shutdown();
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
-
- libxcb = dlopen("libX11-xcb.so", (RTLD_LAZY | RTLD_GLOBAL));
- if (!libxcb)
- libxcb = dlopen("libX11-xcb.so.1", (RTLD_LAZY | RTLD_GLOBAL));
- if (!libxcb)
- libxcb = dlopen("libX11-xcb.so.1.0.0", (RTLD_LAZY | RTLD_GLOBAL));
- if (!libxcb)
- {
- ERR("Could not dlsym to libX11-xcb");
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- ecore_event_shutdown();
- ecore_shutdown();
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
-
- _real_display = dlsym(libxlib, "XOpenDisplay");
- _real_close = dlsym(libxlib, "XCloseDisplay");
- _real_connection = dlsym(libxcb, "XGetXCBConnection");
- _real_queue = dlsym(libxcb, "XSetEventQueueOwner");
-#ifdef EVAS_FRAME_QUEUING
- _real_threads = dlsym(libxlib, "XInitThreads");
-#endif
-
- if (_real_display)
- {
-#ifdef EVAS_FRAME_QUEUING
- if (_real_threads) _real_threads();
-#endif
- _ecore_xcb_display = display ? display : _real_display(name);
- if (!_ecore_xcb_display)
- {
- ERR("Could not open Display via XLib");
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- ecore_event_shutdown();
- ecore_shutdown();
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
- if (_real_connection)
- _ecore_xcb_conn = _real_connection(_ecore_xcb_display);
- if (!_ecore_xcb_conn)
- {
- ERR("Could not get XCB Connection from XLib");
-
- if (_real_close) _real_close(_ecore_xcb_display);
-
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- ecore_event_shutdown();
- ecore_shutdown();
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
- if (_real_queue)
- _real_queue(_ecore_xcb_display, XCBOwnsEventQueue);
- }
- }
-
- if (xcb_connection_has_error(_ecore_xcb_conn))
- {
- CRI("XCB Connection has error");
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
- ecore_event_shutdown();
- ecore_shutdown();
- eina_shutdown();
- return --_ecore_xcb_init_count;
- }
-
- /* grab the default screen */
- _ecore_xcb_screen =
- xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn)).data;
-
- /* NB: This method of init/finalize extensions first, then atoms
- * Does end up being 2 round trips to X, BUT if we do extensions init then
- * atoms init first, and call the 'finalize' functions later, we end up
- * being slower, so it's a trade-off. This current method clocks in
- * around 0.003 for fetching atoms VS 0.010 for init both then finalize */
-
- /* prefetch extension data */
- _ecore_xcb_extensions_init();
-
- /* finalize extensions */
- _ecore_xcb_extensions_finalize();
-
- /* set keyboard autorepeat */
- mask = XCB_KB_AUTO_REPEAT_MODE;
- list[0] = XCB_AUTO_REPEAT_MODE_ON;
- xcb_change_keyboard_control(_ecore_xcb_conn, mask, list);
-
- /* setup xcb events */
- _ecore_xcb_events_init();
-
- /* setup xcb keymasks */
- _ecore_xcb_keymap_init();
-
- /* finalize xcb keymasks */
- _ecore_xcb_keymap_finalize();
-
- /* prefetch atoms */
- _ecore_xcb_atoms_init();
-
- /* finalize atoms */
- _ecore_xcb_atoms_finalize();
-
- /* icccm_init: dummy function */
- ecore_x_icccm_init();
-
- /* setup netwm */
- ecore_x_netwm_init();
-
- /* old e hints init: dummy function */
- ecore_x_e_init();
-
- _ecore_xcb_atoms_wm_protocol[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] =
- ECORE_X_ATOM_WM_DELETE_WINDOW;
- _ecore_xcb_atoms_wm_protocol[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] =
- ECORE_X_ATOM_WM_TAKE_FOCUS;
- _ecore_xcb_atoms_wm_protocol[ECORE_X_NET_WM_PROTOCOL_PING] =
- ECORE_X_ATOM_NET_WM_PING;
- _ecore_xcb_atoms_wm_protocol[ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST] =
- ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
-
- /* setup selection */
- _ecore_xcb_selection_init();
-
- /* setup dnd */
- _ecore_xcb_dnd_init();
-
- _ecore_xcb_idle_enterer =
- ecore_idle_enterer_add(_ecore_xcb_idle_enter, NULL);
-
- /* setup ecore fd handler */
- _ecore_xcb_fd_handler =
- ecore_main_fd_handler_add(xcb_get_file_descriptor(_ecore_xcb_conn),
- ECORE_FD_READ, _ecore_xcb_fd_handle,
- _ecore_xcb_conn, _ecore_xcb_fd_handle_buff,
- _ecore_xcb_conn);
-
- if (!_ecore_xcb_fd_handler)
- return _ecore_xcb_shutdown(EINA_TRUE);
-
- return _ecore_xcb_init_count;
-}
-
-/**
- * Initialize the X display connection to the given display.
- *
- * @param name Display target name. If @c NULL, the default display is
- * assumed.
- * @return The number of times the library has been initialized without
- * being shut down. 0 is returned if an error occurs.
- * @ingroup Ecore_X_Init_Group
- */
-EAPI int
-ecore_x_init(const char *name)
-{
- return _ecore_x_init(name, NULL);
-}
-
-EAPI int
-ecore_x_init_from_display(Ecore_X_Display *display)
-{
- EINA_SAFETY_ON_NULL_RETURN_VAL(display, 0);
- return _ecore_x_init(NULL, display);
-}
-
-/**
- * Shuts down the Ecore X library.
- *
- * In shutting down the library, the X display connection is terminated
- * and any event handlers for it are removed.
- *
- * @return The number of times the library has been initialized without
- * being shut down.
- * @ingroup Ecore_X_Init_Group
- */
-EAPI int
-ecore_x_shutdown(void)
-{
- return _ecore_xcb_shutdown(EINA_TRUE);
-}
-
-/**
- * Shuts down the Ecore X library.
- *
- * As ecore_x_shutdown, except do not close Display, only connection.
- *
- * @return The number of times the library has been initialized without
- * being shut down. 0 is returned if an error occurs.
- * @ingroup Ecore_X_Init_Group
- */
-EAPI int
-ecore_x_disconnect(void)
-{
- return _ecore_xcb_shutdown(EINA_FALSE);
-}
-
-/**
- * @defgroup Ecore_X_Flush_Group X Synchronization Functions
- * @ingroup Ecore_X_Group
- *
- * Functions that ensure that all commands that have been issued by the
- * Ecore X library have been sent to the server.
- */
-
-/**
- * Sends all X commands in the X Display buffer.
- * @ingroup Ecore_X_Flush_Group
- */
-EAPI void
-ecore_x_flush(void)
-{
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- CHECK_XCB_CONN;
- xcb_flush(_ecore_xcb_conn);
-}
-
-/**
- * Retrieves the Ecore_X_Screen handle used for the current X connection.
- * @return The current default screen.
- * @ingroup Ecore_X_Display_Attr_Group
- */
-EAPI Ecore_X_Screen *
-ecore_x_default_screen_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return (Ecore_X_Screen *)_ecore_xcb_screen;
-}
-
-EAPI Ecore_X_Connection *
-ecore_x_connection_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- CHECK_XCB_CONN;
- return (Ecore_X_Connection *)_ecore_xcb_conn;
-}
-
-/**
- * Return the last event time
- */
-EAPI Ecore_X_Time
-ecore_x_current_time_get(void)
-{
- return _ecore_xcb_events_last_time_get();
-}
-
-/**
- * Flushes the command buffer and waits until all requests have been
- * processed by the server.
- * @ingroup Ecore_X_Flush_Group
- */
-EAPI void
-ecore_x_sync(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- CHECK_XCB_CONN;
- free(xcb_get_input_focus_reply(_ecore_xcb_conn,
- xcb_get_input_focus_unchecked(_ecore_xcb_conn),
- NULL));
-}
-
-EAPI void
-ecore_x_grab(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- CHECK_XCB_CONN;
- _ecore_xcb_grab_count++;
- if (_ecore_xcb_grab_count == 1)
- xcb_grab_server(_ecore_xcb_conn);
-}
-
-EAPI void
-ecore_x_ungrab(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- CHECK_XCB_CONN;
- _ecore_xcb_grab_count--;
- if (_ecore_xcb_grab_count < 0) _ecore_xcb_grab_count = 0;
- if (_ecore_xcb_grab_count == 0)
- xcb_ungrab_server(_ecore_xcb_conn);
-}
-
-/**
- * Send client message with given type and format 32.
- *
- * @param win The window the message is sent to.
- * @param type The client message type.
- * @param mask The mask of the message to be sent.
- * @param d0 The client message data item 1
- * @param d1 The client message data item 2
- * @param d2 The client message data item 3
- * @param d3 The client message data item 4
- * @param d4 The client message data item 5
- *
- * @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
- */
-EAPI Eina_Bool
-ecore_x_client_message32_send(Ecore_X_Window win, Ecore_X_Atom type,
- Ecore_X_Event_Mask mask,
- long d0, long d1, long d2, long d3, long d4)
-{
- xcb_client_message_event_t ev;
- xcb_void_cookie_t cookie;
- xcb_generic_error_t *err;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = type;
- ev.data.data32[0] = (uint32_t)d0;
- ev.data.data32[1] = (uint32_t)d1;
- ev.data.data32[2] = (uint32_t)d2;
- ev.data.data32[3] = (uint32_t)d3;
- ev.data.data32[4] = (uint32_t)d4;
-
- cookie = xcb_send_event(_ecore_xcb_conn, 0, win, mask, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, cookie);
- if (err)
- {
- DBG("Problem Sending Event");
- DBG("\tType: %d", type);
- DBG("\tWin: %d", win);
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-/**
- * Send client message with given type and format 8.
- *
- * @param win The window the message is sent to.
- * @param type The client message type.
- * @param data Data to be sent.
- * @param len Number of data bytes, max @c 20.
- *
- * @return @c EINA_TRUE on success @c EINA_FALSE otherwise.
- */
-EAPI Eina_Bool
-ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_Atom type,
- const void *data, int len)
-{
- xcb_client_message_event_t ev;
- xcb_void_cookie_t cookie;
- xcb_generic_error_t *err;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 8;
- ev.window = win;
- ev.type = type;
- if (len > 20)
- len = 20;
- if (data && len > 0)
- memcpy(ev.data.data8, data, len);
- if (len < 20)
- memset(ev.data.data8 + len, 0, 20 - len);
-
- cookie = xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, cookie);
- if (err)
- {
- DBG("Problem Sending Event");
- DBG("\tType: %d", type);
- DBG("\tWin: %d", win);
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_mouse_down_send(Ecore_X_Window win, int x, int y, int b)
-{
- xcb_translate_coordinates_cookie_t cookie;
- xcb_translate_coordinates_reply_t *reply;
- xcb_button_press_event_t ev;
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
- Ecore_X_Window root = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- root = ecore_x_window_root_get(win);
- cookie = xcb_translate_coordinates(_ecore_xcb_conn, win, root, x, y);
- reply = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- memset(&ev, 0, sizeof(xcb_button_press_event_t));
-
- ev.response_type = XCB_BUTTON_PRESS;
- ev.event = win;
- ev.child = win;
- ev.root = root;
- ev.event_x = x;
- ev.event_y = y;
- ev.same_screen = 1;
- ev.state = 1 << b;
- ev.detail = b; // xcb uses detail for button
- ev.root_x = reply->dst_x;
- ev.root_y = reply->dst_y;
- ev.time = ecore_x_current_time_get();
- free(reply);
-
- vcookie = xcb_send_event(_ecore_xcb_conn, 1, win,
- XCB_EVENT_MASK_BUTTON_PRESS, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_mouse_up_send(Ecore_X_Window win, int x, int y, int b)
-{
- xcb_translate_coordinates_cookie_t cookie;
- xcb_translate_coordinates_reply_t *reply;
- xcb_button_release_event_t ev;
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
- Ecore_X_Window root = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- root = ecore_x_window_root_get(win);
- cookie = xcb_translate_coordinates(_ecore_xcb_conn, win, root, x, y);
- reply = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- memset(&ev, 0, sizeof(xcb_button_release_event_t));
-
- ev.response_type = XCB_BUTTON_RELEASE;
- ev.event = win;
- ev.child = win;
- ev.root = root;
- ev.event_x = x;
- ev.event_y = y;
- ev.same_screen = 1;
- ev.state = 0;
- ev.root_x = reply->dst_x;
- ev.root_y = reply->dst_y;
- ev.detail = b; // xcb uses detail for button
- ev.time = ecore_x_current_time_get();
- free(reply);
-
- vcookie = xcb_send_event(_ecore_xcb_conn, 1, win,
- XCB_EVENT_MASK_BUTTON_RELEASE, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_mouse_move_send(Ecore_X_Window win, int x, int y)
-{
- xcb_translate_coordinates_cookie_t cookie;
- xcb_translate_coordinates_reply_t *reply;
- xcb_motion_notify_event_t ev;
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
- Ecore_X_Window root = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- root = ecore_x_window_root_get(win);
- cookie = xcb_translate_coordinates(_ecore_xcb_conn, win, root, x, y);
- reply = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- memset(&ev, 0, sizeof(xcb_motion_notify_event_t));
-
- ev.response_type = XCB_MOTION_NOTIFY;
- ev.event = win;
- ev.child = win;
- ev.root = root;
- ev.event_x = x;
- ev.event_y = y;
- ev.same_screen = 1;
- ev.state = 0;
- ev.detail = 0; // xcb uses 'detail' for is_hint
- ev.root_x = reply->dst_x;
- ev.root_y = reply->dst_y;
- ev.time = ecore_x_current_time_get();
- free(reply);
-
- vcookie = xcb_send_event(_ecore_xcb_conn, 1, win,
- XCB_EVENT_MASK_POINTER_MOTION, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_mouse_in_send(Ecore_X_Window win, int x, int y)
-{
- xcb_translate_coordinates_cookie_t cookie;
- xcb_translate_coordinates_reply_t *reply;
- xcb_enter_notify_event_t ev;
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
- Ecore_X_Window root = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- root = ecore_x_window_root_get(win);
- cookie = xcb_translate_coordinates(_ecore_xcb_conn, win, root, x, y);
- reply = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- memset(&ev, 0, sizeof(xcb_enter_notify_event_t));
-
- ev.response_type = XCB_ENTER_NOTIFY;
- ev.event = win;
- ev.child = win;
- ev.root = root;
- ev.event_x = x;
- ev.event_y = y;
- ev.same_screen_focus = 1;
- ev.mode = XCB_NOTIFY_MODE_NORMAL;
- ev.detail = XCB_NOTIFY_DETAIL_NONLINEAR;
- /* ev.focus = 0; */
- ev.state = 0;
- ev.root_x = reply->dst_x;
- ev.root_y = reply->dst_y;
- ev.time = ecore_x_current_time_get();
- free(reply);
-
- vcookie = xcb_send_event(_ecore_xcb_conn, 1, win,
- XCB_EVENT_MASK_ENTER_WINDOW, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_mouse_out_send(Ecore_X_Window win, int x, int y)
-{
- xcb_translate_coordinates_cookie_t cookie;
- xcb_translate_coordinates_reply_t *reply;
- xcb_leave_notify_event_t ev;
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
- Ecore_X_Window root = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- root = ecore_x_window_root_get(win);
- cookie = xcb_translate_coordinates(_ecore_xcb_conn, win, root, x, y);
- reply = xcb_translate_coordinates_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- memset(&ev, 0, sizeof(xcb_leave_notify_event_t));
-
- ev.response_type = XCB_LEAVE_NOTIFY;
- ev.event = win;
- ev.child = win;
- ev.root = root;
- ev.event_x = x;
- ev.event_y = y;
- ev.same_screen_focus = 1;
- ev.mode = XCB_NOTIFY_MODE_NORMAL;
- ev.detail = XCB_NOTIFY_DETAIL_NONLINEAR;
- /* ev.focus = 0; */
- ev.state = 0;
- ev.root_x = reply->dst_x;
- ev.root_y = reply->dst_y;
- ev.time = ecore_x_current_time_get();
- free(reply);
-
- vcookie = xcb_send_event(_ecore_xcb_conn, 1, win,
- XCB_EVENT_MASK_LEAVE_WINDOW, (const char *)&ev);
-
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_keyboard_grab(Ecore_X_Window win)
-{
- xcb_grab_keyboard_cookie_t cookie;
- xcb_grab_keyboard_reply_t *reply;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie =
- xcb_grab_keyboard_unchecked(_ecore_xcb_conn, 0, win, XCB_CURRENT_TIME,
- XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
- reply = xcb_grab_keyboard_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
- free(reply);
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_keyboard_ungrab(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_ungrab_keyboard(_ecore_xcb_conn, XCB_CURRENT_TIME);
-}
-
-EAPI void
-ecore_x_pointer_xy_get(Ecore_X_Window win, int *x, int *y)
-{
- xcb_query_pointer_cookie_t cookie;
- xcb_query_pointer_reply_t *reply;
-
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
-// if (!win) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- if (x) *x = -1;
- if (y) *y = -1;
-
- cookie = xcb_query_pointer_unchecked(_ecore_xcb_conn, win);
- reply = xcb_query_pointer_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return;
- if (x) *x = reply->win_x;
- if (y) *y = reply->win_y;
- free(reply);
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_control_set(int accel_num, int accel_denom, int threshold)
-{
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- vcookie =
- xcb_change_pointer_control_checked(_ecore_xcb_conn,
- accel_num, accel_denom, threshold,
- 1, 1);
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_control_get(int *accel_num, int *accel_denom, int *threshold)
-{
- xcb_get_pointer_control_cookie_t cookie;
- xcb_get_pointer_control_reply_t *reply;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (accel_num) *accel_num = 0;
- if (accel_denom) *accel_denom = 0;
- if (threshold) *threshold = 0;
-
- cookie = xcb_get_pointer_control_unchecked(_ecore_xcb_conn);
- reply = xcb_get_pointer_control_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- if (accel_num) *accel_num = reply->acceleration_numerator;
- if (accel_denom) *accel_denom = reply->acceleration_denominator;
- if (threshold) *threshold = reply->threshold;
- free(reply);
-
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_mapping_set(unsigned char *map, int nmap)
-{
- xcb_set_pointer_mapping_cookie_t cookie;
- xcb_set_pointer_mapping_reply_t *reply;
- Eina_Bool ret = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_set_pointer_mapping_unchecked(_ecore_xcb_conn, nmap, map);
- reply = xcb_set_pointer_mapping_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- if (reply->status == XCB_MAPPING_STATUS_SUCCESS)
- ret = EINA_TRUE;
-
- free(reply);
- return ret;
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_mapping_get(unsigned char *map, int nmap)
-{
- xcb_get_pointer_mapping_cookie_t cookie;
- xcb_get_pointer_mapping_reply_t *reply;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (map) *map = 0;
- nmap = 0;
-
- cookie = xcb_get_pointer_mapping_unchecked(_ecore_xcb_conn);
- reply = xcb_get_pointer_mapping_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- nmap = xcb_get_pointer_mapping_map_length(reply);
- if (nmap <= 0)
- {
- free(reply);
- return EINA_FALSE;
- }
-
- if (map)
- {
- uint8_t *tmp;
- int i = 0;
-
- tmp = xcb_get_pointer_mapping_map(reply);
- for (i = 0; i < nmap; i++)
- map[i] = tmp[i];
- }
-
- free(reply);
- return EINA_TRUE;
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_grab(Ecore_X_Window win)
-{
- xcb_grab_pointer_cookie_t cookie;
- xcb_grab_pointer_reply_t *reply;
- uint16_t mask;
- Eina_Bool ret = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- mask = (XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE |
- XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
- XCB_EVENT_MASK_POINTER_MOTION);
-
- cookie = xcb_grab_pointer_unchecked(_ecore_xcb_conn, 0, win, mask,
- XCB_GRAB_MODE_ASYNC,
- XCB_GRAB_MODE_ASYNC,
- XCB_NONE, XCB_NONE, XCB_CURRENT_TIME);
- reply = xcb_grab_pointer_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- ret = (reply->status == XCB_GRAB_STATUS_SUCCESS) ? EINA_TRUE : EINA_FALSE;
-
- free(reply);
- return ret;
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_confine_grab(Ecore_X_Window win)
-{
- xcb_grab_pointer_cookie_t cookie;
- xcb_grab_pointer_reply_t *reply;
- uint16_t mask;
- Eina_Bool ret = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- mask = (XCB_EVENT_MASK_BUTTON_PRESS | XCB_EVENT_MASK_BUTTON_RELEASE |
- XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_LEAVE_WINDOW |
- XCB_EVENT_MASK_POINTER_MOTION);
-
- cookie = xcb_grab_pointer_unchecked(_ecore_xcb_conn, 0, win, mask,
- XCB_GRAB_MODE_ASYNC,
- XCB_GRAB_MODE_ASYNC,
- win, XCB_NONE, XCB_CURRENT_TIME);
- reply = xcb_grab_pointer_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
-
- ret = (reply->status == XCB_GRAB_STATUS_SUCCESS) ? EINA_TRUE : EINA_FALSE;
-
- free(reply);
- return ret;
-}
-
-EAPI void
-ecore_x_pointer_ungrab(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_ungrab_pointer(_ecore_xcb_conn, XCB_CURRENT_TIME);
-}
-
-EAPI Eina_Bool
-ecore_x_pointer_warp(Ecore_X_Window win, int x, int y)
-{
- xcb_void_cookie_t vcookie;
- xcb_generic_error_t *err;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- vcookie =
- xcb_warp_pointer_checked(_ecore_xcb_conn, XCB_NONE, win, 0, 0, 0, 0, x, y);
- err = xcb_request_check(_ecore_xcb_conn, vcookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-/**
- * Invoke the standard system beep to alert users
- *
- * @param percent The volume at which the bell rings. Must be in the range
- * [-100,+100]. If percent >= 0, the final volume will be:
- * base - [(base * percent) / 100] + percent
- * Otherwise, it's calculated as:
- * base + [(base * percent) / 100]
- * where @c base is the bell's base volume as set by XChangeKeyboardControl(3).
- *
- * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
- */
-EAPI Eina_Bool
-ecore_x_bell(int percent)
-{
- xcb_void_cookie_t cookie;
- xcb_generic_error_t *err;
-
- CHECK_XCB_CONN;
-
- // FIXME: Use unchecked version after development is ironed out
- cookie = xcb_bell_checked(_ecore_xcb_conn, percent);
- err = xcb_request_check(_ecore_xcb_conn, cookie);
- if (err)
- {
- _ecore_xcb_error_handle(err);
- free(err);
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_display_size_get(Ecore_X_Display *dsp EINA_UNUSED, int *w, int *h)
-{
- xcb_screen_t *screen;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- /* grab the default screen */
- screen = xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn)).data;
- if (w) *w = screen->width_in_pixels;
- if (h) *h = screen->height_in_pixels;
-}
-
-EAPI unsigned long
-ecore_x_display_black_pixel_get(Ecore_X_Display *dsp EINA_UNUSED)
-{
- xcb_screen_t *screen;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- /* grab the default screen */
- screen = xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn)).data;
- return screen->black_pixel;
-}
-
-EAPI unsigned long
-ecore_x_display_white_pixel_get(Ecore_X_Display *dsp EINA_UNUSED)
-{
- xcb_screen_t *screen;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- /* grab the default screen */
- screen = xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn)).data;
- return screen->white_pixel;
-}
-
-EAPI void
-ecore_x_pointer_last_xy_get(int *x, int *y)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (x) *x = _ecore_xcb_event_last_root_x;
- if (y) *y = _ecore_xcb_event_last_root_y;
-}
-
-EAPI void
-ecore_x_focus_reset(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_set_input_focus(_ecore_xcb_conn, XCB_INPUT_FOCUS_POINTER_ROOT,
- ((xcb_screen_t *)_ecore_xcb_screen)->root,
- XCB_CURRENT_TIME);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_events_allow_all(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_allow_events(_ecore_xcb_conn, XCB_ALLOW_ASYNC_BOTH, XCB_CURRENT_TIME);
-// ecore_x_flush();
-}
-
-/**
- * Kill a specific client
- *
- * You can kill a specific client owning window @p win
- *
- * @param win Window of the client to be killed
- */
-EAPI void
-ecore_x_kill(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_kill_client(_ecore_xcb_conn, win);
-// ecore_x_flush();
-}
-
-/**
- * Kill all clients with subwindows under a given window.
- *
- * You can kill all clients connected to the X server by using
- * @ref ecore_x_window_root_list to get a list of root windows, and
- * then passing each root window to this function.
- *
- * @param root The window whose children will be killed.
- */
-EAPI void
-ecore_x_killall(Ecore_X_Window root)
-{
- int screens = 0, i = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- ecore_x_grab();
-
- screens = xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn)).rem;
-
- /* Traverse window tree starting from root, and drag each
- * before the firing squad */
- for (i = 0; i < screens; ++i)
- {
- xcb_query_tree_cookie_t cookie;
- xcb_query_tree_reply_t *reply;
-
- cookie = xcb_query_tree_unchecked(_ecore_xcb_conn, root);
- reply = xcb_query_tree_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- xcb_window_t *wins = NULL;
- int tree_c_len, j = 0;
-
- wins = xcb_query_tree_children(reply);
- tree_c_len = xcb_query_tree_children_length(reply);
- for (j = 0; j < tree_c_len; j++)
- xcb_kill_client(_ecore_xcb_conn, wins[j]);
- free(reply);
- }
- }
-
- ecore_x_ungrab();
- ecore_x_sync(); // needed
-}
-
-/**
- * Return the screen DPI
- *
- * This is a simplistic call to get DPI. It does not account for differing
- * DPI in the x amd y axes nor does it account for multihead or xinerama and
- * xrander where different parts of the screen may have differen DPI etc.
- *
- * @return the general screen DPI (dots/pixels per inch).
- */
-EAPI int
-ecore_x_dpi_get(void)
-{
- uint16_t mw = 0, w = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- mw = ((xcb_screen_t *)_ecore_xcb_screen)->width_in_millimeters;
- if (mw <= 0) return 75;
- w = ((xcb_screen_t *)_ecore_xcb_screen)->width_in_pixels;
- return (((w * 254) / mw) + 5) / 10;
-}
-
-/**
- * @defgroup Ecore_X_Display_Attr_Group X Display Attributes
- * @ingroup Ecore_X_Group
- *
- * Functions that set and retrieve X display attributes.
- */
-
-/**
- * Retrieves the Ecore_X_Display handle used for the current X connection.
- * @return The current X display.
- * @ingroup Ecore_X_Display_Attr_Group
- */
-EAPI Ecore_X_Display *
-ecore_x_display_get(void)
-{
- char *gl = NULL;
-
- CHECK_XCB_CONN;
-
- /* if we have the 'dont use xlib' env var, then we are not using
- * XLib and thus cannot return a real XDisplay.
- *
- * NB: This may break EFL in some places and needs lots of testing !!! */
- if ((gl = getenv("ECORE_X_NO_XLIB")))
- return (Ecore_X_Display *)_ecore_xcb_conn;
- else /* we can safely return an XDisplay var */
- return (Ecore_X_Display *)_ecore_xcb_display;
-}
-
-/**
- * Retrieves the X display file descriptor.
- * @return The current X display file descriptor.
- * @ingroup Ecore_X_Display_Attr_Group
- */
-EAPI int
-ecore_x_fd_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
- return xcb_get_file_descriptor(_ecore_xcb_conn);
-}
-
-EAPI void
-ecore_x_passive_grab_replay_func_set(Eina_Bool (*func)(void *data, int type, void *event),
- void *data)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_window_grab_replay_func = func;
- _ecore_xcb_window_grab_replay_data = data;
-}
-
-/**
- * Retrieves the size of an Ecore_X_Screen.
- * @param screen the handle to the screen to query.
- * @param w where to return the width. May be NULL. Returns 0 on errors.
- * @param h where to return the height. May be NULL. Returns 0 on errors.
- * @ingroup Ecore_X_Display_Attr_Group
- * @see ecore_x_default_screen_get()
- *
- * @since 1.1
- */
-EAPI void
-ecore_x_screen_size_get(const Ecore_X_Screen *screen, int *w, int *h)
-{
- xcb_screen_t *s;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (w) *w = 0;
- if (h) *h = 0;
- if (!(s = (xcb_screen_t *)screen)) return;
- if (w) *w = s->width_in_pixels;
- if (h) *h = s->height_in_pixels;
-}
-
-/**
- * Retrieves the count of screens.
- *
- * @return The count of screens.
- * @ingroup Ecore_X_Display_Attr_Group
- *
- * @since 1.1
- */
-EAPI int
-ecore_x_screen_count_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- return xcb_setup_roots_length(xcb_get_setup(_ecore_xcb_conn));
-}
-
-/**
- * Retrieves the index number of the given screen.
- *
- * @param screen The screen for which index will be gotten.
- * @return The index number of the screen.
- * @ingroup Ecore_X_Display_Attr_Group
- *
- * @since 1.1
- */
-EAPI int
-ecore_x_screen_index_get(const Ecore_X_Screen *screen)
-{
- xcb_screen_iterator_t iter;
- int i = 0;
-
- CHECK_XCB_CONN;
-
- iter =
- xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn));
- for (; iter.rem; xcb_screen_next(&iter))
- {
- if (iter.data == (xcb_screen_t *)screen)
- return i;
- i++;
- }
-
- return 0;
-}
-
-/**
- * Retrieves the screen based on index number.
- *
- * @param idx The index that will be used to retrieve the screen.
- * @return The Ecore_X_Screen at this index.
- * @ingroup Ecore_X_Display_Attr_Group
- *
- * @since 1.1
- */
-EAPI Ecore_X_Screen *
-ecore_x_screen_get(int idx)
-{
- xcb_screen_iterator_t iter;
- int i = 0;
-
- CHECK_XCB_CONN;
-
- iter =
- xcb_setup_roots_iterator(xcb_get_setup(_ecore_xcb_conn));
- for (i = 0; iter.rem; xcb_screen_next(&iter), i++)
- if (i == idx) return iter.data;
-
- return NULL;
-}
-
-EAPI unsigned int
-ecore_x_visual_id_get(Ecore_X_Visual visual)
-{
- return ((xcb_visualtype_t *)visual)->visual_id;
-}
-
-/**
- * Retrieve the default Visual.
- *
- * @param disp The Display to get the Default Visual from
- * @param screen The Screen.
- *
- * @return The default visual.
- * @since 1.1.0
- */
-EAPI Ecore_X_Visual
-ecore_x_default_visual_get(Ecore_X_Display *disp EINA_UNUSED, Ecore_X_Screen *screen)
-{
- xcb_screen_t *s;
- xcb_depth_iterator_t diter;
- xcb_visualtype_iterator_t viter;
-
- CHECK_XCB_CONN;
-
- s = (xcb_screen_t *)screen;
- diter = xcb_screen_allowed_depths_iterator(s);
- for (; diter.rem; xcb_depth_next(&diter))
- {
- viter = xcb_depth_visuals_iterator(diter.data);
- for (; viter.rem; xcb_visualtype_next(&viter))
- {
- if (viter.data->visual_id == s->root_visual)
- return viter.data;
- }
- }
- return 0;
-}
-
-/**
- * Retrieve the default Colormap.
- *
- * @param disp The Display to get the Default Colormap from
- * @param screen The Screen.
- *
- * @return The default colormap.
- * @since 1.1.0
- */
-EAPI Ecore_X_Colormap
-ecore_x_default_colormap_get(Ecore_X_Display *disp EINA_UNUSED, Ecore_X_Screen *screen)
-{
- xcb_screen_t *s;
-
- s = (xcb_screen_t *)screen;
- return s->default_colormap;
-}
-
-/**
- * Retrieve the default depth.
- *
- * @param disp The Display to get the Default Depth from
- * @param screen The Screen.
- *
- * @return The default depth.
- * @since 1.1.0
- */
-EAPI int
-ecore_x_default_depth_get(Ecore_X_Display *disp EINA_UNUSED, Ecore_X_Screen *screen)
-{
- xcb_screen_t *s;
-
- s = (xcb_screen_t *)screen;
- return s->root_depth;
-}
-
-EAPI void
-ecore_x_xkb_select_group(int group EINA_UNUSED)
-{
- // XXX: implement me */
-}
-
-/**
- * Sets the timeout for a double and triple clicks to be flagged.
- *
- * This sets the time between clicks before the double_click flag is
- * set in a button down event. If 3 clicks occur within double this
- * time, the triple_click flag is also set.
- *
- * @param t The time in seconds
- * @ingroup Ecore_X_Display_Attr_Group
- */
-EAPI void
-ecore_x_double_click_time_set(double t)
-{
- if (t < 0.0) t = 0.0;
- _ecore_xcb_double_click_time = t;
-}
-
-/**
- * Retrieves the double and triple click flag timeout.
- *
- * See @ref ecore_x_double_click_time_set for more information.
- *
- * @return The timeout for double clicks in seconds.
- * @ingroup Ecore_X_Display_Attr_Group
- */
-EAPI double
-ecore_x_double_click_time_get(void)
-{
- return _ecore_xcb_double_click_time;
-}
-
-/* local function prototypes */
-static int
-_ecore_xcb_shutdown(Eina_Bool close_display)
-{
- if (--_ecore_xcb_init_count != 0)
- return _ecore_xcb_init_count;
-
- if (!_ecore_xcb_conn)
- return _ecore_xcb_init_count;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- ecore_idle_enterer_del(_ecore_xcb_idle_enterer);
- _ecore_xcb_idle_enterer = NULL;
-
- if (_ecore_xcb_fd_handler)
- ecore_main_fd_handler_del(_ecore_xcb_fd_handler);
-
- /* disconnect from display server */
- if (close_display)
- xcb_disconnect(_ecore_xcb_conn);
- else
- {
- close(xcb_get_file_descriptor(_ecore_xcb_conn));
- _ecore_xcb_conn = NULL;
- }
-
- /* shutdown events */
- _ecore_xcb_events_shutdown();
-
- /* shutdown input extension */
- _ecore_xcb_input_shutdown();
-
- /* shutdown gesture extension */
- _ecore_xcb_gesture_shutdown();
-
- /* shutdown selection */
- _ecore_xcb_selection_shutdown();
-
- /* shutdown dnd */
- _ecore_xcb_dnd_shutdown();
-
- /* shutdown netwm */
- ecore_x_netwm_shutdown();
-
- /* shutdown keymap */
- _ecore_xcb_keymap_shutdown();
-
- /* shutdown ecore_event */
- ecore_event_shutdown();
-
- /* shutdown ecore */
- ecore_shutdown();
-
- /* unregister log domain */
- eina_log_domain_unregister(_ecore_xcb_log_dom);
- _ecore_xcb_log_dom = -1;
-
- /* shutdown eina */
- eina_shutdown();
-
- return _ecore_xcb_init_count;
-}
-
-static Eina_Bool
-_ecore_xcb_fd_handle(void *data, Ecore_Fd_Handler *hdlr EINA_UNUSED)
-{
- xcb_connection_t *conn;
- xcb_generic_event_t *ev = NULL;
-
- conn = (xcb_connection_t *)data;
-
- if (_ecore_xcb_event_buffered)
- {
- _ecore_xcb_events_handle(_ecore_xcb_event_buffered);
- free(_ecore_xcb_event_buffered);
- _ecore_xcb_event_buffered = NULL;
- }
-
-// xcb_flush(conn);
-
- while ((ev = xcb_poll_for_event(conn)))
- {
- /* NB: Ecore Xlib uses filterevent for xim, but xcb does not support
- * xim, so no need for it here */
-
- /* check for errors first */
- if (xcb_connection_has_error(conn))
- {
- xcb_generic_error_t *err;
-
- err = (xcb_generic_error_t *)ev;
- _ecore_xcb_io_error_handle(err);
- }
- else
- {
- /* FIXME: Filter event for XIM */
- _ecore_xcb_events_handle(ev);
- free(ev);
- }
- }
-
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_ecore_xcb_fd_handle_buff(void *data, Ecore_Fd_Handler *hdlr EINA_UNUSED)
-{
- xcb_connection_t *conn;
- xcb_generic_event_t *ev = NULL;
-
- conn = (xcb_connection_t *)data;
- ev = xcb_poll_for_event(conn);
- if (ev)
- {
- /* check for errors first */
- if (xcb_connection_has_error(conn))
- {
- xcb_generic_error_t *err;
-
- err = (xcb_generic_error_t *)ev;
- _ecore_xcb_io_error_handle(err);
- return ECORE_CALLBACK_CANCEL;
- }
- _ecore_xcb_event_buffered = ev;
- return ECORE_CALLBACK_RENEW;
- }
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool
-_ecore_xcb_idle_enter(void *data EINA_UNUSED)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_flush(_ecore_xcb_conn);
- return ECORE_CALLBACK_RENEW;
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_atoms.c b/src/lib/ecore_x/xcb/ecore_xcb_atoms.c
deleted file mode 100644
index ba31df7350..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_atoms.c
+++ /dev/null
@@ -1,155 +0,0 @@
-#include "ecore_xcb_private.h"
-#include "ecore_x_atoms_decl.h"
-
-/* NB: Increment if you add new atoms */
-#define ECORE_X_ATOMS_COUNT 199
-
-/* local function prototypes */
-
-/* local variables */
-static xcb_intern_atom_cookie_t cookies[ECORE_X_ATOMS_COUNT];
-
-#define MYMIN(X, Y) (((X) < (Y)) ? (X) : (Y))
-
-void
-_ecore_xcb_atoms_init(void)
-{
- int i = 0, num = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- num = (sizeof(atom_items) / sizeof(Atom_Item));
- num = MYMIN(num, ECORE_X_ATOMS_COUNT);
- for (i = 0; i < num; i++)
- {
- cookies[i] =
- xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
- strlen(atom_items[i].name), atom_items[i].name);
- }
-}
-
-void
-_ecore_xcb_atoms_finalize(void)
-{
- int i = 0, num = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- num = (sizeof(atom_items) / sizeof(Atom_Item));
- num = MYMIN(num, ECORE_X_ATOMS_COUNT);
- for (i = 0; i < num; i++)
- {
- xcb_intern_atom_reply_t *reply = NULL;
-
- if (!(reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookies[i], 0)))
- continue;
- *(atom_items[i].atom) = reply->atom;
- free(reply);
- }
-}
-
-/**
- * @defgroup Ecore_X_Atom_Group X Atom Functions
- * @ingroup Ecore_X_Group
- *
- * Functions that operate on atoms
- */
-
-/**
- * Retrieves the atom value associated to a name.
- *
- * @param name Unused.
- * @return Associated atom value.
- *
- * Retrieves the atom value associated to a name. The reply is the
- * returned value of the function ecore_xcb_intern_atom_reply(). If
- * @p reply is @c NULL, the NULL atom is returned. Otherwise, the atom
- * associated to the name is returned.
- *
- * @ingroup Ecore_X_Atom_Group
- */
-EAPI Ecore_X_Atom
-ecore_x_atom_get(const char *name)
-{
- xcb_intern_atom_cookie_t cookie;
- xcb_intern_atom_reply_t *reply;
- Ecore_X_Atom a;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(name), name);
- reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return XCB_ATOM_NONE;
- a = reply->atom;
- free(reply);
- return a;
-}
-
-/**
- * Retrieves the name of the given atom.
- *
- * @param atom
- * @return The name of the atom.
- *
- * @ingroup Ecore_X_Atom_Group
- */
-EAPI char *
-ecore_x_atom_name_get(Ecore_X_Atom atom)
-{
- xcb_get_atom_name_cookie_t cookie;
- xcb_get_atom_name_reply_t *reply;
- char *name;
- int len = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_get_atom_name_unchecked(_ecore_xcb_conn, atom);
- reply = xcb_get_atom_name_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return NULL;
- len = xcb_get_atom_name_name_length(reply);
- name = (char *)malloc(sizeof(char) * (len + 1));
- if (!name)
- {
- free(reply);
- return NULL;
- }
- memcpy(name, xcb_get_atom_name_name(reply), len);
- name[len] = '\0';
-
- free(reply);
- return name;
-}
-
-EAPI void
-ecore_x_atoms_get(const char **names,
- int num,
- Ecore_X_Atom *atoms)
-{
- xcb_intern_atom_cookie_t cookies[num];
- int i = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- num = MYMIN(num, ECORE_X_ATOMS_COUNT);
- for (i = 0; i < num; i++)
- {
- cookies[i] =
- xcb_intern_atom_unchecked(_ecore_xcb_conn, 0,
- strlen(names[i]), names[i]);
- }
- for (i = 0; i < num; i++)
- {
- xcb_intern_atom_reply_t *reply = NULL;
-
- if (!(reply = xcb_intern_atom_reply(_ecore_xcb_conn, cookies[i], 0)))
- continue;
- atoms[i] = reply->atom;
- free(reply);
- }
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_composite.c b/src/lib/ecore_x/xcb/ecore_xcb_composite.c
deleted file mode 100644
index b614d3ca5d..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_composite.c
+++ /dev/null
@@ -1,291 +0,0 @@
-#include "ecore_xcb_private.h"
-#ifdef ECORE_XCB_COMPOSITE
-# include <xcb/composite.h>
-#endif
-
-/* local variables */
-static Eina_Bool _composite_avail = EINA_FALSE;
-
-void
-_ecore_xcb_composite_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_COMPOSITE
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_composite_id);
-#endif
-}
-
-void
-_ecore_xcb_composite_finalize(void)
-{
-#ifdef ECORE_XCB_COMPOSITE
- const xcb_query_extension_reply_t *ext_reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_COMPOSITE
- ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_composite_id);
- if ((ext_reply) && (ext_reply->present))
- {
- xcb_composite_query_version_cookie_t cookie;
- xcb_composite_query_version_reply_t *reply;
-
- cookie =
- xcb_composite_query_version_unchecked(_ecore_xcb_conn,
- XCB_COMPOSITE_MAJOR_VERSION,
- XCB_COMPOSITE_MINOR_VERSION);
- reply =
- xcb_composite_query_version_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
-// if ((reply->major_version >= XCB_COMPOSITE_MAJOR_VERSION) &&
- if (reply->minor_version >= XCB_COMPOSITE_MINOR_VERSION)
- {
-# ifdef ECORE_XCB_RENDER
- if (_ecore_xcb_render_avail_get())
- {
-# ifdef ECORE_XCB_XFIXES
- if (_ecore_xcb_xfixes_avail_get())
- _composite_avail = EINA_TRUE;
-# endif
- }
-# endif
- }
-
- free(reply);
- }
- }
-#endif
-}
-
-/**
- * @defgroup Ecore_X_Composite_Group X Composite Extension Functions
- * @ingroup Ecore_X_Group
- *
- * Functions related to the X Composite Extension
- */
-
-/**
- * Return whether the Composite Extension is available
- *
- * @return @c EINA_TRUE is the Composite Extension is available, @c EINA_FALSE
- * if not.
- *
- * @ingroup Ecore_X_Composite_Group
- */
-EAPI Eina_Bool
-ecore_x_composite_query(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- return _composite_avail;
-}
-
-EAPI void
-ecore_x_composite_redirect_window(Ecore_X_Window win,
- Ecore_X_Composite_Update_Type type)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_COMPOSITE
- uint8_t update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
-
- switch (type)
- {
- case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
- update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
- break;
-
- case ECORE_X_COMPOSITE_UPDATE_MANUAL:
- update = XCB_COMPOSITE_REDIRECT_MANUAL;
- break;
- }
- xcb_composite_redirect_window(_ecore_xcb_conn, win, update);
-// ecore_x_flush();
-#endif
-}
-
-EAPI void
-ecore_x_composite_redirect_subwindows(Ecore_X_Window win,
- Ecore_X_Composite_Update_Type type)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_COMPOSITE
- uint8_t update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
-
- switch (type)
- {
- case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
- update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
- break;
-
- case ECORE_X_COMPOSITE_UPDATE_MANUAL:
- update = XCB_COMPOSITE_REDIRECT_MANUAL;
- break;
- }
- xcb_composite_redirect_subwindows(_ecore_xcb_conn, win, update);
-// ecore_x_flush();
-#endif
-}
-
-EAPI void
-ecore_x_composite_unredirect_window(Ecore_X_Window win,
- Ecore_X_Composite_Update_Type type)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_COMPOSITE
- uint8_t update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
-
- switch (type)
- {
- case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
- update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
- break;
-
- case ECORE_X_COMPOSITE_UPDATE_MANUAL:
- update = XCB_COMPOSITE_REDIRECT_MANUAL;
- break;
- }
- xcb_composite_unredirect_window(_ecore_xcb_conn, win, update);
-// ecore_x_flush();
-#endif
-}
-
-EAPI void
-ecore_x_composite_unredirect_subwindows(Ecore_X_Window win,
- Ecore_X_Composite_Update_Type type)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_COMPOSITE
- uint8_t update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
-
- switch (type)
- {
- case ECORE_X_COMPOSITE_UPDATE_AUTOMATIC:
- update = XCB_COMPOSITE_REDIRECT_AUTOMATIC;
- break;
-
- case ECORE_X_COMPOSITE_UPDATE_MANUAL:
- update = XCB_COMPOSITE_REDIRECT_MANUAL;
- break;
- }
- xcb_composite_unredirect_subwindows(_ecore_xcb_conn, win, update);
-// ecore_x_flush();
-#endif
-}
-
-EAPI Ecore_X_Pixmap
-ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win)
-{
-#ifdef ECORE_XCB_COMPOSITE
- Ecore_X_Pixmap pmap = XCB_NONE;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return XCB_NONE;
-
-#ifdef ECORE_XCB_COMPOSITE
- pmap = xcb_generate_id(_ecore_xcb_conn);
- xcb_composite_name_window_pixmap(_ecore_xcb_conn, win, pmap);
-// ecore_x_flush();
-#endif
-
- return pmap;
-}
-
-EAPI void
-ecore_x_composite_window_events_disable(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_SHAPE
- ecore_x_window_shape_input_rectangle_set(win, -1, -1, 1, 1);
-// ecore_x_flush();
-#else
- return;
- win = 0;
-#endif
-}
-
-EAPI void
-ecore_x_composite_window_events_enable(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_SHAPE
- ecore_x_window_shape_input_rectangle_set(win, 0, 0, 65535, 65535);
-// ecore_x_flush();
-#else
- return;
- win = 0;
-#endif
-}
-
-EAPI Ecore_X_Window
-ecore_x_composite_render_window_enable(Ecore_X_Window root)
-{
- Ecore_X_Window win = 0;
-#ifdef ECORE_XCB_COMPOSITE
- xcb_composite_get_overlay_window_cookie_t cookie;
- xcb_composite_get_overlay_window_reply_t *reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return 0;
-
-#ifdef ECORE_XCB_COMPOSITE
- cookie = xcb_composite_get_overlay_window_unchecked(_ecore_xcb_conn, root);
- reply =
- xcb_composite_get_overlay_window_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return win;
-
- win = reply->overlay_win;
- free(reply);
-
- ecore_x_composite_window_events_disable(win);
-// ecore_x_flush();
-#endif
-
- return win;
-}
-
-EAPI void
-ecore_x_composite_render_window_disable(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_composite_avail) return;
-
-#ifdef ECORE_XCB_COMPOSITE
- xcb_composite_release_overlay_window(_ecore_xcb_conn, win);
-// ecore_x_flush();
-#endif
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_cursor.c b/src/lib/ecore_x/xcb/ecore_xcb_cursor.c
deleted file mode 100644
index 755df04e4f..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_cursor.c
+++ /dev/null
@@ -1,400 +0,0 @@
-#include "ecore_xcb_private.h"
-#ifdef ECORE_XCB_CURSOR
-# include <xcb/render.h>
-# include <xcb/xcb_renderutil.h>
-#endif
-
-/* local function prototypes */
-#ifdef ECORE_XCB_CURSOR
-static xcb_render_pictforminfo_t *_ecore_xcb_cursor_format_get(void);
-#endif
-static void _ecore_xcb_cursor_default_size_get(void);
-static void _ecore_xcb_cursor_dpi_size_get(void);
-static void _ecore_xcb_cursor_guess_size(void);
-#ifdef ECORE_XCB_CURSOR
-static Ecore_X_Cursor _ecore_xcb_cursor_image_load_cursor(xcb_image_t *img,
- int hot_x,
- int hot_y);
-#endif
-static void _ecore_xcb_cursor_image_destroy(xcb_image_t *img);
-
-/* local variables */
-static int _ecore_xcb_cursor_size = 0;
-static Eina_Bool _ecore_xcb_cursor = EINA_FALSE;
-#ifdef ECORE_XCB_CURSOR
-static uint32_t _ecore_xcb_cursor_format_id = 0;
-// static xcb_render_pictforminfo_t *_ecore_xcb_cursor_format = NULL;
-#endif
-
-void
-_ecore_xcb_cursor_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- /* NB: No-op */
-}
-
-void
-_ecore_xcb_cursor_finalize(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_CURSOR
- _ecore_xcb_cursor = _ecore_xcb_render_argb_get();
-
- /* find render pict format */
- if (_ecore_xcb_cursor_format_id <= 0)
- _ecore_xcb_cursor_format_id = _ecore_xcb_cursor_format_get()->id;
-#endif
-
- /* try to grab cursor size from XDefaults */
- _ecore_xcb_cursor_default_size_get();
-
- /* if that failed, try to get it from Xft Dpi setting */
- if (_ecore_xcb_cursor_size == 0)
- _ecore_xcb_cursor_dpi_size_get();
-
- /* if that failed, try to guess from display size */
- if (_ecore_xcb_cursor_size == 0)
- _ecore_xcb_cursor_guess_size();
-
- /* NB: Would normally add theme stuff here, but E cursor does not support
- * xcursor themes. Delay parsing that stuff out until such time if/when the
- * user selects to use X Cursor, rather than E cursor */
-}
-
-EAPI Eina_Bool
-ecore_x_cursor_color_supported_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return _ecore_xcb_cursor;
-}
-
-EAPI Ecore_X_Cursor
-ecore_x_cursor_new(Ecore_X_Window win,
- int *pixels,
- int w,
- int h,
- int hot_x,
- int hot_y)
-{
- Ecore_X_Cursor cursor = 0;
- xcb_image_t *img;
-
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
-#ifdef ECORE_XCB_CURSOR
- if (_ecore_xcb_cursor)
- {
- img = _ecore_xcb_image_create_native(w, h, XCB_IMAGE_FORMAT_Z_PIXMAP,
- 32, NULL, (w * h * sizeof(int)),
- (uint8_t *)pixels);
- cursor = _ecore_xcb_cursor_image_load_cursor(img, hot_x, hot_y);
- _ecore_xcb_cursor_image_destroy(img);
- return cursor;
- }
- else
-#endif
- {
- Ecore_X_GC gc;
- xcb_pixmap_t pmap, mask;
- uint32_t *pix;
- uint8_t fr = 0x00, fg = 0x00, fb = 0x00;
- uint8_t br = 0xff, bg = 0xff, bb = 0xff;
- uint32_t brightest = 0, darkest = 255 * 3;
- uint16_t x, y;
- const uint32_t dither[2][2] =
- {
- {0, 2},
- {3, 1}
- };
-
- img = _ecore_xcb_image_create_native(w, h, XCB_IMAGE_FORMAT_Z_PIXMAP,
- 1, NULL, ~0, NULL);
- if (img->data) free(img->data);
- img->data = malloc(img->size);
-
- pmap = xcb_generate_id(_ecore_xcb_conn);
- xcb_create_pixmap(_ecore_xcb_conn, 1, pmap, win, w, h);
- mask = xcb_generate_id(_ecore_xcb_conn);
- xcb_create_pixmap(_ecore_xcb_conn, 1, mask, win, w, h);
-
- pix = (uint32_t *)pixels;
- for (y = 0; y < h; y++)
- {
- for (x = 0; x < w; x++)
- {
- uint8_t r, g, b, a;
-
- a = (pix[0] >> 24) & 0xff;
- r = (pix[0] >> 16) & 0xff;
- g = (pix[0] >> 8) & 0xff;
- b = (pix[0]) & 0xff;
- if (a > 0)
- {
- if ((uint32_t)(r + g + b) > brightest)
- {
- brightest = r + g + b;
- br = r;
- bg = g;
- bb = b;
- }
-
- if ((uint32_t)(r + g + b) < darkest)
- {
- darkest = r + g + b;
- fr = r;
- fg = g;
- fb = b;
- }
- }
- pix++;
- }
- }
-
- pix = (uint32_t *)pixels;
- for (y = 0; y < h; y++)
- {
- for (x = 0; x < w; x++)
- {
- uint32_t v;
- uint8_t r, g, b;
- int32_t d1, d2;
-
- r = (pix[0] >> 16) & 0xff;
- g = (pix[0] >> 8) & 0xff;
- b = (pix[0]) & 0xff;
- d1 =
- ((r - fr) * (r - fr)) +
- ((g - fg) * (g - fg)) +
- ((b - fb) * (b - fb));
- d2 =
- ((r - br) * (r - br)) +
- ((g - bg) * (g - bg)) +
- ((b - bb) * (b - bb));
- if (d1 + d2)
- {
- v = (((d2 * 255) / (d1 + d2)) * 5) / 256;
- if (v > dither[x & 0x1][y & 0x1])
- v = 1;
- else
- v = 0;
- }
- else
- v = 0;
-
- xcb_image_put_pixel(img, x, y, v);
- pix++;
- }
- }
-
- gc = ecore_x_gc_new(pmap, 0, NULL);
- xcb_put_image(_ecore_xcb_conn, img->format, pmap, gc, w, h,
- 0, 0, 0, img->depth, img->size, img->data);
- ecore_x_gc_free(gc);
-
- pix = (uint32_t *)pixels;
- for (y = 0; y < h; y++)
- {
- for (x = 0; x < w; x++)
- {
- uint32_t v;
-
- v = (((pix[0] >> 24) & 0xff) * 5) / 256;
- if (v > dither[x & 0x1][y & 0x1])
- v = 1;
- else
- v = 0;
-
- xcb_image_put_pixel(img, x, y, v);
- pix++;
- }
- }
-
- gc = ecore_x_gc_new(mask, 0, NULL);
- xcb_put_image(_ecore_xcb_conn, img->format, mask, gc, w, h,
- 0, 0, 0, img->depth, img->size, img->data);
- ecore_x_gc_free(gc);
-
- if (img->data) free(img->data);
- _ecore_xcb_cursor_image_destroy(img);
-
- cursor = xcb_generate_id(_ecore_xcb_conn);
- xcb_create_cursor(_ecore_xcb_conn, cursor, pmap, mask,
- fr << 8 | fr, fg << 8 | fg, fb << 8 | fb,
- br << 8 | br, bg << 8 | bg, bb << 8 | bb,
- hot_x, hot_y);
-
- xcb_free_pixmap(_ecore_xcb_conn, pmap);
- xcb_free_pixmap(_ecore_xcb_conn, mask);
-
- return cursor;
- }
-
- return 0;
-}
-
-EAPI void
-ecore_x_cursor_free(Ecore_X_Cursor c)
-{
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_free_cursor(_ecore_xcb_conn, c);
-}
-
-/*
- * Returns the cursor for the given shape.
- * Note that the return value must not be freed with
- * ecore_x_cursor_free()!
- */
-EAPI Ecore_X_Cursor
-ecore_x_cursor_shape_get(int shape)
-{
- Ecore_X_Cursor cursor = 0;
- xcb_font_t font;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- font = xcb_generate_id(_ecore_xcb_conn);
- xcb_open_font(_ecore_xcb_conn, font, strlen("cursor"), "cursor");
-
- cursor = xcb_generate_id(_ecore_xcb_conn);
- /* FIXME: Add request check ?? */
- xcb_create_glyph_cursor(_ecore_xcb_conn, cursor, font, font,
- shape, shape + 1, 0, 0, 0, 65535, 65535, 65535);
-
- xcb_close_font(_ecore_xcb_conn, font);
- return cursor;
-}
-
-EAPI void
-ecore_x_cursor_size_set(int size)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_cursor_size = size;
- /* NB: May need to adjust size of current cursors here */
-}
-
-EAPI int
-ecore_x_cursor_size_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return _ecore_xcb_cursor_size;
-}
-
-/* local functions */
-#ifdef ECORE_XCB_CURSOR
-static xcb_render_pictforminfo_t *
-_ecore_xcb_cursor_format_get(void)
-{
- const xcb_render_query_pict_formats_reply_t *reply;
- xcb_render_pictforminfo_t *ret = NULL;
-
- CHECK_XCB_CONN;
-
- reply = xcb_render_util_query_formats(_ecore_xcb_conn);
- if (reply)
- ret = xcb_render_util_find_standard_format(reply,
- XCB_PICT_STANDARD_ARGB_32);
-
- return ret;
-}
-
-#endif
-
-static void
-_ecore_xcb_cursor_default_size_get(void)
-{
- char *s = NULL;
- int v = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- s = getenv("XCURSOR_SIZE");
- if (!s)
- {
- _ecore_xcb_xdefaults_init();
- v = _ecore_xcb_xdefaults_int_get("Xcursor", "size");
- _ecore_xcb_xdefaults_shutdown();
- }
- else
- v = atoi(s);
- if (v) _ecore_xcb_cursor_size = ((v * 16) / 72);
-}
-
-static void
-_ecore_xcb_cursor_dpi_size_get(void)
-{
- int v = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_xdefaults_init();
- v = _ecore_xcb_xdefaults_int_get("Xft", "dpi");
- if (v) _ecore_xcb_cursor_size = ((v * 16) / 72);
- _ecore_xcb_xdefaults_shutdown();
-}
-
-static void
-_ecore_xcb_cursor_guess_size(void)
-{
- int w = 0, h = 0, s = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_screen_size_get(_ecore_xcb_screen, &w, &h);
- if (h < w) s = h;
- else s = w;
- _ecore_xcb_cursor_size = (s / 48);
-}
-
-#ifdef ECORE_XCB_CURSOR
-static Ecore_X_Cursor
-_ecore_xcb_cursor_image_load_cursor(xcb_image_t *img,
- int hot_x,
- int hot_y)
-{
- Ecore_X_Cursor cursor = 0;
- Ecore_X_GC gc;
- xcb_pixmap_t pmap;
- xcb_render_picture_t pict;
-
- CHECK_XCB_CONN;
-
- pmap = xcb_generate_id(_ecore_xcb_conn);
- xcb_create_pixmap(_ecore_xcb_conn, img->depth, pmap,
- ((xcb_screen_t *)_ecore_xcb_screen)->root,
- img->width, img->height);
-
- gc = ecore_x_gc_new(pmap, 0, NULL);
- xcb_put_image(_ecore_xcb_conn, img->format, pmap, gc,
- img->width, img->height, 0, 0, 0, img->depth,
- img->size, img->data);
- ecore_x_gc_free(gc);
-
- pict = xcb_generate_id(_ecore_xcb_conn);
- xcb_render_create_picture(_ecore_xcb_conn, pict, pmap,
- _ecore_xcb_cursor_format_id, 0, NULL);
- xcb_free_pixmap(_ecore_xcb_conn, pmap);
-
- cursor = xcb_generate_id(_ecore_xcb_conn);
- xcb_render_create_cursor(_ecore_xcb_conn, cursor, pict, hot_x, hot_y);
- xcb_render_free_picture(_ecore_xcb_conn, pict);
-
- return cursor;
-}
-
-#endif
-
-static void
-_ecore_xcb_cursor_image_destroy(xcb_image_t *img)
-{
- CHECK_XCB_CONN;
- if (img) xcb_image_destroy(img);
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_damage.c b/src/lib/ecore_x/xcb/ecore_xcb_damage.c
deleted file mode 100644
index fdb7a2a6c6..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_damage.c
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "ecore_xcb_private.h"
-# ifdef ECORE_XCB_DAMAGE
-# include <xcb/damage.h>
-# endif
-
-/* local variables */
-static Eina_Bool _damage_avail = EINA_FALSE;
-
-/* external variables */
-int _ecore_xcb_event_damage = -1;
-
-void
-_ecore_xcb_damage_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_DAMAGE
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_damage_id);
-#endif
-}
-
-void
-_ecore_xcb_damage_finalize(void)
-{
-#ifdef ECORE_XCB_DAMAGE
- const xcb_query_extension_reply_t *ext_reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_DAMAGE
- ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_damage_id);
- if ((ext_reply) && (ext_reply->present))
- {
- xcb_damage_query_version_cookie_t cookie;
- xcb_damage_query_version_reply_t *reply;
-
- cookie =
- xcb_damage_query_version_unchecked(_ecore_xcb_conn,
- XCB_DAMAGE_MAJOR_VERSION,
- XCB_DAMAGE_MINOR_VERSION);
- reply = xcb_damage_query_version_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- _damage_avail = EINA_TRUE;
- free(reply);
- }
-
- if (_damage_avail)
- _ecore_xcb_event_damage = ext_reply->first_event;
- }
-#endif
-}
-
-/**
- * @defgroup Ecore_X_Damage_Group X Damage Extension Functions
- * @ingroup Ecore_X_Group
- *
- * Functions related to the X Damage Extension.
- */
-
-EAPI Eina_Bool
-ecore_x_damage_query(void)
-{
- return _damage_avail;
-}
-
-/**
- * Create a damage object
- *
- * @param drawable The drawable to monitor
- * @param level The level of the damage report
- * @return The damage object
- *
- * Creates a damage object to monitor changes to @p drawable,
- * with the level @p level.
- *
- * @ingroup Ecore_X_Damage_Group
- */
-EAPI Ecore_X_Damage
-ecore_x_damage_new(Ecore_X_Drawable drawable,
- Ecore_X_Damage_Report_Level level)
-{
- Ecore_X_Damage damage = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_damage_avail) return 0;
-
-#ifdef ECORE_XCB_DAMAGE
- damage = xcb_generate_id(_ecore_xcb_conn);
- xcb_damage_create(_ecore_xcb_conn, damage, drawable, level);
-// ecore_x_flush();
-#endif
-
- return damage;
-}
-
-/**
- * Destroy a damage object
- *
- * @param damage The damage object to destroy
- *
- * Destroys the damage object @p damage
- *
- * @ingroup Ecore_X_Damage_Group
- */
-EAPI void
-ecore_x_damage_free(Ecore_X_Damage damage)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_damage_avail) return;
-
-#ifdef ECORE_XCB_DAMAGE
- xcb_damage_destroy(_ecore_xcb_conn, damage);
-// ecore_x_flush();
-#endif
-}
-
-/**
- * Synchronously modifies the region
- *
- * @param damage The damage object to destroy
- * @param repair The repair region
- * @param parts The parts region
- *
- * Synchronously modifies the regions in the following manner:
- * If @p repair is @c XCB_NONE:
- * 1) parts = damage
- * 2) damage = \<empty\>
- * Otherwise:
- * 1) parts = damage INTERSECT repair
- * 2) damage = damage - parts
- * 3) Generate DamageNotify for remaining damage areas
- *
- * @ingroup Ecore_X_Damage_Group
- */
-EAPI void
-ecore_x_damage_subtract(Ecore_X_Damage damage,
- Ecore_X_Region repair,
- Ecore_X_Region parts)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_damage_avail) return;
-
-#ifdef ECORE_XCB_DAMAGE
- xcb_damage_subtract(_ecore_xcb_conn, damage, repair, parts);
-// ecore_x_flush();
-#endif
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_dnd.c b/src/lib/ecore_x/xcb/ecore_xcb_dnd.c
deleted file mode 100644
index 974ec0e4b2..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_dnd.c
+++ /dev/null
@@ -1,720 +0,0 @@
-#include "ecore_xcb_private.h"
-
-/* local structures */
-typedef struct _Version_Cache_Item
-{
- Ecore_X_Window win;
- int ver;
-} Version_Cache_Item;
-
-/* local function prototypes */
-static Eina_Bool _ecore_xcb_dnd_converter_copy(char *target EINA_UNUSED,
- void *data,
- int size,
- void **data_ret,
- int *size_ret,
- Ecore_X_Atom *tprop EINA_UNUSED,
- int *count EINA_UNUSED);
-
-/* local variables */
-static int _ecore_xcb_dnd_init_count = 0;
-static Ecore_X_DND_Source *_source = NULL;
-static Ecore_X_DND_Target *_target = NULL;
-static Version_Cache_Item *_version_cache = NULL;
-static int _version_cache_num = 0, _version_cache_alloc = 0;
-static void (*_posupdatecb)(void *,
- Ecore_X_Xdnd_Position *);
-static void *_posupdatedata;
-
-/* external variables */
-EAPI int ECORE_X_EVENT_XDND_ENTER = 0;
-EAPI int ECORE_X_EVENT_XDND_POSITION = 0;
-EAPI int ECORE_X_EVENT_XDND_STATUS = 0;
-EAPI int ECORE_X_EVENT_XDND_LEAVE = 0;
-EAPI int ECORE_X_EVENT_XDND_DROP = 0;
-EAPI int ECORE_X_EVENT_XDND_FINISHED = 0;
-
-void
-_ecore_xcb_dnd_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!_ecore_xcb_dnd_init_count)
- {
- _source = calloc(1, sizeof(Ecore_X_DND_Source));
- if (!_source) return;
- _source->version = ECORE_X_DND_VERSION;
- _source->win = XCB_NONE;
- _source->dest = XCB_NONE;
- _source->state = ECORE_X_DND_SOURCE_IDLE;
- _source->prev.window = 0;
-
- _target = calloc(1, sizeof(Ecore_X_DND_Target));
- if (!_target)
- {
- free(_source);
- _source = NULL;
- return;
- }
- _target->win = XCB_NONE;
- _target->source = XCB_NONE;
- _target->state = ECORE_X_DND_TARGET_IDLE;
-
- ECORE_X_EVENT_XDND_ENTER = ecore_event_type_new();
- ECORE_X_EVENT_XDND_POSITION = ecore_event_type_new();
- ECORE_X_EVENT_XDND_STATUS = ecore_event_type_new();
- ECORE_X_EVENT_XDND_LEAVE = ecore_event_type_new();
- ECORE_X_EVENT_XDND_DROP = ecore_event_type_new();
- ECORE_X_EVENT_XDND_FINISHED = ecore_event_type_new();
- }
- _ecore_xcb_dnd_init_count++;
-}
-
-void
-_ecore_xcb_dnd_shutdown(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_dnd_init_count--;
- if (_ecore_xcb_dnd_init_count > 0) return;
- if (_source) free(_source);
- _source = NULL;
- if (_target) free(_target);
- _target = NULL;
- _ecore_xcb_dnd_init_count = 0;
-}
-
-EAPI void
-ecore_x_dnd_send_status(Eina_Bool will_accept,
- Eina_Bool suppress,
- Ecore_X_Rectangle rect,
- Ecore_X_Atom action)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (_target->state == ECORE_X_DND_TARGET_IDLE) return;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- _target->will_accept = will_accept;
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.type = ECORE_X_ATOM_XDND_STATUS;
- ev.format = 32;
- ev.window = _target->source;
- ev.data.data32[0] = _target->win;
- ev.data.data32[1] = 0;
- if (will_accept) ev.data.data32[1] |= 0x1UL;
- if (!suppress) ev.data.data32[1] |= 0x2UL;
-
- ev.data.data32[2] = rect.x;
- ev.data.data32[2] <<= 16;
- ev.data.data32[2] |= rect.y;
- ev.data.data32[3] = rect.width;
- ev.data.data32[3] <<= 16;
- ev.data.data32[3] |= rect.height;
-
- if (will_accept)
- ev.data.data32[4] = action;
- else
- ev.data.data32[4] = XCB_NONE;
- _target->accepted_action = action;
-
- xcb_send_event(_ecore_xcb_conn, 0, _target->source,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_dnd_aware_set(Ecore_X_Window win,
- Eina_Bool on)
-{
- Ecore_X_Atom prop_data = ECORE_X_DND_VERSION;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (on)
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_AWARE,
- ECORE_X_ATOM_ATOM, 32, &prop_data, 1);
- else
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_XDND_AWARE);
-}
-
-EAPI int
-ecore_x_dnd_version_get(Ecore_X_Window win)
-{
- unsigned char *data;
- int num = 0;
- Version_Cache_Item *t;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (_source->state == ECORE_X_DND_SOURCE_DRAGGING)
- {
- if (_version_cache)
- {
- int i = 0;
-
- for (i = 0; i < _version_cache_num; i++)
- {
- if (_version_cache[i].win == win)
- return _version_cache[i].ver;
- }
- }
- }
-
- if (ecore_x_window_prop_property_get(win, ECORE_X_ATOM_XDND_AWARE,
- ECORE_X_ATOM_ATOM, 32, &data, &num))
- {
- int version = 0;
-
- version = (int)*data;
- free(data);
- if (_source->state == ECORE_X_DND_SOURCE_DRAGGING)
- {
- _version_cache_num++;
- if (_version_cache_num > _version_cache_alloc)
- _version_cache_alloc += 16;
- t = realloc(_version_cache,
- _version_cache_alloc * sizeof(Version_Cache_Item));
- if (!t) return 0;
- _version_cache = t;
- _version_cache[_version_cache_num - 1].win = win;
- _version_cache[_version_cache_num - 1].ver = version;
- }
- return version;
- }
-
- if (_source->state == ECORE_X_DND_SOURCE_DRAGGING)
- {
- _version_cache_num++;
- if (_version_cache_num > _version_cache_alloc)
- _version_cache_alloc += 16;
- t = realloc(_version_cache,
- _version_cache_alloc * sizeof(Version_Cache_Item));
- if (!t) return 0;
- _version_cache = t;
- _version_cache[_version_cache_num - 1].win = win;
- _version_cache[_version_cache_num - 1].ver = 0;
- }
-
- return 0;
-}
-
-EAPI Eina_Bool
-ecore_x_dnd_type_isset(Ecore_X_Window win,
- const char *type)
-{
- int num = 0, i = 0;
- Eina_Bool ret = EINA_FALSE;
- unsigned char *data;
- Ecore_X_Atom *atoms, atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32, &data, &num))
- return ret;
-
- atom = ecore_x_atom_get(type);
- atoms = (Ecore_X_Atom *)data;
- for (i = 0; i < num; ++i)
- {
- if (atom == atoms[i])
- {
- ret = EINA_TRUE;
- break;
- }
- }
-
- free(data);
- return ret;
-}
-
-EAPI void
-ecore_x_dnd_type_set(Ecore_X_Window win,
- const char *type,
- Eina_Bool on)
-{
- Ecore_X_Atom atom, *oldset = NULL, *newset = NULL;
- int i = 0, j = 0, num = 0;
- unsigned char *data = NULL, *old_data = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- atom = ecore_x_atom_get(type);
- ecore_x_window_prop_property_get(win, ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32, &old_data, &num);
- oldset = (Ecore_X_Atom *)old_data;
- if (on)
- {
- if (ecore_x_dnd_type_isset(win, type))
- {
- free(old_data);
- return;
- }
- newset = calloc(num + 1, sizeof(Ecore_X_Atom));
- if (!newset) return;
- data = (unsigned char *)newset;
- for (i = 0; i < num; i++)
- newset[i + 1] = oldset[i];
- newset[0] = atom;
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32, data, num + 1);
- }
- else
- {
- if (!ecore_x_dnd_type_isset(win, type))
- {
- free(old_data);
- return;
- }
- newset = calloc(num - 1, sizeof(Ecore_X_Atom));
- if (!newset)
- {
- free(old_data);
- return;
- }
- data = (unsigned char *)newset;
- for (i = 0; i < num; i++)
- if (oldset[i] != atom)
- newset[j++] = oldset[i];
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32, data, num - 1);
- }
- free(oldset);
- free(newset);
-}
-
-EAPI void
-ecore_x_dnd_types_set(Ecore_X_Window win,
- const char **types,
- unsigned int num_types)
-{
- Ecore_X_Atom *newset = NULL;
- unsigned int i;
- unsigned char *data = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!num_types)
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_XDND_TYPE_LIST);
- else
- {
- newset = calloc(num_types, sizeof(Ecore_X_Atom));
- if (!newset) return;
-
- data = (unsigned char *)newset;
- for (i = 0; i < num_types; i++)
- {
- newset[i] = ecore_x_atom_get(types[i]);
- ecore_x_selection_converter_atom_add(newset[i],
- _ecore_xcb_dnd_converter_copy);
- }
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32, data,
- num_types);
- free(newset);
- }
-}
-
-EAPI void
-ecore_x_dnd_actions_set(Ecore_X_Window win,
- Ecore_X_Atom *actions,
- unsigned int num_actions)
-{
- unsigned int i;
- unsigned char *data = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!num_actions)
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_XDND_ACTION_LIST);
- else
- {
- data = (unsigned char *)actions;
- for (i = 0; i < num_actions; i++)
- ecore_x_selection_converter_atom_add(actions[i],
- _ecore_xcb_dnd_converter_copy);
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_XDND_ACTION_LIST,
- ECORE_X_ATOM_ATOM, 32, data,
- num_actions);
- }
-}
-
-/**
- * The DND position update cb is called Ecore_X sends a DND position to a
- * client.
- *
- * It essentially mirrors some of the data sent in the position message.
- * Generally this cb should be set just before position update is called.
- * Please note well you need to look after your own data pointer if someone
- * trashes you position update cb set.
- *
- * It is considered good form to clear this when the dnd event finishes.
- *
- * @param cb Callback to updated each time ecore_x sends a position update.
- * @param data User data.
- */
-EAPI void
-ecore_x_dnd_callback_pos_update_set(void (*cb)(void *, Ecore_X_Xdnd_Position *data),
- const void *data)
-{
- _posupdatecb = cb;
- _posupdatedata = (void *)data;
-}
-
-static Eina_Bool
-_ecore_x_dnd_begin(Ecore_X_Window source, Eina_Bool self, unsigned char *data, int size)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_dnd_version_get(source)) return EINA_FALSE;
-
- /* Take ownership of XdndSelection */
- if (!ecore_x_selection_xdnd_set(source, data, size)) return EINA_FALSE;
-
- if (_version_cache)
- {
- free(_version_cache);
- _version_cache = NULL;
- _version_cache_num = 0;
- _version_cache_alloc = 0;
- }
-
- ecore_x_window_shadow_tree_flush();
-
- _source->win = source;
- if (!self) ecore_x_window_ignore_set(_source->win, 1);
- _source->state = ECORE_X_DND_SOURCE_DRAGGING;
- _source->time = _ecore_xcb_events_last_time_get();
- _source->prev.window = 0;
-
- /* Default Accepted Action: move */
- _source->action = ECORE_X_ATOM_XDND_ACTION_MOVE;
- _source->accepted_action = XCB_NONE;
- _source->dest = XCB_NONE;
-
- return EINA_TRUE;
-}
-
-static Eina_Bool
-_ecore_x_dnd_drop(Eina_Bool self)
-{
- xcb_client_message_event_t ev;
- Eina_Bool status = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- if (_source->dest)
- {
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = _source->dest;
-
- if (_source->will_accept)
- {
- ev.type = ECORE_X_ATOM_XDND_DROP;
- ev.data.data32[0] = _source->win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = _source->time;
-
- xcb_send_event(_ecore_xcb_conn, 0, _source->dest,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
- _source->state = ECORE_X_DND_SOURCE_DROPPED;
- status = EINA_TRUE;
- }
- else
- {
- ev.type = ECORE_X_ATOM_XDND_LEAVE;
- ev.data.data32[0] = _source->win;
- ev.data.data32[1] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, _source->dest,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
- _source->state = ECORE_X_DND_SOURCE_IDLE;
- }
- }
- else
- {
- ecore_x_selection_xdnd_clear();
- _source->state = ECORE_X_DND_SOURCE_IDLE;
- }
-
- if (!self) ecore_x_window_ignore_set(_source->win, 0);
- _source->prev.window = 0;
-
- return status;
-}
-
-EAPI Eina_Bool
-ecore_x_dnd_begin(Ecore_X_Window source,
- unsigned char *data,
- int size)
-{
- return _ecore_x_dnd_begin(source, EINA_FALSE, data, size);
-}
-
-EAPI Eina_Bool
-ecore_x_dnd_drop(void)
-{
- return _ecore_x_dnd_drop(EINA_FALSE);
-}
-
-EAPI Eina_Bool
-ecore_x_dnd_self_begin(Ecore_X_Window source,
- unsigned char *data,
- int size)
-{
- return _ecore_x_dnd_begin(source, EINA_TRUE, data, size);
-}
-
-EAPI Eina_Bool
-ecore_x_dnd_self_drop(void)
-{
- return _ecore_x_dnd_drop(EINA_TRUE);
-}
-
-EAPI void
-ecore_x_dnd_send_finished(void)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (_target->state == ECORE_X_DND_TARGET_IDLE) return;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.type = ECORE_X_ATOM_XDND_FINISHED;
- ev.window = _target->source;
- ev.data.data32[0] = _target->win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- if (_target->will_accept)
- {
- ev.data.data32[1] |= 0x1UL;
- ev.data.data32[2] = _target->accepted_action;
- }
-
- xcb_send_event(_ecore_xcb_conn, 0, _target->source,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
- _target->state = ECORE_X_DND_TARGET_IDLE;
-}
-
-EAPI void
-ecore_x_dnd_source_action_set(Ecore_X_Atom action)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _source->action = action;
- if (_source->prev.window)
- _ecore_xcb_dnd_drag(_source->prev.window,
- _source->prev.x, _source->prev.y);
-}
-
-Ecore_X_DND_Source *
-_ecore_xcb_dnd_source_get(void)
-{
- return _source;
-}
-
-Ecore_X_DND_Target *
-_ecore_xcb_dnd_target_get(void)
-{
- return _target;
-}
-
-void
-_ecore_xcb_dnd_drag(Ecore_X_Window root,
- int x,
- int y)
-{
- xcb_client_message_event_t ev;
- Ecore_X_Window win, *skip;
- Ecore_X_Xdnd_Position pos;
- int num = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (_source->state != ECORE_X_DND_SOURCE_DRAGGING) return;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
-
- skip = ecore_x_window_ignore_list(&num);
- win = ecore_x_window_shadow_tree_at_xy_with_skip_get(root, x, y, skip, num);
- while ((win) && !(ecore_x_dnd_version_get(win)))
- win = ecore_x_window_shadow_parent_get(root, win);
-
- if ((_source->dest) && (win != _source->dest))
- {
- ev.window = _source->dest;
- ev.type = ECORE_X_ATOM_XDND_LEAVE;
- ev.data.data32[0] = _source->win;
- ev.data.data32[1] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, _source->dest,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
- _source->suppress = 0;
- }
-
- if (win)
- {
- int x1, x2, y1, y2;
-
- _source->version = MIN(ECORE_X_DND_VERSION,
- ecore_x_dnd_version_get(win));
- if (win != _source->dest)
- {
- int i = 0;
- unsigned char *data;
- Ecore_X_Atom *types;
-
- ecore_x_window_prop_property_get(_source->win,
- ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32,
- &data, &num);
- types = (Ecore_X_Atom *)data;
- ev.window = win;
- ev.type = ECORE_X_ATOM_XDND_ENTER;
- ev.data.data32[0] = _source->win;
- ev.data.data32[1] = 0;
- if (num > 3)
- ev.data.data32[1] |= 0x1UL;
- else
- ev.data.data32[1] &= 0xfffffffeUL;
- ev.data.data32[1] |= ((unsigned long)_source->version) << 24;
-
- for (i = 2; i < 5; i++)
- ev.data.data32[i] = 0;
- for (i = 0; i < MIN(num, 3); ++i)
- ev.data.data32[i + 2] = types[i];
- free(data);
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
- _source->await_status = 0;
- _source->will_accept = 0;
- }
-
- x1 = _source->rectangle.x;
- x2 = _source->rectangle.x + _source->rectangle.width;
- y1 = _source->rectangle.y;
- y2 = _source->rectangle.y + _source->rectangle.height;
-
- if ((!_source->await_status) || (!_source->suppress) ||
- ((x < x1) || (x > x2) || (y < y1) || (y > y2)))
- {
- ev.window = win;
- ev.type = ECORE_X_ATOM_XDND_POSITION;
- ev.data.data32[0] = _source->win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = ((x << 16) & 0xffff0000) | (y & 0xffff);
- ev.data.data32[3] = _source->time;
- ev.data.data32[4] = _source->action;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
- _source->await_status = 1;
- }
- }
-
- if (_posupdatecb)
- {
- pos.position.x = x;
- pos.position.y = y;
- pos.win = win;
- pos.prev = _source->dest;
- _posupdatecb(_posupdatedata, &pos);
- }
-
- _source->prev.x = x;
- _source->prev.y = y;
- _source->prev.window = root;
- _source->dest = win;
-}
-
-EAPI Ecore_X_Atom
-ecore_x_dnd_source_action_get(void)
-{
- return _source->action;
-}
-
-/* local functions */
-static Eina_Bool
-_ecore_xcb_dnd_converter_copy(char *target EINA_UNUSED,
- void *data,
- int size,
- void **data_ret,
- int *size_ret,
- Ecore_X_Atom *tprop EINA_UNUSED,
- int *count EINA_UNUSED)
-{
- Ecore_Xcb_Textproperty text_prop;
- Ecore_Xcb_Encoding_Style style = XcbTextStyle;
- char *mystr;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if ((!data) || (!size)) return EINA_FALSE;
-
- mystr = calloc(1, size + 1);
- if (!mystr) return EINA_FALSE;
-
- memcpy(mystr, data, size);
- if (_ecore_xcb_mb_textlist_to_textproperty(&mystr, 1, style, &text_prop))
- {
- int len;
-
- len = strlen((char *)text_prop.value) + 1;
- if (!(*data_ret = malloc(len)))
- {
- free(mystr);
- return EINA_FALSE;
- }
- memcpy(*data_ret, text_prop.value, len);
- *size_ret = len;
- free(text_prop.value);
- free(mystr);
- return EINA_TRUE;
- }
- else
- {
- free(mystr);
- return EINA_FALSE;
- }
-}
-
-EAPI Eina_Bool
-ecore_x_dnd_abort(Ecore_X_Window xwin_source)
-{
- if (xwin_source == _source->win)
- {
- _source->will_accept = 0;
- return ecore_x_dnd_self_drop();
- }
- else return EINA_FALSE;
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_dpms.c b/src/lib/ecore_x/xcb/ecore_xcb_dpms.c
deleted file mode 100644
index 95360e3073..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_dpms.c
+++ /dev/null
@@ -1,354 +0,0 @@
-#include "ecore_xcb_private.h"
-#ifdef ECORE_XCB_DAMAGE
-# include <xcb/dpms.h>
-#endif
-
-/* local variables */
-static Eina_Bool _dpms_avail = EINA_FALSE;
-
-void
-_ecore_xcb_dpms_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_DPMS
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_dpms_id);
-#endif
-}
-
-void
-_ecore_xcb_dpms_finalize(void)
-{
-#ifdef ECORE_XCB_DPMS
- const xcb_query_extension_reply_t *ext_reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_DPMS
- ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_dpms_id);
- if ((ext_reply) && (ext_reply->present))
- {
- xcb_dpms_get_version_cookie_t cookie;
- xcb_dpms_get_version_reply_t *reply;
-
- cookie =
- xcb_dpms_get_version_unchecked(_ecore_xcb_conn,
- XCB_DPMS_MAJOR_VERSION,
- XCB_DPMS_MINOR_VERSION);
- reply = xcb_dpms_get_version_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- if (reply->server_major_version >= 1)
- _dpms_avail = EINA_TRUE;
- free(reply);
- }
- }
-#endif
-}
-
-/**
- * @defgroup Ecore_X_DPMS_Group X DPMS Extension Functions
- * @ingroup Ecore_X_Group
- *
- * Functions related to the X DPMS Extension
- */
-
-/**
- * Checks if the DPMS extension is available or not.
- *
- * @return @c EINA_TRUE if the DPMS extension is available,
- * @c EINA_FALSE otherwise.
- *
- * Return @c EINA_TRUE if the X server supports the DPMS Extension version 1.0,
- * @c EINA_FALSE otherwise.
- *
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI Eina_Bool
-ecore_x_dpms_query(void)
-{
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return _dpms_avail;
-}
-
-/**
- * Checks if the X server is capable of DPMS.
- * @return @c 1 if the X server is capable of DPMS, @c 0 otherwise.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI Eina_Bool
-ecore_x_dpms_capable_get(void)
-{
- Eina_Bool ret = EINA_FALSE;
-#ifdef ECORE_XCB_DPMS
- xcb_dpms_capable_cookie_t cookie;
- xcb_dpms_capable_reply_t *reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_dpms_avail) return EINA_FALSE;
-
-#ifdef ECORE_XCB_DPMS
- cookie = xcb_dpms_capable_unchecked(_ecore_xcb_conn);
- reply = xcb_dpms_capable_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- ret = reply->capable;
- free(reply);
- }
-#endif
-
- return ret;
-}
-
-/**
- * Checks the DPMS state of the display.
- * @return @c EINA_TRUE if DPMS is enabled, @c EINA_FALSE otherwise.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI Eina_Bool
-ecore_x_dpms_enabled_get(void)
-{
- Eina_Bool ret = EINA_FALSE;
-#ifdef ECORE_XCB_DPMS
- xcb_dpms_info_cookie_t cookie;
- xcb_dpms_info_reply_t *reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_dpms_avail) return EINA_FALSE;
-
-#ifdef ECORE_XCB_DPMS
- cookie = xcb_dpms_info_unchecked(_ecore_xcb_conn);
- reply = xcb_dpms_info_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
- if (reply->state) ret = EINA_TRUE;
- free(reply);
-#endif
-
- return ret;
-}
-
-/**
- * Sets the DPMS state of the display.
- * @param enabled @c 0 to disable DPMS characteristics of the server, enable it otherwise.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI void
-ecore_x_dpms_enabled_set(int enabled)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_dpms_avail) return;
-
-#ifdef ECORE_XCB_DPMS
- if (enabled)
- xcb_dpms_enable(_ecore_xcb_conn);
- else
- xcb_dpms_disable(_ecore_xcb_conn);
-#endif
-}
-
-/**
- * Gets the timeouts. The values are in unit of seconds.
- * @param standby Amount of time of inactivity before standby mode will be invoked.
- * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
- * @param off Amount of time of inactivity before the monitor is shut off.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI void
-ecore_x_dpms_timeouts_get(unsigned int *standby,
- unsigned int *suspend,
- unsigned int *off)
-{
-#ifdef ECORE_XCB_DPMS
- xcb_dpms_get_timeouts_cookie_t cookie;
- xcb_dpms_get_timeouts_reply_t *reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (standby) *standby = 0;
- if (suspend) *suspend = 0;
- if (off) *off = 0;
-
- if (!_dpms_avail) return;
-
-#ifdef ECORE_XCB_DPMS
- cookie = xcb_dpms_get_timeouts_unchecked(_ecore_xcb_conn);
- reply = xcb_dpms_get_timeouts_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return;
- if (standby) *standby = reply->standby_timeout;
- if (suspend) *suspend = reply->suspend_timeout;
- if (off) *off = reply->off_timeout;
- free(reply);
-#endif
-}
-
-/**
- * Sets the timeouts. The values are in unit of seconds.
- *
- * @param standby Amount of time of inactivity before standby mode will be invoked.
- * @param suspend Amount of time of inactivity before the screen is placed into suspend mode.
- * @param off Amount of time of inactivity before the monitor is shut off.
- * @return @c EINA_TRUE on success, @c EINA_FALSE on failure.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI Eina_Bool
-ecore_x_dpms_timeouts_set(unsigned int standby,
- unsigned int suspend,
- unsigned int off)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_dpms_avail) return EINA_FALSE;
-
-#ifdef ECORE_XCB_DPMS
- // FIXME: Add request check
- xcb_dpms_set_timeouts(_ecore_xcb_conn, standby, suspend, off);
- return EINA_TRUE;
-#endif
-
- return EINA_FALSE;
-}
-
-/**
- * Returns the amount of time of inactivity before standby mode is invoked.
- * @return The standby timeout value.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI unsigned int
-ecore_x_dpms_timeout_standby_get(void)
-{
- unsigned int standby = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_dpms_timeouts_get(&standby, NULL, NULL);
- return standby;
-}
-
-/**
- * Returns the amount of time of inactivity before the second level of
- * power saving is invoked.
- * @return The suspend timeout value.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI unsigned int
-ecore_x_dpms_timeout_suspend_get(void)
-{
- unsigned int suspend = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_dpms_timeouts_get(NULL, &suspend, NULL);
- return suspend;
-}
-
-/**
- * Returns the amount of time of inactivity before the third and final
- * level of power saving is invoked.
- * @return The off timeout value.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI unsigned int
-ecore_x_dpms_timeout_off_get(void)
-{
- unsigned int off = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_dpms_timeouts_get(NULL, NULL, &off);
- return off;
-}
-
-/**
- * Sets the standby timeout (in unit of seconds).
- * @param new_timeout Amount of time of inactivity before standby mode will be invoked.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI void
-ecore_x_dpms_timeout_standby_set(unsigned int new_timeout)
-{
- unsigned int standby = 0, suspend = 0, off = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_dpms_timeouts_get(&standby, &suspend, &off);
- ecore_x_dpms_timeouts_set(new_timeout, suspend, off);
-}
-
-/**
- * Sets the suspend timeout (in unit of seconds).
- * @param new_timeout Amount of time of inactivity before the screen is placed into suspend mode.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI void
-ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout)
-{
- unsigned int standby = 0, suspend = 0, off = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_dpms_timeouts_get(&standby, &suspend, &off);
- ecore_x_dpms_timeouts_set(standby, new_timeout, off);
-}
-
-/**
- * Sets the off timeout (in unit of seconds).
- * @param new_timeout Amount of time of inactivity before the monitor is shut off.
- * @ingroup Ecore_X_DPMS_Group
- */
-EAPI void
-ecore_x_dpms_timeout_off_set(unsigned int new_timeout)
-{
- unsigned int standby = 0, suspend = 0, off = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_dpms_timeouts_get(&standby, &suspend, &off);
- ecore_x_dpms_timeouts_set(standby, suspend, new_timeout);
-}
-
-/**
- * Check the DPMS power level.
- * @return @c 0 if DPMS is :In Use
- * @return @c 1 if DPMS is :Blanked, low power
- * @return @c 2 if DPMS is :Blanked, lower power
- * @return @c 3 if DPMS is :Shut off, awaiting activity
- * @return @c -1 otherwise.
-*/
-EAPI Ecore_X_Dpms_Mode
-ecore_x_dpms_power_level_get(void)
-{
- Ecore_X_Dpms_Mode ret = -1;
-#ifdef ECORE_XCB_DPMS
- xcb_dpms_info_cookie_t cookie;
- xcb_dpms_info_reply_t *reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_dpms_avail) return ret;
-
-#ifdef ECORE_XCB_DPMS
- cookie = xcb_dpms_info_unchecked(_ecore_xcb_conn);
- reply = xcb_dpms_info_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return -1;
-
- ret = reply->power_level;
- free(reply);
-#endif
-
- return ret;
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_drawable.c b/src/lib/ecore_x/xcb/ecore_xcb_drawable.c
deleted file mode 100644
index 30bb880449..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_drawable.c
+++ /dev/null
@@ -1,124 +0,0 @@
-#include "ecore_xcb_private.h"
-
-/**
- * @defgroup Ecore_X_Drawable_Group X Drawable Functions
- * @ingroup Ecore_X_Group
- *
- * Functions that operate on drawables.
- */
-
-/**
- * Fill the specified rectangle on a drawable.
- * @param d The given drawable.
- * @param gc The graphic context that controls the fill rules.
- * @param x The X coordinate of the top-left corner of the rectangle.
- * @param y The Y coordinate of the top-left corner of the rectangle.
- * @param width The width of the rectangle.
- * @param height The height of the rectangle.
- */
-EAPI void
-ecore_x_drawable_rectangle_fill(Ecore_X_Drawable draw,
- Ecore_X_GC gc,
- int x,
- int y,
- int w,
- int h)
-{
- xcb_rectangle_t rect;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- rect.x = x;
- rect.y = y;
- rect.width = w;
- rect.height = h;
- xcb_poly_fill_rectangle(_ecore_xcb_conn, draw, gc, 1,
- (const xcb_rectangle_t *)&rect);
-// ecore_x_flush();
-}
-
-/**
- * Retrieves the geometry of the given drawable.
- * @param d The given drawable.
- * @param x Pointer to an integer into which the X position is to be stored.
- * @param y Pointer to an integer into which the Y position is to be stored.
- * @param w Pointer to an integer into which the width is to be stored.
- * @param h Pointer to an integer into which the height is to be stored.
- * @ingroup Ecore_X_Drawable_Group
- */
-EAPI void
-ecore_x_drawable_geometry_get(Ecore_X_Drawable draw,
- int *x,
- int *y,
- int *w,
- int *h)
-{
- xcb_get_geometry_cookie_t cookie;
- xcb_get_geometry_reply_t *reply;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (x) *x = 0;
- if (y) *y = 0;
- if (w) *w = 0;
- if (h) *h = 0;
- cookie = xcb_get_geometry_unchecked(_ecore_xcb_conn, draw);
- reply = xcb_get_geometry_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return;
- if (x) *x = reply->x;
- if (y) *y = reply->y;
- if (w) *w = (int)reply->width;
- if (h) *h = (int)reply->height;
- free(reply);
-}
-
-/**
- * Retrieves the width of the border of the given drawable.
- * @param d The given drawable.
- * @return The border width of the given drawable.
- * @ingroup Ecore_X_Drawable_Group
- */
-EAPI int
-ecore_x_drawable_border_width_get(Ecore_X_Drawable d)
-{
- xcb_get_geometry_cookie_t cookie;
- xcb_get_geometry_reply_t *reply;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_get_geometry_unchecked(_ecore_xcb_conn, d);
- reply = xcb_get_geometry_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return 0;
- ret = (int)reply->border_width;
- free(reply);
- return ret;
-}
-
-/**
- * Retrieves the depth of the given drawable.
- * @param d The given drawable.
- * @return The depth of the given drawable.
- * @ingroup Ecore_X_Drawable_Group
- */
-EAPI int
-ecore_x_drawable_depth_get(Ecore_X_Drawable d)
-{
- xcb_get_geometry_cookie_t cookie;
- xcb_get_geometry_reply_t *reply;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_get_geometry_unchecked(_ecore_xcb_conn, d);
- reply = xcb_get_geometry_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return 0;
- ret = (int)reply->depth;
- free(reply);
- return ret;
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_e.c b/src/lib/ecore_x/xcb/ecore_xcb_e.c
deleted file mode 100644
index 15bd726f42..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_e.c
+++ /dev/null
@@ -1,2266 +0,0 @@
-#include "ecore_xcb_private.h"
-
-/* local function prototypes */
-static Ecore_X_Atom _ecore_xcb_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state);
-static Ecore_X_Virtual_Keyboard_State _ecore_xcb_e_vkbd_state_get(Ecore_X_Atom atom);
-static Ecore_X_Atom _ecore_xcb_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state);
-static Ecore_X_Illume_Quickpanel_State _ecore_xcb_e_quickpanel_state_get(Ecore_X_Atom atom);
-static Ecore_X_Atom _ecore_xcb_e_illume_atom_get(Ecore_X_Illume_Mode mode);
-static Ecore_X_Illume_Mode _ecore_xcb_e_illume_mode_get(Ecore_X_Atom atom);
-static Ecore_X_Atom _ecore_xcb_e_indicator_atom_get(Ecore_X_Illume_Indicator_State state);
-static Ecore_X_Illume_Indicator_State _ecore_xcb_e_indicator_state_get(Ecore_X_Atom atom);
-
-EAPI void
-ecore_x_e_init(void)
-{
-}
-
-EAPI void
-ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root,
- Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root,
- Ecore_X_Window win,
- int w,
- int h)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 1;
- ev.data.data32[2] = w;
- ev.data.data32[3] = h;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_sync_counter_set(Ecore_X_Window win,
- Ecore_X_Sync_Counter counter)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (counter)
- ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
- ECORE_X_ATOM_CARDINAL, &counter, 1);
- else
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER);
-}
-
-EAPI Ecore_X_Sync_Counter
-ecore_x_e_comp_sync_counter_get(Ecore_X_Window win)
-{
- Ecore_X_Sync_Counter counter = 0;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret = ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_SYNC_COUNTER,
- ECORE_X_ATOM_CARDINAL, &counter, 1);
- if (ret != 1) return 0;
- return counter;
-}
-
-EAPI Eina_Bool
-ecore_x_e_comp_sync_supported_get(Ecore_X_Window root)
-{
- Ecore_X_Window win, win2;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
- ret =
- ecore_x_window_prop_xid_get(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- if ((ret == 1) && (win))
- {
- ret =
- ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win2, 1);
- if ((ret == 1) && (win2 == win))
- return EINA_TRUE;
- }
- return EINA_FALSE;
-}
-
-/*
- * @since 1.3
- * @deprecated use ecore_x_e_window_available_profiles_set
- */
-EAPI void
-ecore_x_e_window_profile_list_set(Ecore_X_Window win,
- const char **profiles,
- unsigned int num_profiles)
-{
- Ecore_X_Atom *atoms;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win)
- return;
-
- if ((!profiles) || (num_profiles <= 0))
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST);
- else
- {
- atoms = alloca(num_profiles * sizeof(Ecore_X_Atom));
- ecore_x_atoms_get(profiles, num_profiles, atoms);
- ecore_x_window_prop_property_set(win,
- ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
- ECORE_X_ATOM_ATOM, 32, (void *)atoms,
- num_profiles);
- }
-}
-
-/*
- * @since 1.3
- * @deprecated use ecore_x_e_window_available_profiles_get
- */
-EAPI Eina_Bool
-ecore_x_e_window_profile_list_get(Ecore_X_Window win,
- const char ***profiles,
- int *ret_num)
-{
- unsigned char *data = NULL;
- Ecore_X_Atom *atoms;
- int num, i;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (ret_num)
- *ret_num = 0;
-
- if (profiles)
- *profiles = NULL;
-
- if (!win)
- return EINA_FALSE;
-
- if (!ecore_x_window_prop_property_get(win,
- ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
- ECORE_X_ATOM_ATOM, 32, &data, &num))
- return EINA_FALSE;
-
- if (ret_num)
- *ret_num = num;
-
- if (profiles)
- {
- (*profiles) = calloc(num, sizeof(char *));
- if (!(*profiles))
- {
- if (ret_num)
- *ret_num = 0;
-
- if (data)
- free(data);
-
- return EINA_FALSE;
- }
-
- atoms = (Ecore_X_Atom *)data;
- for (i = 0; i < num; i++)
- (*profiles)[i] = ecore_x_atom_name_get(atoms[i]);
- }
-
- if (data)
- free(data);
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_e_window_profile_set(Ecore_X_Window win,
- const char *profile)
-{
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win)
- return;
-
- if (!profile)
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_WINDOW_PROFILE);
- else
- {
- atom = ecore_x_atom_get(profile);
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_E_WINDOW_PROFILE,
- ECORE_X_ATOM_ATOM, 32, (void *)&atom, 1);
- }
-}
-
-EAPI char *
-ecore_x_e_window_profile_get(Ecore_X_Window win)
-{
- Ecore_X_Atom *atom = NULL;
- unsigned char *data;
- char *profile = NULL;
- int num;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
- if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_E_WINDOW_PROFILE,
- ECORE_X_ATOM_ATOM, 32, &data, &num))
- {
- if (data)
- free(data);
- return NULL;
- }
-
- if (data)
- atom = (Ecore_X_Atom *)data;
-
- if (atom)
- profile = ecore_x_atom_name_get(atom[0]);
-
- if (data) free(data);
-
- return profile;
-}
-
-EAPI void
-ecore_x_e_window_profile_supported_set(Ecore_X_Window root,
- Eina_Bool enabled)
-{
- Ecore_X_Window win;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- if (enabled)
- {
- win = ecore_x_window_new(root, 1, 2, 3, 4);
- ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- }
- else
- {
- int ret = 0;
-
- ret = ecore_x_window_prop_xid_get(root,
- ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- if ((ret == 1) && (win))
- {
- ecore_x_window_prop_property_del(root,
- ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED);
- ecore_x_window_free(win);
- }
- }
-}
-
-EAPI Eina_Bool
-ecore_x_e_window_profile_supported_get(Ecore_X_Window root)
-{
- Ecore_X_Window win, win2;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- ret =
- ecore_x_window_prop_xid_get(root,
- ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
- ECORE_X_ATOM_WINDOW,
- &win, 1);
- if ((ret == 1) && (win))
- {
- ret =
- ecore_x_window_prop_xid_get(win,
- ECORE_X_ATOM_E_WINDOW_PROFILE_SUPPORTED,
- ECORE_X_ATOM_WINDOW,
- &win2, 1);
- if ((ret == 1) && (win2 == win))
- return EINA_TRUE;
- }
- return EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_window_available_profiles_set(Ecore_X_Window win,
- const char **profiles,
- unsigned int count)
-{
- Ecore_X_Atom *atoms;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win)
- return;
-
- if ((!profiles) || (count <= 0))
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST);
- else
- {
- atoms = alloca(count * sizeof(Ecore_X_Atom));
- ecore_x_atoms_get(profiles, count, atoms);
- ecore_x_window_prop_property_set(win,
- ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
- ECORE_X_ATOM_ATOM, 32, (void *)atoms,
- count);
- }
-}
-
-EAPI Eina_Bool
-ecore_x_e_window_available_profiles_get(Ecore_X_Window win,
- const char ***profiles,
- int *count)
-{
- unsigned char *data = NULL;
- Ecore_X_Atom *atoms;
- int num, i;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (count)
- *count = 0;
-
- if (profiles)
- *profiles = NULL;
-
- if (!win)
- return EINA_FALSE;
-
- if (!ecore_x_window_prop_property_get(win,
- ECORE_X_ATOM_E_WINDOW_PROFILE_AVAILABLE_LIST,
- ECORE_X_ATOM_ATOM, 32, &data, &num))
- return EINA_FALSE;
-
- if (count)
- *count = num;
-
- if (profiles)
- {
- (*profiles) = calloc(num, sizeof(char *));
- if (!(*profiles))
- {
- if (count)
- *count = 0;
-
- if (data)
- free(data);
-
- return EINA_FALSE;
- }
-
- atoms = (Ecore_X_Atom *)data;
- for (i = 0; i < num; i++)
- (*profiles)[i] = ecore_x_atom_name_get(atoms[i]);
- }
-
- if (data)
- free(data);
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_e_window_profile_change_send(Ecore_X_Window root,
- Ecore_X_Window win,
- const char *profile)
-{
- xcb_client_message_event_t ev;
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root)
- root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- if (!win)
- return;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- atom = ecore_x_atom_get(profile);
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE;
- ev.data.data32[0] = win;
- ev.data.data32[1] = atom;
- ev.data.data32[2] = 0; // later
- ev.data.data32[3] = 0; // later
- ev.data.data32[4] = 0; // later
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY),
- (const char *)&ev);
-}
-
-EAPI void
-ecore_x_e_window_profile_change_request_send(Ecore_X_Window win,
- const char *profile)
-{
- xcb_client_message_event_t ev;
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win)
- return;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- atom = ecore_x_atom_get(profile);
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_REQUEST;
- ev.data.data32[0] = win;
- ev.data.data32[1] = atom;
- ev.data.data32[2] = 0; // later
- ev.data.data32[3] = 0; // later
- ev.data.data32[4] = 0; // later
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT,
- (const char *)&ev);
-}
-
-EAPI void
-ecore_x_e_window_profile_change_done_send(Ecore_X_Window root,
- Ecore_X_Window win,
- const char *profile)
-{
- xcb_client_message_event_t ev;
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root)
- root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- if (!win)
- return;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- atom = ecore_x_atom_get(profile);
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_WINDOW_PROFILE_CHANGE_DONE;
- ev.data.data32[0] = win;
- ev.data.data32[1] = atom;
- ev.data.data32[2] = 0; // later
- ev.data.data32[3] = 0; // later
- ev.data.data32[4] = 0; // later
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY),
- (const char *)&ev);
-}
-
-EAPI void
-ecore_x_e_comp_sync_supported_set(Ecore_X_Window root,
- Eina_Bool enabled)
-{
- Ecore_X_Window win;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
- if (enabled)
- {
- win = ecore_x_window_new(root, 1, 2, 3, 4);
- ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- }
- else
- {
- int ret = 0;
-
- ret = ecore_x_window_prop_xid_get(root,
- ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- if ((ret == 1) && (win))
- {
- ecore_x_window_prop_property_del(root,
- ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED);
- ecore_x_window_free(win);
- }
- }
-}
-
-EAPI void
-ecore_x_e_comp_sync_begin_send(Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_SYNC_BEGIN;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_sync_end_send(Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_SYNC_END;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_SYNC_CANCEL;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_flush_send(Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_FLUSH;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_dump_send(Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_COMP_DUMP;
- ev.data.data32[0] = win;
- ev.data.data32[1] = 0;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_e_comp_pixmap_set(Ecore_X_Window win,
- Ecore_X_Pixmap pixmap)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (pixmap)
- ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_COMP_PIXMAP,
- ECORE_X_ATOM_PIXMAP, &pixmap, 1);
- else
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_E_COMP_PIXMAP);
-}
-
-EAPI Ecore_X_Pixmap
-ecore_x_e_comp_pixmap_get(Ecore_X_Window win)
-{
- Ecore_X_Pixmap pixmap = 0;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret = ecore_x_window_prop_xid_get(win, ECORE_X_ATOM_E_COMP_PIXMAP,
- ECORE_X_ATOM_PIXMAP, &pixmap, 1);
- if (ret != 1) return 0;
- return pixmap;
-}
-
-EAPI void
-ecore_x_e_frame_size_set(Ecore_X_Window win,
- int fl,
- int fr,
- int ft,
- int fb)
-{
- uint32_t frames[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- frames[0] = fl;
- frames[1] = fr;
- frames[2] = ft;
- frames[3] = fb;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_FRAME_SIZE, frames, 4);
-}
-
-EAPI Ecore_X_Virtual_Keyboard_State
-ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
- &atom, 1))
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
-
- return _ecore_xcb_e_vkbd_state_get(atom);
-}
-
-EAPI void
-ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win,
- Ecore_X_Virtual_Keyboard_State state)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- atom = _ecore_xcb_e_vkbd_atom_get(state);
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
- &atom, 1);
-}
-
-EAPI void
-ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win,
- Ecore_X_Virtual_Keyboard_State state)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_STATE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_xcb_e_vkbd_atom_get(state),
- 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_virtual_keyboard_set(Ecore_X_Window win,
- unsigned int is_keyboard)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
- &is_keyboard, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_e_virtual_keyboard_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_VIRTUAL_KEYBOARD,
- &val, 1))
- return EINA_FALSE;
-
- return val ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI int
-ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR,
- &val, 1))
- return 0;
-
- return val;
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win,
- unsigned int priority)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MAJOR,
- &priority, 1);
-}
-
-EAPI int
-ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR,
- &val, 1))
- return 0;
-
- return val;
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win,
- unsigned int priority)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_PRIORITY_MINOR,
- &priority, 1);
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win,
- unsigned int zone)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE,
- &zone, 1);
-}
-
-EAPI int
-ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ZONE,
- &val, 1))
- return 0;
-
- return val;
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_POSITION_UPDATE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_conformant_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
- &val, 1))
- return EINA_FALSE;
-
- return val ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_illume_conformant_set(Ecore_X_Window win,
- unsigned int is_conformant)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_CONFORMANT,
- &is_conformant, 1);
-}
-
-EAPI void
-ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win,
- int x,
- int y,
- int w,
- int h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- geom[0] = x;
- geom[1] = y;
- geom[2] = w;
- geom[3] = h;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY,
- geom, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win,
- int *x,
- int *y,
- int *w,
- int *h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (x) *x = 0;
- if (y) *y = 0;
- if (w) *w = 0;
- if (h) *h = 0;
-
- if (ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_SOFTKEY_GEOMETRY,
- geom, 4) != 4)
- return EINA_FALSE;
-
- if (x) *x = geom[0];
- if (y) *y = geom[1];
- if (w) *w = geom[2];
- if (h) *h = geom[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win,
- int x,
- int y,
- int w,
- int h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- geom[0] = x;
- geom[1] = y;
- geom[2] = w;
- geom[3] = h;
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY,
- geom, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win,
- int *x,
- int *y,
- int *w,
- int *h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (x) *x = 0;
- if (y) *y = 0;
- if (w) *w = 0;
- if (h) *h = 0;
-
- if (ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_GEOMETRY,
- geom, 4) != 4)
- return EINA_FALSE;
-
- if (x) *x = geom[0];
- if (y) *y = geom[1];
- if (w) *w = geom[2];
- if (h) *h = geom[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win,
- int x,
- int y,
- int w,
- int h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- geom[0] = x;
- geom[1] = y;
- geom[2] = w;
- geom[3] = h;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY,
- geom, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win,
- int *x,
- int *y,
- int *w,
- int *h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (x) *x = 0;
- if (y) *y = 0;
- if (w) *w = 0;
- if (h) *h = 0;
-
- if (ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_KEYBOARD_GEOMETRY,
- geom, 4) != 4)
- return EINA_FALSE;
-
- if (x) *x = geom[0];
- if (y) *y = geom[1];
- if (w) *w = geom[2];
- if (h) *h = geom[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_set(Ecore_X_Window win,
- unsigned int is_quickpanel)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
- &is_quickpanel, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_quickpanel_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL,
- &val, 1))
- return EINA_FALSE;
-
- return val ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win,
- Ecore_X_Illume_Quickpanel_State state)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- atom = _ecore_xcb_e_quickpanel_atom_get(state);
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
- &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Quickpanel_State
-ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_atom_get(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
- &atom, 1))
- return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
-
- return _ecore_xcb_e_quickpanel_state_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win,
- Ecore_X_Illume_Quickpanel_State state)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_xcb_e_quickpanel_atom_get(state),
- 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE_TOGGLE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 0, 0, 0, 0, 0);
-}
-
-static Ecore_X_Atom
-_ecore_xcb_e_clipboard_atom_get(Ecore_X_Illume_Clipboard_State state)
-{
- switch (state)
- {
- case ECORE_X_ILLUME_CLIPBOARD_STATE_ON:
- return ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON;
- case ECORE_X_ILLUME_CLIPBOARD_STATE_OFF:
- return ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF;
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Illume_Clipboard_State
-_ecore_xcb_e_clipboard_state_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_ON)
- return ECORE_X_ILLUME_CLIPBOARD_STATE_ON;
-
- if (atom == ECORE_X_ATOM_E_ILLUME_CLIPBOARD_OFF)
- return ECORE_X_ILLUME_CLIPBOARD_STATE_OFF;
-
- return ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN;
-}
-
-EAPI void
-ecore_x_e_illume_clipboard_state_set(Ecore_X_Window win,
- Ecore_X_Illume_Clipboard_State state)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- atom = _ecore_xcb_e_clipboard_atom_get(state);
-
- ecore_x_window_prop_atom_set(win,
- ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE,
- &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Clipboard_State
-ecore_x_e_illume_clipboard_state_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_atom_get(win,
- ECORE_X_ATOM_E_ILLUME_CLIPBOARD_STATE,
- &atom, 1))
- return ECORE_X_ILLUME_CLIPBOARD_STATE_UNKNOWN;
- return _ecore_xcb_e_clipboard_state_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_clipboard_geometry_set(Ecore_X_Window win,
- int x, int y, int w, int h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- geom[0] = x;
- geom[1] = y;
- geom[2] = w;
- geom[3] = h;
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY,
- geom, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_clipboard_geometry_get(Ecore_X_Window win,
- int *x, int *y, int *w, int *h)
-{
- int ret = 0;
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ret =
- ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_ILLUME_CLIPBOARD_GEOMETRY,
- geom, 4);
- if (ret != 4) return EINA_FALSE;
-
- if (x) *x = geom[0];
- if (y) *y = geom[1];
- if (w) *w = geom[2];
- if (h) *h = geom[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_e_illume_mode_set(Ecore_X_Window win,
- Ecore_X_Illume_Mode mode)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- atom = _ecore_xcb_e_illume_atom_get(mode);
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Mode
-ecore_x_e_illume_mode_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_atom_get(win, ECORE_X_ATOM_E_ILLUME_MODE, &atom, 1))
- return ECORE_X_ILLUME_MODE_UNKNOWN;
-
- return _ecore_xcb_e_illume_mode_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_mode_send(Ecore_X_Window win,
- Ecore_X_Illume_Mode mode)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_MODE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_xcb_e_illume_atom_get(mode),
- 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_focus_back_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_BACK,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_focus_forward_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_FORWARD,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_focus_home_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_FOCUS_HOME,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_close_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_CLOSE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_home_new_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_NEW,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_home_del_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_HOME_DEL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_next_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_NEXT,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_prev_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_PREV,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_activate_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ACTIVATE,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_over_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_OVER,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_read_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_read_next_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_NEXT,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_read_prev_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_READ_PREV,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_up_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_UP,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_access_action_down_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- win,
- ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_DOWN,
- 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_drag_set(Ecore_X_Window win,
- unsigned int drag)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG, &drag, 1);
-}
-
-EAPI void
-ecore_x_e_illume_drag_locked_set(Ecore_X_Window win,
- unsigned int is_locked)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED,
- &is_locked, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_drag_locked_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG_LOCKED,
- &val, 1))
- return EINA_FALSE;
-
- return val ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI Eina_Bool
-ecore_x_e_illume_drag_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_E_ILLUME_DRAG, &val, 1))
- return EINA_FALSE;
-
- return val ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_illume_drag_start_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_START,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_drag_end_send(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_DRAG_END,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- 1, 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_illume_zone_set(Ecore_X_Window win,
- Ecore_X_Window zone)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE, &zone, 1);
-}
-
-EAPI Ecore_X_Window
-ecore_x_e_illume_zone_get(Ecore_X_Window win)
-{
- Ecore_X_Window zone = 0;
- int ret;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret = ecore_x_window_prop_window_get(win, ECORE_X_ATOM_E_ILLUME_ZONE,
- &zone, 1);
- if ((ret == 0) || (ret == -1))
- return 0;
-
- return zone;
-}
-
-EAPI void
-ecore_x_e_illume_zone_list_set(Ecore_X_Window win,
- Ecore_X_Window *zones,
- unsigned int num)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(win, ECORE_X_ATOM_E_ILLUME_ZONE_LIST,
- zones, num);
-}
-
-/* local functions */
-static Ecore_X_Atom
-_ecore_xcb_e_vkbd_atom_get(Ecore_X_Virtual_Keyboard_State state)
-{
- switch (state)
- {
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_ON:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_IP:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_URL:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD;
-
- case ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME:
- return ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME;
-
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Virtual_Keyboard_State
-_ecore_xcb_e_vkbd_state_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ON)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_ON;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_OFF)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_ALPHA)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_NUMERIC)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PIN)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PHONE_NUMBER)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HEX)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_TERMINAL)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_PASSWORD)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_IP)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_IP;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_HOST)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_FILE)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_URL)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_URL;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_KEYPAD)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD;
- if (atom == ECORE_X_ATOM_E_VIRTUAL_KEYBOARD_J2ME)
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME;
-
- return ECORE_X_VIRTUAL_KEYBOARD_STATE_UNKNOWN;
-}
-
-static Ecore_X_Atom
-_ecore_xcb_e_quickpanel_atom_get(Ecore_X_Illume_Quickpanel_State state)
-{
- switch (state)
- {
- case ECORE_X_ILLUME_QUICKPANEL_STATE_ON:
- return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON;
-
- case ECORE_X_ILLUME_QUICKPANEL_STATE_OFF:
- return ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF;
-
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Illume_Quickpanel_State
-_ecore_xcb_e_quickpanel_state_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
- return ECORE_X_ILLUME_QUICKPANEL_STATE_ON;
- if (atom == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF)
- return ECORE_X_ILLUME_QUICKPANEL_STATE_OFF;
-
- return ECORE_X_ILLUME_QUICKPANEL_STATE_UNKNOWN;
-}
-
-static Ecore_X_Atom
-_ecore_xcb_e_illume_atom_get(Ecore_X_Illume_Mode mode)
-{
- switch (mode)
- {
- case ECORE_X_ILLUME_MODE_SINGLE:
- return ECORE_X_ATOM_E_ILLUME_MODE_SINGLE;
-
- case ECORE_X_ILLUME_MODE_DUAL_TOP:
- return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP;
-
- case ECORE_X_ILLUME_MODE_DUAL_LEFT:
- return ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT;
-
- default:
- break;
- }
- return ECORE_X_ILLUME_MODE_UNKNOWN;
-}
-
-static Ecore_X_Illume_Mode
-_ecore_xcb_e_illume_mode_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_MODE_SINGLE)
- return ECORE_X_ILLUME_MODE_SINGLE;
- if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_TOP)
- return ECORE_X_ILLUME_MODE_DUAL_TOP;
- if (atom == ECORE_X_ATOM_E_ILLUME_MODE_DUAL_LEFT)
- return ECORE_X_ILLUME_MODE_DUAL_LEFT;
-
- return ECORE_X_ILLUME_MODE_UNKNOWN;
-}
-
-static Ecore_X_Atom
-_ecore_xcb_e_indicator_atom_get(Ecore_X_Illume_Indicator_State state)
-{
- switch (state)
- {
- case ECORE_X_ILLUME_INDICATOR_STATE_ON:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_ON;
-
- case ECORE_X_ILLUME_INDICATOR_STATE_OFF:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF;
-
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Illume_Indicator_State
-_ecore_xcb_e_indicator_state_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_ON)
- return ECORE_X_ILLUME_INDICATOR_STATE_ON;
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OFF)
- return ECORE_X_ILLUME_INDICATOR_STATE_OFF;
-
- return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
-}
-
-EAPI void
-ecore_x_e_illume_indicator_state_set(Ecore_X_Window win,
- Ecore_X_Illume_Indicator_State state)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- atom = _ecore_xcb_e_indicator_atom_get(state);
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
- &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Indicator_State
-ecore_x_e_illume_indicator_state_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_atom_get(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
- &atom, 1))
- return ECORE_X_ILLUME_INDICATOR_STATE_UNKNOWN;
-
- return _ecore_xcb_e_indicator_state_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_indicator_state_send(Ecore_X_Window win,
- Ecore_X_Illume_Indicator_State state)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win, ECORE_X_ATOM_E_ILLUME_INDICATOR_STATE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_xcb_e_indicator_atom_get(state),
- 0, 0, 0, 0);
-}
-
-static Ecore_X_Atom
-_ecore_x_e_indicator_opacity_atom_get(Ecore_X_Illume_Indicator_Opacity_Mode mode)
-{
- switch (mode)
- {
- case ECORE_X_ILLUME_INDICATOR_OPAQUE:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE;
-
- case ECORE_X_ILLUME_INDICATOR_TRANSLUCENT:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT;
-
- case ECORE_X_ILLUME_INDICATOR_TRANSPARENT:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT;
-
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Illume_Indicator_Opacity_Mode
-_ecore_x_e_indicator_opacity_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPAQUE)
- return ECORE_X_ILLUME_INDICATOR_OPAQUE;
-
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSLUCENT)
- return ECORE_X_ILLUME_INDICATOR_TRANSLUCENT;
-
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TRANSPARENT)
- return ECORE_X_ILLUME_INDICATOR_TRANSPARENT;
-
- return ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN;
-}
-
-EAPI void
-ecore_x_e_illume_indicator_opacity_set(Ecore_X_Window win,
- Ecore_X_Illume_Indicator_Opacity_Mode mode)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- atom = _ecore_x_e_indicator_opacity_atom_get(mode);
- ecore_x_window_prop_atom_set(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
- &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Indicator_Opacity_Mode
-ecore_x_e_illume_indicator_opacity_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- if (!ecore_x_window_prop_atom_get(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
- &atom, 1))
- return ECORE_X_ILLUME_INDICATOR_OPACITY_UNKNOWN;
-
- return _ecore_x_e_indicator_opacity_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_indicator_opacity_send(Ecore_X_Window win,
- Ecore_X_Illume_Indicator_Opacity_Mode mode)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_x_e_indicator_opacity_atom_get(mode),
- 0, 0, 0, 0);
-}
-
-static Ecore_X_Atom
-_ecore_x_e_indicator_type_atom_get(Ecore_X_Illume_Indicator_Type_Mode mode)
-{
- switch (mode)
- {
- case ECORE_X_ILLUME_INDICATOR_TYPE_1:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1;
-
- case ECORE_X_ILLUME_INDICATOR_TYPE_2:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2;
-
- case ECORE_X_ILLUME_INDICATOR_TYPE_3:
- return ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_3;
-
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Illume_Indicator_Type_Mode
-_ecore_x_e_indicator_type_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_1)
- return ECORE_X_ILLUME_INDICATOR_TYPE_1;
-
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_2)
- return ECORE_X_ILLUME_INDICATOR_TYPE_2;
-
- if (atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_3)
- return ECORE_X_ILLUME_INDICATOR_TYPE_3;
-
- return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
-}
-
-EAPI void
-ecore_x_e_illume_indicator_type_set(Ecore_X_Window win,
- Ecore_X_Illume_Indicator_Type_Mode mode)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- atom = _ecore_x_e_indicator_type_atom_get(mode);
- ecore_x_window_prop_atom_set(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
- &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Indicator_Type_Mode
-ecore_x_e_illume_indicator_type_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- if (!ecore_x_window_prop_atom_get(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
- &atom, 1))
- return ECORE_X_ILLUME_INDICATOR_TYPE_UNKNOWN;
-
- return _ecore_x_e_indicator_type_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_indicator_type_send(Ecore_X_Window win,
- Ecore_X_Illume_Indicator_Type_Mode mode)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_ILLUME_INDICATOR_TYPE_MODE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_x_e_indicator_type_atom_get(mode),
- 0, 0, 0, 0);
-}
-
-static Ecore_X_Atom
-_ecore_x_e_illume_window_state_atom_get(Ecore_X_Illume_Window_State state)
-{
- switch (state)
- {
- case ECORE_X_ILLUME_WINDOW_STATE_NORMAL:
- return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL;
-
- case ECORE_X_ILLUME_WINDOW_STATE_FLOATING:
- return ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING;
-
- default:
- break;
- }
- return 0;
-}
-
-static Ecore_X_Illume_Window_State
-_ecore_x_e_illume_window_state_get(Ecore_X_Atom atom)
-{
- if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_NORMAL)
- return ECORE_X_ILLUME_WINDOW_STATE_NORMAL;
-
- if (atom == ECORE_X_ATOM_E_ILLUME_WINDOW_STATE_FLOATING)
- return ECORE_X_ILLUME_WINDOW_STATE_FLOATING;
-
- return ECORE_X_ILLUME_WINDOW_STATE_NORMAL;
-}
-
-EAPI void
-ecore_x_e_illume_window_state_set(Ecore_X_Window win,
- Ecore_X_Illume_Window_State state)
-{
- Ecore_X_Atom atom = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- atom = _ecore_x_e_illume_window_state_atom_get(state);
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_E_ILLUME_WINDOW_STATE,
- &atom, 1);
-}
-
-EAPI Ecore_X_Illume_Window_State
-ecore_x_e_illume_window_state_get(Ecore_X_Window win)
-{
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- if (!ecore_x_window_prop_atom_get(win,
- ECORE_X_ATOM_E_ILLUME_WINDOW_STATE,
- &atom, 1))
- return ECORE_X_ILLUME_WINDOW_STATE_NORMAL;
-
- return _ecore_x_e_illume_window_state_get(atom);
-}
-
-EAPI void
-ecore_x_e_illume_window_state_send(Ecore_X_Window win,
- Ecore_X_Illume_Window_State state)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_ILLUME_WINDOW_STATE,
- ECORE_X_EVENT_MASK_WINDOW_CONFIGURE,
- _ecore_x_e_illume_window_state_atom_get(state),
- 0, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_window_rotation_supported_set(Ecore_X_Window root,
- Eina_Bool enabled)
-{
- Ecore_X_Window win;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- if (enabled)
- {
- win = ecore_x_window_new(root, 1, 2, 3, 4);
- ecore_x_window_prop_xid_set(win, ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- ecore_x_window_prop_xid_set(root, ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
- ECORE_X_ATOM_WINDOW, &win, 1);
- }
- else
- {
- int ret;
-
- ret =
- ecore_x_window_prop_xid_get(root,
- ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
- ECORE_X_ATOM_WINDOW,
- &win, 1);
- if ((ret == 1) && (win))
- {
- ecore_x_window_prop_property_del(
- root,
- ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED);
- ecore_x_window_free(win);
- }
- }
-}
-
-EAPI Eina_Bool
-ecore_x_e_window_rotation_supported_get(Ecore_X_Window root)
-{
- Ecore_X_Window win, win2;
- int ret;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- ret =
- ecore_x_window_prop_xid_get(root,
- ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
- ECORE_X_ATOM_WINDOW,
- &win, 1);
- if ((ret == 1) && (win))
- {
- ret =
- ecore_x_window_prop_xid_get(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_SUPPORTED,
- ECORE_X_ATOM_WINDOW,
- &win2, 1);
- if ((ret == 1) && (win2 == win))
- return EINA_TRUE;
- }
-
- return EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_window_rotation_app_set(Ecore_X_Window win,
- Eina_Bool set)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (set) val = 1;
-
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_APP_SUPPORTED,
- &val, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_e_window_rotation_app_get(Ecore_X_Window win)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_APP_SUPPORTED,
- &val, 1))
- return EINA_FALSE;
-
- return val ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_window_rotation_preferred_rotation_set(Ecore_X_Window win,
- int rot)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (rot != -1)
- {
- val = (unsigned int)rot;
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_PREFERRED_ROTATION,
- &val, 1);
- }
- else
- {
- ecore_x_window_prop_property_del(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_PREFERRED_ROTATION);
- }
-}
-
-EAPI Eina_Bool
-ecore_x_e_window_rotation_preferred_rotation_get(Ecore_X_Window win,
- int *rot)
-{
- unsigned int val = 0;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret = ecore_x_window_prop_card32_get(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_PREFERRED_ROTATION,
- &val, 1);
- if (ret == 1)
- {
- if (rot) *rot = (int)val;
- return EINA_TRUE;
- }
- return EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_window_rotation_available_rotations_set(Ecore_X_Window win,
- const int *rots,
- unsigned int count)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!win) return;
-
- if ((rots) && (count > 0))
- ecore_x_window_prop_card32_set(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_AVAILABLE_LIST,
- (unsigned int *)rots, count);
- else
- ecore_x_window_prop_property_del(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_AVAILABLE_LIST);
-}
-
-EAPI Eina_Bool
-ecore_x_e_window_rotation_available_rotations_get(Ecore_X_Window win,
- int **rots,
- unsigned int *count)
-{
- unsigned char *data = NULL;
- int num, i;
- int *val = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if ((!win) || (!rots) || (!count))
- return EINA_FALSE;
-
- *rots = NULL;
- *count = 0;
-
- if (!ecore_x_window_prop_property_get(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_AVAILABLE_LIST,
- XCB_ATOM_CARDINAL, 32, &data, &num))
- return EINA_FALSE;
-
- *count = num;
-
- if ((num >= 1) && (data))
- {
- val = calloc(num, sizeof(int));
- if (!val)
- {
- *count = 0;
- if (data) free(data);
- return EINA_FALSE;
- }
- for (i = 0; i < num; i++)
- val[i] = ((int *)data)[i];
- if (data) free(data);
- *rots = val;
- return EINA_TRUE;
- }
- if (data) free(data);
- return EINA_FALSE;
-}
-
-EAPI void
-ecore_x_e_window_rotation_change_prepare_send(Ecore_X_Window win,
- int rot,
- Eina_Bool resize,
- int w,
- int h)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_PREPARE,
- ECORE_X_EVENT_MASK_NONE,
- win, rot, resize, w, h);
-}
-
-EAPI void
-ecore_x_e_window_rotation_change_prepare_done_send(Ecore_X_Window root,
- Ecore_X_Window win,
- int rot)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_PREPARE_DONE;
- ev.data.data32[0] = win;
- ev.data.data32[1] = rot;
- ev.data.data32[2] = 0;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-}
-
-EAPI void
-ecore_x_e_window_rotation_change_request_send(Ecore_X_Window win,
- int rot)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_client_message32_send(win,
- ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_REQUEST,
- ECORE_X_EVENT_MASK_NONE,
- win, rot, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_e_window_rotation_change_done_send(Ecore_X_Window root,
- Ecore_X_Window win,
- int rot,
- int w,
- int h)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_E_WINDOW_ROTATION_CHANGE_DONE;
- ev.data.data32[0] = win;
- ev.data.data32[1] = rot;
- ev.data.data32[2] = w;
- ev.data.data32[3] = h;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-}
-
-EAPI void
-ecore_x_e_keyrouter_set(Ecore_X_Window win EINA_UNUSED, Eina_Bool on)
-{
- Ecore_X_Window root;
- unsigned int val;
-
- CHECK_XCB_CONN;
-
- root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
- val = (on) ? 1 : 0;
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_E_KEYROUTER_SUPPORTED,
- &val, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_e_keyrouter_get(Ecore_X_Window win EINA_UNUSED)
-{
- Ecore_X_Window root;
- int ret;
- unsigned int val;
-
- CHECK_XCB_CONN;
-
- root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
- ret =
- ecore_x_window_prop_card32_get(root, ECORE_X_ATOM_E_KEYROUTER_SUPPORTED,
- &val, 1);
- if (ret != 1) return EINA_FALSE;
- return (val == 1) ? EINA_TRUE : EINA_FALSE;
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_error.c b/src/lib/ecore_x/xcb/ecore_xcb_error.c
deleted file mode 100644
index 166d5ee145..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_error.c
+++ /dev/null
@@ -1,116 +0,0 @@
-#include "ecore_xcb_private.h"
-#include <xcb/xcb_event.h>
-
-/* local variables */
-static void (*_error_func)(void *data) = NULL;
-static void *_error_data = NULL;
-static void (*_io_error_func)(void *data) = NULL;
-static void *_io_error_data = NULL;
-static int _error_request_code = 0;
-static int _error_code = 0;
-static Ecore_X_ID _error_resource_id = 0;
-
-/**
- * Set the error handler.
- * @param func The error handler function
- * @param data The data to be passed to the handler function
- *
- * Set the X error handler function
- */
-EAPI void
-ecore_x_error_handler_set(void (*func)(void *data),
- const void *data)
-{
- _error_func = func;
- _error_data = (void *)data;
-}
-
-/**
- * Set the I/O error handler.
- * @param func The I/O error handler function
- * @param data The data to be passed to the handler function
- *
- * Set the X I/O error handler function
- */
-EAPI void
-ecore_x_io_error_handler_set(void (*func)(void *data),
- const void *data)
-{
- _io_error_func = func;
- _io_error_data = (void *)data;
-}
-
-/**
- * Get the request code that caused the error.
- * @return The request code causing the X error
- *
- * Return the X request code that caused the last X error
- */
-EAPI int
-ecore_x_error_request_get(void)
-{
- return _error_request_code;
-}
-
-/**
- * Get the error code from the error.
- * @return The error code from the X error
- *
- * Return the error code from the last X error
- */
-EAPI int
-ecore_x_error_code_get(void)
-{
- return _error_code;
-}
-
-/**
- * Get the resource id that caused the error.
- * @return The resource id causing the X error
- *
- * Return the X resource id that caused the last X error
- */
-EAPI Ecore_X_ID
-ecore_x_error_resource_id_get(void)
-{
- return _error_resource_id;
-}
-
-int
-_ecore_xcb_error_handle(xcb_generic_error_t *err)
-{
- WRN("Got Error:");
- WRN("\tEvent: %s", xcb_event_get_request_label(err->major_code));
- WRN("\tError: %s", xcb_event_get_error_label(err->error_code));
-
- if (err->error_code == XCB_VALUE)
- WRN("\tBad Value: %d", ((xcb_value_error_t *)err)->bad_value);
- else if (err->error_code == XCB_WINDOW)
- WRN("\tBad Window: %d", ((xcb_window_error_t *)err)->bad_value);
-
- _error_request_code = err->sequence;
- _error_code = err->error_code;
- _error_resource_id = err->resource_id;
- if (_error_func)
- _error_func(_error_data);
-
- return 0;
-}
-
-int
-_ecore_xcb_io_error_handle(xcb_generic_error_t *err)
-{
- CRI("IO Error:");
- if (err)
- {
- CRI("\tRequest: %d", err->sequence);
- CRI("\tCode: %d", err->error_code);
- }
- if (_io_error_func)
- _io_error_func(_io_error_data);
- else
- exit(-1);
-
- return 0;
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_events.c b/src/lib/ecore_x/xcb/ecore_xcb_events.c
deleted file mode 100644
index c2c944e404..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_events.c
+++ /dev/null
@@ -1,2831 +0,0 @@
-#include "ecore_xcb_private.h"
-//#include "Ecore_X_Atoms.h"
-#include <langinfo.h>
-#include <xcb/xcb_icccm.h>
-#include <xcb/xcb_event.h>
-# ifdef ECORE_XCB_DAMAGE
-# include <xcb/damage.h>
-# endif
-# ifdef ECORE_XCB_RANDR
-# include <xcb/randr.h>
-# endif
-# ifdef ECORE_XCB_SCREENSAVER
-# include <xcb/screensaver.h>
-# endif
-# ifdef ECORE_XCB_SYNC
-# include <xcb/sync.h>
-# endif
-# ifdef ECORE_XCB_XFIXES
-# include <xcb/xfixes.h>
-# endif
-# ifdef ECORE_XCB_XPRESENT
-# include <xcb/present.h>
-# endif
-# ifdef ECORE_XCB_XGESTURE
-# include <xcb/gesture.h>
-# endif
-
-#ifndef CODESET
-# define CODESET "INVALID"
-#endif
-
-typedef struct _Ecore_X_Mouse_Down_Info
-{
- EINA_INLIST;
- int dev;
- Ecore_X_Time last_time;
- Ecore_X_Time last_last_time;
- Ecore_X_Window last_win;
- Ecore_X_Window last_last_win;
- Ecore_X_Window last_event_win;
- Ecore_X_Window last_last_event_win;
- Eina_Bool did_double : 1;
- Eina_Bool did_triple : 1;
-} Ecore_X_Mouse_Down_Info;
-
-/* local function prototypes */
-static void _ecore_xcb_event_handle_any_event(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_key_press(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_key_release(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_button_press(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_button_release(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_motion_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_enter_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_leave_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_keymap_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_focus_in(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_focus_out(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_expose(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_graphics_exposure(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_visibility_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_create_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_destroy_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_map_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_unmap_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_map_request(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_reparent_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_configure_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_configure_request(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gravity_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_resize_request(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_circulate_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_circulate_request(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_property_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_selection_clear(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_selection_request(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_selection_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_colormap_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_client_message(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_mapping_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_damage_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_randr_change(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_randr_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_randr_crtc_change(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_randr_output_change(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_randr_output_property_change(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_screensaver_notify(xcb_generic_event_t *event);
-#ifdef ECORE_XCB_XGESTURE
-static void _ecore_xcb_event_handle_gesture_notify_flick(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gesture_notify_pan(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gesture_notify_pinchrotation(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gesture_notify_tap(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gesture_notify_tapnhold(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gesture_notify_hold(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_gesture_notify_group(xcb_generic_event_t *event);
-#endif
-#ifdef ECORE_XCB_SHAPE
-static void _ecore_xcb_event_handle_shape_change(xcb_generic_event_t *event);
-#endif
-static void _ecore_xcb_event_handle_sync_counter(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_sync_alarm(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_xfixes_selection_notify(xcb_generic_event_t *event EINA_UNUSED);
-static void _ecore_xcb_event_handle_xfixes_cursor_notify(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_generic_event(xcb_generic_event_t *event);
-static void _ecore_xcb_event_handle_input_event(xcb_generic_event_t *event);
-
-static void _ecore_xcb_event_key_press(xcb_generic_event_t *event);
-static void _ecore_xcb_event_key_release(xcb_generic_event_t *event);
-static void _ecore_xcb_event_mouse_move_free(void *data EINA_UNUSED,
- void *event);
-static Ecore_X_Event_Mode _ecore_xcb_event_mode_get(uint8_t mode);
-static Ecore_X_Event_Detail _ecore_xcb_event_detail_get(uint8_t detail);
-static void _ecore_xcb_event_xdnd_enter_free(void *data EINA_UNUSED,
- void *event);
-static void _ecore_xcb_event_selection_notify_free(void *data EINA_UNUSED,
- void *event);
-static void _ecore_xcb_event_generic_event_free(void *data,
- void *event);
-static void _ecore_xcb_event_mouse_down_info_clear(void);
-static Ecore_X_Mouse_Down_Info *_ecore_xcb_event_mouse_down_info_get(int dev);
-
-/* local variables */
-static Eina_Bool _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-//static Ecore_Event *_ecore_xcb_event_last_mouse_move_event = NULL;
-static Eina_Inlist *_ecore_xcb_mouse_down_info_list = NULL;
-static Ecore_X_Time _ecore_xcb_event_last_time;
-static Ecore_X_Window _ecore_xcb_event_last_window = 0;
-
-/* public variables */
-int16_t _ecore_xcb_event_last_root_x = 0;
-int16_t _ecore_xcb_event_last_root_y = 0;
-
-EAPI int ECORE_X_EVENT_ANY = 0;
-EAPI int ECORE_X_EVENT_MOUSE_IN = 0;
-EAPI int ECORE_X_EVENT_MOUSE_OUT = 0;
-EAPI int ECORE_X_EVENT_WINDOW_FOCUS_IN = 0;
-EAPI int ECORE_X_EVENT_WINDOW_FOCUS_OUT = 0;
-EAPI int ECORE_X_EVENT_WINDOW_KEYMAP = 0;
-EAPI int ECORE_X_EVENT_WINDOW_DAMAGE = 0;
-EAPI int ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = 0;
-EAPI int ECORE_X_EVENT_WINDOW_CREATE = 0;
-EAPI int ECORE_X_EVENT_WINDOW_DESTROY = 0;
-EAPI int ECORE_X_EVENT_WINDOW_HIDE = 0;
-EAPI int ECORE_X_EVENT_WINDOW_SHOW = 0;
-EAPI int ECORE_X_EVENT_WINDOW_SHOW_REQUEST = 0;
-EAPI int ECORE_X_EVENT_WINDOW_REPARENT = 0;
-EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE = 0;
-EAPI int ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = 0;
-EAPI int ECORE_X_EVENT_WINDOW_GRAVITY = 0;
-EAPI int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST = 0;
-EAPI int ECORE_X_EVENT_WINDOW_STACK = 0;
-EAPI int ECORE_X_EVENT_WINDOW_STACK_REQUEST = 0;
-EAPI int ECORE_X_EVENT_WINDOW_PROPERTY = 0;
-EAPI int ECORE_X_EVENT_WINDOW_COLORMAP = 0;
-EAPI int ECORE_X_EVENT_WINDOW_MAPPING = 0;
-EAPI int ECORE_X_EVENT_MAPPING_CHANGE = 0;
-EAPI int ECORE_X_EVENT_SELECTION_CLEAR = 0;
-EAPI int ECORE_X_EVENT_SELECTION_REQUEST = 0;
-EAPI int ECORE_X_EVENT_SELECTION_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_FIXES_SELECTION_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_CLIENT_MESSAGE = 0;
-EAPI int ECORE_X_EVENT_WINDOW_SHAPE = 0;
-EAPI int ECORE_X_EVENT_SCREENSAVER_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_FLICK = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_PAN = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_TAP = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_HOLD = 0;
-EAPI int ECORE_X_EVENT_GESTURE_NOTIFY_GROUP = 0;
-EAPI int ECORE_X_EVENT_SYNC_COUNTER = 0;
-EAPI int ECORE_X_EVENT_SYNC_ALARM = 0;
-EAPI int ECORE_X_EVENT_SCREEN_CHANGE = 0;
-EAPI int ECORE_X_EVENT_DAMAGE_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_RANDR_CRTC_CHANGE = 0;
-EAPI int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE = 0;
-EAPI int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_WINDOW_DELETE_REQUEST = 0;
-EAPI int ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = 0;
-EAPI int ECORE_X_EVENT_WINDOW_STATE_REQUEST = 0;
-EAPI int ECORE_X_EVENT_FRAME_EXTENTS_REQUEST = 0;
-EAPI int ECORE_X_EVENT_PING = 0;
-EAPI int ECORE_X_EVENT_DESKTOP_CHANGE = 0;
-EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = 0;
-EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = 0;
-EAPI int ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = 0;
-EAPI int ECORE_X_EVENT_XKB_STATE_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_XKB_NEWKBD_NOTIFY = 0;
-EAPI int ECORE_X_EVENT_GENERIC = 0;
-
-EAPI int ECORE_X_EVENT_PRESENT_CONFIGURE = 0;
-EAPI int ECORE_X_EVENT_PRESENT_COMPLETE = 0;
-EAPI int ECORE_X_EVENT_PRESENT_IDLE = 0;
-
-EAPI int ECORE_X_RAW_BUTTON_PRESS = 0;
-EAPI int ECORE_X_RAW_BUTTON_RELEASE = 0;
-EAPI int ECORE_X_RAW_MOTION = 0;
-
-void
-_ecore_xcb_events_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ECORE_X_EVENT_ANY)
- {
- ECORE_X_EVENT_ANY = ecore_event_type_new();
- ECORE_X_EVENT_MOUSE_IN = ecore_event_type_new();
- ECORE_X_EVENT_MOUSE_OUT = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_FOCUS_IN = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_FOCUS_OUT = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_KEYMAP = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_DAMAGE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_CREATE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_DESTROY = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_HIDE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_SHOW = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_SHOW_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_REPARENT = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_CONFIGURE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_GRAVITY = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_RESIZE_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_STACK = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_STACK_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_PROPERTY = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_COLORMAP = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_MAPPING = ecore_event_type_new();
- ECORE_X_EVENT_MAPPING_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_SELECTION_CLEAR = ecore_event_type_new();
- ECORE_X_EVENT_SELECTION_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_SELECTION_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_FIXES_SELECTION_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_CLIENT_MESSAGE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_SHAPE = ecore_event_type_new();
- ECORE_X_EVENT_SCREENSAVER_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_FLICK = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_PAN = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_TAP = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_HOLD = ecore_event_type_new();
- ECORE_X_EVENT_GESTURE_NOTIFY_GROUP = ecore_event_type_new();
- ECORE_X_EVENT_SYNC_COUNTER = ecore_event_type_new();
- ECORE_X_EVENT_SYNC_ALARM = ecore_event_type_new();
- ECORE_X_EVENT_SCREEN_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_RANDR_CRTC_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_RANDR_OUTPUT_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_DAMAGE_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_DESKTOP_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_WINDOW_STATE_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_FRAME_EXTENTS_REQUEST = ecore_event_type_new();
- ECORE_X_EVENT_PING = ecore_event_type_new();
- ECORE_X_EVENT_STARTUP_SEQUENCE_NEW = ecore_event_type_new();
- ECORE_X_EVENT_STARTUP_SEQUENCE_CHANGE = ecore_event_type_new();
- ECORE_X_EVENT_STARTUP_SEQUENCE_REMOVE = ecore_event_type_new();
- ECORE_X_EVENT_XKB_STATE_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_XKB_NEWKBD_NOTIFY = ecore_event_type_new();
- ECORE_X_EVENT_GENERIC = ecore_event_type_new();
-
- ECORE_X_EVENT_PRESENT_CONFIGURE = ecore_event_type_new();
- ECORE_X_EVENT_PRESENT_COMPLETE = ecore_event_type_new();
- ECORE_X_EVENT_PRESENT_IDLE = ecore_event_type_new();
-
- ECORE_X_RAW_BUTTON_PRESS = ecore_event_type_new();
- ECORE_X_RAW_BUTTON_RELEASE = ecore_event_type_new();
- ECORE_X_RAW_MOTION = ecore_event_type_new();
- }
-}
-
-void
-_ecore_xcb_events_shutdown(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_event_mouse_down_info_clear();
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-// if (_ecore_xcb_event_last_mouse_move_event)
-// {
-// ecore_event_del(_ecore_xcb_event_last_mouse_move_event);
-// _ecore_xcb_event_last_mouse_move_event = NULL;
-// }
-}
-
-void
-_ecore_xcb_events_handle(xcb_generic_event_t *ev)
-{
- uint8_t response = 0;
-
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- /* strip highest bit (set if event is generated) */
- response = (ev->response_type & ~0x80);
- if (response == 0)
- {
- xcb_generic_error_t *err;
-
- err = (xcb_generic_error_t *)ev;
-
- /* NB: There is no way to check access of destroyed windows,
- * so trap those cases and ignore. We also ignore BadValue from
- * xcb_grab/ungrab_button (happens when we are using any_mod)
- * and a few others */
- if (err->error_code == XCB_WINDOW) return;
- else if (err->error_code == XCB_MATCH)
- {
- if ((err->major_code == XCB_SET_INPUT_FOCUS) ||
- (err->major_code == XCB_CONFIGURE_WINDOW))
- return;
- }
- else if (err->error_code == XCB_VALUE)
- {
- if ((err->major_code == XCB_KILL_CLIENT) ||
- (err->major_code == XCB_GRAB_BUTTON) ||
- (err->major_code == XCB_UNGRAB_BUTTON))
- return;
- }
- WRN("Got Event Error:");
- WRN("\tMajor Code: %d", err->major_code);
- WRN("\tMinor Code: %d", err->minor_code);
- WRN("\tRequest: %s", xcb_event_get_request_label(err->major_code));
- WRN("\tError: %s", xcb_event_get_error_label(err->error_code));
- if (err->error_code == 2) // bad value
- WRN("\tValue: %d", ((xcb_value_error_t *)err)->bad_value);
- else if (err->error_code == 8) // bad match
- WRN("\tMatch: %d", ((xcb_match_error_t *)err)->bad_value);
-
- if (err->major_code == XCB_SEND_EVENT)
- {
- WRN("\tSend Event Error");
- WRN("\t\tSeq: %d", ev->sequence);
- WRN("\t\tFull Seq: %d", ev->full_sequence);
- WRN("\t\tType: %d", ev->response_type);
- }
- /* if (err->major_code == 148) */
- /* { */
- /* printf("GOT 148 Error\n"); */
- /* } */
- return;
- }
-
- /* FIXME: Filter event for xim when xcb supports xim */
-
- _ecore_xcb_event_handle_any_event(ev);
-
- if (response == XCB_KEY_PRESS)
- _ecore_xcb_event_handle_key_press(ev);
- else if (response == XCB_KEY_RELEASE)
- _ecore_xcb_event_handle_key_release(ev);
- else if (response == XCB_BUTTON_PRESS)
- _ecore_xcb_event_handle_button_press(ev);
- else if (response == XCB_BUTTON_RELEASE)
- _ecore_xcb_event_handle_button_release(ev);
- else if (response == XCB_MOTION_NOTIFY)
- _ecore_xcb_event_handle_motion_notify(ev);
- else if (response == XCB_ENTER_NOTIFY)
- _ecore_xcb_event_handle_enter_notify(ev);
- else if (response == XCB_LEAVE_NOTIFY)
- _ecore_xcb_event_handle_leave_notify(ev);
- else if (response == XCB_KEYMAP_NOTIFY)
- _ecore_xcb_event_handle_keymap_notify(ev);
- else if (response == XCB_FOCUS_IN)
- _ecore_xcb_event_handle_focus_in(ev);
- else if (response == XCB_FOCUS_OUT)
- _ecore_xcb_event_handle_focus_out(ev);
- else if (response == XCB_EXPOSE)
- _ecore_xcb_event_handle_expose(ev);
- else if (response == XCB_GRAPHICS_EXPOSURE)
- _ecore_xcb_event_handle_graphics_exposure(ev);
- else if (response == XCB_VISIBILITY_NOTIFY)
- _ecore_xcb_event_handle_visibility_notify(ev);
- else if (response == XCB_CREATE_NOTIFY)
- _ecore_xcb_event_handle_create_notify(ev);
- else if (response == XCB_DESTROY_NOTIFY)
- _ecore_xcb_event_handle_destroy_notify(ev);
- else if (response == XCB_MAP_NOTIFY)
- _ecore_xcb_event_handle_map_notify(ev);
- else if (response == XCB_UNMAP_NOTIFY)
- _ecore_xcb_event_handle_unmap_notify(ev);
- else if (response == XCB_MAP_REQUEST)
- _ecore_xcb_event_handle_map_request(ev);
- else if (response == XCB_REPARENT_NOTIFY)
- _ecore_xcb_event_handle_reparent_notify(ev);
- else if (response == XCB_CONFIGURE_NOTIFY)
- _ecore_xcb_event_handle_configure_notify(ev);
- else if (response == XCB_CONFIGURE_REQUEST)
- _ecore_xcb_event_handle_configure_request(ev);
- else if (response == XCB_GRAVITY_NOTIFY)
- _ecore_xcb_event_handle_gravity_notify(ev);
- else if (response == XCB_RESIZE_REQUEST)
- _ecore_xcb_event_handle_resize_request(ev);
- else if (response == XCB_CIRCULATE_NOTIFY)
- _ecore_xcb_event_handle_circulate_notify(ev);
- else if (response == XCB_CIRCULATE_REQUEST)
- _ecore_xcb_event_handle_circulate_request(ev);
- else if (response == XCB_PROPERTY_NOTIFY)
- _ecore_xcb_event_handle_property_notify(ev);
- else if (response == XCB_SELECTION_CLEAR)
- _ecore_xcb_event_handle_selection_clear(ev);
- else if (response == XCB_SELECTION_REQUEST)
- _ecore_xcb_event_handle_selection_request(ev);
- else if (response == XCB_SELECTION_NOTIFY)
- _ecore_xcb_event_handle_selection_notify(ev);
- else if (response == XCB_COLORMAP_NOTIFY)
- _ecore_xcb_event_handle_colormap_notify(ev);
- else if (response == XCB_CLIENT_MESSAGE)
- _ecore_xcb_event_handle_client_message(ev);
- else if (response == XCB_MAPPING_NOTIFY)
- _ecore_xcb_event_handle_mapping_notify(ev);
- else if (response == 35) /* GenericEvent == 35 */
- _ecore_xcb_event_handle_generic_event(ev);
-#ifdef ECORE_XCB_DAMAGE
- else if ((_ecore_xcb_event_damage >= 0) &&
- (response == (_ecore_xcb_event_damage + XCB_DAMAGE_NOTIFY)))
- _ecore_xcb_event_handle_damage_notify(ev);
-#endif
-#ifdef ECORE_XCB_RANDR
- else if ((_ecore_xcb_event_randr >= 0) &&
- (response ==
- _ecore_xcb_event_randr + XCB_RANDR_SCREEN_CHANGE_NOTIFY))
- _ecore_xcb_event_handle_randr_change(ev);
- else if ((_ecore_xcb_event_randr >= 0) &&
- (response == (_ecore_xcb_event_randr + XCB_RANDR_NOTIFY)))
- _ecore_xcb_event_handle_randr_notify(ev);
-#endif
-#ifdef ECORE_XCB_SCREENSAVER
- else if ((_ecore_xcb_event_screensaver >= 0) &&
- (response ==
- _ecore_xcb_event_screensaver + XCB_SCREENSAVER_NOTIFY))
- _ecore_xcb_event_handle_screensaver_notify(ev);
-#endif
-#ifdef ECORE_XCB_XGESTURE
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_FLICK))
- _ecore_xcb_event_handle_gesture_notify_flick(ev);
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_PAN))
- _ecore_xcb_event_handle_gesture_notify_pan(ev);
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_PINCH_ROTATION))
- _ecore_xcb_event_handle_gesture_notify_pinchrotation(ev);
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_TAP))
- _ecore_xcb_event_handle_gesture_notify_tap(ev);
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_TAP_N_HOLD))
- _ecore_xcb_event_handle_gesture_notify_tapnhold(ev);
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_HOLD))
- _ecore_xcb_event_handle_gesture_notify_hold(ev);
- else if ((_ecore_xcb_event_gesture >= 0) &&
- (response ==
- _ecore_xcb_event_gesture + XCB_GESTURE_NOTIFY_GROUP))
- _ecore_xcb_event_handle_gesture_notify_group(ev);
-#endif
-#ifdef ECORE_XCB_SHAPE
- else if ((_ecore_xcb_event_shape >= 0) &&
- (response == (_ecore_xcb_event_shape + XCB_SHAPE_NOTIFY)))
- _ecore_xcb_event_handle_shape_change(ev);
-#endif
-#ifdef ECORE_XCB_SYNC
- else if ((_ecore_xcb_event_sync >= 0) &&
- (response == (_ecore_xcb_event_sync + XCB_SYNC_COUNTER_NOTIFY)))
- _ecore_xcb_event_handle_sync_counter(ev);
- else if ((_ecore_xcb_event_sync >= 0) &&
- (response == (_ecore_xcb_event_sync + XCB_SYNC_ALARM_NOTIFY)))
- _ecore_xcb_event_handle_sync_alarm(ev);
-#endif
-#ifdef ECORE_XCB_XFIXES
- else if ((_ecore_xcb_event_xfixes >= 0) &&
- (response ==
- _ecore_xcb_event_xfixes + XCB_XFIXES_SELECTION_NOTIFY))
- _ecore_xcb_event_handle_xfixes_selection_notify(ev);
- else if ((_ecore_xcb_event_xfixes >= 0) &&
- (response == (_ecore_xcb_event_xfixes + XCB_XFIXES_CURSOR_NOTIFY)))
- _ecore_xcb_event_handle_xfixes_cursor_notify(ev);
-#endif
-}
-
-Ecore_X_Time
-_ecore_xcb_events_last_time_get(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return _ecore_xcb_event_last_time;
-}
-
-EAPI void
-ecore_x_event_mask_set(Ecore_X_Window win,
- Ecore_X_Event_Mask mask)
-{
- xcb_get_window_attributes_cookie_t cookie;
- xcb_get_window_attributes_reply_t *reply;
- uint32_t list;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
- cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, win);
- reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return;
-
- list = (mask | reply->your_event_mask);
- free(reply);
- xcb_change_window_attributes(_ecore_xcb_conn, win,
- XCB_CW_EVENT_MASK, &list);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_event_mask_unset(Ecore_X_Window win,
- Ecore_X_Event_Mask mask)
-{
- xcb_get_window_attributes_cookie_t cookie;
- xcb_get_window_attributes_reply_t *reply;
- uint32_t list;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
- cookie = xcb_get_window_attributes_unchecked(_ecore_xcb_conn, win);
- reply = xcb_get_window_attributes_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return;
-
- list = (reply->your_event_mask & ~mask);
- free(reply);
- xcb_change_window_attributes(_ecore_xcb_conn, win,
- XCB_CW_EVENT_MASK, &list);
-// ecore_x_flush();
-}
-
-unsigned int
-_ecore_xcb_events_modifiers_get(unsigned int state)
-{
- unsigned int modifiers = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (state & ECORE_X_MODIFIER_SHIFT)
- modifiers |= ECORE_EVENT_MODIFIER_SHIFT;
- if (state & ECORE_X_MODIFIER_CTRL)
- modifiers |= ECORE_EVENT_MODIFIER_CTRL;
- if (state & ECORE_X_MODIFIER_ALT)
- modifiers |= ECORE_EVENT_MODIFIER_ALT;
- if (state & ECORE_X_MODIFIER_WIN)
- modifiers |= ECORE_EVENT_MODIFIER_WIN;
- if (state & ECORE_X_MODIFIER_ALTGR)
- modifiers |= ECORE_EVENT_MODIFIER_ALTGR;
- if (state & ECORE_X_LOCK_SCROLL)
- modifiers |= ECORE_EVENT_LOCK_SCROLL;
- if (state & ECORE_X_LOCK_CAPS)
- modifiers |= ECORE_EVENT_LOCK_CAPS;
- if (state & ECORE_X_LOCK_NUM)
- modifiers |= ECORE_EVENT_LOCK_NUM;
- if (state & ECORE_X_LOCK_SHIFT)
- modifiers |= ECORE_EVENT_LOCK_SHIFT;
-
- return modifiers;
-}
-
-/* local functions */
-static void
-_ecore_xcb_event_handle_any_event(xcb_generic_event_t *event)
-{
- xcb_generic_event_t *ev;
-
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ev = malloc(sizeof(xcb_generic_event_t));
- if (!ev) return;
-
- memcpy(ev, event, sizeof(xcb_generic_event_t));
- ecore_event_add(ECORE_X_EVENT_ANY, ev, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_key_press(xcb_generic_event_t *event)
-{
- _ecore_xcb_event_key_press(event);
-}
-
-static void
-_ecore_xcb_event_handle_key_release(xcb_generic_event_t *event)
-{
- _ecore_xcb_event_key_release(event);
-}
-
-static void
-_ecore_xcb_event_handle_button_press(xcb_generic_event_t *event)
-{
- xcb_button_press_event_t *ev;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-
- ev = (xcb_button_press_event_t *)event;
- if ((ev->detail > 3) && (ev->detail < 8))
- {
- Ecore_Event_Mouse_Wheel *e;
-
- if (!(e = calloc(1, sizeof(Ecore_Event_Mouse_Wheel)))) return;
-
- e->timestamp = ev->time;
- e->modifiers = _ecore_xcb_events_modifiers_get(ev->state);
- switch (ev->detail)
- {
- case 4:
- e->direction = 0;
- e->z = -1;
- break;
-
- case 5:
- e->direction = 0;
- e->z = 1;
- break;
-
- case 6:
- e->direction = 1;
- e->z = -1;
- break;
-
- case 7:
- e->direction = 1;
- e->z = 1;
- break;
-
- default:
- e->direction = 0;
- e->z = 0;
- break;
- }
- e->x = ev->event_x;
- e->y = ev->event_y;
- e->root.x = ev->root_x;
- e->root.y = ev->root_y;
- if (ev->child)
- e->window = ev->child;
- else
- e->window = ev->event;
-
- e->event_window = ev->event;
- e->same_screen = ev->same_screen;
- e->root_window = ev->root;
-
- _ecore_xcb_event_last_time = e->timestamp;
- _ecore_xcb_event_last_window = e->window;
- _ecore_xcb_event_last_root_x = e->root.x;
- _ecore_xcb_event_last_root_y = e->root.y;
-
- ecore_event_add(ECORE_EVENT_MOUSE_WHEEL, e, NULL, NULL);
-
- _ecore_xcb_window_grab_allow_events(ev->event, ev->child,
- ECORE_EVENT_MOUSE_WHEEL,
- e, ev->time);
- }
- else
- {
- Ecore_Event_Mouse_Button *e;
- unsigned int child_win = 0;
-
- child_win = (ev->child ? ev->child : ev->event);
-
- _ecore_xcb_event_mouse_move(ev->time, ev->state,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y,
- ev->event, child_win,
- ev->root, ev->same_screen,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
-
- e = _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_DOWN,
- ev->time,
- ev->state, ev->detail,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y, ev->event,
- child_win,
- ev->root, ev->same_screen,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
- if (e)
- _ecore_xcb_window_grab_allow_events(ev->event, ev->child,
- ECORE_EVENT_MOUSE_BUTTON_DOWN,
- e, ev->time);
- }
-}
-
-static void
-_ecore_xcb_event_handle_button_release(xcb_generic_event_t *event)
-{
- xcb_button_release_event_t *ev;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_button_release_event_t *)event;
- if ((ev->detail <= 3) || (ev->detail > 7))
- {
- _ecore_xcb_event_mouse_move(ev->time, ev->state,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y,
- ev->event,
- (ev->child ? ev->child : ev->event),
- ev->root, ev->same_screen,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
-
- _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_UP, ev->time,
- ev->state, ev->detail,
- ev->event_x, ev->event_y, ev->root_x,
- ev->root_y, ev->event,
- (ev->child ? ev->child : ev->event),
- ev->root, ev->same_screen,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
- }
-}
-
-static void
-_ecore_xcb_event_handle_motion_notify(xcb_generic_event_t *event)
-{
- xcb_motion_notify_event_t *ev;
-
- ev = (xcb_motion_notify_event_t *)event;
-
- /* if (_ecore_xcb_event_last_mouse_move_event) */
- /* { */
- /* ecore_event_del(_ecore_xcb_event_last_mouse_move_event); */
- /* _ecore_xcb_event_last_mouse_move = EINA_FALSE; */
- /* _ecore_xcb_event_last_mouse_move_event = NULL; */
- /* } */
-
- _ecore_xcb_event_mouse_move(ev->time, ev->state,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y,
- ev->event,
- (ev->child ? ev->child : ev->event),
- ev->root, ev->same_screen,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
- _ecore_xcb_event_last_mouse_move = EINA_TRUE;
-
- _ecore_xcb_dnd_drag(ev->root, ev->root_x, ev->root_y);
-}
-
-static void
-_ecore_xcb_event_handle_enter_notify(xcb_generic_event_t *event)
-{
- xcb_enter_notify_event_t *ev;
- Ecore_X_Event_Mouse_In *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_enter_notify_event_t *)event;
-
- _ecore_xcb_event_mouse_move(ev->time, ev->state,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y,
- ev->event,
- (ev->child ? ev->child : ev->event),
- ev->root, ev->same_screen_focus,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Mouse_In)))) return;
-
- e->modifiers = _ecore_xcb_events_modifiers_get(ev->state);
- e->x = ev->event_x;
- e->y = ev->event_y;
- e->root.x = ev->root_x;
- e->root.y = ev->root_y;
- if (ev->child)
- e->win = ev->child;
- else
- e->win = ev->event;
- e->event_win = ev->event;
- e->same_screen = ev->same_screen_focus;
- e->root_win = ev->root;
- e->mode = _ecore_xcb_event_mode_get(ev->mode);
- e->detail = _ecore_xcb_event_detail_get(ev->detail);
- e->time = ev->time;
- _ecore_xcb_event_last_time = e->time;
-
- ecore_event_add(ECORE_X_EVENT_MOUSE_IN, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_leave_notify(xcb_generic_event_t *event)
-{
- xcb_leave_notify_event_t *ev;
- Ecore_X_Event_Mouse_Out *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_enter_notify_event_t *)event;
-
- _ecore_xcb_event_mouse_move(ev->time, ev->state,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y,
- ev->event,
- (ev->child ? ev->child : ev->event),
- ev->root, ev->same_screen_focus,
- 0, 1, 1, 1.0, 0.0,
- ev->event_x, ev->event_y,
- ev->root_x, ev->root_y);
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Mouse_Out)))) return;
-
- e->modifiers = _ecore_xcb_events_modifiers_get(ev->state);
- e->x = ev->event_x;
- e->y = ev->event_y;
- e->root.x = ev->root_x;
- e->root.y = ev->root_y;
- if (ev->child)
- e->win = ev->child;
- else
- e->win = ev->event;
- e->event_win = ev->event;
- e->same_screen = ev->same_screen_focus;
- e->root_win = ev->root;
- e->mode = _ecore_xcb_event_mode_get(ev->mode);
- e->detail = _ecore_xcb_event_detail_get(ev->detail);
-
- e->time = ev->time;
- _ecore_xcb_event_last_time = e->time;
- _ecore_xcb_event_last_window = e->win;
- _ecore_xcb_event_last_root_x = e->root.x;
- _ecore_xcb_event_last_root_y = e->root.y;
-
- ecore_event_add(ECORE_X_EVENT_MOUSE_OUT, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_keymap_notify(xcb_generic_event_t *event EINA_UNUSED)
-{
-// LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- // FIXME: handle this event type
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-}
-
-static void
-_ecore_xcb_event_handle_focus_in(xcb_generic_event_t *event)
-{
- xcb_focus_in_event_t *ev;
- Ecore_X_Event_Window_Focus_In *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_focus_in_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_In)))) return;
-
- e->win = ev->event;
- e->mode = _ecore_xcb_event_mode_get(ev->mode);
- e->detail = _ecore_xcb_event_detail_get(ev->detail);
-
- e->time = _ecore_xcb_event_last_time;
- _ecore_xcb_event_last_time = e->time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_focus_out(xcb_generic_event_t *event)
-{
- xcb_focus_out_event_t *ev;
- Ecore_X_Event_Window_Focus_Out *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_focus_out_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Focus_Out)))) return;
-
- e->win = ev->event;
- e->mode = _ecore_xcb_event_mode_get(ev->mode);
- e->detail = _ecore_xcb_event_detail_get(ev->detail);
-
- e->time = _ecore_xcb_event_last_time;
- _ecore_xcb_event_last_time = e->time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_expose(xcb_generic_event_t *event)
-{
- xcb_expose_event_t *ev;
- Ecore_X_Event_Window_Damage *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_expose_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Damage)))) return;
-
- e->win = ev->window;
- e->time = _ecore_xcb_event_last_time;
- e->x = ev->x;
- e->y = ev->y;
- e->w = ev->width;
- e->h = ev->height;
- e->count = ev->count;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_graphics_exposure(xcb_generic_event_t *event)
-{
- xcb_graphics_exposure_event_t *ev;
- Ecore_X_Event_Window_Damage *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_graphics_exposure_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Damage)))) return;
-
- e->win = ev->drawable;
- e->x = ev->x;
- e->y = ev->y;
- e->w = ev->width;
- e->h = ev->height;
- e->count = ev->count;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_DAMAGE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_visibility_notify(xcb_generic_event_t *event)
-{
- xcb_visibility_notify_event_t *ev;
- Ecore_X_Event_Window_Visibility_Change *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_visibility_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Visibility_Change))))
- return;
-
- e->win = ev->window;
- e->time = _ecore_xcb_event_last_time;
- if (ev->state == XCB_VISIBILITY_FULLY_OBSCURED)
- e->fully_obscured = 1;
- else
- e->fully_obscured = 0;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_create_notify(xcb_generic_event_t *event)
-{
- xcb_create_notify_event_t *ev;
- Ecore_X_Event_Window_Create *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_create_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Create)))) return;
-
- e->win = ev->window;
- e->parent = ev->parent;
- if (ev->override_redirect)
- e->override = 1;
- else
- e->override = 0;
- e->x = ev->x;
- e->y = ev->y;
- e->w = ev->width;
- e->h = ev->height;
- e->border = ev->border_width;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_CREATE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_destroy_notify(xcb_generic_event_t *event)
-{
- xcb_destroy_notify_event_t *ev;
- Ecore_X_Event_Window_Destroy *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_destroy_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Destroy)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- if (e->win == _ecore_xcb_event_last_window)
- _ecore_xcb_event_last_window = 0;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_DESTROY, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_map_notify(xcb_generic_event_t *event)
-{
- xcb_map_notify_event_t *ev;
- Ecore_X_Event_Window_Show *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_map_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Show)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_unmap_notify(xcb_generic_event_t *event)
-{
- xcb_unmap_notify_event_t *ev;
- Ecore_X_Event_Window_Hide *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_unmap_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Hide)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- e->time = _ecore_xcb_event_last_time;
- /* send_event is bit 7 (0x80) of response_type */
- e->send_event = ((ev->response_type & 0x80) ? 1 : 0);
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_HIDE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_map_request(xcb_generic_event_t *event)
-{
- xcb_map_request_event_t *ev;
- Ecore_X_Event_Window_Show_Request *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_map_request_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Show_Request)))) return;
-
- e->win = ev->window;
- e->parent = ev->parent;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_SHOW_REQUEST, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_reparent_notify(xcb_generic_event_t *event)
-{
- xcb_reparent_notify_event_t *ev;
- Ecore_X_Event_Window_Reparent *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_reparent_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Reparent)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- e->parent = ev->parent;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_REPARENT, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_configure_notify(xcb_generic_event_t *event)
-{
- xcb_configure_notify_event_t *ev;
- Ecore_X_Event_Window_Configure *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_configure_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Configure)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- e->abovewin = ev->above_sibling;
- e->x = ev->x;
- e->y = ev->y;
- e->w = ev->width;
- e->h = ev->height;
- e->border = ev->border_width;
- e->override = ev->override_redirect;
- /* send_event is bit 7 (0x80) of response_type */
- e->from_wm = ((ev->response_type & 0x80) ? 1 : 0);
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_configure_request(xcb_generic_event_t *event)
-{
- xcb_configure_request_event_t *ev;
- Ecore_X_Event_Window_Configure_Request *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_configure_request_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Configure_Request))))
- return;
-
- e->win = ev->window;
- e->parent_win = ev->parent;
- e->abovewin = ev->sibling;
- e->x = ev->x;
- e->y = ev->y;
- e->w = ev->width;
- e->h = ev->height;
- e->border = ev->border_width;
- e->value_mask = ev->value_mask;
- switch (ev->stack_mode)
- {
- case XCB_STACK_MODE_ABOVE:
- e->detail = ECORE_X_WINDOW_STACK_ABOVE;
- break;
-
- case XCB_STACK_MODE_BELOW:
- e->detail = ECORE_X_WINDOW_STACK_BELOW;
- break;
-
- case XCB_STACK_MODE_TOP_IF:
- e->detail = ECORE_X_WINDOW_STACK_TOP_IF;
- break;
-
- case XCB_STACK_MODE_BOTTOM_IF:
- e->detail = ECORE_X_WINDOW_STACK_BOTTOM_IF;
- break;
-
- case XCB_STACK_MODE_OPPOSITE:
- e->detail = ECORE_X_WINDOW_STACK_OPPOSITE;
- break;
- }
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_CONFIGURE_REQUEST, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_gravity_notify(xcb_generic_event_t *event EINA_UNUSED)
-{
-/*
- xcb_gravity_notify_event_t *ev;
- Ecore_X_Event_Window_Gravity *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_gravity_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Gravity)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_GRAVITY, e, NULL, NULL);
- */
-}
-
-static void
-_ecore_xcb_event_handle_resize_request(xcb_generic_event_t *event)
-{
- xcb_resize_request_event_t *ev;
- Ecore_X_Event_Window_Resize_Request *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_resize_request_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Resize_Request)))) return;
-
- e->win = ev->window;
- e->w = ev->width;
- e->h = ev->height;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_RESIZE_REQUEST, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_circulate_notify(xcb_generic_event_t *event)
-{
- xcb_circulate_notify_event_t *ev;
- Ecore_X_Event_Window_Stack *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_circulate_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Stack)))) return;
-
- e->win = ev->window;
- e->event_win = ev->event;
- if (ev->place == XCB_PLACE_ON_TOP)
- e->detail = ECORE_X_WINDOW_STACK_ABOVE;
- else
- e->detail = ECORE_X_WINDOW_STACK_BELOW;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_STACK, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_circulate_request(xcb_generic_event_t *event)
-{
- xcb_circulate_request_event_t *ev;
- Ecore_X_Event_Window_Stack_Request *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_circulate_request_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Stack_Request)))) return;
-
- e->win = ev->window;
- e->parent = ev->event;
- if (ev->place == XCB_PLACE_ON_TOP)
- e->detail = ECORE_X_WINDOW_STACK_ABOVE;
- else
- e->detail = ECORE_X_WINDOW_STACK_BELOW;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_STACK_REQUEST, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_property_notify(xcb_generic_event_t *event)
-{
- xcb_property_notify_event_t *ev;
- Ecore_X_Event_Window_Property *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_property_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Property)))) return;
-
- e->win = ev->window;
- e->atom = ev->atom;
- e->time = ev->time;
- e->state = !!ev->state;
- _ecore_xcb_event_last_time = e->time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_PROPERTY, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_selection_clear(xcb_generic_event_t *event)
-{
- xcb_selection_clear_event_t *ev;
- Ecore_X_Event_Selection_Clear *e;
- Ecore_X_Atom sel;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_selection_clear_event_t *)event;
- if (!(e = malloc(sizeof(Ecore_X_Event_Selection_Clear)))) return;
-
- e->win = ev->owner;
- e->atom = sel = ev->selection;
- if (sel == ECORE_X_ATOM_SELECTION_PRIMARY)
- e->selection = ECORE_X_SELECTION_PRIMARY;
- else if (sel == ECORE_X_ATOM_SELECTION_SECONDARY)
- e->selection = ECORE_X_SELECTION_SECONDARY;
- else if (sel == ECORE_X_ATOM_SELECTION_XDND)
- e->selection = ECORE_X_SELECTION_XDND;
- else if (sel == ECORE_X_ATOM_SELECTION_CLIPBOARD)
- e->selection = ECORE_X_SELECTION_CLIPBOARD;
- else
- e->selection = ECORE_X_SELECTION_OTHER;
- e->time = ev->time;
-
- ecore_event_add(ECORE_X_EVENT_SELECTION_CLEAR, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_selection_request(xcb_generic_event_t *event)
-{
- xcb_selection_request_event_t *ev;
- Ecore_X_Event_Selection_Request *e;
- Ecore_X_Selection_Intern *sd;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_selection_request_event_t *)event;
- if (!(e = malloc(sizeof(Ecore_X_Event_Selection_Request)))) return;
-
- e->owner = ev->owner;
- e->requestor = ev->requestor;
- e->selection = ev->selection;
- e->target = ev->target;
- e->property = ev->property;
- e->time = ev->time;
-
- ecore_event_add(ECORE_X_EVENT_SELECTION_REQUEST, e, NULL, NULL);
-
- if ((sd = _ecore_xcb_selection_get(ev->selection)) &&
- (sd->win == ev->owner))
- {
- Ecore_X_Selection_Intern *si;
-
- si = _ecore_xcb_selection_get(ev->selection);
- if (si->data)
- {
- Ecore_X_Atom property = XCB_NONE, type;
- void *data = NULL;
- int len = 0, typesize = 0;
-
- type = ev->target;
- typesize = 8;
- len = sd->length;
-
- if (!ecore_x_selection_convert(ev->selection, ev->target,
- &data, &len, &type, &typesize))
- property = XCB_NONE;
- else if (data)
- {
- ecore_x_window_prop_property_set(ev->requestor, ev->property,
- type, typesize, data, len);
- property = ev->property;
- free(data);
- }
- ecore_x_selection_notify_send(ev->requestor, ev->selection,
- ev->target, property, ev->time);
- }
- }
-}
-
-static void
-_ecore_xcb_event_handle_selection_notify(xcb_generic_event_t *event)
-{
- xcb_selection_notify_event_t *ev;
- Ecore_X_Event_Selection_Notify *e;
- unsigned char *data = NULL;
- Ecore_X_Atom selection;
- int num = 0, format = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_selection_notify_event_t *)event;
- selection = ev->selection;
- if (ev->target == ECORE_X_ATOM_SELECTION_TARGETS)
- {
- format =
- ecore_x_window_prop_property_get(ev->requestor, ev->property,
- XCB_ATOM_ATOM, 32, &data, &num);
- if (!format)
- {
- /* fallback if targets handling is not working and try get the
- * selection directly */
- xcb_convert_selection(_ecore_xcb_conn, ev->requestor,
- selection, selection,
- ECORE_X_ATOM_UTF8_STRING, XCB_CURRENT_TIME);
- return;
- }
- }
- else
- {
- format = ecore_x_window_prop_property_get(ev->requestor, ev->property,
- XCB_GET_PROPERTY_TYPE_ANY, 8,
- &data, &num);
- if (!format) return;
- }
-
- e = calloc(1, sizeof(Ecore_X_Event_Selection_Notify));
- if (!e) return;
- e->win = ev->requestor;
- e->time = ev->time;
- e->atom = selection;
- e->property = ev->property;
- e->target = _ecore_xcb_selection_target_get(ev->target);
-
- if (selection == ECORE_X_ATOM_SELECTION_PRIMARY)
- e->selection = ECORE_X_SELECTION_PRIMARY;
- else if (selection == ECORE_X_ATOM_SELECTION_SECONDARY)
- e->selection = ECORE_X_SELECTION_SECONDARY;
- else if (selection == ECORE_X_ATOM_SELECTION_XDND)
- e->selection = ECORE_X_SELECTION_XDND;
- else if (selection == ECORE_X_ATOM_SELECTION_CLIPBOARD)
- e->selection = ECORE_X_SELECTION_CLIPBOARD;
- else
- e->selection = ECORE_X_SELECTION_OTHER;
-
- e->data = _ecore_xcb_selection_parse(e->target, data, num, format);
-
- ecore_event_add(ECORE_X_EVENT_SELECTION_NOTIFY, e,
- _ecore_xcb_event_selection_notify_free, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_colormap_notify(xcb_generic_event_t *event)
-{
- xcb_colormap_notify_event_t *ev;
- Ecore_X_Event_Window_Colormap *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_colormap_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Colormap)))) return;
-
- e->win = ev->window;
- e->cmap = ev->colormap;
- if (ev->state == XCB_COLORMAP_STATE_INSTALLED)
- e->installed = 1;
- else
- e->installed = 0;
- e->time = _ecore_xcb_event_last_time;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_COLORMAP, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_client_message(xcb_generic_event_t *event)
-{
- xcb_client_message_event_t *ev;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_client_message_event_t *)event;
-
- /* Special client message event handling here. need to put LOTS of if */
- /* checks here and generate synthetic events per special message known */
- /* otherwise generate generic client message event. this would handle*/
- /* netwm, ICCCM, gnomewm, old kde and mwm hint client message protocols */
-
- if ((ev->type == ECORE_X_ATOM_WM_PROTOCOLS) && (ev->format == 32) &&
- (ev->data.data32[0] == ECORE_X_ATOM_WM_DELETE_WINDOW))
- {
- Ecore_X_Event_Window_Delete_Request *e;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Delete_Request))))
- return;
- e->win = ev->window;
- e->time = _ecore_xcb_event_last_time;
- ecore_event_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, e, NULL, NULL);
- }
- else if ((ev->type == ECORE_X_ATOM_NET_WM_MOVERESIZE) &&
- (ev->format == 32) && (ev->data.data32[2] < 9))
- {
- Ecore_X_Event_Window_Move_Resize_Request *e;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Move_Resize_Request))))
- return;
- e->win = ev->window;
- e->x = ev->data.data32[0];
- e->y = ev->data.data32[1];
- e->direction = ev->data.data32[2];
- e->button = ev->data.data32[3];
- e->source = ev->data.data32[4];
- ecore_event_add(ECORE_X_EVENT_WINDOW_MOVE_RESIZE_REQUEST, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_XDND_ENTER)
- {
- Ecore_X_Event_Xdnd_Enter *e;
- Ecore_X_DND_Target *target;
-
- DBG("Got Xdnd Enter Event");
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Enter)))) return;
- target = _ecore_xcb_dnd_target_get();
- target->state = ECORE_X_DND_TARGET_ENTERED;
- target->source = ev->data.data32[0];
- target->win = ev->window;
- target->version = (int)(ev->data.data32[1] >> 24);
- if (target->version > ECORE_X_DND_VERSION)
- {
- WRN("DND: Requested version %d but we only support up to %d",
- target->version, ECORE_X_DND_VERSION);
- free(e);
- return;
- }
- if (ev->data.data32[1] & 0x1UL)
- {
- unsigned char *data;
- Ecore_X_Atom *types;
- int num_ret = 0;
-
- if (!ecore_x_window_prop_property_get(target->source,
- ECORE_X_ATOM_XDND_TYPE_LIST,
- ECORE_X_ATOM_ATOM, 32,
- &data, &num_ret))
- {
- WRN("DND: Could not fetch data type list from source window");
- free(e);
- return;
- }
- types = (Ecore_X_Atom *)data;
- e->types = calloc(num_ret, sizeof(char *));
- if (e->types)
- {
- int i = 0;
-
- for (i = 0; i < num_ret; i++)
- e->types[i] = ecore_x_atom_name_get(types[i]);
- }
- e->num_types = num_ret;
- if (data) free(data);
- }
- else
- {
- int i = 0;
-
- e->types = calloc(3, sizeof(char *));
- if (e->types)
- {
- while ((i < 3) && (ev->data.data32[i + 2]))
- {
- e->types[i] =
- ecore_x_atom_name_get(ev->data.data32[i + 2]);
- i++;
- }
- }
- e->num_types = i;
- }
-
- e->win = target->win;
- e->source = target->source;
- ecore_event_add(ECORE_X_EVENT_XDND_ENTER, e,
- _ecore_xcb_event_xdnd_enter_free, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_XDND_POSITION)
- {
- Ecore_X_Event_Xdnd_Position *e;
- Ecore_X_DND_Target *target;
-
- DBG("Got Xdnd Position Event");
- target = _ecore_xcb_dnd_target_get();
- if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
- (target->win != ev->window)) return;
- target->pos.x = ev->data.data32[2] >> 16;
- target->pos.y = ev->data.data32[2] & 0xFFFFUL;
- target->action = ev->data.data32[4];
- target->time = (target->version >= 1) ?
- (Ecore_X_Time)ev->data.data32[3] : XCB_CURRENT_TIME;
-
- e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Position));
- if (!e) return;
- e->win = target->win;
- e->source = target->source;
- e->position.x = target->pos.x;
- e->position.y = target->pos.y;
- e->action = target->action;
- ecore_event_add(ECORE_X_EVENT_XDND_POSITION, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_XDND_STATUS)
- {
- Ecore_X_Event_Xdnd_Status *e;
- Ecore_X_DND_Source *source;
-
- DBG("Got Xdnd Status Event");
- source = _ecore_xcb_dnd_source_get();
- if ((source->win != ev->window) ||
- (source->dest != (Ecore_X_Window)ev->data.data32[0]))
- return;
-
- source->await_status = 0;
- source->will_accept = ev->data.data32[1] & 0x1UL;
- source->suppress = (ev->data.data32[1] & 0x2UL) ? 0 : 1;
- source->rectangle.x = ev->data.data32[2] >> 16;
- source->rectangle.y = ev->data.data32[2] & 0xFFFFUL;
- source->rectangle.width = ev->data.data32[3] >> 16;
- source->rectangle.height = ev->data.data32[3] & 0xFFFFUL;
- source->accepted_action = ev->data.data32[4];
-
- e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Status));
- if (!e) return;
- e->win = source->win;
- e->target = source->dest;
- e->will_accept = source->will_accept;
- e->rectangle.x = source->rectangle.x;
- e->rectangle.y = source->rectangle.y;
- e->rectangle.width = source->rectangle.width;
- e->rectangle.height = source->rectangle.height;
- e->action = source->accepted_action;
-
- ecore_event_add(ECORE_X_EVENT_XDND_STATUS, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_XDND_LEAVE)
- {
- Ecore_X_Event_Xdnd_Leave *e;
- Ecore_X_DND_Target *target;
-
- DBG("Got Xdnd Leave Event");
- target = _ecore_xcb_dnd_target_get();
- if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
- (target->win != ev->window))
- return;
- target->state = ECORE_X_DND_TARGET_IDLE;
- e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Leave));
- if (!e) return;
- e->win = ev->window;
- e->source = (Ecore_X_Window)ev->data.data32[0];
- ecore_event_add(ECORE_X_EVENT_XDND_LEAVE, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_XDND_DROP)
- {
- Ecore_X_Event_Xdnd_Drop *e;
- Ecore_X_DND_Target *target;
-
- DBG("Got Xdnd Drop Event");
- target = _ecore_xcb_dnd_target_get();
- if ((target->source != (Ecore_X_Window)ev->data.data32[0]) ||
- (target->win != ev->window))
- return;
- target->time = (target->version >= 1) ?
- (Ecore_X_Time)ev->data.data32[2] : _ecore_xcb_event_last_time;
-
- e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Drop));
- if (!e) return;
- e->win = target->win;
- e->source = target->source;
- e->action = target->action;
- e->position.x = target->pos.x;
- e->position.y = target->pos.y;
- ecore_event_add(ECORE_X_EVENT_XDND_DROP, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_XDND_FINISHED)
- {
- Ecore_X_Event_Xdnd_Finished *e;
- Ecore_X_DND_Source *source;
- Eina_Bool completed = EINA_TRUE;
-
- DBG("Got Xdnd Finished Event");
- source = _ecore_xcb_dnd_source_get();
- if ((source->win != ev->window) ||
- (source->dest != (Ecore_X_Window)ev->data.data32[0]))
- return;
- if ((source->version < 5) || (ev->data.data32[1] & 0x1UL))
- {
- ecore_x_selection_xdnd_clear();
- source->state = ECORE_X_DND_SOURCE_IDLE;
- }
- else if (source->version >= 5)
- {
- completed = EINA_FALSE;
- source->state = ECORE_X_DND_SOURCE_CONVERTING;
- /* FIXME: Probably need to add a timer to switch back to idle
- * and discard the selection data */
- }
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Xdnd_Finished))))
- return;
- e->win = source->win;
- e->target = source->dest;
- e->completed = completed;
- if (source->version >= 5)
- {
- source->accepted_action = ev->data.data32[2];
- e->action = source->accepted_action;
- }
- else
- {
- source->accepted_action = 0;
- e->action = source->action;
- }
- ecore_event_add(ECORE_X_EVENT_XDND_FINISHED, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_NET_WM_STATE)
- {
- Ecore_X_Event_Window_State_Request *e;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request))))
- return;
- e->win = ev->window;
- if (ev->data.data32[0] == 0)
- e->action = ECORE_X_WINDOW_STATE_ACTION_REMOVE;
- else if (ev->data.data32[0] == 1)
- e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
- else if (ev->data.data32[0] == 2)
- e->action = ECORE_X_WINDOW_STATE_ACTION_TOGGLE;
- else
- {
- free(e);
- return;
- }
- e->state[0] = _ecore_xcb_netwm_window_state_get(ev->data.data32[1]);
- if (e->state[0] == ECORE_X_WINDOW_STATE_UNKNOWN)
- {
- /* FIXME */
- }
- e->state[1] = _ecore_xcb_netwm_window_state_get(ev->data.data32[2]);
- if (e->state[1] == ECORE_X_WINDOW_STATE_UNKNOWN)
- {
- /* FIXME */
- }
- e->source = ev->data.data32[3];
- ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
- }
- else if ((ev->type == ECORE_X_ATOM_WM_CHANGE_STATE) && (ev->format == 32) &&
- (ev->data.data32[0] == XCB_ICCCM_WM_STATE_ICONIC))
- {
- Ecore_X_Event_Window_State_Request *e;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_State_Request))))
- return;
- e->win = ev->window;
- e->action = ECORE_X_WINDOW_STATE_ACTION_ADD;
- e->state[0] = ECORE_X_WINDOW_STATE_ICONIFIED;
- ecore_event_add(ECORE_X_EVENT_WINDOW_STATE_REQUEST, e, NULL, NULL);
- }
- else if ((ev->type == ECORE_X_ATOM_NET_WM_DESKTOP) && (ev->format == 32))
- {
- Ecore_X_Event_Desktop_Change *e;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Desktop_Change))))
- return;
- e->win = ev->window;
- e->desk = ev->data.data32[0];
- e->source = ev->data.data32[1];
- ecore_event_add(ECORE_X_EVENT_DESKTOP_CHANGE, e, NULL, NULL);
- }
- else if (ev->type == ECORE_X_ATOM_NET_REQUEST_FRAME_EXTENTS)
- {
- Ecore_X_Event_Frame_Extents_Request *e;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Frame_Extents_Request))))
- return;
- e->win = ev->window;
- ecore_event_add(ECORE_X_EVENT_FRAME_EXTENTS_REQUEST, e, NULL, NULL);
- }
- else if ((ev->type == ECORE_X_ATOM_WM_PROTOCOLS) &&
- ((Ecore_X_Atom)ev->data.data32[0] == ECORE_X_ATOM_NET_WM_PING) &&
- (ev->format == 32))
- {
- Ecore_X_Event_Ping *e;
- Ecore_X_Window root = 0;
- int count = 0;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Ping)))) return;
- e->win = ev->window;
- e->time = ev->data.data32[1];
- e->event_win = ev->data.data32[2];
- ecore_event_add(ECORE_X_EVENT_PING, e, NULL, NULL);
-
- CHECK_XCB_CONN;
-
- count = xcb_setup_roots_length(xcb_get_setup(_ecore_xcb_conn));
- if (count > 1)
- root = ecore_x_window_root_get(e->win);
- else
- root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- if (ev->window != root)
- {
- ev->window = root;
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY),
- (const char *)&ev);
-// ecore_x_flush();
- }
- }
- else if ((ev->type == ECORE_X_ATOM_NET_STARTUP_INFO_BEGIN) &&
- (ev->format == 8))
- {
- _ecore_xcb_netwm_startup_info_begin(ev->window, ev->data.data8[0]);
- }
- else if ((ev->type == ECORE_X_ATOM_NET_STARTUP_INFO) && (ev->format == 8))
- {
- _ecore_xcb_netwm_startup_info(ev->window, ev->data.data8[0]);
- }
- else if ((ev->type == 27777) && (ev->data.data32[0] == 0x7162534) &&
- (ev->format == 32)) // && (ev->window = _private_window))
- {
- if (ev->data.data32[1] == 0x10000001)
- _ecore_xcb_window_button_grab_remove(ev->data.data32[2]);
- else if (ev->data.data32[1] == 0x10000002)
- _ecore_xcb_window_key_grab_remove(ev->data.data32[2]);
- }
- else
- {
- Ecore_X_Event_Client_Message *e;
- int i = 0;
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Client_Message))))
- return;
-
- e->win = ev->window;
- e->message_type = ev->type;
- e->format = ev->format;
- e->time = _ecore_xcb_event_last_time;
- for (i = 0; i < 5; i++)
- e->data.l[i] = ev->data.data32[i];
- ecore_event_add(ECORE_X_EVENT_CLIENT_MESSAGE, e, NULL, NULL);
- }
-}
-
-static void
-_ecore_xcb_event_handle_mapping_notify(xcb_generic_event_t *event)
-{
- xcb_mapping_notify_event_t *ev;
- Ecore_X_Event_Mapping_Change *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-
- ev = (xcb_mapping_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Mapping_Change)))) return;
-
- _ecore_xcb_keymap_refresh(ev);
- _ecore_xcb_modifiers_get();
-
- switch (ev->request)
- {
- case XCB_MAPPING_MODIFIER:
- e->type = ECORE_X_MAPPING_MODIFIER;
- break;
-
- case XCB_MAPPING_KEYBOARD:
- e->type = ECORE_X_MAPPING_KEYBOARD;
- break;
-
- case XCB_MAPPING_POINTER:
- default:
- e->type = ECORE_X_MAPPING_MOUSE;
- break;
- }
- e->keycode = ev->first_keycode;
- e->num = ev->count;
-
- ecore_event_add(ECORE_X_EVENT_MAPPING_CHANGE, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_damage_notify(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_DAMAGE
- xcb_damage_notify_event_t *ev;
- Ecore_X_Event_Damage *e;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-#ifdef ECORE_XCB_DAMAGE
- ev = (xcb_damage_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Damage)))) return;
-
- e->level = ev->level;
- e->drawable = ev->drawable;
- e->damage = ev->damage;
- e->time = ev->timestamp;
- e->area.x = ev->area.x;
- e->area.y = ev->area.y;
- e->area.width = ev->area.width;
- e->area.height = ev->area.height;
- e->geometry.x = ev->geometry.x;
- e->geometry.y = ev->geometry.y;
- e->geometry.width = ev->geometry.width;
- e->geometry.height = ev->geometry.height;
-
- ecore_event_add(ECORE_X_EVENT_DAMAGE_NOTIFY, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_randr_change(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_RANDR
- xcb_randr_screen_change_notify_event_t *ev;
- Ecore_X_Event_Screen_Change *e;
-#endif
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-#ifdef ECORE_XCB_RANDR
- ev = (xcb_randr_screen_change_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Screen_Change)))) return;
-
- e->win = ev->request_window;
- e->root = ev->root;
- e->size.width = ev->width;
- e->size.height = ev->height;
- e->time = ev->timestamp;
- e->config_time = ev->config_timestamp;
- e->size.width_mm = ev->mwidth;
- e->size.height_mm = ev->mheight;
- e->orientation = ev->rotation;
- e->subpixel_order = ev->subpixel_order;
-
- ecore_event_add(ECORE_X_EVENT_SCREEN_CHANGE, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_randr_notify(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_RANDR
- xcb_randr_notify_event_t *ev;
-#endif
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-#ifdef ECORE_XCB_RANDR
- ev = (xcb_randr_notify_event_t *)event;
- switch (ev->subCode)
- {
- case XCB_RANDR_NOTIFY_CRTC_CHANGE:
- _ecore_xcb_event_handle_randr_crtc_change(event);
- break;
-
- case XCB_RANDR_NOTIFY_OUTPUT_CHANGE:
- _ecore_xcb_event_handle_randr_output_change(event);
- break;
-
- case XCB_RANDR_NOTIFY_OUTPUT_PROPERTY:
- _ecore_xcb_event_handle_randr_output_property_change(event);
- break;
-
- default:
- break;
- }
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_randr_crtc_change(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_RANDR
- xcb_randr_notify_event_t *ev;
- Ecore_X_Event_Randr_Crtc_Change *e;
-#endif
-
-#ifdef ECORE_XCB_RANDR
- ev = (xcb_randr_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Randr_Crtc_Change))))
- return;
-
- e->win = ev->u.cc.window;
- e->crtc = ev->u.cc.crtc;
- e->mode = ev->u.cc.mode;
- e->orientation = ev->u.cc.rotation;
- e->geo.x = ev->u.cc.x;
- e->geo.y = ev->u.cc.y;
- e->geo.w = ev->u.cc.width;
- e->geo.h = ev->u.cc.height;
-
- ecore_event_add(ECORE_X_EVENT_RANDR_CRTC_CHANGE, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_randr_output_change(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_RANDR
- xcb_randr_notify_event_t *ev;
- Ecore_X_Event_Randr_Output_Change *e;
-#endif
-
-#ifdef ECORE_XCB_RANDR
- ev = (xcb_randr_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Randr_Output_Change))))
- return;
-
- e->win = ev->u.oc.window;
- e->output = ev->u.oc.output;
- e->crtc = ev->u.oc.crtc;
- e->mode = ev->u.oc.mode;
- e->orientation = ev->u.oc.rotation;
- e->connection = ev->u.oc.connection;
- e->subpixel_order = ev->u.oc.subpixel_order;
-
- ecore_event_add(ECORE_X_EVENT_RANDR_OUTPUT_CHANGE, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_randr_output_property_change(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_RANDR
- xcb_randr_notify_event_t *ev;
- Ecore_X_Event_Randr_Output_Property_Notify *e;
-#endif
-
-#ifdef ECORE_XCB_RANDR
- ev = (xcb_randr_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Randr_Output_Property_Notify))))
- return;
-
- e->win = ev->u.op.window;
- e->output = ev->u.op.output;
- e->property = ev->u.op.atom;
- e->time = ev->u.op.timestamp;
- if (ev->u.op.status == XCB_PROPERTY_NEW_VALUE)
- e->state = ECORE_X_RANDR_PROPERTY_CHANGE_ADD;
- else
- e->state = ECORE_X_RANDR_PROPERTY_CHANGE_DEL;
-
- ecore_event_add(ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_screensaver_notify(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_SCREENSAVER
- xcb_screensaver_notify_event_t *ev;
- Ecore_X_Event_Screensaver_Notify *e;
-#endif
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-#ifdef ECORE_XCB_SCREENSAVER
- ev = (xcb_screensaver_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Screensaver_Notify)))) return;
-
- e->win = ev->window;
- e->on = EINA_FALSE;
- if ((ev->state == XCB_SCREENSAVER_STATE_ON) ||
- (ev->state == XCB_SCREENSAVER_STATE_CYCLE)) e->on = EINA_TRUE;
- e->time = ev->time;
-
- ecore_event_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY, e, NULL, NULL);
-#endif
-}
-
-#ifdef ECORE_XCB_XGESTURE
-static void
-_ecore_xcb_event_handle_gesture_notify_flick(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_flick_event_t *ev;
- Ecore_X_Event_Gesture_Notify_Flick *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_flick_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Flick)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_fingers = ev->num_finger;
- e->distance = ev->distance;
- e->duration = ev->duration;
- e->direction = ev->direction;
- e->angle = XFixedToDouble(ev->angle);
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_FLICK, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_gesture_notify_pan(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_pan_event_t *ev;
- Ecore_X_Event_Gesture_Notify_Pan *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_pan_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Pan)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_fingers = ev->num_finger;
- e->dx = ev->dx;
- e->dy = ev->dy;
- e->distance = ev->distance;
- e->duration = ev->duration;
- e->direction = ev->direction;
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_PAN, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_gesture_notify_pinchrotation(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_pinch_rotation_event_t *ev;
- Ecore_X_Event_Gesture_Notify_PinchRotation *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_pinch_rotation_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_PinchRotation)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_fingers = ev->num_finger;
- e->distance = ev->distance;
- e->cx = ev->cx;
- e->cy = ev->cy;
- e->zoom = XFixedToDouble(ev->zoom);
- e->angle = XFixedToDouble(ev->angle);
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_gesture_notify_tap(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_tap_event_t *ev;
- Ecore_X_Event_Gesture_Notify_Tap *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_tap_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Tap)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_fingers = ev->num_finger;
- e->cx = ev->cx;
- e->cy = ev->cy;
- e->tap_repeat = ev->tap_repeat;
- e->interval = ev->interval;
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_TAP, e, NULL, NULL);
-}
-
-static void
-_ecore_xcb_event_handle_gesture_notify_tapnhold(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_tap_n_hold_event_t *ev;
- Ecore_X_Event_Gesture_Notify_TapNHold *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_tap_n_hold_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_TapNHold)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_fingers = ev->num_finger;
- e->cx = ev->cx;
- e->cy = ev->cy;
- e->interval = ev->interval;
- e->hold_time = ev->holdtime;
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD, e, NULL, NULL);
-}
-
-static void
- _ecore_xcb_event_handle_gesture_notify_hold(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_hold_event_t *ev;
- Ecore_X_Event_Gesture_Notify_Hold *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_hold_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Hold)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_fingers = ev->num_finger;
- e->cx = ev->cx;
- e->cy = ev->cy;
- e->hold_time = ev->holdtime;
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_HOLD, e, NULL, NULL);
-}
-
-static void
- _ecore_xcb_event_handle_gesture_notify_group(xcb_generic_event_t *event)
-{
- xcb_gesture_notify_group_event_t *ev;
- Ecore_X_Event_Gesture_Notify_Group *e;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- fprintf(stderr, "[ECORE_XCB][%s]...\n", __FUNCTION__);
-
- ev = (xcb_gesture_notify_group_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Gesture_Notify_Group)))) return;
-
- e->win = ev->window;
- e->time = ev->time;
- e->subtype = ev->kind;
- e->num_groups = ev->num_group;
- e->group_id = ev->groupid;
-
- ecore_event_add(ECORE_X_EVENT_GESTURE_NOTIFY_GROUP, e, NULL, NULL);
-}
-#endif
-
-#ifdef ECORE_XCB_SHAPE
-static void
-_ecore_xcb_event_handle_shape_change(xcb_generic_event_t *event)
-{
- xcb_shape_notify_event_t *ev;
- Ecore_X_Event_Window_Shape *e;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
- ev = (xcb_shape_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Window_Shape)))) return;
-
- e->win = ev->affected_window;
- e->time = ev->server_time;
- switch (ev->shape_kind)
- {
- case XCB_SHAPE_SK_BOUNDING:
- e->type = ECORE_X_SHAPE_BOUNDING;
- break;
-
- case XCB_SHAPE_SK_CLIP:
- e->type = ECORE_X_SHAPE_CLIP;
- break;
-
- case XCB_SHAPE_SK_INPUT:
- e->type = ECORE_X_SHAPE_INPUT;
- break;
-
- default:
- break;
- }
- e->x = ev->extents_x;
- e->y = ev->extents_y;
- e->w = ev->extents_width;
- e->h = ev->extents_height;
- e->shaped = ev->shaped;
-
- ecore_event_add(ECORE_X_EVENT_WINDOW_SHAPE, e, NULL, NULL);
-}
-
-#endif
-
-static void
-_ecore_xcb_event_handle_sync_counter(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_SYNC
- xcb_sync_counter_notify_event_t *ev;
- Ecore_X_Event_Sync_Counter *e;
-#endif
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-
-#ifdef ECORE_XCB_SYNC
- ev = (xcb_sync_counter_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Sync_Counter)))) return;
-
- e->time = ev->timestamp;
-
- ecore_event_add(ECORE_X_EVENT_SYNC_COUNTER, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_sync_alarm(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_SYNC
- xcb_sync_alarm_notify_event_t *ev;
- Ecore_X_Event_Sync_Alarm *e;
-#endif
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-#ifdef ECORE_XCB_SYNC
- ev = (xcb_sync_alarm_notify_event_t *)event;
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Sync_Alarm)))) return;
-
- e->time = ev->timestamp;
- e->alarm = ev->alarm;
-
- ecore_event_add(ECORE_X_EVENT_SYNC_ALARM, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_xfixes_selection_notify(xcb_generic_event_t *event)
-{
-#ifdef ECORE_XCB_XFIXES
- Ecore_X_Event_Fixes_Selection_Notify *e;
- Ecore_X_Atom sel;
- xcb_xfixes_selection_notify_event_t *ev;
-#endif
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-#ifdef ECORE_XCB_XFIXES
- ev = (xcb_xfixes_selection_notify_event_t *)event;
-
- if (!(e = calloc(1, sizeof(*e)))) return;
-
- e->win = ev->window;
- e->owner = ev->owner;
- e->time = ev->timestamp;
- e->selection_time = ev->selection_timestamp;
- e->atom = sel = ev->selection;
- if (sel == ECORE_X_ATOM_SELECTION_PRIMARY)
- e->selection = ECORE_X_SELECTION_PRIMARY;
- else if (sel == ECORE_X_ATOM_SELECTION_SECONDARY)
- e->selection = ECORE_X_SELECTION_SECONDARY;
- else if (sel == ECORE_X_ATOM_SELECTION_XDND)
- e->selection = ECORE_X_SELECTION_XDND;
- else if (sel == ECORE_X_ATOM_SELECTION_CLIPBOARD)
- e->selection = ECORE_X_SELECTION_CLIPBOARD;
- else
- e->selection = ECORE_X_SELECTION_OTHER;
- e->reason = ev->subtype;
-
- ecore_event_add(ECORE_X_EVENT_FIXES_SELECTION_NOTIFY, e, NULL, NULL);
-#endif
-}
-
-static void
-_ecore_xcb_event_handle_xfixes_cursor_notify(xcb_generic_event_t *event EINA_UNUSED)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-// FIXME: TBD
-}
-
-static void
-_ecore_xcb_event_handle_generic_event(xcb_generic_event_t *event)
-{
- xcb_ge_event_t *ev;
- Ecore_X_Event_Generic *e;
-
- ev = (xcb_ge_event_t *)event;
-
- /* pad0 *IS* extension - bug in xcb */
- if (ev->pad0 == _ecore_xcb_event_input)
- {
- _ecore_xcb_event_handle_input_event(event);
-// FIXME: should we generate generic events as WELL as input events?
-// return;
- }
-#ifdef ECORE_XCB_XPRESENT
- else if (ev->pad0 == _ecore_xcb_event_xpresent)
- {
- _ecore_xcb_event_handle_present_event((xcb_ge_event_t*)event);
- return;
- }
-#endif
-
- if (!(e = calloc(1, sizeof(Ecore_X_Event_Generic))))
- return;
-
- DBG("Handle Generic Event: %d", ev->event_type);
-
- e->cookie = ev->sequence;
- /* NB: These are bugs in xcb ge_event structure. The struct should have a
- * field for extension & data, but does not.
- *
- * XCB people have been notified of this issue */
- e->extension = ev->pad0;
- /* e->data = ev->pad1; */
- if (ev->length > 0)
- {
- int len = ev->length * sizeof(int);
- e->data = malloc(len);
- if (e->data) memcpy(e->data, &(event[1]), len);
- }
-
- e->evtype = ev->event_type;
-
- ecore_event_add(ECORE_X_EVENT_GENERIC, e,
- _ecore_xcb_event_generic_event_free, e->data);
-}
-
-static void
-_ecore_xcb_event_handle_input_event(xcb_generic_event_t *event)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_input_handle_event(event);
-}
-
-static void
-_ecore_xcb_event_key_press(xcb_generic_event_t *event)
-{
- Ecore_Event_Key *e;
- xcb_keysym_t sym = XCB_NO_SYMBOL;
- xcb_keycode_t keycode = 0;
- xcb_key_press_event_t *xevent;
- char *keyname = NULL, *key = NULL;
- char *compose = NULL;
- char compose_buffer[256];
- int val = 0;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-
- xevent = (xcb_key_press_event_t *)event;
- keycode = xevent->detail;
-
- sym = _ecore_xcb_keymap_keycode_to_keysym(keycode, xevent->state);
- keyname = _ecore_xcb_keymap_keysym_to_string(sym);
- if (!keyname)
- {
- char buff[256];
-
- snprintf(buff, sizeof(buff), "Keycode-%i", keycode);
- keyname = buff;
- }
-
- val =
- _ecore_xcb_keymap_lookup_string(keycode, xevent->state, compose_buffer,
- sizeof(compose_buffer), &sym);
- if (val > 0)
- {
- compose_buffer[val] = 0;
- compose =
- eina_str_convert(nl_langinfo(CODESET), "UTF-8", compose_buffer);
- if (!compose)
- ERR("Ecore_X cannot convert input key string '%s' to UTF-8. "
- "Is Eina built with iconv support?", compose_buffer);
- }
-
- key = _ecore_xcb_keymap_keysym_to_string(sym);
- if (!key) key = keyname;
-
- e = calloc(1, sizeof(Ecore_Event_Key) + strlen(key) + strlen(keyname) +
- (compose ? strlen(compose) : 0) + 3);
- if (e)
- {
- e->keyname = (char *)(e + 1);
- e->key = e->keyname + strlen(keyname) + 1;
-
- if (compose) e->compose = (e->key + strlen(key) + 1);
- e->string = e->compose;
-
- strcpy((char *)e->keyname, keyname);
- strcpy((char *)e->key, key);
- if (compose) strcpy((char *)e->compose, compose);
-
- e->modifiers = _ecore_xcb_events_modifiers_get(xevent->state);
- e->timestamp = xevent->time;
- e->window = xevent->child ? xevent->child : xevent->event;
- e->event_window = xevent->event;
- e->same_screen = xevent->same_screen;
- e->root_window = xevent->root;
- e->keycode = keycode;
-
- DBG("Sending Key Down Event: %s", e->keyname);
- ecore_event_add(ECORE_EVENT_KEY_DOWN, e, NULL, NULL);
- }
- _ecore_xcb_event_last_time = xevent->time;
-}
-
-static void
-_ecore_xcb_event_key_release(xcb_generic_event_t *event)
-{
- Ecore_Event_Key *e;
- xcb_keysym_t sym = XCB_NO_SYMBOL;
- xcb_keycode_t keycode = 0;
- xcb_key_release_event_t *xevent;
- char *keyname = NULL, *key = NULL;
- char *compose = NULL;
- char compose_buffer[256];
- int val = 0;
-
- _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-
- xevent = (xcb_key_release_event_t *)event;
- keycode = xevent->detail;
-
- sym = _ecore_xcb_keymap_keycode_to_keysym(keycode, xevent->state);
- keyname = _ecore_xcb_keymap_keysym_to_string(sym);
- if (!keyname)
- {
- char buff[256];
-
- snprintf(buff, sizeof(buff), "Keycode-%i", keycode);
- keyname = buff;
- }
-
- val =
- _ecore_xcb_keymap_lookup_string(keycode, xevent->state, compose_buffer,
- sizeof(compose_buffer), &sym);
- if (val > 0)
- {
- compose_buffer[val] = 0;
- compose =
- eina_str_convert(nl_langinfo(CODESET), "UTF-8", compose_buffer);
-// tmp = compose;
- }
-
- key = _ecore_xcb_keymap_keysym_to_string(sym);
- if (!key) key = keyname;
-
- e = calloc(1, sizeof(Ecore_Event_Key) + strlen(key) + strlen(keyname) +
- (compose ? strlen(compose) : 0) + 3);
- if (e)
- {
- e->keyname = (char *)(e + 1);
- e->key = e->keyname + strlen(keyname) + 1;
-
- if (compose) e->compose = (e->key + strlen(key) + 1);
- e->string = e->compose;
-
- strcpy((char *)e->keyname, keyname);
- strcpy((char *)e->key, key);
- if (compose) strcpy((char *)e->compose, compose);
-
- e->modifiers = _ecore_xcb_events_modifiers_get(xevent->state);
- e->timestamp = xevent->time;
- e->window = xevent->child ? xevent->child : xevent->event;
- e->event_window = xevent->event;
- e->same_screen = xevent->same_screen;
- e->root_window = xevent->root;
- e->keycode = keycode;
-
- ecore_event_add(ECORE_EVENT_KEY_UP, e, NULL, NULL);
- }
- _ecore_xcb_event_last_time = xevent->time;
-}
-
-void
-_ecore_xcb_event_mouse_move(uint16_t timestamp,
- uint16_t modifiers,
- int16_t x,
- int16_t y,
- int16_t root_x,
- int16_t root_y,
- xcb_window_t event_win,
- xcb_window_t win,
- xcb_window_t root_win,
- uint8_t same_screen,
- int dev,
- double radx,
- double rady,
- double pressure,
- double angle,
- int16_t mx,
- int16_t my,
- int16_t mrx,
- int16_t mry)
-{
- Ecore_Event_Mouse_Move *e;
-
- if (!(e = calloc(1, sizeof(Ecore_Event_Mouse_Move)))) return;
-
- e->window = win;
- e->root_window = root_win;
- e->timestamp = timestamp;
- e->same_screen = same_screen;
- e->event_window = event_win;
- e->modifiers = _ecore_xcb_events_modifiers_get(modifiers);
- e->x = x;
- e->y = y;
- e->root.x = root_x;
- e->root.y = root_y;
- e->multi.device = dev;
- e->multi.radius = ((radx + rady) / 2);
- e->multi.radius_x = radx;
- e->multi.radius_y = rady;
- e->multi.pressure = pressure;
- e->multi.angle = angle;
- e->multi.x = mx;
- e->multi.y = my;
- e->multi.root.x = mrx;
- e->multi.root.y = mry;
-
- ecore_event_add(ECORE_EVENT_MOUSE_MOVE, e,
- _ecore_xcb_event_mouse_move_free, NULL);
-
- _ecore_xcb_event_last_time = e->timestamp;
- _ecore_xcb_event_last_window = e->window;
- _ecore_xcb_event_last_root_x = root_x;
- _ecore_xcb_event_last_root_y = root_y;
-}
-
-static void
-_ecore_xcb_event_mouse_move_free(void *data EINA_UNUSED,
- void *event)
-{
- Ecore_Event_Mouse_Move *ev;
-
- ev = event;
-// if (_ecore_xcb_event_last_mouse_move_event)
-// {
-// _ecore_xcb_event_last_mouse_move = EINA_FALSE;
-// _ecore_xcb_event_last_mouse_move_event = NULL;
-// }
- if (ev) free(ev);
-}
-
-Ecore_Event_Mouse_Button *
-_ecore_xcb_event_mouse_button(int event,
- uint16_t timestamp,
- uint16_t modifiers,
- xcb_button_t buttons,
- int16_t x,
- int16_t y,
- int16_t root_x,
- int16_t root_y,
- xcb_window_t event_win,
- xcb_window_t win,
- xcb_window_t root_win,
- uint8_t same_screen,
- int dev,
- double radx,
- double rady,
- double pressure,
- double angle,
- int16_t mx,
- int16_t my,
- int16_t mrx,
- int16_t mry)
-{
- Ecore_Event_Mouse_Button *e;
- Ecore_X_Mouse_Down_Info *info = NULL;
-
- if (!(e = calloc(1, sizeof(Ecore_Event_Mouse_Button)))) return NULL;
-
- e->window = win;
- e->root_window = root_win;
- e->timestamp = timestamp;
- e->same_screen = same_screen;
- e->event_window = event_win;
- e->buttons = buttons;
- e->modifiers = _ecore_xcb_events_modifiers_get(modifiers);
- e->double_click = 0;
- e->triple_click = 0;
- e->x = x;
- e->y = y;
- e->root.x = root_x;
- e->root.y = root_y;
-
- if ((info = _ecore_xcb_event_mouse_down_info_get(dev)))
- {
- if ((event == ECORE_EVENT_MOUSE_BUTTON_DOWN) &&
- (info->did_triple))
- {
- info->last_win = 0;
- info->last_last_win = 0;
- info->last_event_win = 0;
- info->last_time = 0;
- info->last_last_time = 0;
- }
- if (event_win == win)
- {
- if (event == ECORE_EVENT_MOUSE_BUTTON_DOWN)
- {
- if (((int)(timestamp - info->last_time) <=
- (int)(1000 * _ecore_xcb_double_click_time)) &&
- (win == info->last_win) &&
- (event_win == info->last_event_win))
- {
- e->double_click = 1;
- info->did_double = EINA_TRUE;
- }
- else
- {
- info->did_double = EINA_FALSE;
- info->did_triple = EINA_FALSE;
- }
- if (((int)(timestamp - info->last_last_time) <=
- (int)(2 * 1000 * _ecore_xcb_double_click_time)) &&
- (win == info->last_win) &&
- (win == info->last_last_win) &&
- (event_win == info->last_event_win) &&
- (event_win == info->last_last_event_win))
- {
- e->triple_click = 1;
- info->did_triple = EINA_TRUE;
- }
- else
- info->did_triple = EINA_FALSE;
- }
- else
- {
- if (info->did_double) e->double_click = 1;
- if (info->did_triple) e->triple_click = 1;
- }
- }
- }
-
- /* NB: Comment out right now because _ecore_xcb_mouse_up_count is
- * only used here...nowhere else in the code */
-
- /* if ((event == ECORE_EVENT_MOUSE_BUTTON_DOWN) && */
- /* (!e->double_click) && (!e->triple_click)) */
- /* _ecore_xcb_mouse_up_count = 0; */
-
- e->multi.device = dev;
- e->multi.radius = ((radx + rady) / 2);
- e->multi.radius_x = radx;
- e->multi.radius_y = rady;
- e->multi.pressure = pressure;
- e->multi.angle = angle;
- e->multi.x = mx;
- e->multi.y = my;
- e->multi.root.x = mrx;
- e->multi.root.y = mry;
-
- _ecore_xcb_event_last_time = e->timestamp;
- _ecore_xcb_event_last_window = e->window;
- _ecore_xcb_event_last_root_x = root_x;
- _ecore_xcb_event_last_root_y = root_y;
-
- ecore_event_add(event, e, NULL, NULL);
-
- if ((info) && (event == ECORE_EVENT_MOUSE_BUTTON_DOWN) &&
- (win == event_win) && (!info->did_triple))
- {
- info->last_last_win = info->last_win;
- info->last_win = win;
- info->last_last_event_win = info->last_event_win;
- info->last_event_win = event_win;
- info->last_last_time = info->last_time;
- info->last_time = timestamp;
- }
-
- return e;
-}
-
-static Ecore_X_Event_Mode
-_ecore_xcb_event_mode_get(uint8_t mode)
-{
- switch (mode)
- {
- case XCB_NOTIFY_MODE_NORMAL:
- return ECORE_X_EVENT_MODE_NORMAL;
-
- case XCB_NOTIFY_MODE_WHILE_GRABBED:
- return ECORE_X_EVENT_MODE_WHILE_GRABBED;
-
- case XCB_NOTIFY_MODE_GRAB:
- return ECORE_X_EVENT_MODE_GRAB;
-
- case XCB_NOTIFY_MODE_UNGRAB:
- return ECORE_X_EVENT_MODE_UNGRAB;
-
- default:
- return ECORE_X_EVENT_MODE_NORMAL;
- }
-}
-
-static Ecore_X_Event_Detail
-_ecore_xcb_event_detail_get(uint8_t detail)
-{
- switch (detail)
- {
- case XCB_NOTIFY_DETAIL_ANCESTOR:
- return ECORE_X_EVENT_DETAIL_ANCESTOR;
-
- case XCB_NOTIFY_DETAIL_VIRTUAL:
- return ECORE_X_EVENT_DETAIL_VIRTUAL;
-
- case XCB_NOTIFY_DETAIL_INFERIOR:
- return ECORE_X_EVENT_DETAIL_INFERIOR;
-
- case XCB_NOTIFY_DETAIL_NONLINEAR:
- return ECORE_X_EVENT_DETAIL_NON_LINEAR;
-
- case XCB_NOTIFY_DETAIL_NONLINEAR_VIRTUAL:
- return ECORE_X_EVENT_DETAIL_NON_LINEAR_VIRTUAL;
-
- case XCB_NOTIFY_DETAIL_POINTER:
- return ECORE_X_EVENT_DETAIL_POINTER;
-
- case XCB_NOTIFY_DETAIL_POINTER_ROOT:
- return ECORE_X_EVENT_DETAIL_POINTER_ROOT;
-
- case XCB_NOTIFY_DETAIL_NONE:
- default:
- return ECORE_X_EVENT_DETAIL_ANCESTOR;
- }
-}
-
-static void
-_ecore_xcb_event_xdnd_enter_free(void *data EINA_UNUSED,
- void *event)
-{
- Ecore_X_Event_Xdnd_Enter *e;
- int i = 0;
-
- e = event;
- for (i = 0; i < e->num_types; i++)
- free(e->types[i]);
- free(e->types);
- free(e);
-}
-
-static void
-_ecore_xcb_event_selection_notify_free(void *data EINA_UNUSED,
- void *event)
-{
- Ecore_X_Event_Selection_Notify *e;
- Ecore_X_Selection_Data *sel;
-
- e = event;
- if (!(sel = e->data)) return;
- if (sel->free) sel->free(sel);
- free(e->target);
- free(e);
-}
-
-static void
-_ecore_xcb_event_generic_event_free(void *data,
- void *event)
-{
- Ecore_X_Event_Generic *e;
-
- e = (Ecore_X_Event_Generic *)event;
- if (e->data) free(data);
- free(e);
-}
-
-static void
-_ecore_xcb_event_mouse_down_info_clear(void)
-{
- Eina_Inlist *l;
- Ecore_X_Mouse_Down_Info *info = NULL;
-
- l = _ecore_xcb_mouse_down_info_list;
- while (l)
- {
- info = EINA_INLIST_CONTAINER_GET(l, Ecore_X_Mouse_Down_Info);
- l = eina_inlist_remove(l, l);
- free(info);
- }
- _ecore_xcb_mouse_down_info_list = NULL;
-}
-
-static Ecore_X_Mouse_Down_Info *
-_ecore_xcb_event_mouse_down_info_get(int dev)
-{
- Eina_Inlist *l;
- Ecore_X_Mouse_Down_Info *info = NULL;
-
- l = _ecore_xcb_mouse_down_info_list;
- EINA_INLIST_FOREACH(l, info)
- if (info->dev == dev) return info;
-
- if (!(info = calloc(1, sizeof(Ecore_X_Mouse_Down_Info)))) return NULL;
-
- info->dev = dev;
- l = eina_inlist_append(l, (Eina_Inlist *)info);
- _ecore_xcb_mouse_down_info_list = l;
-
- return info;
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_extensions.c b/src/lib/ecore_x/xcb/ecore_xcb_extensions.c
deleted file mode 100644
index a94c23f7bc..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_extensions.c
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "ecore_xcb_private.h"
-
-void
-_ecore_xcb_extensions_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_big_requests_id);
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_shm_id);
-
-#ifdef ECORE_XCB_SHAPE
- _ecore_xcb_shape_init();
-#endif
-
-#ifdef ECORE_XCB_SCREENSAVER
- _ecore_xcb_screensaver_init();
-#endif
-
-#ifdef ECORE_XCB_SYNC
- _ecore_xcb_sync_init();
-#endif
-
-#ifdef ECORE_XCB_RANDR
- _ecore_xcb_randr_init();
-#endif
-
-#ifdef ECORE_XCB_XFIXES
- _ecore_xcb_xfixes_init();
-#endif
-
-#ifdef ECORE_XCB_DAMAGE
- _ecore_xcb_damage_init();
-#endif
-
-#ifdef ECORE_XCB_RENDER
- _ecore_xcb_render_init();
-#endif
-
-#ifdef ECORE_XCB_COMPOSITE
- _ecore_xcb_composite_init();
-#endif
-
-#ifdef ECORE_XCB_DPMS
- _ecore_xcb_dpms_init();
-#endif
-
-#ifdef ECORE_XCB_DPMS
- _ecore_xcb_dpms_init();
-#endif
-
-#ifdef ECORE_XCB_CURSOR
- _ecore_xcb_cursor_init();
-#endif
-
-#ifdef ECORE_XCB_XINERAMA
- _ecore_xcb_xinerama_init();
-#endif
-
-#ifdef ECORE_XCB_XINPUT
- _ecore_xcb_input_init();
-#endif
-
-#ifdef ECORE_XCB_GESTURE
- _ecore_xcb_gesture_init();
-#endif
-
-#ifdef ECORE_XCB_XPRESENT
- _ecore_xcb_present_init();
-#endif
-
-/* #ifdef ECORE_XCB_DRI */
-/* _ecore_xcb_dri_init(); */
-/* #endif */
-
-#ifdef ECORE_XCB_XTEST
- _ecore_xcb_xtest_init();
-#endif
-
- xcb_prefetch_maximum_request_length(_ecore_xcb_conn);
-}
-
-void
-_ecore_xcb_extensions_finalize(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- xcb_get_extension_data(_ecore_xcb_conn, &xcb_big_requests_id);
- xcb_get_extension_data(_ecore_xcb_conn, &xcb_shm_id);
-
-#ifdef ECORE_XCB_SHAPE
- _ecore_xcb_shape_finalize();
-#endif
-
-#ifdef ECORE_XCB_SCREENSAVER
- _ecore_xcb_screensaver_finalize();
-#endif
-
-#ifdef ECORE_XCB_SYNC
- _ecore_xcb_sync_finalize();
-#endif
-
-#ifdef ECORE_XCB_RANDR
- _ecore_xcb_randr_finalize();
-#endif
-
-#ifdef ECORE_XCB_XFIXES
- _ecore_xcb_xfixes_finalize();
-#endif
-
-#ifdef ECORE_XCB_DAMAGE
- _ecore_xcb_damage_finalize();
-#endif
-
-#ifdef ECORE_XCB_RENDER
- _ecore_xcb_render_finalize();
-#endif
-
-#ifdef ECORE_XCB_COMPOSITE
- _ecore_xcb_composite_finalize();
-#endif
-
-#ifdef ECORE_XCB_DPMS
- _ecore_xcb_dpms_finalize();
-#endif
-
-#ifdef ECORE_XCB_CURSOR
- _ecore_xcb_cursor_finalize();
-#endif
-
-#ifdef ECORE_XCB_XINERAMA
- _ecore_xcb_xinerama_finalize();
-#endif
-
-#ifdef ECORE_XCB_XINPUT
- _ecore_xcb_input_finalize();
-#endif
-
-#ifdef ECORE_XCB_GESTURE
- _ecore_xcb_gesture_finalize();
-#endif
-
-#ifdef ECORE_XCB_XPRESENT
- _ecore_xcb_present_finalize();
-#endif
-
-/* #ifdef ECORE_XCB_DRI */
-/* _ecore_xcb_dri_finalize(); */
-/* #endif */
-
-#ifdef ECORE_XCB_XTEST
- _ecore_xcb_xtest_finalize();
-#endif
-
- xcb_get_maximum_request_length(_ecore_xcb_conn);
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_gc.c b/src/lib/ecore_x/xcb/ecore_xcb_gc.c
deleted file mode 100644
index d811b54594..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_gc.c
+++ /dev/null
@@ -1,173 +0,0 @@
-#include "ecore_xcb_private.h"
-
-/**
- * Creates a new default graphics context associated with the given
- * drawable.
- * @param draw Drawable to create graphics context with. If @c 0 is
- * given instead, the default root window is used.
- * @param value_mask Bitmask values.
- * @param value_list List of values. The order of values must be the
- * same than the corresponding bitmaks.
- * @return The new default graphics context.
- */
-EAPI Ecore_X_GC
-ecore_x_gc_new(Ecore_X_Drawable drawable,
- Ecore_X_GC_Value_Mask value_mask,
- const unsigned int *value_list)
-{
- xcb_gcontext_t gc;
- uint32_t vmask = 0;
- int i = 0, mask = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!drawable) drawable = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- for (i = 0, mask = 1; i <= 22; i++, mask <<= 1)
- {
- switch (mask & value_mask)
- {
- case ECORE_X_GC_VALUE_MASK_FUNCTION:
- vmask |= XCB_GC_FUNCTION;
- break;
-
- case ECORE_X_GC_VALUE_MASK_PLANE_MASK:
- vmask |= XCB_GC_PLANE_MASK;
- break;
-
- case ECORE_X_GC_VALUE_MASK_FOREGROUND:
- vmask |= XCB_GC_FOREGROUND;
- break;
-
- case ECORE_X_GC_VALUE_MASK_BACKGROUND:
- vmask |= XCB_GC_BACKGROUND;
- break;
-
- case ECORE_X_GC_VALUE_MASK_LINE_WIDTH:
- vmask |= XCB_GC_LINE_WIDTH;
- break;
-
- case ECORE_X_GC_VALUE_MASK_LINE_STYLE:
- vmask |= XCB_GC_LINE_STYLE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_CAP_STYLE:
- vmask |= XCB_GC_CAP_STYLE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_JOIN_STYLE:
- vmask |= XCB_GC_JOIN_STYLE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_FILL_STYLE:
- vmask |= XCB_GC_FILL_STYLE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_FILL_RULE:
- vmask |= XCB_GC_FILL_RULE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_TILE:
- vmask |= XCB_GC_TILE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_STIPPLE:
- vmask |= XCB_GC_STIPPLE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X:
- vmask |= XCB_GC_TILE_STIPPLE_ORIGIN_X;
- break;
-
- case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y:
- vmask |= XCB_GC_TILE_STIPPLE_ORIGIN_Y;
- break;
-
- case ECORE_X_GC_VALUE_MASK_FONT:
- vmask |= XCB_GC_FONT;
- break;
-
- case ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE:
- vmask |= XCB_GC_SUBWINDOW_MODE;
- break;
-
- case ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES:
- vmask |= XCB_GC_GRAPHICS_EXPOSURES;
- break;
-
- case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X:
- vmask |= XCB_GC_CLIP_ORIGIN_X;
- break;
-
- case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y:
- vmask |= XCB_GC_CLIP_ORIGIN_Y;
- break;
-
- case ECORE_X_GC_VALUE_MASK_CLIP_MASK:
- vmask |= XCB_GC_CLIP_MASK;
- break;
-
- case ECORE_X_GC_VALUE_MASK_DASH_OFFSET:
- vmask |= XCB_GC_DASH_OFFSET;
- break;
-
- case ECORE_X_GC_VALUE_MASK_DASH_LIST:
- vmask |= XCB_GC_DASH_LIST;
- break;
-
- case ECORE_X_GC_VALUE_MASK_ARC_MODE:
- vmask |= XCB_GC_ARC_MODE;
- break;
- }
- }
-
- gc = xcb_generate_id(_ecore_xcb_conn);
- xcb_create_gc(_ecore_xcb_conn, gc, drawable, vmask, value_list);
-
-// ecore_x_flush();
- return gc;
-}
-
-/**
- * Deletes and frees the given graphics context.
- * @param gc The given graphics context.
- */
-EAPI void
-ecore_x_gc_free(Ecore_X_GC gc)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_free_gc(_ecore_xcb_conn, gc);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_gc_foreground_set(Ecore_X_GC gc,
- unsigned long foreground)
-{
- uint32_t list;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- list = foreground;
- xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_FOREGROUND, &list);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_gc_background_set(Ecore_X_GC gc,
- unsigned long background)
-{
- uint32_t list;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- list = background;
- xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_BACKGROUND, &list);
-// ecore_x_flush();
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_gesture.c b/src/lib/ecore_x/xcb/ecore_xcb_gesture.c
deleted file mode 100644
index 27c13167af..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_gesture.c
+++ /dev/null
@@ -1,203 +0,0 @@
-#include "ecore_xcb_private.h"
-#ifdef ECORE_XCB_XGESTURE
-# include <xcb/gesture.h>
-# include <xcb/xcb_event.h>
-#endif
-
-/* local variables */
-static Eina_Bool _gesture_available = EINA_FALSE;
-
-/* external variables */
-int _ecore_xcb_event_gesture = -1;
-
-void
-_ecore_xcb_gesture_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_XGESTURE
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_gesture_id);
-#endif
-}
-
-void
-_ecore_xcb_gesture_finalize(void)
-{
-#ifdef ECORE_XCB_XGESTURE
- xcb_gesture_query_version_cookie_t cookie;
- xcb_gesture_query_version_reply_t *reply;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_XGESTURE
- cookie =
- xcb_gesture_query_version_unchecked(_ecore_xcb_conn);
- reply =
- xcb_gesture_query_version_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- _gesture_available = EINA_TRUE;
- free(reply);
- }
-
- if (_gesture_available)
- {
- const xcb_query_extension_reply_t *ext_reply;
-
- ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_gesture_id);
- if (ext_reply)
- _ecore_xcb_event_gesture = ext_reply->first_event;
- }
-#endif
-}
-
-void
-_ecore_xcb_gesture_shutdown(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-}
-
-EAPI Eina_Bool
-ecore_x_gesture_supported(void)
-{
- return _gesture_available;
-}
-
-#ifdef ECORE_XCB_XGESTURE
-EAPI Eina_Bool
-ecore_x_gesture_events_select(Ecore_X_Window win,
- Ecore_X_Gesture_Event_Mask mask)
-#else
-EAPI Eina_Bool
-ecore_x_gesture_events_select(Ecore_X_Window win EINA_UNUSED,
- Ecore_X_Gesture_Event_Mask mask EINA_UNUSED)
-#endif
-
-{
-#ifdef ECORE_XCB_XGESTURE
- if (!_gesture_available) return EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN
-
- xcb_gesture_select_events(_ecore_xcb_conn, win, mask);
-
- return EINA_TRUE;
-#else
- return EINA_FALSE;
-#endif
-}
-
-#ifdef ECORE_XCB_XGESTURE
-EAPI Ecore_X_Gesture_Event_Mask
-ecore_x_gesture_events_selected_get(Ecore_X_Window win)
-#else
-EAPI Ecore_X_Gesture_Event_Mask
-ecore_x_gesture_events_selected_get(Ecore_X_Window win EINA_UNUSED)
-#endif
-{
-#ifdef ECORE_XCB_XGESTURE
- xcb_gesture_get_selected_events_cookie_t ecookie;
- xcb_gesture_get_selected_events_reply_t *ereply;
- Ecore_X_Gesture_Event_Mask mask = ECORE_X_GESTURE_EVENT_MASK_NONE;
-
- if (!_gesture_available) return mask;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN
-
- ecookie = xcb_gesture_get_selected_events(_ecore_xcb_conn, win);
- ereply =
- xcb_gesture_get_selected_events_reply(_ecore_xcb_conn, ecookie, NULL);
- if (ereply)
- {
- mask = ereply->mask;
- free(ereply);
- }
-
- return mask;
-#else
- return ECORE_X_GESTURE_EVENT_MASK_NONE;
-#endif
-}
-
-#ifdef ECORE_XCB_XGESTURE
-EAPI Eina_Bool
-ecore_x_gesture_event_grab(Ecore_X_Window win,
- Ecore_X_Gesture_Event_Type type,
- int num_fingers)
-#else
-EAPI Eina_Bool
-ecore_x_gesture_event_grab(Ecore_X_Window win EINA_UNUSED,
- Ecore_X_Gesture_Event_Type type EINA_UNUSED,
- int num_fingers EINA_UNUSED)
-#endif
-{
-#ifdef ECORE_XCB_XGESTURE
- Eina_Bool status = EINA_TRUE;
- xcb_gesture_grab_event_cookie_t ecookie;
- xcb_gesture_grab_event_reply_t *ereply;
-
- if (!_gesture_available) return EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN
-
- ecookie =
- xcb_gesture_grab_event(_ecore_xcb_conn, win, type, num_fingers, 0L);
- ereply = xcb_gesture_grab_event_reply(_ecore_xcb_conn, ecookie, NULL);
-
- if (ereply)
- {
- if (ereply->status) status = EINA_FALSE;
- free(ereply);
- }
- else
- status = EINA_FALSE;
-
- return status;
-#else
- return EINA_FALSE;
-#endif
-}
-
-#ifdef ECORE_XCB_XGESTURE
-EAPI Eina_Bool
-ecore_x_gesture_event_ungrab(Ecore_X_Window win,
- Ecore_X_Gesture_Event_Type type,
- int num_fingers)
-#else
-EAPI Eina_Bool
-ecore_x_gesture_event_ungrab(Ecore_X_Window win EINA_UNUSED,
- Ecore_X_Gesture_Event_Type type EINA_UNUSED,
- int num_fingers EINA_UNUSED)
-#endif
-{
-#ifdef ECORE_XCB_XGESTURE
- Eina_Bool status = EINA_TRUE;
- xcb_gesture_ungrab_event_cookie_t ecookie;
- xcb_gesture_ungrab_event_reply_t *ereply;
-
- if (!_gesture_available) return EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN
-
- ecookie =
- xcb_gesture_ungrab_event(_ecore_xcb_conn, win, type, num_fingers, 0L);
- ereply = xcb_gesture_ungrab_event_reply(_ecore_xcb_conn, ecookie, NULL);
-
- if (ereply)
- {
- if (ereply->status) status = EINA_FALSE;
- free(ereply);
- }
- else
- status = EINA_FALSE;
-
- return status;
-#else
- return EINA_FALSE;
-#endif
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_icccm.c b/src/lib/ecore_x/xcb/ecore_xcb_icccm.c
deleted file mode 100644
index 95146741ce..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_icccm.c
+++ /dev/null
@@ -1,1259 +0,0 @@
-#include "ecore_xcb_private.h"
-#include <xcb/xcb_icccm.h>
-
-EAPI void
-ecore_x_icccm_init(void)
-{
-}
-
-/**
- * Sets the WM_COMMAND property for @a win.
- *
- * @param win The window.
- * @param argc Number of arguments.
- * @param argv Arguments.
- */
-EAPI void
-ecore_x_icccm_command_set(Ecore_X_Window win,
- int argc,
- char **argv)
-{
- void *buf;
- char *b;
- int nbytes, i;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- for (i = 0, nbytes = 0; i < argc; i++)
- if (argv[i]) nbytes += strlen(argv[i]) + 1;
-
- buf = malloc(sizeof(char) * nbytes);
- if (!buf) return;
-
- b = (char *)buf;
- for (i = 0; i < argc; i++)
- {
- if (argv[i])
- {
- strcpy(b, argv[i]);
- b += strlen(argv[i]) + 1;
- }
- else
- *b++ = '\0';
- }
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
- ECORE_X_ATOM_WM_COMMAND, ECORE_X_ATOM_STRING, 8,
- nbytes, buf);
- free(buf);
-}
-
-/**
- * Get the WM_COMMAND property for @a win.
- *
- * Return the command of a window. String must be free'd when done with.
- *
- * @param win The window.
- * @param argc Number of arguments.
- * @param argv Arguments.
- */
-EAPI void
-ecore_x_icccm_command_get(Ecore_X_Window win,
- int *argc,
- char ***argv)
-{
- xcb_get_property_cookie_t cookie;
- xcb_get_property_reply_t *reply;
- int len = 0;
- char **v, *data, *cp, *start;
- int c = 0, i = 0, j = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (argc) *argc = 0;
- if (argv) *argv = NULL;
-
- cookie = xcb_get_property_unchecked(_ecore_xcb_conn, 0, win,
- ECORE_X_ATOM_WM_COMMAND,
- XCB_GET_PROPERTY_TYPE_ANY,
- 0, 1000000L);
- reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return;
-
- if ((reply->type != ECORE_X_ATOM_STRING) || (reply->format != 8))
- {
- free(reply);
- return;
- }
-
- len = reply->value_len;
- if (len < 1)
- {
- free(reply);
- return;
- }
-
- data = (char *)xcb_get_property_value(reply);
- if (len && (data[len - 1] == '\0'))
- len--;
-
- c = 1;
- for (cp = (char *)data, i = len; i > 0; cp++, i--)
- if (*cp == '\0') c++;
-
- v = (char **)malloc((c + 1) * sizeof(char *));
- if (!v)
- {
- free(reply);
- return;
- }
-
- start = (char *)malloc((len + 1) * sizeof(char));
- if (!start)
- {
- free(reply);
- free(v);
- return;
- }
-
- memcpy(start, (char *)data, len);
- start[len] = '\0';
- for (cp = start, i = len + 1, j = 0; i > 0; cp++, i--)
- {
- if (*cp == '\0')
- {
- v[j] = start;
- start = (cp + 1);
- j++;
- }
- }
-
- if (c < 1)
- {
- free(reply);
- free(v);
- return;
- }
-
- if (argc) *argc = c;
-
- if (argv)
- {
- (*argv) = malloc(c * sizeof(char *));
- if (!*argv)
- {
- free(reply);
- free(v);
- if (argc) *argc = 0;
- return;
- }
-
- for (i = 0; i < c; i++)
- {
- if (v[i])
- (*argv)[i] = strdup(v[i]);
- else
- (*argv)[i] = strdup("");
- }
- }
-
- free(reply);
- free(v);
-}
-
-EAPI char *
-ecore_x_icccm_title_get(Ecore_X_Window win)
-{
- xcb_get_property_cookie_t cookie;
- xcb_icccm_get_text_property_reply_t prop;
- uint8_t ret = 0;
- char *title = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return NULL;
- cookie = xcb_icccm_get_wm_name_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_name_reply(_ecore_xcb_conn, cookie, &prop, NULL);
- if (ret == 0) return NULL;
- if (prop.name_len < 1)
- {
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return NULL;
- }
-
- if (!(title = malloc((prop.name_len + 1) * sizeof(char *))))
- {
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return NULL;
- }
- memcpy(title, prop.name, sizeof(char *) * prop.name_len);
- title[prop.name_len] = '\0';
-
- if (prop.encoding != ECORE_X_ATOM_UTF8_STRING)
- {
- Ecore_Xcb_Textproperty tp;
- int count = 0;
- char **list = NULL;
- Eina_Bool ret = EINA_FALSE;
-
- tp.value = strdup(title);
- tp.nitems = prop.name_len;
- tp.encoding = prop.encoding;
-#ifdef HAVE_ICONV
- ret = _ecore_xcb_utf8_textproperty_to_textlist(&tp, &list, &count);
-#else
- ret = _ecore_xcb_mb_textproperty_to_textlist(&tp, &list, &count);
-#endif
- if (ret)
- {
- if (count > 0)
- title = strdup(list[0]);
-
- if (list) free(list);
- }
- }
-
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return title;
-}
-
-EAPI void
-ecore_x_icccm_title_set(Ecore_X_Window win,
- const char *title)
-{
- Ecore_Xcb_Textproperty prop;
- char *list[1];
- Eina_Bool ret = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!title) return;
-
- prop.value = NULL;
- list[0] = strdup(title);
-
-#ifdef HAVE_ICONV
- ret = _ecore_xcb_utf8_textlist_to_textproperty(list, 1, XcbUTF8StringStyle,
- &prop);
-#else
- ret = _ecore_xcb_mb_textlist_to_textproperty(list, 1, XcbStdICCTextStyle,
- &prop);
-#endif
-
- if (ret)
- {
- xcb_icccm_set_wm_name(_ecore_xcb_conn, win, ECORE_X_ATOM_STRING, 8,
- strlen(prop.value), prop.value);
- if (prop.value) free(prop.value);
- }
- else
- xcb_icccm_set_wm_name(_ecore_xcb_conn, win, ECORE_X_ATOM_STRING, 8,
- strlen(title), title);
- free(list[0]);
-}
-
-/**
- * Get a window name & class.
- * @param win The window
- * @param n The name string
- * @param c The class string
- *
- * Get a window name * class
- */
-EAPI void
-ecore_x_icccm_name_class_get(Ecore_X_Window win,
- char **name,
- char **class)
-{
- xcb_get_property_cookie_t cookie;
- xcb_icccm_get_wm_class_reply_t prop;
- uint8_t ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (name) *name = NULL;
- if (class) *class = NULL;
-
- cookie = xcb_icccm_get_wm_class_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_class_reply(_ecore_xcb_conn, cookie, &prop, NULL);
- if (ret == 0) return;
-
- if (name) *name = strdup(prop.instance_name);
- if (class) *class = strdup(prop.class_name);
-
- xcb_icccm_get_wm_class_reply_wipe(&prop);
-}
-
-/**
- * Set a window name & class.
- * @param win The window
- * @param n The name string
- * @param c The class string
- *
- * Set a window name * class
- */
-EAPI void
-ecore_x_icccm_name_class_set(Ecore_X_Window win,
- const char *name,
- const char *class)
-{
- char *class_string, *s;
- int length_name = 0, length_class = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (name) length_name = strlen(name);
- if (class) length_class = strlen(class);
- class_string =
- (char *)malloc(sizeof(char) * (length_name + length_class + 2));
- if (!class_string) return;
-
- s = class_string;
- if (length_name)
- {
- strcpy(s, name);
- s += length_name + 1;
- }
- else
- *s++ = '\0';
-
- if (length_class)
- strcpy(s, class);
- else
- *s = '\0';
-
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
- ECORE_X_ATOM_WM_CLASS, ECORE_X_ATOM_STRING, 8,
- length_name + length_class + 2, (void *)class_string);
- free(class_string);
-}
-
-/**
- * Specify that a window is transient for another top-level window and should be handled accordingly.
- * @param win the transient window
- * @param forwin the toplevel window
- */
-EAPI void
-ecore_x_icccm_transient_for_set(Ecore_X_Window win,
- Ecore_X_Window forwindow)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
- ECORE_X_ATOM_WM_TRANSIENT_FOR, ECORE_X_ATOM_WINDOW, 32,
- 1, (void *)&forwindow);
-}
-
-/**
- * Remove the transient_for setting from a window.
- * @param win The window
- */
-EAPI void
-ecore_x_icccm_transient_for_unset(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_WM_TRANSIENT_FOR);
-}
-
-/**
- * Get the window this window is transient for, if any.
- * @param win The window to check
- * @return The window ID of the top-level window, or 0 if the property does not exist.
- */
-EAPI Ecore_X_Window
-ecore_x_icccm_transient_for_get(Ecore_X_Window win)
-{
- Ecore_X_Window forwin = 0;
- xcb_get_property_cookie_t cookie;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_icccm_get_wm_transient_for_unchecked(_ecore_xcb_conn, win);
- xcb_icccm_get_wm_transient_for_reply(_ecore_xcb_conn, cookie, &forwin, NULL);
-
- return forwin;
-}
-
-/**
- * Get the window role.
- * @param win The window
- * @return The window's role string.
- */
-EAPI char *
-ecore_x_icccm_window_role_get(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return ecore_x_window_prop_string_get(win, ECORE_X_ATOM_WM_WINDOW_ROLE);
-}
-
-/**
- * Set the window role hint.
- * @param win The window
- * @param role The role string
- */
-EAPI void
-ecore_x_icccm_window_role_set(Ecore_X_Window win,
- const char *role)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_string_set(win, ECORE_X_ATOM_WM_WINDOW_ROLE, role);
-}
-
-/**
- * Get the window's client leader.
- * @param win The window
- * @return The window's client leader window, or 0 if unset
- */
-EAPI Ecore_X_Window
-ecore_x_icccm_client_leader_get(Ecore_X_Window win)
-{
- Ecore_X_Window leader;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (ecore_x_window_prop_window_get(win, ECORE_X_ATOM_WM_CLIENT_LEADER,
- &leader, 1) > 0)
- return leader;
-
- return 0;
-}
-
-/**
- * Set the window's client leader.
- * @param win The window
- * @param l The client leader window
- *
- * All non-transient top-level windows created by an app other than
- * the main window must have this property set to the app's main window.
- */
-EAPI void
-ecore_x_icccm_client_leader_set(Ecore_X_Window win,
- Ecore_X_Window leader)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(win, ECORE_X_ATOM_WM_CLIENT_LEADER,
- &leader, 1);
-}
-
-EAPI Ecore_X_Window_State_Hint
-ecore_x_icccm_state_get(Ecore_X_Window win)
-{
- xcb_get_property_cookie_t cookie;
- xcb_get_property_reply_t *reply;
- Ecore_X_Window_State_Hint hint = ECORE_X_WINDOW_STATE_HINT_NONE;
- uint8_t *prop;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie =
- xcb_get_property_unchecked(_ecore_xcb_conn, 0, win,
- ECORE_X_ATOM_WM_STATE, ECORE_X_ATOM_WM_STATE,
- 0L, 0x7fffffff);
- reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return hint;
- if ((reply->type == 0) || (reply->format != 8) || (reply->value_len != 2))
- {
- free(reply);
- return hint;
- }
-
- prop = (uint8_t *)xcb_get_property_value(reply);
- switch (prop[0])
- {
- case XCB_ICCCM_WM_STATE_WITHDRAWN:
- hint = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
- break;
-
- case XCB_ICCCM_WM_STATE_NORMAL:
- hint = ECORE_X_WINDOW_STATE_HINT_NORMAL;
- break;
-
- case XCB_ICCCM_WM_STATE_ICONIC:
- hint = ECORE_X_WINDOW_STATE_HINT_ICONIC;
- break;
-
- default:
- break;
- }
-
- free(reply);
- return hint;
-}
-
-EAPI void
-ecore_x_icccm_state_set(Ecore_X_Window win,
- Ecore_X_Window_State_Hint state)
-{
- xcb_icccm_wm_hints_t hints;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_icccm_wm_hints_set_none(&hints);
-
- hints.flags = XCB_ICCCM_WM_HINT_STATE;
-
- if (state == ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
- xcb_icccm_wm_hints_set_withdrawn(&hints);
- else if (state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
- xcb_icccm_wm_hints_set_normal(&hints);
- else if (state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
- xcb_icccm_wm_hints_set_iconic(&hints);
-
- xcb_icccm_set_wm_hints(_ecore_xcb_conn, win, &hints);
-}
-
-EAPI void
-ecore_x_icccm_delete_window_send(Ecore_X_Window win,
- Ecore_X_Time t)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win, ECORE_X_ATOM_WM_PROTOCOLS,
- ECORE_X_EVENT_MASK_NONE,
- ECORE_X_ATOM_WM_DELETE_WINDOW, t, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_icccm_hints_set(Ecore_X_Window win,
- Eina_Bool accepts_focus,
- Ecore_X_Window_State_Hint initial_state,
- Ecore_X_Pixmap icon_pixmap,
- Ecore_X_Pixmap icon_mask,
- Ecore_X_Window icon_window,
- Ecore_X_Window window_group,
- Eina_Bool is_urgent)
-{
- xcb_icccm_wm_hints_t hints;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- xcb_icccm_wm_hints_set_none(&hints);
- xcb_icccm_wm_hints_set_input(&hints, accepts_focus);
-
- if (initial_state == ECORE_X_WINDOW_STATE_HINT_WITHDRAWN)
- xcb_icccm_wm_hints_set_withdrawn(&hints);
- else if (initial_state == ECORE_X_WINDOW_STATE_HINT_NORMAL)
- xcb_icccm_wm_hints_set_normal(&hints);
- else if (initial_state == ECORE_X_WINDOW_STATE_HINT_ICONIC)
- xcb_icccm_wm_hints_set_iconic(&hints);
-
- if (icon_pixmap != 0)
- xcb_icccm_wm_hints_set_icon_pixmap(&hints, icon_pixmap);
- if (icon_mask != 0)
- xcb_icccm_wm_hints_set_icon_mask(&hints, icon_mask);
- if (icon_window != 0)
- xcb_icccm_wm_hints_set_icon_window(&hints, icon_window);
- if (window_group != 0)
- xcb_icccm_wm_hints_set_window_group(&hints, window_group);
- if (is_urgent)
- xcb_icccm_wm_hints_set_urgency(&hints);
-
- xcb_icccm_set_wm_hints(_ecore_xcb_conn, win, &hints);
-}
-
-EAPI Eina_Bool
-ecore_x_icccm_hints_get(Ecore_X_Window win,
- Eina_Bool *accepts_focus,
- Ecore_X_Window_State_Hint *initial_state,
- Ecore_X_Pixmap *icon_pixmap,
- Ecore_X_Pixmap *icon_mask,
- Ecore_X_Window *icon_window,
- Ecore_X_Window *window_group,
- Eina_Bool *is_urgent)
-{
- xcb_get_property_cookie_t cookie;
- xcb_icccm_wm_hints_t hints;
- uint8_t ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (accepts_focus) *accepts_focus = EINA_TRUE;
- if (initial_state) *initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
- if (icon_pixmap) *icon_pixmap = 0;
- if (icon_mask) *icon_mask = 0;
- if (icon_window) *icon_window = 0;
- if (window_group) *window_group = 0;
- if (is_urgent) *is_urgent = EINA_FALSE;
-
- xcb_icccm_wm_hints_set_none(&hints);
- cookie = xcb_icccm_get_wm_hints_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_hints_reply(_ecore_xcb_conn, cookie, &hints, NULL);
- if (!ret) return EINA_FALSE;
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_INPUT) && (accepts_focus))
- {
- if (hints.input)
- *accepts_focus = EINA_TRUE;
- else
- *accepts_focus = EINA_FALSE;
- }
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_STATE) && (initial_state))
- {
- if (hints.initial_state == XCB_ICCCM_WM_STATE_WITHDRAWN)
- *initial_state = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN;
- else if (hints.initial_state == XCB_ICCCM_WM_STATE_NORMAL)
- *initial_state = ECORE_X_WINDOW_STATE_HINT_NORMAL;
- else if (hints.initial_state == XCB_ICCCM_WM_STATE_ICONIC)
- *initial_state = ECORE_X_WINDOW_STATE_HINT_ICONIC;
- }
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_ICON_PIXMAP) && (icon_pixmap))
- *icon_pixmap = hints.icon_pixmap;
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_ICON_MASK) && (icon_mask))
- *icon_mask = hints.icon_mask;
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_ICON_WINDOW) && (icon_window))
- *icon_window = hints.icon_window;
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_WINDOW_GROUP) && (window_group))
- *window_group = hints.window_group;
-
- if ((hints.flags & XCB_ICCCM_WM_HINT_X_URGENCY) && (is_urgent))
- *is_urgent = EINA_TRUE;
-
- return EINA_TRUE;
-}
-
-/**
- * Get a window icon name.
- * @param win The window
- * @return The windows icon name string
- *
- * Return the icon name of a window. String must be free'd when done with.
- */
-EAPI char *
-ecore_x_icccm_icon_name_get(Ecore_X_Window win)
-{
- xcb_get_property_cookie_t cookie;
- xcb_icccm_get_text_property_reply_t prop;
- uint8_t ret = 0;
- char *tmp = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return NULL;
-
- cookie = xcb_icccm_get_wm_icon_name_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_icon_name_reply(_ecore_xcb_conn, cookie, &prop, NULL);
- if (ret == 0) return NULL;
-
- if (prop.name_len < 1)
- {
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return NULL;
- }
-
- if (!(tmp = malloc((prop.name_len + 1) * sizeof(char *))))
- {
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return NULL;
- }
- memcpy(tmp, prop.name, sizeof(char *) * prop.name_len);
- tmp[prop.name_len] = '\0';
-
- if (prop.encoding != ECORE_X_ATOM_UTF8_STRING)
- {
- Ecore_Xcb_Textproperty tp;
- int count = 0;
- char **list = NULL;
- Eina_Bool ret = EINA_FALSE;
-
- tp.value = strdup(tmp);
- tp.nitems = prop.name_len;
- tp.encoding = prop.encoding;
-#ifdef HAVE_ICONV
- ret = _ecore_xcb_utf8_textproperty_to_textlist(&tp, &list, &count);
-#else
- ret = _ecore_xcb_mb_textproperty_to_textlist(&tp, &list, &count);
-#endif
- if (ret)
- {
- if (count > 0)
- tmp = strdup(list[0]);
-
- if (list) free(list);
- }
- }
-
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return tmp;
-}
-
-/**
- * Set a window icon name.
- * @param win The window
- * @param t The icon name string
- *
- * Set a window icon name
- */
-EAPI void
-ecore_x_icccm_icon_name_set(Ecore_X_Window win,
- const char *name)
-{
- Ecore_Xcb_Textproperty prop;
- char *list[1];
- Eina_Bool ret = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if ((!win) || (!name)) return;
-
- prop.value = NULL;
- list[0] = strdup(name);
-
-#ifdef HAVE_ICONV
- ret = _ecore_xcb_utf8_textlist_to_textproperty(list, 1, XcbUTF8StringStyle,
- &prop);
-#else
- ret = _ecore_xcb_mb_textlist_to_textproperty(list, 1, XcbStdICCTextStyle,
- &prop);
-#endif
-
- if (ret)
- {
- xcb_icccm_set_wm_icon_name(_ecore_xcb_conn, win, ECORE_X_ATOM_STRING,
- 8, strlen(prop.value), prop.value);
- if (prop.value) free(prop.value);
- }
- else
- xcb_icccm_set_wm_icon_name(_ecore_xcb_conn, win, ECORE_X_ATOM_STRING,
- 8, strlen(name), name);
-
- free(list[0]);
-}
-
-EAPI void
-ecore_x_icccm_iconic_request_send(Ecore_X_Window win,
- Ecore_X_Window root)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return;
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_WM_CHANGE_STATE;
- ev.data.data32[0] = XCB_ICCCM_WM_STATE_ICONIC;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY |
- XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT),
- (const char *)&ev);
-// ecore_x_flush();
-}
-
-/**
- * Set or unset a wm protocol property.
- * @param win The Window
- * @param protocol The protocol to enable/disable
- * @param on On/Off
- */
-EAPI void
-ecore_x_icccm_protocol_set(Ecore_X_Window win,
- Ecore_X_WM_Protocol protocol,
- Eina_Bool on)
-{
- Ecore_X_Atom proto;
- xcb_get_property_cookie_t cookie;
- xcb_icccm_get_wm_protocols_reply_t protos;
- int i = 0, count = 0, set = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (protocol >= ECORE_X_WM_PROTOCOL_NUM) return;
- proto = _ecore_xcb_atoms_wm_protocol[protocol];
- cookie = xcb_icccm_get_wm_protocols_unchecked(_ecore_xcb_conn, win, proto);
- if (!xcb_icccm_get_wm_protocols_reply(_ecore_xcb_conn, cookie, &protos, NULL))
- count = 0;
- else
- count = protos.atoms_len;
-
- for (i = 0; i < count; i++)
- {
- if (protos.atoms[i] == proto)
- {
- set = 1;
- break;
- }
- }
-
- if (on)
- {
- if (!set)
- {
- Ecore_X_Atom *atoms = NULL;
-
- atoms = malloc((count + 1) * sizeof(Ecore_X_Atom));
- if (atoms)
- {
- for (i = 0; i < count; i++)
- atoms[i] = protos.atoms[i];
- atoms[count] = proto;
- xcb_icccm_set_wm_protocols(_ecore_xcb_conn, win,
- ECORE_X_ATOM_WM_PROTOCOLS,
- count, atoms);
- free(atoms);
- }
- }
- }
- else
- {
- if (set)
- {
- for (i = 0; i < count; i++)
- {
- if (protos.atoms[i] == proto)
- {
- int j = 0;
-
- for (j = (i + 1); j < count; j++)
- protos.atoms[j - 1] = protos.atoms[j];
- if (count > 1)
- xcb_icccm_set_wm_protocols(_ecore_xcb_conn, win,
- ECORE_X_ATOM_WM_PROTOCOLS,
- count - 1, protos.atoms);
- else
- ecore_x_window_prop_property_del(win,
- ECORE_X_ATOM_WM_PROTOCOLS);
- break;
- }
- }
- }
- }
-
- xcb_icccm_get_wm_protocols_reply_wipe(&protos);
-}
-
-/**
- * Determines whether a protocol is set for a window.
- * @param win The Window
- * @param protocol The protocol to query
- * @return 1 if the protocol is set, else 0.
- */
-EAPI Eina_Bool
-ecore_x_icccm_protocol_isset(Ecore_X_Window win,
- Ecore_X_WM_Protocol protocol)
-{
- Ecore_X_Atom proto;
- Eina_Bool ret = EINA_FALSE;
- xcb_get_property_cookie_t cookie;
- xcb_icccm_get_wm_protocols_reply_t reply;
- uint8_t val = 0;
- unsigned int i = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (protocol >= ECORE_X_WM_PROTOCOL_NUM) return EINA_FALSE;
-
- proto = _ecore_xcb_atoms_wm_protocol[protocol];
- cookie = xcb_icccm_get_wm_protocols_unchecked(_ecore_xcb_conn, win, proto);
- val = xcb_icccm_get_wm_protocols_reply(_ecore_xcb_conn, cookie, &reply, NULL);
- if (!val) return EINA_FALSE;
-
- for (i = 0; i < reply.atoms_len; i++)
- if (reply.atoms[i] == proto)
- {
- ret = EINA_TRUE;
- break;
- }
-
- xcb_icccm_get_wm_protocols_reply_wipe(&reply);
-
- return ret;
-}
-
-/**
- * Set protocol atoms explicitly
- * @param win The Window
- * @param protos An array of protocol atoms
- * @param num the number of members of the array
- */
-EAPI void
-ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win,
- Ecore_X_Atom *protos,
- int num)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (num > 0)
- xcb_icccm_set_wm_protocols(_ecore_xcb_conn, win,
- ECORE_X_ATOM_WM_PROTOCOLS, num, protos);
- else
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_WM_PROTOCOLS);
-}
-
-EAPI Eina_Bool
-ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
- Eina_Bool *request_pos,
- Ecore_X_Gravity *gravity,
- int *min_w,
- int *min_h,
- int *max_w,
- int *max_h,
- int *base_w,
- int *base_h,
- int *step_x,
- int *step_y,
- double *min_aspect,
- double *max_aspect)
-{
- xcb_size_hints_t hints;
- xcb_get_property_cookie_t cookie;
- uint8_t ret = 0;
- int32_t minw = 0, minh = 0;
- int32_t maxw = 32767, maxh = 32767;
- int32_t basew = -1, baseh = -1;
- int32_t stepx = -1, stepy = -1;
- double mina = 0.0, maxa = 0.0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (request_pos) *request_pos = EINA_FALSE;
- if (gravity) *gravity = ECORE_X_GRAVITY_NW;
- if (min_w) *min_w = minw;
- if (min_h) *min_h = minh;
- if (max_w) *max_w = maxw;
- if (max_h) *max_h = maxh;
- if (base_w) *base_w = basew;
- if (base_h) *base_h = baseh;
- if (step_x) *step_x = stepx;
- if (step_y) *step_y = stepy;
- if (min_aspect) *min_aspect = mina;
- if (max_aspect) *max_aspect = maxa;
-
- cookie = xcb_icccm_get_wm_normal_hints_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_normal_hints_reply(_ecore_xcb_conn, cookie,
- &hints, NULL);
- if (!ret) return EINA_FALSE;
-
- if ((hints.flags & XCB_ICCCM_SIZE_HINT_US_POSITION) ||
- (hints.flags & XCB_ICCCM_SIZE_HINT_P_POSITION))
- {
- if (request_pos) *request_pos = EINA_TRUE;
- }
-
- if (hints.flags & XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY)
- {
- if (gravity) *gravity = hints.win_gravity;
- }
-
- if (hints.flags & XCB_ICCCM_SIZE_HINT_P_MIN_SIZE)
- {
- minw = hints.min_width;
- minh = hints.min_height;
- }
-
- if (hints.flags & XCB_ICCCM_SIZE_HINT_P_MAX_SIZE)
- {
- maxw = hints.max_width;
- maxh = hints.max_height;
- if (maxw < minw) maxw = minw;
- if (maxh < minh) maxh = minh;
- }
-
- if (hints.flags & XCB_ICCCM_SIZE_HINT_BASE_SIZE)
- {
- basew = hints.base_width;
- baseh = hints.base_height;
- if (basew > minw) minw = basew;
- if (baseh > minh) minh = baseh;
- }
-
- if (hints.flags & XCB_ICCCM_SIZE_HINT_P_RESIZE_INC)
- {
- stepx = hints.width_inc;
- stepy = hints.height_inc;
- if (stepx < 1) stepx = 1;
- if (stepy < 1) stepy = 1;
- }
-
- if (hints.flags & XCB_ICCCM_SIZE_HINT_P_ASPECT)
- {
- if (hints.min_aspect_den > 0)
- mina = ((double)hints.min_aspect_num) / ((double)hints.min_aspect_den);
-
- if (hints.max_aspect_den > 0)
- maxa = ((double)hints.max_aspect_num) / ((double)hints.max_aspect_den);
- }
-
- if (min_w) *min_w = minw;
- if (min_h) *min_h = minh;
- if (max_w) *max_w = maxw;
- if (max_h) *max_h = maxh;
- if (base_w) *base_w = basew;
- if (base_h) *base_h = baseh;
- if (step_x) *step_x = stepx;
- if (step_y) *step_y = stepy;
- if (min_aspect) *min_aspect = mina;
- if (max_aspect) *max_aspect = maxa;
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
- Eina_Bool request_pos,
- Ecore_X_Gravity gravity,
- int min_w,
- int min_h,
- int max_w,
- int max_h,
- int base_w,
- int base_h,
- int step_x,
- int step_y,
- double min_aspect,
- double max_aspect)
-{
- xcb_get_property_cookie_t cookie;
- xcb_size_hints_t hints;
- uint8_t ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_icccm_get_wm_normal_hints_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_normal_hints_reply(_ecore_xcb_conn, cookie,
- &hints, NULL);
- if (!ret) memset(&hints, 0, sizeof(xcb_size_hints_t));
-
- hints.flags = 0;
-
- if (request_pos)
- hints.flags |= XCB_ICCCM_SIZE_HINT_US_POSITION;
-
- if (gravity != ECORE_X_GRAVITY_NW)
- xcb_icccm_size_hints_set_win_gravity(&hints, gravity);
- if ((min_w > 0) || (min_h > 0))
- xcb_icccm_size_hints_set_min_size(&hints, min_w, min_h);
- if ((max_w > 0) || (max_h > 0))
- xcb_icccm_size_hints_set_max_size(&hints, max_w, max_h);
- if ((base_w > 0) || (base_h > 0))
- xcb_icccm_size_hints_set_base_size(&hints, base_w, base_h);
- if ((step_x > 1) || (step_y > 1))
- xcb_icccm_size_hints_set_resize_inc(&hints, step_x, step_y);
- if ((min_aspect > 0.0) || (max_aspect > 0.0))
- xcb_icccm_size_hints_set_aspect(&hints,
- (int32_t)(min_aspect * 10000), 10000,
- (int32_t)(max_aspect * 10000), 10000);
-
- xcb_icccm_set_wm_normal_hints(_ecore_xcb_conn, win, &hints);
-}
-
-EAPI void
-ecore_x_icccm_move_resize_send(Ecore_X_Window win,
- int x,
- int y,
- int w,
- int h)
-{
- xcb_configure_notify_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return;
-
- memset(&ev, 0, sizeof(xcb_configure_notify_event_t));
-
- ev.response_type = XCB_CONFIGURE_NOTIFY;
- ev.event = win;
- ev.window = win;
- ev.above_sibling = XCB_NONE;
- ev.x = x;
- ev.y = y;
- ev.width = w;
- ev.height = h;
- ev.border_width = 0;
- ev.override_redirect = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_STRUCTURE_NOTIFY, (const char *)&ev);
-// ecore_x_flush();
-}
-
-/**
- * Get a window client machine string.
- * @param win The window
- * @return The windows client machine string
- *
- * Return the client machine of a window. String must be free'd when done with.
- */
-EAPI char *
-ecore_x_icccm_client_machine_get(Ecore_X_Window win)
-{
- xcb_get_property_cookie_t cookie;
- xcb_icccm_get_text_property_reply_t prop;
- uint8_t ret = 0;
- char *tmp = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_icccm_get_wm_client_machine_unchecked(_ecore_xcb_conn, win);
- ret = xcb_icccm_get_wm_client_machine_reply(_ecore_xcb_conn, cookie,
- &prop, NULL);
- if (ret == 0) return NULL;
-
- tmp = malloc((prop.name_len + 1) * sizeof(char *));
- if (!tmp)
- {
- xcb_icccm_get_text_property_reply_wipe(&prop);
- return NULL;
- }
- memcpy(tmp, prop.name, sizeof(char *) * prop.name_len);
- tmp[prop.name_len] = '\0';
-
- xcb_icccm_get_text_property_reply_wipe(&prop);
-
- return tmp;
-}
-
-EAPI void
-ecore_x_icccm_take_focus_send(Ecore_X_Window win,
- Ecore_X_Time t)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- ecore_x_client_message32_send(win, ECORE_X_ATOM_WM_PROTOCOLS,
- XCB_EVENT_MASK_NO_EVENT,
- ECORE_X_ATOM_WM_TAKE_FOCUS, t, 0, 0, 0);
-}
-
-EAPI void
-ecore_x_icccm_save_yourself_send(Ecore_X_Window win,
- Ecore_X_Time t)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- ecore_x_client_message32_send(win, ECORE_X_ATOM_WM_PROTOCOLS,
- XCB_EVENT_MASK_NO_EVENT,
- ECORE_X_ATOM_WM_SAVE_YOURSELF, t, 0, 0, 0);
-}
-
-/**
- * Add a subwindow to the list of windows that need a different colormap installed.
- * @param win The toplevel window
- * @param subwin The subwindow to be added to the colormap windows list
- */
-EAPI void
-ecore_x_icccm_colormap_window_set(Ecore_X_Window win,
- Ecore_X_Window subwin)
-{
- int num = 0, i = 0;
- unsigned char *odata = NULL, *data = NULL;
- Ecore_X_Window *newset = NULL, *oldset = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
- ECORE_X_ATOM_WINDOW, 32, &odata, &num))
- {
- if (!(newset = calloc(1, sizeof(Ecore_X_Window)))) return;
- newset[0] = subwin;
- num = 1;
- data = (unsigned char *)newset;
- }
- else
- {
- if (!(newset = calloc(num + 1, sizeof(Ecore_X_Window)))) return;
- oldset = (Ecore_X_Window *)odata;
- for (i = 0; i < num; i++)
- {
- if (oldset[i] == subwin)
- {
- if (odata) free(odata);
- odata = NULL;
- free(newset);
- return;
- }
- newset[i] = oldset[i];
- }
- newset[num++] = subwin;
- if (odata) free(odata);
- data = (unsigned char *)newset;
- }
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
- ECORE_X_ATOM_WINDOW, 32, data, num);
- free(newset);
-}
-
-/**
- * Remove a window from the list of colormap windows.
- * @param win The toplevel window
- * @param subwin The window to be removed from the colormap window list.
- */
-EAPI void
-ecore_x_icccm_colormap_window_unset(Ecore_X_Window win,
- Ecore_X_Window subwin)
-{
- int num = 0, i = 0, j = 0, k = 0;
- unsigned char *odata = NULL, *data = NULL;
- Ecore_X_Window *newset = NULL, *oldset = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_property_get(win, ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
- ECORE_X_ATOM_WINDOW, 32, &odata, &num))
- return;
-
- oldset = (Ecore_X_Window *)odata;
- for (i = 0; i < num; i++)
- {
- if (oldset[i] == subwin)
- {
- if (num == 1)
- {
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_WM_COLORMAP_WINDOWS);
- if (odata) free(odata);
- odata = NULL;
- return;
- }
- else
- {
- newset = calloc(num - 1, sizeof(Ecore_X_Window));
- data = (unsigned char *)newset;
- for (j = 0; j < num; ++j)
- if (oldset[j] != subwin)
- newset[k++] = oldset[j];
-
- ecore_x_window_prop_property_set(win, ECORE_X_ATOM_WM_COLORMAP_WINDOWS,
- ECORE_X_ATOM_WINDOW, 32, data, k);
- if (odata) free(odata);
- odata = NULL;
- free(newset);
- return;
- }
- }
- }
- if (odata) free(odata);
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_image.c b/src/lib/ecore_x/xcb/ecore_xcb_image.c
deleted file mode 100644
index 7c21781cf8..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_image.c
+++ /dev/null
@@ -1,782 +0,0 @@
-#include "ecore_xcb_private.h"
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#include <xcb/xcb_event.h>
-#include <xcb/shm.h>
-
-struct _Ecore_X_Image
-{
- xcb_shm_segment_info_t shminfo;
- xcb_image_t *xim;
- Ecore_X_Visual vis;
- int depth, w, h;
- int bpl, bpp, rows;
- unsigned char *data;
- Eina_Bool shm : 1;
-};
-
-/* local function prototypes */
-static void _ecore_xcb_image_shm_check(void);
-static void _ecore_xcb_image_shm_create(Ecore_X_Image *im);
-static xcb_format_t *_ecore_xcb_image_find_format(const xcb_setup_t *setup,
- uint8_t depth);
-
-/* local variables */
-static int _ecore_xcb_image_shm_can = -1;
-
-EAPI Ecore_X_Image *
-ecore_x_image_new(int w,
- int h,
- Ecore_X_Visual vis,
- int depth)
-{
- Ecore_X_Image *im;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!(im = calloc(1, sizeof(Ecore_X_Image)))) return NULL;
- im->w = w;
- im->h = h;
- im->vis = vis;
- im->depth = depth;
- _ecore_xcb_image_shm_check();
- im->shm = _ecore_xcb_image_shm_can;
- return im;
-}
-
-EAPI void
-ecore_x_image_free(Ecore_X_Image *im)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!im) return;
- if (im->shm)
- {
- if (im->xim)
- {
- xcb_shm_detach(_ecore_xcb_conn, im->shminfo.shmseg);
- xcb_image_destroy(im->xim);
- shmdt(im->shminfo.shmaddr);
- shmctl(im->shminfo.shmid, IPC_RMID, 0);
- }
- }
- else if (im->xim)
- {
- if (im->xim->data) free(im->xim->data);
- im->xim->data = NULL;
- xcb_image_destroy(im->xim);
- }
-
- free(im);
-// ecore_x_flush();
-}
-
-EAPI Eina_Bool
-ecore_x_image_get(Ecore_X_Image *im,
- Ecore_X_Drawable draw,
- int x,
- int y,
- int sx,
- int sy,
- int w,
- int h)
-{
- Eina_Bool ret = EINA_TRUE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (im->shm)
- {
- if (!im->xim) _ecore_xcb_image_shm_create(im);
- if (!im->xim) return EINA_FALSE;
-
- if ((sx == 0) && (w == im->w))
- {
- im->xim->data = (uint8_t *)im->data + (im->xim->stride * sy) +
- (sx * im->bpp);
- im->xim->width = MIN(w, im->w);
- im->xim->height = MIN(h, im->h);
-
- ecore_x_grab();
- if (!xcb_image_shm_get(_ecore_xcb_conn, draw, im->xim,
- im->shminfo, x, y, 0xffffffff))
- {
- DBG("\tImage Shm Get Failed");
- ret = EINA_FALSE;
- }
- ecore_x_ungrab();
- ecore_x_sync(); // needed
- }
- else
- {
- Ecore_X_Image *tim;
-
- tim = ecore_x_image_new(w, h, im->vis, im->depth);
- if (tim)
- {
- ret = ecore_x_image_get(tim, draw, x, y, 0, 0, w, h);
- if (ret)
- {
- unsigned char *spixels, *pixels;
- int sbpp = 0, sbpl = 0, srows = 0;
- int bpp = 0, bpl = 0, rows = 0;
-
- spixels =
- ecore_x_image_data_get(tim, &sbpl, &srows, &sbpp);
- pixels = ecore_x_image_data_get(im, &bpl, &rows, &bpp);
- if ((spixels) && (pixels))
- {
- unsigned char *p, *sp;
- int r = 0;
-
- p = (pixels + (sy * bpl) + (sx * bpp));
- sp = spixels;
- for (r = srows; r > 0; r--)
- {
- memcpy(p, sp, sbpl);
- p += bpl;
- sp += sbpl;
- }
- }
- }
- ecore_x_image_free(tim);
- }
- }
- }
- else
- {
- ret = EINA_FALSE;
- ecore_x_grab();
- im->xim =
- xcb_image_get(_ecore_xcb_conn, draw, x, y, w, h,
- 0xffffffff, XCB_IMAGE_FORMAT_Z_PIXMAP);
- if (!im->xim) ret = EINA_FALSE;
- ecore_x_ungrab();
- ecore_x_sync(); // needed
-
- if (im->xim)
- {
- im->data = (unsigned char *)im->xim->data;
- im->bpl = im->xim->stride;
- im->rows = im->xim->height;
- if (im->xim->bpp <= 8)
- im->bpp = 1;
- else if (im->xim->bpp <= 16)
- im->bpp = 2;
- else
- im->bpp = 4;
- }
- }
-
- return ret;
-}
-
-EAPI void *
-ecore_x_image_data_get(Ecore_X_Image *im,
- int *bpl,
- int *rows,
- int *bpp)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!im) return NULL;
- if (!im->xim) _ecore_xcb_image_shm_create(im);
- if (!im->xim) return NULL;
-
- if (bpl) *bpl = im->bpl;
- if (rows) *rows = im->rows;
- if (bpp) *bpp = im->bpp;
-
- return im->data;
-}
-
-EAPI void
-ecore_x_image_put(Ecore_X_Image *im,
- Ecore_X_Drawable draw,
- Ecore_X_GC gc,
- int x,
- int y,
- int sx,
- int sy,
- int w,
- int h)
-{
- Ecore_X_GC tgc = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!gc)
- {
- uint32_t mask, values[1];
-
- tgc = xcb_generate_id(_ecore_xcb_conn);
- mask = XCB_GC_SUBWINDOW_MODE;
- values[0] = XCB_SUBWINDOW_MODE_INCLUDE_INFERIORS;
- xcb_create_gc(_ecore_xcb_conn, tgc, draw, mask, values);
- gc = tgc;
- }
- if (!im->xim) _ecore_xcb_image_shm_create(im);
- if (im->xim)
- {
- if (im->shm)
- xcb_shm_put_image(_ecore_xcb_conn, draw, gc, im->xim->width,
- im->xim->height, sx, sy, w, h, x, y,
- im->xim->depth, im->xim->format, 0,
- im->shminfo.shmseg,
- im->xim->data - im->shminfo.shmaddr);
-// xcb_image_shm_put(_ecore_xcb_conn, draw, gc, im->xim,
-// im->shminfo, sx, sy, x, y, w, h, 0);
- else
- xcb_image_put(_ecore_xcb_conn, draw, gc, im->xim, sx, sy, 0);
- }
- if (tgc) ecore_x_gc_free(tgc);
- ecore_x_sync();
-}
-
-EAPI Eina_Bool
-ecore_x_image_is_argb32_get(Ecore_X_Image *im)
-{
- xcb_visualtype_t *vis;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- vis = (xcb_visualtype_t *)im->vis;
-
- if (((vis->_class == XCB_VISUAL_CLASS_TRUE_COLOR) ||
- (vis->_class == XCB_VISUAL_CLASS_DIRECT_COLOR)) &&
- (im->bpp == 4) &&
- (vis->red_mask == 0xff0000) &&
- (vis->green_mask == 0x00ff00) &&
- (vis->blue_mask == 0x0000ff))
- {
- const xcb_setup_t *setup = xcb_get_setup(_ecore_xcb_conn);
-
- if (!setup) return EINA_FALSE;
-#ifdef WORDS_BIGENDIAN
- if (setup->image_byte_order == XCB_IMAGE_ORDER_MSB_FIRST) return EINA_TRUE;
-#else
- if (setup->image_byte_order == XCB_IMAGE_ORDER_LSB_FIRST) return EINA_TRUE;
-#endif
- }
-
- return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-ecore_x_image_to_argb_convert(void *src,
- int sbpp,
- int sbpl,
- Ecore_X_Colormap c,
- Ecore_X_Visual v,
- int x,
- int y,
- int w,
- int h,
- unsigned int *dst,
- int dbpl,
- int dx,
- int dy)
-{
- xcb_visualtype_t *vis;
- uint32_t *cols;
- int n = 0, nret = 0, i, row, mode = 0;
- unsigned int pal[256], r, g, b;
- enum
- {
- rgbnone = 0,
- rgb565,
- bgr565,
- rgbx555,
- rgb888,
- bgr888,
- argbx888,
- abgrx888,
- rgba888x,
- bgra888x,
- argbx666
- };
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- sbpp *= 8;
-
- vis = (xcb_visualtype_t *)v;
- n = vis->colormap_entries;
- if ((n <= 256) &&
- ((vis->_class == XCB_VISUAL_CLASS_PSEUDO_COLOR) ||
- (vis->_class == XCB_VISUAL_CLASS_STATIC_COLOR) ||
- (vis->_class == XCB_VISUAL_CLASS_GRAY_SCALE) ||
- (vis->_class == XCB_VISUAL_CLASS_STATIC_GRAY)))
- {
- xcb_query_colors_cookie_t cookie;
- xcb_query_colors_reply_t *reply;
-
- if (!c)
- {
- c = (xcb_colormap_t)((xcb_screen_t *)
- _ecore_xcb_screen)->default_colormap;
- }
-
- cols = alloca(n * sizeof(uint32_t));
- for (i = 0; i < n; i++)
- cols[i] = i;
-
- cookie = xcb_query_colors_unchecked(_ecore_xcb_conn, c, n, cols);
- reply = xcb_query_colors_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- xcb_rgb_iterator_t iter;
- xcb_rgb_t *ret;
-
- iter = xcb_query_colors_colors_iterator(reply);
- ret = xcb_query_colors_colors(reply);
- if (ret)
- {
- for (i = 0; iter.rem; xcb_rgb_next(&iter), i++)
- {
- pal[i] = 0xff000000 |
- ((iter.data->red >> 8) << 16) |
- ((iter.data->green >> 8) << 8) |
- ((iter.data->blue >> 8));
- }
- nret = n;
- }
- free(reply);
- }
- }
- else if ((vis->_class == XCB_VISUAL_CLASS_TRUE_COLOR) ||
- (vis->_class == XCB_VISUAL_CLASS_DIRECT_COLOR))
- {
- if (sbpp == 24)
- {
- if ((vis->red_mask == 0x00ff0000) &&
- (vis->green_mask == 0x0000ff00) &&
- (vis->blue_mask == 0x000000ff))
- mode = rgb888;
- else if ((vis->red_mask == 0x000000ff) &&
- (vis->green_mask == 0x0000ff00) &&
- (vis->blue_mask == 0x00ff0000))
- mode = bgr888;
- else
- return EINA_FALSE;
- }
- else
- {
- if ((vis->red_mask == 0x00ff0000) &&
- (vis->green_mask == 0x0000ff00) &&
- (vis->blue_mask == 0x000000ff))
- mode = argbx888;
- else if ((vis->red_mask == 0x000000ff) &&
- (vis->green_mask == 0x0000ff00) &&
- (vis->blue_mask == 0x00ff0000))
- mode = abgrx888;
- else if ((vis->red_mask == 0xff000000) &&
- (vis->green_mask == 0x00ff0000) &&
- (vis->blue_mask == 0x0000ff00))
- mode = rgba888x;
- else if ((vis->red_mask == 0x0000ff00) &&
- (vis->green_mask == 0x00ff0000) &&
- (vis->blue_mask == 0xff000000))
- mode = bgra888x;
- else if ((vis->red_mask == 0x0003f000) &&
- (vis->green_mask == 0x00000fc0) &&
- (vis->blue_mask == 0x0000003f))
- mode = argbx666;
- else if ((vis->red_mask == 0x0000f800) &&
- (vis->green_mask == 0x000007e0) &&
- (vis->blue_mask == 0x0000001f))
- mode = rgb565;
- else if ((vis->red_mask == 0x0000001f) &&
- (vis->green_mask == 0x000007e0) &&
- (vis->blue_mask == 0x0000f800))
- mode = bgr565;
- else if ((vis->red_mask == 0x00007c00) &&
- (vis->green_mask == 0x000003e0) &&
- (vis->blue_mask == 0x0000001f))
- mode = rgbx555;
- else
- return EINA_FALSE;
- }
- }
- for (row = 0; row < h; row++)
- {
- unsigned char *s8;
- unsigned short *s16;
- unsigned int *s32, *dp, *de;
-
- dp = ((unsigned int *)(((unsigned char *)dst) +
- ((dy + row) * dbpl))) + dx;
- de = dp + w;
- switch (sbpp)
- {
- case 8:
- s8 = ((unsigned char *)(((unsigned char *)src) +
- ((y + row) * sbpl))) + x;
- if (nret > 0)
- {
- while (dp < de)
- {
- *dp = pal[*s8];
- s8++; dp++;
- }
- }
- else
- return EINA_FALSE;
- break;
-
- case 16:
- s16 = ((unsigned short *)(((unsigned char *)src) +
- ((y + row) * sbpl))) + x;
- switch (mode)
- {
- case rgb565:
- while (dp < de)
- {
- r = (*s16 & 0xf800) << 8;
- g = (*s16 & 0x07e0) << 5;
- b = (*s16 & 0x001f) << 3;
- r |= (r >> 5) & 0xff0000;
- g |= (g >> 6) & 0x00ff00;
- b |= (b >> 5);
- *dp = 0xff000000 | r | g | b;
- s16++; dp++;
- }
- break;
-
- case bgr565:
- while (dp < de)
- {
- r = (*s16 & 0x001f) << 19;
- g = (*s16 & 0x07e0) << 5;
- b = (*s16 & 0xf800) >> 8;
- r |= (r >> 5) & 0xff0000;
- g |= (g >> 6) & 0x00ff00;
- b |= (b >> 5);
- *dp = 0xff000000 | r | g | b;
- s16++; dp++;
- }
- break;
-
- case rgbx555:
- while (dp < de)
- {
- r = (*s16 & 0x7c00) << 9;
- g = (*s16 & 0x03e0) << 6;
- b = (*s16 & 0x001f) << 3;
- r |= (r >> 5) & 0xff0000;
- g |= (g >> 5) & 0x00ff00;
- b |= (b >> 5);
- *dp = 0xff000000 | r | g | b;
- s16++; dp++;
- }
- break;
-
- default:
- return EINA_FALSE;
- break;
- }
- break;
-
- case 24:
- s8 = ((unsigned char *)(((unsigned char *)src) + ((y + row) * sbpl))) + (x * (sbpp / 8));
- switch (mode)
- {
- case rgb888:
- while (dp < de)
- {
- *dp = 0xff000000 | (s8[2] << 16) | (s8[1] << 8) | s8[0];
- s8 += 3; dp++;
- }
- break;
- case bgr888:
- while (dp < de)
- {
- *dp = 0xff000000 | (s8[0] << 16) | (s8[1] << 8) | s8[2];
- s8 += 3; dp++;
- }
- break;
- default:
- return EINA_FALSE;
- break;
- }
- break;
-
- case 32:
- s32 = ((unsigned int *)(((unsigned char *)src) +
- ((y + row) * sbpl))) + x;
- switch (mode)
- {
- case argbx888:
- while (dp < de)
- {
- *dp = 0xff000000 | *s32;
- s32++; dp++;
- }
- break;
-
- case abgrx888:
- while (dp < de)
- {
- r = *s32 & 0x000000ff;
- g = *s32 & 0x0000ff00;
- b = *s32 & 0x00ff0000;
- *dp = 0xff000000 | (r << 16) | (g) | (b >> 16);
- s32++; dp++;
- }
- break;
-
- case rgba888x:
- while (dp < de)
- {
- *dp = 0xff000000 | (*s32 >> 8);
- s32++; dp++;
- }
- break;
-
- case bgra888x:
- while (dp < de)
- {
- r = *s32 & 0x0000ff00;
- g = *s32 & 0x00ff0000;
- b = *s32 & 0xff000000;
- *dp = 0xff000000 | (r << 8) | (g >> 8) | (b >> 24);
- s32++; dp++;
- }
- break;
-
- case argbx666:
- while (dp < de)
- {
- r = (*s32 & 0x3f000) << 6;
- g = (*s32 & 0x00fc0) << 4;
- b = (*s32 & 0x0003f) << 2;
- r |= (r >> 6) & 0xff0000;
- g |= (g >> 6) & 0x00ff00;
- b |= (b >> 6);
- *dp = 0xff000000 | r | g | b;
- s32++; dp++;
- }
- break;
-
- default:
- return EINA_FALSE;
- break;
- }
- break;
-
- default:
- return EINA_FALSE;
- break;
- }
- }
- return EINA_TRUE;
-}
-
-/* local functions */
-static void
-_ecore_xcb_image_shm_check(void)
-{
-// xcb_shm_query_version_reply_t *reply;
- xcb_shm_segment_info_t shminfo;
- xcb_shm_get_image_cookie_t cookie;
- xcb_shm_get_image_reply_t *ireply;
- xcb_image_t *img = 0;
- uint8_t depth = 0;
-
- if (_ecore_xcb_image_shm_can != -1) return;
- CHECK_XCB_CONN;
-
- /* reply = */
- /* xcb_shm_query_version_reply(_ecore_xcb_conn, */
- /* xcb_shm_query_version(_ecore_xcb_conn), NULL); */
- /* if (!reply) */
- /* { */
- /* _ecore_xcb_image_shm_can = 0; */
- /* return; */
- /* } */
-
- /* if ((reply->major_version < 1) || */
- /* ((reply->major_version == 1) && (reply->minor_version == 0))) */
- /* { */
- /* _ecore_xcb_image_shm_can = 0; */
- /* free(reply); */
- /* return; */
- /* } */
-
- /* free(reply); */
-
- depth = ((xcb_screen_t *)_ecore_xcb_screen)->root_depth;
-
- ecore_x_sync(); // needed
-
- img = _ecore_xcb_image_create_native(1, 1, XCB_IMAGE_FORMAT_Z_PIXMAP,
- depth, NULL, ~0, NULL);
- if (!img)
- {
- _ecore_xcb_image_shm_can = 0;
- return;
- }
-
- shminfo.shmid =
- shmget(IPC_PRIVATE, img->stride * img->height, (IPC_CREAT | 0600));
- if (shminfo.shmid == (uint32_t)-1)
- {
- xcb_image_destroy(img);
- _ecore_xcb_image_shm_can = 0;
- return;
- }
-
- shminfo.shmaddr = shmat(shminfo.shmid, 0, 0);
- img->data = shminfo.shmaddr;
- if (img->data == (uint8_t *)-1)
- {
- xcb_image_destroy(img);
- _ecore_xcb_image_shm_can = 0;
- return;
- }
-
- shminfo.shmseg = xcb_generate_id(_ecore_xcb_conn);
- xcb_shm_attach(_ecore_xcb_conn, shminfo.shmseg, shminfo.shmid, 0);
-
- cookie =
- xcb_shm_get_image(_ecore_xcb_conn,
- ((xcb_screen_t *)_ecore_xcb_screen)->root,
- 0, 0, img->width, img->height,
- 0xffffffff, img->format,
- shminfo.shmseg, img->data - shminfo.shmaddr);
-
- ecore_x_sync(); // needed
-
- ireply = xcb_shm_get_image_reply(_ecore_xcb_conn, cookie, NULL);
- if (ireply)
- {
- _ecore_xcb_image_shm_can = 1;
- free(ireply);
- }
- else
- _ecore_xcb_image_shm_can = 0;
-
- xcb_shm_detach(_ecore_xcb_conn, shminfo.shmseg);
- xcb_image_destroy(img);
- shmdt(shminfo.shmaddr);
- shmctl(shminfo.shmid, IPC_RMID, 0);
-}
-
-static void
-_ecore_xcb_image_shm_create(Ecore_X_Image *im)
-{
- CHECK_XCB_CONN;
-
- im->xim =
- _ecore_xcb_image_create_native(im->w, im->h, XCB_IMAGE_FORMAT_Z_PIXMAP,
- im->depth, NULL, ~0, NULL);
- if (!im->xim) return;
-
- im->shminfo.shmid = shmget(IPC_PRIVATE, im->xim->size, (IPC_CREAT | 0600));
- if (im->shminfo.shmid == (uint32_t)-1)
- {
- xcb_image_destroy(im->xim);
- return;
- }
-
- im->shminfo.shmaddr = shmat(im->shminfo.shmid, 0, 0);
- im->xim->data = im->shminfo.shmaddr;
- if ((!im->xim->data) || (im->xim->data == (uint8_t *)-1))
- {
- DBG("Shm Create No Image Data");
- xcb_image_destroy(im->xim);
- shmdt(im->shminfo.shmaddr);
- shmctl(im->shminfo.shmid, IPC_RMID, 0);
- return;
- }
-
- im->shminfo.shmseg = xcb_generate_id(_ecore_xcb_conn);
- xcb_shm_attach(_ecore_xcb_conn, im->shminfo.shmseg, im->shminfo.shmid, 0);
-
- im->data = (unsigned char *)im->xim->data;
- im->bpl = im->xim->stride;
- im->rows = im->xim->height;
- if (im->xim->bpp <= 8)
- im->bpp = 1;
- else if (im->xim->bpp <= 16)
- im->bpp = 2;
- else
- im->bpp = 4;
-}
-
-xcb_image_t *
-_ecore_xcb_image_create_native(int w,
- int h,
- xcb_image_format_t format,
- uint8_t depth,
- void *base,
- uint32_t bytes,
- uint8_t *data)
-{
- static uint8_t dpth = 0;
- static xcb_format_t *fmt = NULL;
- const xcb_setup_t *setup;
- xcb_image_format_t xif;
-
- CHECK_XCB_CONN;
-
- /* NB: We cannot use xcb_image_create_native as it only creates images
- * using MSB_FIRST, so this routine recreates that function and uses
- * the endian-ness of the server setup */
- setup = xcb_get_setup(_ecore_xcb_conn);
- xif = format;
-
- if ((xif == XCB_IMAGE_FORMAT_Z_PIXMAP) && (depth == 1))
- xif = XCB_IMAGE_FORMAT_XY_PIXMAP;
-
- if (dpth != depth)
- {
- dpth = depth;
- fmt = _ecore_xcb_image_find_format(setup, depth);
- if (!fmt) return 0;
- }
-
- switch (xif)
- {
- case XCB_IMAGE_FORMAT_XY_BITMAP:
- if (depth != 1) return 0;
-
- case XCB_IMAGE_FORMAT_XY_PIXMAP:
- case XCB_IMAGE_FORMAT_Z_PIXMAP:
- return xcb_image_create(w, h, xif,
- fmt->scanline_pad,
- fmt->depth, fmt->bits_per_pixel,
- setup->bitmap_format_scanline_unit,
- setup->image_byte_order,
- setup->bitmap_format_bit_order,
- base, bytes, data);
-
- default:
- break;
- }
-
- return 0;
-}
-
-static xcb_format_t *
-_ecore_xcb_image_find_format(const xcb_setup_t *setup,
- uint8_t depth)
-{
- xcb_format_t *fmt, *fmtend;
-
- CHECK_XCB_CONN;
-
- fmt = xcb_setup_pixmap_formats(setup);
- fmtend = fmt + xcb_setup_pixmap_formats_length(setup);
- for (; fmt != fmtend; ++fmt)
- if (fmt->depth == depth)
- return fmt;
-
- return 0;
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_input.c b/src/lib/ecore_x/xcb/ecore_xcb_input.c
deleted file mode 100644
index cd9e488986..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_input.c
+++ /dev/null
@@ -1,295 +0,0 @@
-#include "ecore_xcb_private.h"
-#ifdef ECORE_XCB_XINPUT
-# include <xcb/xinput.h>
-# include <xcb/xcb_event.h>
-#endif
-
-/* FIXME: this is a guess. can't find defines for touch events in xcb libs
- * online */
-/* these are not yet defined in xcb support for xi2 - so manually create */
-#ifndef XCB_INPUT_DEVICE_TOUCH_BEGIN
-#define XCB_INPUT_DEVICE_TOUCH_BEGIN 18
-#endif
-#ifndef XCB_INPUT_DEVICE_TOUCH_END
-#define XCB_INPUT_DEVICE_TOUCH_END 19
-#endif
-#ifndef XCB_INPUT_DEVICE_TOUCH_UPDATE
-#define XCB_INPUT_DEVICE_TOUCH_UPDATE 21
-#endif
-
-#ifndef XCB_INPUT_POINTER_EMULATED_MASK
-#define XCB_INPUT_POINTER_EMULATED_MASK (1 << 16)
-#endif
-
-/* local variables */
-static Eina_Bool _input_avail = EINA_FALSE;
-
-/* external variables */
-int _ecore_xcb_event_input = 0;
-
-void
-_ecore_xcb_input_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_XINPUT
- xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_input_id);
-#endif
-}
-
-void
-_ecore_xcb_input_finalize(void)
-{
-#ifdef ECORE_XCB_XINPUT
- xcb_input_get_extension_version_cookie_t cookie;
- xcb_input_get_extension_version_reply_t *reply;
- char buff[128];
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-#ifdef ECORE_XCB_XINPUT
- cookie =
- xcb_input_get_extension_version_unchecked(_ecore_xcb_conn, 127, buff);
- reply =
- xcb_input_get_extension_version_reply(_ecore_xcb_conn, cookie, NULL);
- if (reply)
- {
- _input_avail = EINA_TRUE;
- free(reply);
- }
-
- if (_input_avail)
- {
- const xcb_query_extension_reply_t *ext_reply;
-
- ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_input_id);
- if (ext_reply)
- _ecore_xcb_event_input = ext_reply->first_event;
- }
-#endif
-}
-
-void
-_ecore_xcb_input_shutdown(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-}
-
-void
-#ifdef ECORE_XCB_XINPUT
-_ecore_xcb_input_handle_event(xcb_generic_event_t *event)
-#else
-_ecore_xcb_input_handle_event(xcb_generic_event_t * event EINA_UNUSED)
-#endif
-{
-#ifdef ECORE_XCB_XINPUT
- xcb_ge_event_t *ev;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- /* FIXME: look at xlib ecore_x_xi2.c to copy logic in when i can find an
- * xcb-input lib to test with */
-#ifdef ECORE_XCB_XINPUT
- ev = (xcb_ge_event_t *)event;
- switch (ev->event_type)
- {
- case XCB_INPUT_DEVICE_MOTION_NOTIFY:
- {
- xcb_input_device_motion_notify_event_t *de;
- unsigned int child_win = 0;
-
- de = (xcb_input_device_motion_notify_event_t *)ev->pad1;
- child_win = (de->child ? de->child : de->event);
- _ecore_xcb_event_mouse_move(de->time, de->state, de->event_x,
- de->event_y, de->root_x, de->root_y,
- de->event, child_win, de->root,
- de->same_screen, de->device_id,
- 1, 1, 1.0, 0.0,
- de->event_x, de->event_y,
- de->root_x, de->root_y);
- }
- break;
-
- case XCB_INPUT_DEVICE_BUTTON_PRESS:
- {
- xcb_input_device_button_press_event_t *de;
- unsigned int child_win = 0;
-
- de = (xcb_input_device_button_press_event_t *)ev->pad1;
- child_win = (de->child ? de->child : de->event);
- _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_DOWN,
- de->time, de->state, de->detail,
- de->event_x, de->event_y,
- de->root_x, de->root_y, de->event,
- child_win, de->root,
- de->same_screen, de->device_id,
- 1, 1, 1.0, 0.0,
- de->event_x, de->event_y,
- de->root_x, de->root_y);
- }
- break;
-
- case XCB_INPUT_DEVICE_BUTTON_RELEASE:
- {
- xcb_input_device_button_release_event_t *de;
- unsigned int child_win = 0;
-
- de = (xcb_input_device_button_release_event_t *)ev->pad1;
- child_win = (de->child ? de->child : de->event);
- _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_UP,
- de->time, de->state, de->detail,
- de->event_x, de->event_y,
- de->root_x, de->root_y, de->event,
- child_win, de->root,
- de->same_screen, de->device_id,
- 1, 1, 1.0, 0.0,
- de->event_x, de->event_y,
- de->root_x, de->root_y);
- }
- break;
-
- case XCB_INPUT_DEVICE_TOUCH_UPDATE:
- {
- xcb_input_device_motion_notify_event_t *de;
- unsigned int child_win = 0;
-
- de = (xcb_input_device_motion_notify_event_t *)ev->pad1;
- child_win = (de->child ? de->child : de->event);
- _ecore_xcb_event_mouse_move(de->time, de->state, de->event_x,
- de->event_y, de->root_x, de->root_y,
- de->event, child_win, de->root,
- de->same_screen, de->device_id,
- 1, 1, 1.0, 0.0,
- de->event_x, de->event_y,
- de->root_x, de->root_y);
- }
- break;
-
- case XCB_INPUT_DEVICE_TOUCH_BEGIN:
- {
- xcb_input_device_button_press_event_t *de;
- unsigned int child_win = 0;
-
- de = (xcb_input_device_button_press_event_t *)ev->pad1;
- child_win = (de->child ? de->child : de->event);
- _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_DOWN,
- de->time, de->state, de->detail,
- de->event_x, de->event_y,
- de->root_x, de->root_y, de->event,
- child_win, de->root,
- de->same_screen, de->device_id,
- 1, 1, 1.0, 0.0,
- de->event_x, de->event_y,
- de->root_x, de->root_y);
- }
- break;
-
- case XCB_INPUT_DEVICE_TOUCH_END:
- {
- xcb_input_device_button_release_event_t *de;
- unsigned int child_win = 0;
-
- de = (xcb_input_device_button_release_event_t *)ev->pad1;
- child_win = (de->child ? de->child : de->event);
- _ecore_xcb_event_mouse_button(ECORE_EVENT_MOUSE_BUTTON_UP,
- de->time, de->state, de->detail,
- de->event_x, de->event_y,
- de->root_x, de->root_y, de->event,
- child_win, de->root,
- de->same_screen, de->device_id,
- 1, 1, 1.0, 0.0,
- de->event_x, de->event_y,
- de->root_x, de->root_y);
- }
- break;
-
- default:
- break;
- }
-#endif
-}
-
-EAPI Eina_Bool
-ecore_x_input_multi_select(Ecore_X_Window win)
-{
- Eina_Bool find = EINA_FALSE;
-#ifdef ECORE_XCB_XINPUT
- xcb_input_list_input_devices_cookie_t dcookie;
- xcb_input_list_input_devices_reply_t *dreply;
- xcb_input_device_info_iterator_t diter;
-#endif
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!_input_avail) return EINA_FALSE;
-
- /* FIXME: i can't seemingly test this! no xcb input lib so can't look and
- * test and look at types etc. - look at xlib code and copy logic over
- * when we can */
-#ifdef ECORE_XCB_XINPUT
- dcookie = xcb_input_list_input_devices_unchecked(_ecore_xcb_conn);
- dreply =
- xcb_input_list_input_devices_reply(_ecore_xcb_conn, dcookie, NULL);
- if (!dreply) return EINA_FALSE;
-
- diter = xcb_input_list_input_devices_devices_iterator(dreply);
- while (diter.rem)
- {
- xcb_input_device_info_t *dev;
- const xcb_input_event_class_t iclass[] =
- {
- XCB_INPUT_DEVICE_BUTTON_PRESS,
- XCB_INPUT_DEVICE_BUTTON_RELEASE,
- XCB_INPUT_DEVICE_MOTION_NOTIFY,
- XCB_INPUT_DEVICE_TOUCH_BEGIN,
- XCB_INPUT_DEVICE_TOUCH_END,
- XCB_INPUT_DEVICE_TOUCH_UPDATE
- };
-
- dev = diter.data;
- if (dev->device_use == XCB_INPUT_DEVICE_USE_IS_X_EXTENSION_DEVICE)
- {
- DBG("Device %d", dev->device_id);
- DBG("\tType: %d", dev->device_type);
- DBG("\tNum Classes: %d", dev->num_class_info);
- DBG("\tUse: %d", dev->device_use);
-
- xcb_input_select_extension_event(_ecore_xcb_conn, win,
- sizeof(iclass) / sizeof(xcb_input_event_class_t),
- iclass);
- find = EINA_TRUE;
- }
- xcb_input_device_info_next(&diter);
- }
- free(dreply);
-#else
- (void)win;
-#endif
-
- return find;
-}
-
-EAPI Eina_Bool
-ecore_x_input_raw_select(Ecore_X_Window win EINA_UNUSED)
-{
- /* NB: FIXME: This is just a placeholder. XCB does not have XInput2 yet */
- return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-ecore_x_input_touch_devices_grab(Ecore_X_Window win EINA_UNUSED)
-{
- /* NB: FIXME: This is just a placeholder. XCB does not have XInput2 yet */
- return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-ecore_x_input_touch_devices_ungrab(void)
-{
- /* NB: FIXME: This is just a placeholder. XCB does not have XInput2 yet */
- return EINA_FALSE;
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_keygrab.c b/src/lib/ecore_x/xcb/ecore_xcb_keygrab.c
deleted file mode 100644
index d4f67821d7..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_keygrab.c
+++ /dev/null
@@ -1,442 +0,0 @@
-#include "ecore_xcb_private.h"
-
-//////////////////////////////////////////////////////////////////////////////
-// This api and structure only for the key router and window client side
-// Application do not use this
-
-//this mask is defined by key router.
-//after discussing with keyrouter module, this mask can be changed
-#define GRAB_MASK 0xffff00
-#define OVERRIDE_EXCLUSIVE_GRAB 0xf00000
-#define EXCLUSIVE_GRAB 0x0f0000
-#define TOPMOST_GRAB 0x00f000
-#define SHARED_GRAB 0x000f00
-
-//if _ecore_keyrouter = 0, not yet check keyrouter
-//if _ecore_keyrouter = -1, keyrouter not exist
-//if _ecore_keyrouter = 1, keyrouter exist
-int _ecore_keyrouter = 0;
-
-typedef struct _Ecore_X_Window_Key_Table
-{
- Ecore_X_Window win; //windo ID
- int *key_list; //list of key
- unsigned long key_cnt; // the number of key
-} Ecore_X_Window_Key_Table;
-
-static Ecore_X_Atom _atom_grab_excl_win = XCB_NONE;
-#define STR_ATOM_GRAB_EXCL_WIN "_GRAB_EXCL_WIN_KEYCODE"
-
-static void
-_keytable_free(Ecore_X_Window_Key_Table *keytable)
-{
- if (keytable->key_list) free(keytable->key_list);
- keytable->key_list = NULL;
- keytable->win = 0;
- keytable->key_cnt = 0;
-}
-
-static int
-_keytable_property_list_get(Ecore_X_Window win, Ecore_X_Atom atom, unsigned int **plst)
-{
- return ecore_x_window_prop_card32_list_get(win, atom, plst);
-}
-
-static Eina_Bool
-_keytable_get(Ecore_X_Window win, Ecore_X_Window_Key_Table *keytable)
-{
- int ret = 0;
-
- ret = _keytable_property_list_get(win, ECORE_X_ATOM_E_KEYROUTER_WINDOW_KEYTABLE,
- (unsigned int **)&(keytable->key_list));
- if (ret < 0) return EINA_FALSE;
-
- keytable->key_cnt = ret;
- return EINA_TRUE;
-}
-
-static Eina_Bool
-_keytable_keycode_decode(int encoded, int *keycode, Ecore_X_Win_Keygrab_Mode *grab_mode)
-{
- int mask = 0;
-
- *keycode = encoded & (~GRAB_MASK);
- mask = encoded & GRAB_MASK;
-
- if (mask == SHARED_GRAB)
- *grab_mode = ECORE_X_WIN_KEYGRAB_SHARED;
- else if (mask == TOPMOST_GRAB)
- *grab_mode = ECORE_X_WIN_KEYGRAB_TOPMOST;
- else if (mask == EXCLUSIVE_GRAB)
- *grab_mode = ECORE_X_WIN_KEYGRAB_EXCLUSIVE;
- else if (mask == OVERRIDE_EXCLUSIVE_GRAB)
- *grab_mode = ECORE_X_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE;
- else
- {
- *grab_mode = ECORE_X_WIN_KEYGRAB_UNKNOWN;
- WRN("Keycode decoding failed. Unknown Keygrab mode");
- return EINA_FALSE;
- }
-
- return EINA_TRUE;
-}
-
-static Eina_Bool
-_keytable_keycode_encode(int keycode, Ecore_X_Win_Keygrab_Mode grab_mode, int *encoded)
-{
- if ((grab_mode <= ECORE_X_WIN_KEYGRAB_UNKNOWN) ||
- (grab_mode > ECORE_X_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE))
- {
- *encoded = 0;
- WRN("Keycode encoding failed. Unknown Keygrab mode");
- return EINA_FALSE;
- }
-
- if (grab_mode == ECORE_X_WIN_KEYGRAB_SHARED)
- *encoded = keycode | SHARED_GRAB;
- else if (grab_mode == ECORE_X_WIN_KEYGRAB_TOPMOST)
- *encoded = keycode | TOPMOST_GRAB;
- else if (grab_mode == ECORE_X_WIN_KEYGRAB_EXCLUSIVE)
- *encoded = keycode | EXCLUSIVE_GRAB;
- else if (grab_mode == ECORE_X_WIN_KEYGRAB_OVERRIDE_EXCLUSIVE)
- *encoded = keycode | OVERRIDE_EXCLUSIVE_GRAB;
-
- return EINA_TRUE;
-}
-
-static int
-_keytable_key_search(Ecore_X_Window_Key_Table *keytable, int key)
-{
- int i, code = 0, *list = NULL;
- unsigned long count;
-
- code = key & (~GRAB_MASK);
- count = keytable->key_cnt;
- list = keytable->key_list;
-
- for (i = count - 1; i >= 0; i--)
- if ((list[i] & (~GRAB_MASK)) == code) break;
-
- return i;
-}
-
-static Eina_Bool
-_keytable_key_add(Ecore_X_Window_Key_Table *keytable, int keycode, Ecore_X_Win_Keygrab_Mode grab_mode)
-{
- Ecore_X_Window win;
- unsigned long count;
- int i = 0, masked = 0;
-
- win = keytable->win;
- count = keytable->key_cnt;
-
- if (!_keytable_keycode_encode(keycode, grab_mode, &masked))
- return EINA_FALSE;
-
- if (count == 0)
- {
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, win,
- ECORE_X_ATOM_E_KEYROUTER_WINDOW_KEYTABLE,
- ECORE_X_ATOM_CARDINAL, 32, 1,
- (unsigned char *)&masked);
- return EINA_TRUE;
- }
- else
- {
- i = _keytable_key_search(keytable, masked);
- if (i != -1)
- {
- WRN("Key already exists");
- return EINA_FALSE;
- }
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_APPEND, win,
- ECORE_X_ATOM_E_KEYROUTER_WINDOW_KEYTABLE,
- ECORE_X_ATOM_CARDINAL, 32, 1,
- (unsigned char *)&masked);
- return EINA_TRUE;
- }
-}
-
-static Eina_Bool
-_keytable_key_del(Ecore_X_Window_Key_Table *keytable, int key, Ecore_X_Atom atom)
-{
- int i, *new_key_list = NULL;
- unsigned long count = 0;
-
- i = _keytable_key_search(keytable, key);
- if (i == -1)
- {
- WRN("Key does not exist in the key table");
- return EINA_FALSE;
- }
-
- keytable->key_cnt--;
- count = keytable->key_cnt;
- if (count == 0)
- {
- ecore_x_window_prop_property_del(keytable->win, atom);
- return EINA_TRUE;
- }
-
- new_key_list = malloc(count * sizeof(int));
- if (!new_key_list) return EINA_FALSE;
-
- if (i > 0)
- memcpy(new_key_list, keytable->key_list, sizeof(int) * i);
-
- if (count - i > 0)
- memcpy(new_key_list + i, keytable->key_list + i + 1,
- sizeof(int) * (count - i));
-
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, keytable->win,
- atom, ECORE_X_ATOM_CARDINAL, 32, count,
- (unsigned char *)new_key_list);
-
- free(new_key_list);
- return EINA_TRUE;
-}
-
-static Eina_Bool
-_keytable_possible_global_exclusiveness_get(int keycode)
-{
- Ecore_X_Window_Key_Table keytable;
- int ret = 0;
-
- keytable.win = ecore_x_window_root_first_get();
- keytable.key_list = NULL;
- keytable.key_cnt = 0;
-
- if (_atom_grab_excl_win == XCB_NONE)
- _atom_grab_excl_win = ecore_x_atom_get(STR_ATOM_GRAB_EXCL_WIN);
-
- ret = _keytable_property_list_get(keytable.win, _atom_grab_excl_win,
- (unsigned int **)&(keytable.key_list));
- if (ret < 0) return EINA_FALSE;
-
- keytable.key_cnt = ret;
- if (keytable.key_cnt == 0)
- {
- WRN("There is no keygrab entry in the table");
- return EINA_TRUE;
- }
-
- ret = _keytable_key_search(&keytable, keycode);
- if (ret != -1)
- {
- WRN("Can't search keygrab entry in the table");
- _keytable_free(&keytable);
- return EINA_FALSE;
- }
-
- _keytable_free(&keytable);
- return EINA_TRUE;
-}
-
-static Eina_Bool
-_keytable_possible_global_exclusiveness_set(int keycode)
-{
- Ecore_X_Window_Key_Table keytable;
- int ret = 0;
-
- keytable.win = ecore_x_window_root_first_get();
- keytable.key_list = NULL;
- keytable.key_cnt = 0;
-
- if (_atom_grab_excl_win == XCB_NONE)
- _atom_grab_excl_win = ecore_x_atom_get(STR_ATOM_GRAB_EXCL_WIN);
-
- ret = _keytable_property_list_get(keytable.win, _atom_grab_excl_win,
- (unsigned int **)&(keytable.key_list));
- if (ret < 0) return EINA_FALSE;
-
- keytable.key_cnt = ret;
- if (keytable.key_cnt == 0)
- {
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE,
- keytable.win, _atom_grab_excl_win,
- ECORE_X_ATOM_CARDINAL, 32, 1,
- (unsigned char *)&keycode);
- _keytable_free(&keytable);
- return EINA_TRUE;
- }
-
- ret = _keytable_key_search(&keytable, keycode);
- if (ret != -1)
- {
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_APPEND,
- keytable.win, _atom_grab_excl_win,
- ECORE_X_ATOM_CARDINAL, 32, 1,
- (unsigned char *)&keycode);
- _keytable_free(&keytable);
- return EINA_TRUE;
- }
-
- WRN("Key is already grabbed");
- _keytable_free(&keytable);
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_keytable_possible_global_exclusiveness_unset(int keycode)
-{
- Ecore_X_Window_Key_Table keytable;
- int ret = 0;
-
- keytable.win = ecore_x_window_root_first_get();
- keytable.key_list = NULL;
- keytable.key_cnt = 0;
-
- if (_atom_grab_excl_win == XCB_NONE)
- _atom_grab_excl_win = ecore_x_atom_get(STR_ATOM_GRAB_EXCL_WIN);
-
- ret = _keytable_property_list_get(keytable.win, _atom_grab_excl_win,
- (unsigned int **)&(keytable.key_list));
- if (ret < 0) return EINA_FALSE;
-
- keytable.key_cnt = ret;
-
- ret = _keytable_key_search(&keytable, keycode);
- if (ret == -1)
- {
- WRN("Keygrab already exists");
- _keytable_free(&keytable);
- return EINA_FALSE;
- }
- else
- ret = _keytable_key_del(&keytable, keycode, _atom_grab_excl_win);
-
- _keytable_free(&keytable);
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_ecore_xcb_window_keygrab_set_internal(Ecore_X_Window win, const char *key, Ecore_X_Win_Keygrab_Mode grab_mode)
-{
- Ecore_X_Window_Key_Table keytable;
- xcb_keycode_t keycode = 0;
- Eina_Bool ret = EINA_FALSE;
-
- keytable.win = win;
- keytable.key_list = NULL;
- keytable.key_cnt = 0;
-
- keycode = _ecore_xcb_keymap_string_to_keycode(key);
- if (keycode == XCB_NO_SYMBOL)
- {
- WRN("Keycode of key(\"%s\") does not exist", key);
- return EINA_FALSE;
- }
-
- if (grab_mode == ECORE_X_WIN_KEYGRAB_EXCLUSIVE)
- {
- if (!_keytable_possible_global_exclusiveness_get(keycode))
- return EINA_FALSE;
- }
-
- if (!_keytable_get(win, &keytable)) return EINA_FALSE;
-
- ret = _keytable_key_add(&keytable, keycode, grab_mode);
- if (!ret)
- {
- WRN("Key(\"%s\") add failed", key);
- goto err;
- }
-
- if (grab_mode == ECORE_X_WIN_KEYGRAB_EXCLUSIVE)
- {
- if (!_keytable_possible_global_exclusiveness_set(keycode))
- {
- _keytable_key_del(&keytable, keycode, ECORE_X_ATOM_E_KEYROUTER_WINDOW_KEYTABLE);
- WRN("Key(\"%s\") already is grabbed", key);
- goto err;
- }
- }
-
- _keytable_free(&keytable);
- return EINA_TRUE;
-
-err:
- _keytable_free(&keytable);
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_ecore_xcb_window_keygrab_unset_internal(Ecore_X_Window win, const char *key)
-{
- Ecore_X_Window_Key_Table keytable;
- Ecore_X_Win_Keygrab_Mode grab_mode = ECORE_X_WIN_KEYGRAB_UNKNOWN;
- xcb_keycode_t keycode = 0;
- int i, masked = 0, decoded = 0;
- Eina_Bool ret = EINA_FALSE;
-
- keytable.win = win;
- keytable.key_list = NULL;
- keytable.key_cnt = 0;
-
- keycode = _ecore_xcb_keymap_string_to_keycode(key);
- if (keycode == XCB_NO_SYMBOL)
- {
- WRN("Keycode of key(\"%s\") does not exist", key);
- return EINA_FALSE;
- }
-
- if (!_keytable_get(win, &keytable)) return EINA_FALSE;
-
- if (keytable.key_cnt <= 0) return EINA_FALSE;
-
- i = _keytable_key_search(&keytable, keycode);
- if (i == -1)
- {
- WRN("Key(\"%s\") does not exist", key);
- goto err;
- }
-
- masked = keytable.key_list[i];
-
- ret = _keytable_keycode_decode(masked, &decoded, &grab_mode);
- if (!ret) goto err;
-
- ret = _keytable_key_del(&keytable, masked, ECORE_X_ATOM_E_KEYROUTER_WINDOW_KEYTABLE);
- if (!ret) goto err;
-
- if (grab_mode == ECORE_X_WIN_KEYGRAB_EXCLUSIVE)
- ret = _keytable_possible_global_exclusiveness_unset(keycode);
-
- _keytable_free(&keytable);
- return EINA_TRUE;
-
-err:
- _keytable_free(&keytable);
- return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-ecore_x_window_keygrab_set(Ecore_X_Window win, const char *key, int mod EINA_UNUSED, int not_mod EINA_UNUSED, int priority EINA_UNUSED, Ecore_X_Win_Keygrab_Mode grab_mode)
-{
- if (_ecore_keyrouter == 0)
- {
- if (ecore_x_e_keyrouter_get(win))
- _ecore_keyrouter = 1;
- else
- {
- WRN("Keyrouter is not supported");
- _ecore_keyrouter = -1;
- }
- }
-
- if (_ecore_keyrouter < 0) return EINA_FALSE;
-
- return _ecore_xcb_window_keygrab_set_internal(win, key, grab_mode);
-}
-
-EAPI Eina_Bool
-ecore_x_window_keygrab_unset(Ecore_X_Window win, const char *key, int mod EINA_UNUSED, int any_mod EINA_UNUSED)
-{
- if (_ecore_keyrouter != 1)
- {
- WRN("Keyrouter is not supported");
- return EINA_FALSE;
- }
-
- return _ecore_xcb_window_keygrab_unset_internal(win, key);
-}
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_keymap.c b/src/lib/ecore_x/xcb/ecore_xcb_keymap.c
deleted file mode 100644
index 8ec7af1176..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_keymap.c
+++ /dev/null
@@ -1,534 +0,0 @@
-#include "ecore_xcb_private.h"
-#define NEED_KEYSYM_TABLE
-#define NEED_VTABLE
-#include "ecore_xcb_keysym_table.h"
-#include <xcb/xcb_keysyms.h>
-#include <X11/keysym.h>
-
-/* local function prototypes */
-static int _ecore_xcb_keymap_mask_get(void *reply,
- xcb_keysym_t sym);
-static xcb_keysym_t _ecore_xcb_keymap_string_to_keysym(const char *str);
-static int _ecore_xcb_keymap_translate_key(xcb_keycode_t keycode,
- unsigned int modifiers,
- unsigned int *modifiers_return,
- xcb_keysym_t *keysym_return);
-static int _ecore_xcb_keymap_translate_keysym(xcb_keysym_t keysym,
- unsigned int modifiers,
- char *buffer,
- int bytes);
-
-/* local variables */
-static xcb_key_symbols_t *_ecore_xcb_keysyms;
-static int _ecore_xcb_mode_switch = 0;
-
-/* public variables */
-EAPI int ECORE_X_MODIFIER_SHIFT = 0;
-EAPI int ECORE_X_MODIFIER_CTRL = 0;
-EAPI int ECORE_X_MODIFIER_ALT = 0;
-EAPI int ECORE_X_MODIFIER_WIN = 0;
-EAPI int ECORE_X_MODIFIER_ALTGR = 0;
-EAPI int ECORE_X_LOCK_SCROLL = 0;
-EAPI int ECORE_X_LOCK_NUM = 0;
-EAPI int ECORE_X_LOCK_CAPS = 0;
-EAPI int ECORE_X_LOCK_SHIFT = 0;
-
-void
-_ecore_xcb_keymap_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- _ecore_xcb_keysyms = xcb_key_symbols_alloc(_ecore_xcb_conn);
-}
-
-void
-_ecore_xcb_keymap_finalize(void)
-{
- xcb_get_modifier_mapping_cookie_t cookie;
- xcb_get_modifier_mapping_reply_t *reply;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie = xcb_get_modifier_mapping_unchecked(_ecore_xcb_conn);
- reply = xcb_get_modifier_mapping_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply)
- {
- xcb_key_symbols_free(_ecore_xcb_keysyms);
- return;
- }
-
- _ecore_xcb_mode_switch = _ecore_xcb_keymap_mask_get(reply, XK_Mode_switch);
-
- ECORE_X_MODIFIER_SHIFT = _ecore_xcb_keymap_mask_get(reply, XK_Shift_L);
- ECORE_X_MODIFIER_CTRL = _ecore_xcb_keymap_mask_get(reply, XK_Control_L);
-
- ECORE_X_MODIFIER_ALT = _ecore_xcb_keymap_mask_get(reply, XK_Alt_L);
- if (!ECORE_X_MODIFIER_ALT)
- ECORE_X_MODIFIER_ALT = _ecore_xcb_keymap_mask_get(reply, XK_Meta_L);
- if (!ECORE_X_MODIFIER_ALT)
- ECORE_X_MODIFIER_ALT = _ecore_xcb_keymap_mask_get(reply, XK_Super_L);
-
- ECORE_X_MODIFIER_WIN = _ecore_xcb_keymap_mask_get(reply, XK_Super_L);
- if (!ECORE_X_MODIFIER_WIN)
- ECORE_X_MODIFIER_WIN = _ecore_xcb_keymap_mask_get(reply, XK_Meta_L);
-
- ECORE_X_MODIFIER_ALTGR = _ecore_xcb_keymap_mask_get(reply, XK_Mode_switch);
-
- if (ECORE_X_MODIFIER_WIN == ECORE_X_MODIFIER_ALT)
- ECORE_X_MODIFIER_WIN = 0;
- if (ECORE_X_MODIFIER_ALT == ECORE_X_MODIFIER_CTRL)
- ECORE_X_MODIFIER_ALT = 0;
-
- if (ECORE_X_MODIFIER_ALTGR)
- {
- if ((ECORE_X_MODIFIER_ALTGR == ECORE_X_MODIFIER_SHIFT) ||
- (ECORE_X_MODIFIER_ALTGR == ECORE_X_MODIFIER_CTRL) ||
- (ECORE_X_MODIFIER_ALTGR == ECORE_X_MODIFIER_ALT) ||
- (ECORE_X_MODIFIER_ALTGR == ECORE_X_MODIFIER_WIN))
- {
- ERR("ALTGR conflicts with other modifiers. IGNORE ALTGR");
- ECORE_X_MODIFIER_ALTGR = 0;
- }
- }
-
- if (ECORE_X_MODIFIER_ALT)
- {
- if ((ECORE_X_MODIFIER_ALT == ECORE_X_MODIFIER_SHIFT) ||
- (ECORE_X_MODIFIER_ALT == ECORE_X_MODIFIER_CTRL) ||
- (ECORE_X_MODIFIER_ALT == ECORE_X_MODIFIER_WIN))
- {
- ERR("ALT conflicts with other modifiers. IGNORE ALT");
- ECORE_X_MODIFIER_ALT = 0;
- }
- }
-
- if (ECORE_X_MODIFIER_WIN)
- {
- if ((ECORE_X_MODIFIER_WIN == ECORE_X_MODIFIER_SHIFT) ||
- (ECORE_X_MODIFIER_WIN == ECORE_X_MODIFIER_CTRL))
- {
- ERR("WIN conflicts with other modifiers. IGNORE WIN");
- ECORE_X_MODIFIER_WIN = 0;
- }
- }
-
- if (ECORE_X_MODIFIER_SHIFT)
- {
- if ((ECORE_X_MODIFIER_SHIFT == ECORE_X_MODIFIER_CTRL))
- {
- ERR("CTRL conflicts with other modifiers. IGNORE CTRL");
- ECORE_X_MODIFIER_CTRL = 0;
- }
- }
-
- ECORE_X_LOCK_SCROLL = _ecore_xcb_keymap_mask_get(reply, XK_Scroll_Lock);
- ECORE_X_LOCK_NUM = _ecore_xcb_keymap_mask_get(reply, XK_Num_Lock);
- ECORE_X_LOCK_CAPS = _ecore_xcb_keymap_mask_get(reply, XK_Caps_Lock);
- ECORE_X_LOCK_SHIFT = _ecore_xcb_keymap_mask_get(reply, XK_Shift_Lock);
- free(reply);
-}
-
-void
-_ecore_xcb_modifiers_get(void)
-{
- _ecore_xcb_keymap_finalize();
-}
-
-void
-_ecore_xcb_keymap_shutdown(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (_ecore_xcb_keysyms) xcb_key_symbols_free(_ecore_xcb_keysyms);
-}
-
-void
-_ecore_xcb_keymap_refresh(xcb_mapping_notify_event_t *event)
-{
- CHECK_XCB_CONN;
- xcb_refresh_keyboard_mapping(_ecore_xcb_keysyms, event);
-}
-
-xcb_keysym_t
-_ecore_xcb_keymap_keycode_to_keysym(xcb_keycode_t keycode,
- int col)
-{
- xcb_keysym_t key0, key1;
-
- CHECK_XCB_CONN;
- if (col & _ecore_xcb_mode_switch)
- {
- key0 = xcb_key_symbols_get_keysym(_ecore_xcb_keysyms, keycode, 4);
- key1 = xcb_key_symbols_get_keysym(_ecore_xcb_keysyms, keycode, 5);
- }
- else
- {
- key0 = xcb_key_symbols_get_keysym(_ecore_xcb_keysyms, keycode, 0);
- key1 = xcb_key_symbols_get_keysym(_ecore_xcb_keysyms, keycode, 1);
- }
-
- if (key1 == XCB_NO_SYMBOL)
- key1 = key0;
-
- if ((col & ECORE_X_LOCK_NUM) &&
- ((xcb_is_keypad_key(key1)) || (xcb_is_private_keypad_key(key1))))
- {
- if ((col & XCB_MOD_MASK_SHIFT) ||
- ((col & XCB_MOD_MASK_LOCK) && (col & ECORE_X_LOCK_SHIFT)))
- return key0;
- else
- return key1;
- }
- else if (!(col & XCB_MOD_MASK_SHIFT) && !(col & XCB_MOD_MASK_LOCK))
- return key0;
- else if (!(col & XCB_MOD_MASK_SHIFT) &&
- (col & XCB_MOD_MASK_LOCK && (col & ECORE_X_LOCK_CAPS)))
- return key1;
- else if ((col & XCB_MOD_MASK_SHIFT) &&
- (col & XCB_MOD_MASK_LOCK) && (col & ECORE_X_LOCK_CAPS))
- return key0;
- else if ((col & XCB_MOD_MASK_SHIFT) ||
- (col & XCB_MOD_MASK_LOCK && (col & ECORE_X_LOCK_SHIFT)))
- return key1;
-
- return XCB_NO_SYMBOL;
-}
-
-xcb_keycode_t *
-_ecore_xcb_keymap_keysym_to_keycode(xcb_keysym_t keysym)
-{
- CHECK_XCB_CONN;
- return xcb_key_symbols_get_keycode(_ecore_xcb_keysyms, keysym);
-}
-
-char *
-_ecore_xcb_keymap_keysym_to_string(xcb_keysym_t keysym)
-{
- int i = 0, n = 0, h = 0, idx = 0;
- const unsigned char *entry;
- unsigned char val1, val2, val3, val4;
-
- CHECK_XCB_CONN;
- if (!keysym) return NULL;
- if (keysym == XK_VoidSymbol) keysym = 0;
- if (keysym <= 0x1fffffff)
- {
- val1 = (keysym >> 24);
- val2 = ((keysym >> 16) & 0xff);
- val3 = ((keysym >> 8) & 0xff);
- val4 = (keysym & 0xff);
- i = keysym % VTABLESIZE;
- h = i + 1;
- n = VMAXHASH;
- while ((idx = hashKeysym[i]))
- {
- entry = &_ecore_xcb_keytable[idx];
- if ((entry[0] == val1) && (entry[1] == val2) &&
- (entry[2] == val3) && (entry[3] == val4))
- return (char *)entry + 4;
- if (!--n) break;
- i += h;
- if (i >= VTABLESIZE) i -= VTABLESIZE;
- }
- }
-
- if ((keysym >= 0x01000100) && (keysym <= 0x0110ffff))
- {
- xcb_keysym_t val;
- char *s = NULL;
- int i = 0;
-
- val = (keysym & 0xffffff);
- if (val & 0xff0000)
- i = 10;
- else
- i = 6;
-
- if (!(s = malloc(i))) return NULL;
- i--;
- s[i--] = '\0';
- for (; i; i--)
- {
- val1 = (val & 0xf);
- val >>= 4;
- if (val1 < 10)
- s[i] = '0' + val1;
- else
- s[i] = 'A' + val1 - 10;
- }
- s[i] = 'U';
- return s;
- }
-
- return NULL;
-}
-
-xcb_keycode_t
-_ecore_xcb_keymap_string_to_keycode(const char *key)
-{
- if (!strncmp(key, "Keycode-", 8))
- return atoi(key + 8);
- else
- {
- xcb_keysym_t keysym = XCB_NO_SYMBOL;
- xcb_keycode_t *keycodes, keycode = 0;
- int i = 0;
-
- CHECK_XCB_CONN;
-
- keysym = _ecore_xcb_keymap_string_to_keysym(key);
- if (keysym == XCB_NO_SYMBOL) return XCB_NO_SYMBOL;
-
- keycodes = _ecore_xcb_keymap_keysym_to_keycode(keysym);
- if (!keycodes) return XCB_NO_SYMBOL;
-
- while (keycodes[i] != XCB_NO_SYMBOL)
- {
- if (keycodes[i] != 0)
- {
- keycode = keycodes[i];
- break;
- }
- i++;
- }
- return keycode;
- }
-}
-
-int
-_ecore_xcb_keymap_lookup_string(xcb_keycode_t keycode,
- int state,
- char *buffer,
- int bytes,
- xcb_keysym_t *sym)
-{
- unsigned int modifiers = 0;
- xcb_keysym_t keysym;
-
- CHECK_XCB_CONN;
- if (!_ecore_xcb_keymap_translate_key(keycode, state, &modifiers, &keysym))
- return 0;
-
- if (sym) *sym = keysym;
-
- return _ecore_xcb_keymap_translate_keysym(keysym, state, buffer, bytes);
-}
-
-EAPI const char *
-ecore_x_keysym_string_get(int keysym)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return _ecore_xcb_keymap_keysym_to_string(keysym);
-}
-
-EAPI int
-ecore_x_keysym_keycode_get(const char *keyname)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- return _ecore_xcb_keymap_string_to_keycode(keyname);
-}
-
-EAPI unsigned int
-ecore_x_keysym_get(const char *string)
-{
- return _ecore_xcb_keymap_string_to_keysym(string);
-}
-
-/* local functions */
-static int
-_ecore_xcb_keymap_mask_get(void *reply,
- xcb_keysym_t sym)
-{
- xcb_get_modifier_mapping_reply_t *rep;
- xcb_keysym_t sym2;
- int mask = 0;
- const int masks[8] =
- {
- XCB_MOD_MASK_SHIFT, XCB_MOD_MASK_LOCK, XCB_MOD_MASK_CONTROL,
- XCB_MOD_MASK_1, XCB_MOD_MASK_2, XCB_MOD_MASK_3, XCB_MOD_MASK_4,
- XCB_MOD_MASK_5
- };
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- rep = (xcb_get_modifier_mapping_reply_t *)reply;
- if ((rep) && (rep->keycodes_per_modifier > 0))
- {
- int i = 0;
- xcb_keycode_t *modmap;
-
- modmap = xcb_get_modifier_mapping_keycodes(rep);
- for (i = 0; i < (8 * rep->keycodes_per_modifier); i++)
- {
- int j = 0;
-
- for (j = 0; j < 8; j++)
- {
- sym2 = xcb_key_symbols_get_keysym(_ecore_xcb_keysyms,
- modmap[i], j);
- if (sym2 != 0) break;
- }
- if (sym2 == sym) mask = masks[i / rep->keycodes_per_modifier];
- }
- }
- return mask;
-}
-
-static xcb_keysym_t
-_ecore_xcb_keymap_string_to_keysym(const char *str)
-{
- int i = 0, n = 0, h = 0;
- unsigned long sig = 0;
- const char *p = NULL;
- int c = 0, idx = 0;
- const unsigned char *entry;
- unsigned char sig1, sig2;
- long unsigned int val;
-
- p = str;
- while ((c = *p++))
- sig = (sig << 1) + c;
-
- i = (sig % KTABLESIZE);
- h = i + 1;
- sig1 = (sig >> 8) & 0xff;
- sig2 = sig & 0xff;
- n = KMAXHASH;
-
- while ((idx = hashString[i]))
- {
- entry = &_ecore_xcb_keytable[idx];
- if ((entry[0] == sig1) && (entry[1] == sig2) &&
- !strcmp(str, (char *)entry + 6))
- {
- val = ((entry[2] << 24) | (entry[3] << 16) |
- (entry[4] << 8) | (entry[5]));
- if (!val) val = 0xffffff;
- return val;
- }
- if (!--n) break;
- i += h;
- if (i >= KTABLESIZE) i -= KTABLESIZE;
- }
-
- if (*str == 'U')
- {
- val = 0;
- for (p = &str[1]; *p; p++)
- {
- c = *p;
- if (('0' <= c) && (c <= '9'))
- val = (val << 4) + c - '0';
- else if (('a' <= c) && (c <= 'f'))
- val = (val << 4) + c - 'a' + 10;
- else if (('A' <= c) && (c <= 'F'))
- val = (val << 4) + c - 'A' + 10;
- else
- return XCB_NO_SYMBOL;
- if (val > 0x10ffff) return XCB_NO_SYMBOL;
- }
- if ((val < 0x20) || ((val > 0x7e) && (val < 0xa0)))
- return XCB_NO_SYMBOL;
- if (val < 0x100) return val;
- return val | 0x01000000;
- }
-
- if ((strlen(str) > 2) && (str[0] == '0') && (str[1] == 'x'))
- {
- char *tmp = NULL;
-
- val = strtoul(str, &tmp, 16);
- if ((val == ULONG_MAX) || ((tmp) && (*tmp != '\0')))
- return XCB_NO_SYMBOL;
- else
- return val;
- }
-
- if (!strncmp(str, "XF86_", 5))
- {
- long unsigned int ret;
- char *tmp;
-
- tmp = strdup(str);
- if (!tmp) return XCB_NO_SYMBOL;
- memmove(&tmp[4], &tmp[5], strlen(str) - 5 + 1);
- ret = _ecore_xcb_keymap_string_to_keysym(tmp);
- free(tmp);
- return ret;
- }
-
- return XCB_NO_SYMBOL;
-}
-
-static int
-_ecore_xcb_keymap_translate_key(xcb_keycode_t keycode,
- unsigned int modifiers,
- unsigned int *modifiers_return,
- xcb_keysym_t *keysym_return)
-{
- xcb_keysym_t sym;
-
- if (!_ecore_xcb_keysyms) return 0;
-
- sym = _ecore_xcb_keymap_keycode_to_keysym(keycode, modifiers);
-
- if (modifiers_return)
- *modifiers_return = ((XCB_MOD_MASK_SHIFT | XCB_MOD_MASK_LOCK) |
- _ecore_xcb_mode_switch | ECORE_X_LOCK_NUM);
- if (keysym_return)
- *keysym_return = sym;
-
- return 1;
-}
-
-static int
-_ecore_xcb_keymap_translate_keysym(xcb_keysym_t keysym,
- unsigned int modifiers,
- char *buffer,
- int bytes)
-{
- unsigned long hbytes = 0;
- unsigned char c;
-
- if (!keysym) return 0;
- hbytes = (keysym >> 8);
-
- if (!(bytes &&
- ((hbytes == 0) ||
- ((hbytes == 0xFF) &&
- (((keysym >= XK_BackSpace) && (keysym <= XK_Clear)) ||
- (keysym == XK_Return) || (keysym == XK_Escape) ||
- (keysym == XK_KP_Space) || (keysym == XK_KP_Tab) ||
- (keysym == XK_KP_Enter) ||
- ((keysym >= XK_KP_Multiply) && (keysym <= XK_KP_9)) ||
- (keysym == XK_KP_Equal) || (keysym == XK_Delete))))))
- return 0;
-
- if (keysym == XK_KP_Space)
- c = (XK_space & 0x7F);
- else if (hbytes == 0xFF)
- c = (keysym & 0x7F);
- else
- c = (keysym & 0xFF);
-
- if (modifiers & ECORE_X_MODIFIER_CTRL)
- {
- if (((c >= '@') && (c < '\177')) || c == ' ')
- c &= 0x1F;
- else if (c == '2')
- c = '\000';
- else if ((c >= '3') && (c <= '7'))
- c -= ('3' - '\033');
- else if (c == '8')
- c = '\177';
- else if (c == '/')
- c = '_' & 0x1F;
- }
- buffer[0] = c;
- return 1;
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_mwm.c b/src/lib/ecore_x/xcb/ecore_xcb_mwm.c
deleted file mode 100644
index 59ab579e58..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_mwm.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include "ecore_xcb_private.h"
-//#include "Ecore_X_Atoms.h"
-
-#define ECORE_X_MWM_HINTS_FUNCTIONS (1 << 0)
-#define ECORE_X_MWM_HINTS_DECORATIONS (1 << 1)
-#define ECORE_X_MWM_HINTS_INPUT_MODE (1 << 2)
-#define ECORE_X_MWM_HINTS_STATUS (1 << 3)
-
-typedef struct _mwmhints
-{
- uint32_t flags;
- uint32_t functions;
- uint32_t decorations;
- int32_t inputmode;
- uint32_t status;
-} MWMHints;
-
-/**
- * @defgroup Ecore_X_MWM_Group MWM related functions.
- * @ingroup Ecore_X_Group
- *
- * Functions related to MWM.
- */
-
-/**
- * Sets the borderless flag of a window using MWM.
- *
- * @param win The window.
- * @param borderless The borderless flag.
- *
- * @ingroup Ecore_X_MWM_Group
- */
-EAPI void
-ecore_x_mwm_borderless_set(Ecore_X_Window win,
- Eina_Bool borderless)
-{
- uint32_t data[5] = { 0, 0, 0, 0, 0 };
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- data[0] = 2;
- data[2] = !borderless;
-
- ecore_x_window_prop_property_set(win,
- ECORE_X_ATOM_MOTIF_WM_HINTS,
- ECORE_X_ATOM_MOTIF_WM_HINTS, 32,
- (void *)data, 5);
-}
-
-EAPI Eina_Bool
-ecore_x_mwm_hints_get(Ecore_X_Window win,
- Ecore_X_MWM_Hint_Func *fhint,
- Ecore_X_MWM_Hint_Decor *dhint,
- Ecore_X_MWM_Hint_Input *ihint)
-{
- xcb_get_property_cookie_t cookie;
- xcb_get_property_reply_t *reply;
- MWMHints *mwmhints = NULL;
- int ret = EINA_FALSE;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- cookie =
- xcb_get_property_unchecked(_ecore_xcb_conn, 0, win,
- ECORE_X_ATOM_MOTIF_WM_HINTS,
- ECORE_X_ATOM_MOTIF_WM_HINTS, 0, UINT_MAX);
- reply = xcb_get_property_reply(_ecore_xcb_conn, cookie, NULL);
- if (!reply) return EINA_FALSE;
- if ((reply->format != 32) || (reply->value_len == 0))
- {
- free(reply);
- return EINA_FALSE;
- }
-
- mwmhints = xcb_get_property_value(reply);
- if (reply->value_len >= 4)
- {
- if (dhint)
- {
- if (mwmhints->flags & ECORE_X_MWM_HINTS_DECORATIONS)
- *dhint = mwmhints->decorations;
- else
- *dhint = ECORE_X_MWM_HINT_DECOR_ALL;
- }
- if (fhint)
- {
- if (mwmhints->flags & ECORE_X_MWM_HINTS_FUNCTIONS)
- *fhint = mwmhints->functions;
- else
- *fhint = ECORE_X_MWM_HINT_FUNC_ALL;
- }
- if (ihint)
- {
- if (mwmhints->flags & ECORE_X_MWM_HINTS_INPUT_MODE)
- *ihint = mwmhints->inputmode;
- else
- *ihint = ECORE_X_MWM_HINT_INPUT_MODELESS;
- }
- ret = EINA_TRUE;
- }
- free(reply);
- return ret;
-}
-
diff --git a/src/lib/ecore_x/xcb/ecore_xcb_netwm.c b/src/lib/ecore_x/xcb/ecore_xcb_netwm.c
deleted file mode 100644
index 856e27d07f..0000000000
--- a/src/lib/ecore_x/xcb/ecore_xcb_netwm.c
+++ /dev/null
@@ -1,1590 +0,0 @@
-#include "ecore_xcb_private.h"
-
-/* local function prototypes */
-/* static void _ecore_xcb_netwm_startup_info_free(void *data); */
-static Ecore_X_Atom _ecore_xcb_netwm_window_type_atom_get(Ecore_X_Window_Type type);
-static Ecore_X_Window_Type _ecore_xcb_netwm_window_type_type_get(Ecore_X_Atom atom);
-static Ecore_X_Atom _ecore_xcb_netwm_window_state_atom_get(Ecore_X_Window_State state);
-static Ecore_X_Atom _ecore_xcb_netwm_action_atom_get(Ecore_X_Action action);
-
-/* local variables */
-//static Eina_Hash *_startup_info = NULL;
-
-/* local structures */
-typedef struct _Ecore_Xcb_Startup_Info Ecore_Xcb_Startup_Info;
-struct _Ecore_Xcb_Startup_Info
-{
- Ecore_X_Window win;
- int init, size;
- char *buffer;
- int length;
-
- /* sequence info fields */
- char *id, *name;
- int screen;
- char *bin, *icon;
- int desktop, timestamp;
- char *description, *wmclass;
- int silent;
-};
-
-EAPI void
-ecore_x_netwm_init(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-// _startup_info =
-// eina_hash_string_superfast_new(_ecore_xcb_netwm_startup_info_free);
-}
-
-EAPI void
-ecore_x_netwm_shutdown(void)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
-// if (_startup_info) eina_hash_free(_startup_info);
-// _startup_info = NULL;
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_pid_get(Ecore_X_Window win,
- int *pid)
-{
- uint32_t tmp;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_PID, &tmp, 1))
- return EINA_FALSE;
-
- if (pid) *pid = tmp;
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_pid_set(Ecore_X_Window win,
- int pid)
-{
- unsigned int tmp;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- tmp = pid;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_PID, &tmp, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_window_type_get(Ecore_X_Window win,
- Ecore_X_Window_Type *type)
-{
- Ecore_X_Atom *atoms;
- int num = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (type) *type = ECORE_X_WINDOW_TYPE_NORMAL;
-
- num =
- ecore_x_window_prop_atom_list_get(win,
- ECORE_X_ATOM_NET_WM_WINDOW_TYPE, &atoms);
- if ((type) && (num >= 1) && (atoms))
- *type = _ecore_xcb_netwm_window_type_type_get(atoms[0]);
-
- if (atoms) free(atoms);
-
- if (num >= 1) return EINA_TRUE;
- return EINA_FALSE;
-}
-
-EAPI void
-ecore_x_netwm_window_type_set(Ecore_X_Window win,
- Ecore_X_Window_Type type)
-{
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- atom = _ecore_xcb_netwm_window_type_atom_get(type);
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_NET_WM_WINDOW_TYPE, &atom, 1);
-}
-
-EAPI int
-ecore_x_netwm_window_types_get(Ecore_X_Window win,
- Ecore_X_Window_Type **types)
-{
- int num = 0, i = 0;
- Ecore_X_Atom *atoms = NULL;
- Ecore_X_Window_Type *atoms2 = NULL;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (types) *types = NULL;
- num =
- ecore_x_window_prop_atom_list_get(win, ECORE_X_ATOM_NET_WM_WINDOW_TYPE,
- &atoms);
- if ((num <= 0) || (!atoms))
- {
- if (atoms) free(atoms);
- return 0;
- }
-
- atoms2 = malloc(num * sizeof(Ecore_X_Window_Type));
- if (!atoms2)
- {
- if (atoms) free(atoms);
- return 0;
- }
-
- for (i = 0; i < num; i++)
- atoms2[i] = _ecore_xcb_netwm_window_type_type_get(atoms[i]);
- if (atoms) free(atoms);
-
- if (types)
- *types = atoms2;
- else
- free(atoms2);
-
- return num;
-}
-
-EAPI int
-ecore_x_netwm_name_get(Ecore_X_Window win,
- char **name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (name)
- *name = ecore_x_window_prop_string_get(win, ECORE_X_ATOM_NET_WM_NAME);
- return 1;
-}
-
-EAPI void
-ecore_x_netwm_name_set(Ecore_X_Window win,
- const char *name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_string_set(win, ECORE_X_ATOM_NET_WM_NAME, name);
-}
-
-EAPI void
-ecore_x_netwm_opacity_set(Ecore_X_Window win,
- unsigned int opacity)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY,
- &opacity, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_opacity_get(Ecore_X_Window win,
- unsigned int *opacity)
-{
- unsigned int tmp = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_WINDOW_OPACITY,
- &tmp, 1))
- return EINA_FALSE;
-
- if (opacity) *opacity = tmp;
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_wm_identify(Ecore_X_Window root,
- Ecore_X_Window check,
- const char *wm_name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(check, ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK,
- &check, 1);
- ecore_x_window_prop_string_set(check, ECORE_X_ATOM_NET_WM_NAME, wm_name);
- ecore_x_window_prop_string_set(root, ECORE_X_ATOM_NET_WM_NAME, wm_name);
- ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_SUPPORTING_WM_CHECK,
- &check, 1);
-}
-
-EAPI void
-ecore_x_netwm_supported_set(Ecore_X_Window root,
- Ecore_X_Atom *supported,
- int num)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_atom_set(root, ECORE_X_ATOM_NET_SUPPORTED,
- supported, num);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_supported_get(Ecore_X_Window root,
- Ecore_X_Atom **supported,
- int *num)
-{
- int num_ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (num) *num = 0;
- if (supported) *supported = NULL;
-
- num_ret =
- ecore_x_window_prop_atom_list_get(root, ECORE_X_ATOM_NET_SUPPORTED,
- supported);
- if (num_ret <= 0) return EINA_FALSE;
- if (num) *num = num_ret;
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_desk_count_set(Ecore_X_Window root,
- unsigned int n_desks)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_NUMBER_OF_DESKTOPS,
- &n_desks, 1);
-}
-
-EAPI void
-ecore_x_netwm_desk_roots_set(Ecore_X_Window root,
- Ecore_X_Window *vroots,
- unsigned int n_desks)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_VIRTUAL_ROOTS,
- vroots, n_desks);
-}
-
-EAPI void
-ecore_x_netwm_desk_names_set(Ecore_X_Window root,
- const char **names,
- unsigned int n_desks)
-{
- char ss[32], *buf = NULL, *t = NULL;
- const char *s;
- uint32_t len = 0, i, l;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- for (i = 0; i < n_desks; i++)
- {
- s = ((names) ? names[i] : NULL);
- if (!s)
- {
- /* Default to "Desk-<number>" */
- sprintf(ss, "Desk-%d", i);
- s = ss;
- }
-
- l = strlen(s) + 1;
- t = realloc(buf, len + 1);
- if (t)
- {
- buf = t;
- memcpy(buf + len, s, l);
- }
- len += l;
- }
-
- xcb_change_property(_ecore_xcb_conn, XCB_PROP_MODE_REPLACE, root,
- ECORE_X_ATOM_NET_DESKTOP_NAMES,
- ECORE_X_ATOM_UTF8_STRING, 8, len, (const void *)buf);
-// ecore_x_flush();
- free(buf);
-}
-
-EAPI void
-ecore_x_netwm_desk_size_set(Ecore_X_Window root,
- unsigned int width,
- unsigned int height)
-{
- uint32_t size[2];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- size[0] = width;
- size[1] = height;
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_GEOMETRY,
- size, 2);
-}
-
-EAPI void
-ecore_x_netwm_desk_viewports_set(Ecore_X_Window root,
- unsigned int *origins,
- unsigned int n_desks)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_VIEWPORT,
- origins, (2 * n_desks));
-}
-
-EAPI void
-ecore_x_netwm_desk_layout_set(Ecore_X_Window root,
- int orientation,
- int columns,
- int rows,
- int starting_corner)
-{
- unsigned int layout[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- layout[0] = orientation;
- layout[1] = columns;
- layout[2] = rows;
- layout[3] = starting_corner;
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_DESKTOP_LAYOUT,
- layout, 4);
-}
-
-EAPI void
-ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
- unsigned int *areas,
- unsigned int n_desks)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_WORKAREA, areas,
- 4 * n_desks);
-}
-
-EAPI unsigned int *
-ecore_x_netwm_desk_workareas_get(Ecore_X_Window root, unsigned int *n_desks)
-{
- int ret;
- unsigned int *areas = NULL;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- ret = ecore_x_window_prop_card32_list_get(root, ECORE_X_ATOM_NET_WORKAREA,
- &areas);
- if (!areas)
- {
- if (n_desks) *n_desks = 0;
- return 0;
- }
- if (n_desks) *n_desks = ret / 4;
- return areas;
-}
-
-EAPI void
-ecore_x_netwm_desk_current_set(Ecore_X_Window root,
- unsigned int desk)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_CURRENT_DESKTOP,
- &desk, 1);
-}
-
-EAPI void
-ecore_x_netwm_showing_desktop_set(Ecore_X_Window root,
- Eina_Bool on)
-{
- unsigned int val = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- val = ((on) ? 1 : 0);
- ecore_x_window_prop_card32_set(root, ECORE_X_ATOM_NET_SHOWING_DESKTOP,
- &val, 1);
-}
-
-EAPI int
-ecore_x_netwm_startup_id_get(Ecore_X_Window win,
- char **id)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (id)
- {
- *id =
- ecore_x_window_prop_string_get(win, ECORE_X_ATOM_NET_STARTUP_ID);
- }
-
- return 1;
-}
-
-EAPI void
-ecore_x_netwm_startup_id_set(Ecore_X_Window win,
- const char *id)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_string_set(win, ECORE_X_ATOM_NET_STARTUP_ID, id);
-}
-
-EAPI void
-ecore_x_netwm_state_request_send(Ecore_X_Window win,
- Ecore_X_Window root,
- Ecore_X_Window_State s1,
- Ecore_X_Window_State s2,
- Eina_Bool set)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return;
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_NET_WM_STATE;
- ev.data.data32[0] = !!set;
- ev.data.data32[1] = _ecore_xcb_netwm_window_state_atom_get(s1);
- ev.data.data32[2] = _ecore_xcb_netwm_window_state_atom_get(s2);
- /* 1 == normal client, if used in a pager this should be 2 */
- ev.data.data32[3] = 1;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_netwm_window_state_set(Ecore_X_Window win,
- Ecore_X_Window_State *state,
- unsigned int num)
-{
- Ecore_X_Atom *set;
- unsigned int i = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!num)
- {
- ecore_x_window_prop_property_del(win, ECORE_X_ATOM_NET_WM_STATE);
- return;
- }
-
- set = malloc(num * sizeof(Ecore_X_Atom));
- if (!set) return;
-
- for (i = 0; i < num; i++)
- set[i] = _ecore_xcb_netwm_window_state_atom_get(state[i]);
-
- ecore_x_window_prop_atom_set(win, ECORE_X_ATOM_NET_WM_STATE, set, num);
- free(set);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_window_state_get(Ecore_X_Window win,
- Ecore_X_Window_State **state,
- unsigned int *num)
-{
- Ecore_X_Atom *atoms;
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (num) *num = 0;
- if (state) *state = NULL;
-
- ret =
- ecore_x_window_prop_atom_list_get(win, ECORE_X_ATOM_NET_WM_STATE, &atoms);
-
- if (ret <= 0) return EINA_FALSE;
-
- if (state)
- {
- *state = malloc(ret * sizeof(Ecore_X_Window_State));
- if (*state)
- {
- int i = 0;
-
- for (i = 0; i < ret; i++)
- (*state)[i] = _ecore_xcb_netwm_window_state_get(atoms[i]);
- if (num) *num = ret;
- }
- }
-
- free(atoms);
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_client_active_set(Ecore_X_Window root,
- Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(root,
- ECORE_X_ATOM_NET_ACTIVE_WINDOW, &win, 1);
-}
-
-EAPI void
-ecore_x_netwm_client_active_request(Ecore_X_Window root,
- Ecore_X_Window win,
- int type,
- Ecore_X_Window current_win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_NET_ACTIVE_WINDOW;
- ev.data.data32[0] = type;
- ev.data.data32[1] = XCB_CURRENT_TIME;
- ev.data.data32[2] = current_win;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_netwm_client_list_set(Ecore_X_Window root,
- Ecore_X_Window *p_clients,
- unsigned int n_clients)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_CLIENT_LIST,
- p_clients, n_clients);
-}
-
-EAPI void
-ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root,
- Ecore_X_Window *p_clients,
- unsigned int n_clients)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_window_set(root, ECORE_X_ATOM_NET_CLIENT_LIST_STACKING,
- p_clients, n_clients);
-}
-
-EAPI Eina_Bool
-ecore_x_screen_is_composited(int screen)
-{
- char buff[32];
- xcb_get_selection_owner_cookie_t ocookie;
- xcb_get_selection_owner_reply_t *oreply;
- xcb_intern_atom_cookie_t acookie;
- xcb_intern_atom_reply_t *areply;
- Ecore_X_Window win;
- Ecore_X_Atom atom;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- snprintf(buff, sizeof(buff), "_NET_WM_CM_S%i", screen);
- acookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 1, strlen(buff), buff);
- areply = xcb_intern_atom_reply(_ecore_xcb_conn, acookie, NULL);
- if (!areply) return EINA_FALSE;
- atom = areply->atom;
- free(areply);
- if (atom == XCB_NONE) return EINA_FALSE;
- ocookie = xcb_get_selection_owner_unchecked(_ecore_xcb_conn, atom);
- oreply = xcb_get_selection_owner_reply(_ecore_xcb_conn, ocookie, NULL);
- if (!oreply) return EINA_FALSE;
- win = oreply->owner;
- free(oreply);
- return (win != XCB_NONE) ? EINA_TRUE : EINA_FALSE;
-}
-
-EAPI void
-ecore_x_screen_is_composited_set(int screen,
- Ecore_X_Window win)
-{
- Ecore_X_Atom atom;
- xcb_intern_atom_cookie_t acookie;
- xcb_intern_atom_reply_t *areply;
- char buff[32];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- snprintf(buff, sizeof(buff), "_NET_WM_CM_S%i", screen);
- acookie = xcb_intern_atom_unchecked(_ecore_xcb_conn, 0, strlen(buff), buff);
- areply = xcb_intern_atom_reply(_ecore_xcb_conn, acookie, NULL);
- if (!areply) return;
- atom = areply->atom;
- free(areply);
- xcb_set_selection_owner(_ecore_xcb_conn, win, atom,
- _ecore_xcb_events_last_time_get());
-}
-
-EAPI void
-ecore_x_netwm_ping_send(Ecore_X_Window win)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return;
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_WM_PROTOCOLS;
- ev.data.data32[0] = ECORE_X_ATOM_NET_WM_PING;
- ev.data.data32[1] = ecore_x_current_time_get();
- ev.data.data32[2] = win;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_netwm_frame_size_set(Ecore_X_Window win,
- int fl,
- int fr,
- int ft,
- int fb)
-{
- uint32_t frames[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- frames[0] = fl;
- frames[1] = fr;
- frames[2] = ft;
- frames[3] = fb;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_FRAME_EXTENTS,
- frames, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_frame_size_get(Ecore_X_Window win,
- int *fl,
- int *fr,
- int *ft,
- int *fb)
-{
- int ret = 0;
- unsigned int frames[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret = ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_FRAME_EXTENTS,
- frames, 4);
- if (ret != 4) return EINA_FALSE;
-
- if (fl) *fl = frames[0];
- if (fr) *fr = frames[1];
- if (ft) *ft = frames[2];
- if (fb) *fb = frames[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_sync_request_send(Ecore_X_Window win,
- unsigned int serial)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!win) return;
-
- /* FIXME: Maybe need XSyncIntToValue ?? */
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_WM_PROTOCOLS;
- ev.data.data32[0] = ECORE_X_ATOM_NET_WM_SYNC_REQUEST;
- ev.data.data32[1] = _ecore_xcb_events_last_time_get();
- ev.data.data32[2] = serial;
- ev.data.data32[3] = 0;
- ev.data.data32[4] = 0;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- XCB_EVENT_MASK_NO_EVENT, (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_netwm_desktop_set(Ecore_X_Window win,
- unsigned int desk)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_DESKTOP, &desk, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_desktop_get(Ecore_X_Window win,
- unsigned int *desk)
-{
- unsigned int tmp = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_DESKTOP,
- &tmp, 1))
- return EINA_FALSE;
-
- if (desk) *desk = tmp;
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_desktop_request_send(Ecore_X_Window win,
- Ecore_X_Window root,
- unsigned int desktop)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- if (!root) root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_NET_WM_DESKTOP;
- ev.data.data32[0] = desktop;
-
- xcb_send_event(_ecore_xcb_conn, 0, root,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-// ecore_x_flush();
-}
-
-EAPI void
-ecore_x_netwm_moveresize_request_send(Ecore_X_Window win,
- int x,
- int y,
- Ecore_X_Netwm_Direction direction,
- unsigned int button)
-{
- xcb_client_message_event_t ev;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- CHECK_XCB_CONN;
-
- memset(&ev, 0, sizeof(xcb_client_message_event_t));
-
- ev.response_type = XCB_CLIENT_MESSAGE;
- ev.format = 32;
- ev.window = win;
- ev.type = ECORE_X_ATOM_NET_WM_MOVERESIZE;
- ev.data.data32[0] = x;
- ev.data.data32[1] = y;
- ev.data.data32[2] = direction;
- ev.data.data32[3] = button;
- ev.data.data32[4] = 1;
-
- xcb_send_event(_ecore_xcb_conn, 0, win,
- (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT |
- XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY), (const char *)&ev);
-}
-
-EAPI void
-ecore_x_netwm_handled_icons_set(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_HANDLED_ICONS,
- NULL, 0);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_handled_icons_get(Ecore_X_Window win)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_HANDLED_ICONS,
- NULL, 0))
- return EINA_FALSE;
-
- return EINA_TRUE;
-}
-
-EAPI int
-ecore_x_netwm_icon_name_get(Ecore_X_Window win,
- char **name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (name)
- {
- *name =
- ecore_x_window_prop_string_get(win, ECORE_X_ATOM_NET_WM_ICON_NAME);
- }
-
- return 1;
-}
-
-EAPI void
-ecore_x_netwm_icon_name_set(Ecore_X_Window win,
- const char *name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_string_set(win, ECORE_X_ATOM_NET_WM_ICON_NAME, name);
-}
-
-EAPI void
-ecore_x_netwm_icons_set(Ecore_X_Window win,
- Ecore_X_Icon *icon,
- int num)
-{
- unsigned int *data, *p, *p2;
- unsigned int i, size, x, y;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
- size = 0;
- for (i = 0; i < (unsigned int)num; i++)
- {
- size += 2 + (icon[i].width * icon[i].height);
- }
- data = malloc(size * sizeof(unsigned int));
- if (!data) return;
- p = data;
- for (i = 0; i < (unsigned int)num; i++)
- {
- p[0] = icon[i].width;
- p[1] = icon[i].height;
- p += 2;
- p2 = icon[i].data;
- for (y = 0; y < icon[i].height; y++)
- {
- for (x = 0; x < icon[i].width; x++)
- {
- unsigned int r, g, b, a;
-
- a = (*p2 >> 24) & 0xff;
- r = (*p2 >> 16) & 0xff;
- g = (*p2 >> 8 ) & 0xff;
- b = (*p2 ) & 0xff;
- if ((a > 0) && (a < 255))
- {
- r = (r * 255) / a;
- g = (g * 255) / a;
- b = (b * 255) / a;
- }
- *p = (a << 24) | (r << 16) | (g << 8) | b;
- p++;
- p2++;
- }
- }
- }
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_ICON,
- data, size);
- free(data);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_icons_get(Ecore_X_Window win,
- Ecore_X_Icon **icon,
- int *num)
-{
- int num_ret = 0;
- unsigned int i = 0, len = 0, icons = 0;
- unsigned int *data, *p, *src;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (num) *num = 0;
- if (icon) *icon = NULL;
-
- num_ret =
- ecore_x_window_prop_card32_list_get(win, ECORE_X_ATOM_NET_WM_ICON, &data);
-
- if ((num_ret <= 0) || (!data))
- {
- if (data) free(data);
- return EINA_FALSE;
- }
- if (num_ret < 2)
- {
- if (data) free(data);
- return EINA_FALSE;
- }
-
- icons = 0;
- p = data;
- while (p)
- {
- len = (p[0] * p[1]);
- p += (len + 2);
- if ((p - data) > num_ret)
- {
- if (data) free(data);
- return EINA_FALSE;
- }
- icons++;
- if ((p - data) == num_ret) p = NULL;
- }
- if (num) *num = icons;
- if (!icon)
- {
- if (data) free(data);
- return EINA_TRUE;
- }
-
- *icon = malloc(icons * sizeof(Ecore_X_Icon));
- if (!(*icon))
- {
- if (data) free(data);
- return EINA_FALSE;
- }
-
- /* Fetch the icons */
- p = data;
- for (i = 0; i < icons; i++)
- {
- unsigned int *ps, *pd, *pe;
-
- len = p[0] * p[1];
- ((*icon)[i]).width = p[0];
- ((*icon)[i]).height = p[1];
- src = &(p[2]);
- ((*icon)[i]).data = malloc(len * sizeof(unsigned int));
- if (!((*icon)[i]).data)
- {
- while (i)
- free(((*icon)[--i]).data);
- free(*icon);
- free(data);
- return EINA_FALSE;
- }
-
- pd = ((*icon)[i]).data;
- ps = src;
- pe = ps + len;
- for (; ps < pe; ps++)
- {
- unsigned int r, g, b, a;
-
- a = (*ps >> 24) & 0xff;
- r = (((*ps >> 16) & 0xff) * a) / 255;
- g = (((*ps >> 8) & 0xff) * a) / 255;
- b = (((*ps) & 0xff) * a) / 255;
- *pd = (a << 24) | (r << 16) | (g << 8) | (b);
- pd++;
- }
- p += (len + 2);
- }
-
- if (data) free(data);
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_icon_geometry_set(Ecore_X_Window win,
- int x,
- int y,
- int w,
- int h)
-{
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- geom[0] = x;
- geom[1] = y;
- geom[2] = w;
- geom[3] = h;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_ICON_GEOMETRY,
- geom, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_icon_geometry_get(Ecore_X_Window win,
- int *x,
- int *y,
- int *w,
- int *h)
-{
- int ret = 0;
- unsigned int geom[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret =
- ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_ICON_GEOMETRY,
- geom, 4);
- if (ret != 4) return EINA_FALSE;
- if (x) *x = geom[0];
- if (y) *y = geom[1];
- if (w) *w = geom[2];
- if (h) *h = geom[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_strut_set(Ecore_X_Window win,
- int l,
- int r,
- int t,
- int b)
-{
- unsigned int strut[4];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- strut[0] = l;
- strut[1] = r;
- strut[2] = t;
- strut[3] = b;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_STRUT, strut, 4);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_strut_get(Ecore_X_Window win,
- int *l,
- int *r,
- int *t,
- int *b)
-{
- unsigned int strut[4];
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret =
- ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_STRUT, strut, 4);
- if (ret != 4) return EINA_FALSE;
-
- if (l) *l = strut[0];
- if (r) *r = strut[1];
- if (t) *t = strut[2];
- if (b) *b = strut[3];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_strut_partial_set(Ecore_X_Window win,
- int left,
- int right,
- int top,
- int bottom,
- int left_start_y,
- int left_end_y,
- int right_start_y,
- int right_end_y,
- int top_start_x,
- int top_end_x,
- int bottom_start_x,
- int bottom_end_x)
-{
- unsigned int strut[12];
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- strut[0] = left;
- strut[1] = right;
- strut[2] = top;
- strut[3] = bottom;
- strut[4] = left_start_y;
- strut[5] = left_end_y;
- strut[6] = right_start_y;
- strut[7] = right_end_y;
- strut[8] = top_start_x;
- strut[9] = top_end_x;
- strut[10] = bottom_start_x;
- strut[11] = bottom_end_x;
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_STRUT_PARTIAL,
- strut, 12);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_strut_partial_get(Ecore_X_Window win,
- int *left,
- int *right,
- int *top,
- int *bottom,
- int *left_start_y,
- int *left_end_y,
- int *right_start_y,
- int *right_end_y,
- int *top_start_x,
- int *top_end_x,
- int *bottom_start_x,
- int *bottom_end_x)
-{
- unsigned int strut[12];
- int ret = 0;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ret =
- ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_STRUT_PARTIAL,
- strut, 12);
- if (ret != 12) return EINA_FALSE;
-
- if (left) *left = strut[0];
- if (right) *right = strut[1];
- if (top) *top = strut[2];
- if (bottom) *bottom = strut[3];
- if (left_start_y) *left_start_y = strut[4];
- if (left_end_y) *left_end_y = strut[5];
- if (right_start_y) *right_start_y = strut[6];
- if (right_end_y) *right_end_y = strut[7];
- if (top_start_x) *top_start_x = strut[8];
- if (top_end_x) *top_end_x = strut[9];
- if (bottom_start_x) *bottom_start_x = strut[10];
- if (bottom_end_x) *bottom_end_x = strut[11];
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_user_time_set(Ecore_X_Window win,
- unsigned int t)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_card32_set(win, ECORE_X_ATOM_NET_WM_USER_TIME, &t, 1);
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_user_time_get(Ecore_X_Window win,
- unsigned int *t)
-{
- unsigned int tmp;
-
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (!ecore_x_window_prop_card32_get(win, ECORE_X_ATOM_NET_WM_USER_TIME,
- &tmp, 1))
- return EINA_FALSE;
-
- if (t) *t = tmp;
-
- return EINA_TRUE;
-}
-
-EAPI void
-ecore_x_netwm_visible_name_set(Ecore_X_Window win,
- const char *name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_string_set(win, ECORE_X_ATOM_NET_WM_VISIBLE_NAME,
- name);
-}
-
-EAPI int
-ecore_x_netwm_visible_name_get(Ecore_X_Window win,
- char **name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (name)
- *name = ecore_x_window_prop_string_get(win,
- ECORE_X_ATOM_NET_WM_VISIBLE_NAME);
- return 1;
-}
-
-EAPI void
-ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win,
- const char *name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- ecore_x_window_prop_string_set(win, ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME,
- name);
-}
-
-EAPI int
-ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win,
- char **name)
-{
- LOGFN(__FILE__, __LINE__, __FUNCTION__);
-
- if (name)
- {
- *name =
- ecore_x_window_prop_string_get(win,
- ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME);
- }
-
- return 1;
-}
-
-EAPI Eina_Bool
-ecore_x_netwm_sync_counter_get(Ecore_X_Window win,