forked from enlightenment/efl
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
This commit is contained in:
parent
f399e77a92
commit
4ed2e01591
232
configure.ac
232
configure.ac
|
@ -1912,7 +1912,7 @@ EFL_LIB_START([Evas])
|
||||||
|
|
||||||
# X11
|
# X11
|
||||||
AC_ARG_WITH([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
|
if test "x${have_windows}" = "xyes" || test "x${have_ps3}" = "xyes" || test "x${have_darwin}" = "xyes"; then
|
||||||
with_x11="none"
|
with_x11="none"
|
||||||
|
@ -1921,7 +1921,6 @@ elif test "x${with_x11}" = "x"; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
want_x11_xlib="no"
|
want_x11_xlib="no"
|
||||||
want_x11_xcb="no"
|
|
||||||
want_x11_none="no"
|
want_x11_none="no"
|
||||||
want_x11_any="no"
|
want_x11_any="no"
|
||||||
case "${with_x11}" in
|
case "${with_x11}" in
|
||||||
|
@ -1929,11 +1928,6 @@ case "${with_x11}" in
|
||||||
want_x11_xlib="yes"
|
want_x11_xlib="yes"
|
||||||
want_x11_any="yes"
|
want_x11_any="yes"
|
||||||
;;
|
;;
|
||||||
xcb)
|
|
||||||
want_x11_xcb="yes"
|
|
||||||
want_x11_any="yes"
|
|
||||||
CFOPT_WARNING="xyes"
|
|
||||||
;;
|
|
||||||
none)
|
none)
|
||||||
want_x11_none="yes"
|
want_x11_none="yes"
|
||||||
;;
|
;;
|
||||||
|
@ -1961,10 +1955,8 @@ case "${with_opengl}" in
|
||||||
esac
|
esac
|
||||||
|
|
||||||
want_x11_xlib_opengl="no"
|
want_x11_xlib_opengl="no"
|
||||||
want_x11_xcb_opengl="no"
|
|
||||||
if test "${with_opengl}" != "none"; then
|
if test "${with_opengl}" != "none"; then
|
||||||
want_x11_xlib_opengl="${want_x11_xlib}"
|
want_x11_xlib_opengl="${want_x11_xlib}"
|
||||||
want_x11_xcb_opengl="${want_x11_xcb}"
|
|
||||||
want_x11_any_opengl="${want_x11_any}"
|
want_x11_any_opengl="${want_x11_any}"
|
||||||
fi
|
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])
|
EVAS_CHECK_ENGINE([eglfs], [${want_eglfs}], [no], [OpenGL Fb])
|
||||||
|
|
||||||
|
|
||||||
# Software XCB
|
# Software Xlib
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
have_evas_engine_software_xlib="no"
|
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])
|
||||||
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
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build Software Xlib Engine])
|
AC_MSG_CHECKING([whether to build Software Xlib Engine])
|
||||||
AC_MSG_RESULT([${have_evas_engine_software_xlib}])
|
AC_MSG_RESULT([${have_evas_engine_software_xlib}])
|
||||||
|
|
||||||
# If software_x11 is available, define everything needed for X11
|
# If software_x11 is available, define everything needed for X11
|
||||||
|
|
||||||
have_evas_engine_software_x11="no"
|
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"
|
have_evas_engine_software_x11="yes"
|
||||||
AC_DEFINE_UNQUOTED([BUILD_ENGINE_SOFTWARE_X11], [1], [Build software X11 engine])
|
AC_DEFINE_UNQUOTED([BUILD_ENGINE_SOFTWARE_X11], [1], [Build software X11 engine])
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_X11], [test "x${have_evas_engine_software_x11}" = "xyes"])
|
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])
|
AC_DEFINE_UNQUOTED([EVAS_STATIC_BUILD_SOFTWARE_X11], [1], [Build software X11 engine as part of libevas])
|
||||||
fi
|
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
|
# Needed for evas-software-x11.pc
|
||||||
|
|
||||||
AC_SUBST([have_evas_engine_software_xlib])
|
AC_SUBST([have_evas_engine_software_xlib])
|
||||||
AC_SUBST([have_evas_engine_software_xcb])
|
|
||||||
|
|
||||||
# Software generic
|
# Software generic
|
||||||
AC_DEFINE([EVAS_STATIC_BUILD_SOFTWARE_GENERIC], [1], [Build software generic engine as part of libevas])
|
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])
|
AC_DEFINE(GL_GLES, 1, [GLSL runtime shader GLES2 support])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# OpenGL XCB
|
# OpenGL Xlib
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
have_evas_engine_gl_xlib="no"
|
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])
|
||||||
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
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build OpenGL Xlib Engine])
|
AC_MSG_CHECKING([whether to build OpenGL Xlib Engine])
|
||||||
AC_MSG_RESULT([${have_evas_engine_gl_xlib}])
|
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
|
# If opengl_x11 is available, define everything needed for X11
|
||||||
|
|
||||||
have_evas_engine_gl_x11="no"
|
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"
|
have_evas_engine_gl_x11="yes"
|
||||||
AC_DEFINE_UNQUOTED([BUILD_ENGINE_GL_X11], [1], [Build OpenGL X11 engine])
|
AC_DEFINE_UNQUOTED([BUILD_ENGINE_GL_X11], [1], [Build OpenGL X11 engine])
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([BUILD_ENGINE_GL_X11], [test "x${have_evas_engine_gl_x11}" = "xyes"])
|
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])
|
AC_DEFINE_UNQUOTED([EVAS_STATIC_BUILD_GL_X11], [1], [Build OpenGL X11 engine as part of libevas])
|
||||||
fi
|
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
|
# Needed for evas-opengl-x11.pc
|
||||||
|
|
||||||
AC_SUBST([have_evas_engine_gl_xlib])
|
AC_SUBST([have_evas_engine_gl_xlib])
|
||||||
AC_SUBST([have_evas_engine_gl_xcb])
|
|
||||||
|
|
||||||
# OpenGL SDL
|
# OpenGL SDL
|
||||||
|
|
||||||
|
@ -2679,7 +2632,6 @@ AC_SUBST([evas_engine_gl_common_libs])
|
||||||
have_evas_engine_gl_common="no"
|
have_evas_engine_gl_common="no"
|
||||||
have_static_evas_engine_gl_common="no"
|
have_static_evas_engine_gl_common="no"
|
||||||
if test "x$have_evas_engine_gl_xlib" = "xyes" || \
|
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_sdl" = "xyes" || \
|
||||||
test "x$have_evas_engine_gl_cocoa" = "xyes" || \
|
test "x$have_evas_engine_gl_cocoa" = "xyes" || \
|
||||||
test "x$have_evas_engine_gl_drm" = "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"
|
have_evas_engine_gl_common="yes"
|
||||||
fi
|
fi
|
||||||
if test "x$have_evas_engine_gl_xlib" = "xstatic" || \
|
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_sdl" = "xstatic" || \
|
||||||
test "x$have_evas_engine_gl_cocoa" = "xstatic" || \
|
test "x$have_evas_engine_gl_cocoa" = "xstatic" || \
|
||||||
test "x$have_evas_engine_gl_drm" = "xstatic" || \
|
test "x$have_evas_engine_gl_drm" = "xstatic" || \
|
||||||
|
@ -4177,65 +4128,6 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_X], [eina])
|
||||||
|
|
||||||
## Xlib
|
## 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 types
|
||||||
|
|
||||||
### Checks for structures
|
### Checks for structures
|
||||||
|
@ -4302,54 +4194,6 @@ if test "x${want_x11_xlib}" = "xyes" ; then
|
||||||
EFL_CHECK_FUNCS([ECORE_X], [dlopen dlsym])
|
EFL_CHECK_FUNCS([ECORE_X], [dlopen dlsym])
|
||||||
fi
|
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}])
|
EFL_ADD_LIBS([ECORE_X], [${ECORE_X_LIBS}])
|
||||||
|
|
||||||
AC_SUBST([HAVE_ECORE_X_BACKEND])
|
AC_SUBST([HAVE_ECORE_X_BACKEND])
|
||||||
|
@ -4357,7 +4201,6 @@ AC_SUBST([HAVE_ECORE_X_BACKEND])
|
||||||
EFL_LIB_END_OPTIONAL([Ecore_X])
|
EFL_LIB_END_OPTIONAL([Ecore_X])
|
||||||
|
|
||||||
AM_CONDITIONAL([HAVE_ECORE_X_XLIB], [test "${want_x11_xlib}" = "yes"])
|
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
|
#### End of Ecore_X
|
||||||
|
|
||||||
|
|
||||||
|
@ -4610,7 +4453,6 @@ AM_CONDITIONAL([BUILD_ECORE_EVAS_WIN32],
|
||||||
ECORE_EVAS_MODULE([software-x11], [${want_x11_any}])
|
ECORE_EVAS_MODULE([software-x11], [${want_x11_any}])
|
||||||
|
|
||||||
have_ecore_evas_software_xlib="no"
|
have_ecore_evas_software_xlib="no"
|
||||||
have_ecore_evas_software_xcb="no"
|
|
||||||
if test "x$have_ecore_evas_software_x11" = "xyes" ; then
|
if test "x$have_ecore_evas_software_x11" = "xyes" ; then
|
||||||
have_ecore_evas_software_xlib=${have_evas_engine_software_xlib}
|
have_ecore_evas_software_xlib=${have_evas_engine_software_xlib}
|
||||||
if test "x${have_ecore_evas_software_xlib}" = "xstatic"; then
|
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
|
if test "x${have_ecore_evas_software_xlib}" = "xyes"; then
|
||||||
AC_DEFINE([BUILD_ECORE_EVAS_SOFTWARE_XLIB], [1], [Evas Software Xlib Engine Support])
|
AC_DEFINE([BUILD_ECORE_EVAS_SOFTWARE_XLIB], [1], [Evas Software Xlib Engine Support])
|
||||||
fi
|
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
|
fi
|
||||||
|
|
||||||
# XXX TODO: ecore_evas_opengl_x11
|
# XXX TODO: ecore_evas_opengl_x11
|
||||||
|
@ -4633,39 +4468,17 @@ fi
|
||||||
ECORE_EVAS_MODULE([opengl-x11], [${want_x11_any_opengl}])
|
ECORE_EVAS_MODULE([opengl-x11], [${want_x11_any_opengl}])
|
||||||
|
|
||||||
have_ecore_evas_opengl_xlib="no"
|
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
|
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}
|
have_ecore_evas_opengl_xlib=${have_evas_engine_gl_xlib}
|
||||||
if test "x${have_ecore_evas_opengl_xlib}" = "xyes" ; then
|
if test "x${have_ecore_evas_opengl_xlib}" = "xyes" ; then
|
||||||
AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_XLIB], [1], [OpenGL Xlib rendering backend])
|
AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_XLIB], [1], [OpenGL Xlib rendering backend])
|
||||||
fi
|
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
|
fi
|
||||||
|
|
||||||
build_ecore_evas_x11="no"
|
build_ecore_evas_x11="no"
|
||||||
build_ecore_evas_vnc="no"
|
build_ecore_evas_vnc="no"
|
||||||
if test "x$have_ecore_evas_software_x11" = "xyes" || \
|
if test "x$have_ecore_evas_software_x11" = "xyes" || \
|
||||||
test "x$have_ecore_evas_opengl_x11" = "xyes" || \
|
test "x$have_ecore_evas_opengl_x11" = "xyes"; then
|
||||||
test "x$have_ecore_evas_software_xcb" = "xyes"; then
|
|
||||||
AC_DEFINE([BUILD_ECORE_EVAS_X11], [1], [Support for X Window Engines in Ecore_Evas])
|
AC_DEFINE([BUILD_ECORE_EVAS_X11], [1], [Support for X Window Engines in Ecore_Evas])
|
||||||
build_ecore_evas_x11="yes"
|
build_ecore_evas_x11="yes"
|
||||||
if test "$want_vnc_server" = "yes"; then
|
if test "$want_vnc_server" = "yes"; then
|
||||||
|
@ -6062,27 +5875,6 @@ if test -n "$CFOPT_WARNING"; then
|
||||||
echo "==-- WARNING --=="
|
echo "==-- WARNING --=="
|
||||||
echo ""
|
echo ""
|
||||||
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
|
if test "x${want_physics}" = "xno"; then
|
||||||
echo "_____________________________________________________________________"
|
echo "_____________________________________________________________________"
|
||||||
echo "You have chosen to disable physics support. This disables lots of"
|
echo "You have chosen to disable physics support. This disables lots of"
|
||||||
|
|
|
@ -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]])
|
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],
|
AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI],
|
||||||
|
|
|
@ -3,4 +3,3 @@ Description: Evas OpenGL X11 engine
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
|
|
||||||
Xlib=@have_evas_engine_gl_xlib@
|
Xlib=@have_evas_engine_gl_xlib@
|
||||||
XCB=@have_evas_engine_gl_xcb@
|
|
||||||
|
|
|
@ -3,4 +3,3 @@ Description: Evas software X11 engine
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
|
|
||||||
Xlib=@have_evas_engine_software_xlib@
|
Xlib=@have_evas_engine_software_xlib@
|
||||||
XCB=@have_evas_engine_software_xcb@
|
|
||||||
|
|
30
po/ca.po
30
po/ca.po
|
@ -9,7 +9,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Elementary\n"
|
"Project-Id-Version: Elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2015-02-10 09:34+0000\n"
|
||||||
"Last-Translator: JoanColl <Unknown>\n"
|
"Last-Translator: JoanColl <Unknown>\n"
|
||||||
"Language-Team: Catalan\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERROR: opció desconeguda --%s, s'ha ignorat.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERROR: l'opció --%s requereix un 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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERROR: opció desconeguda -%c, s'ha ignorat.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERROR: L'opció -%c requereix un 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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "ERROR: es requereix argument posicional %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr "ERROR: acció no permesa %d per argument posicional %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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERROR: no s'ha proporcionat cap analitzador.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERROR: no s'ha proporcionat cap valor.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERROR: no s'ha proporcionat cap argument.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERROR: s'han trobat opcions no vàlides."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Miri --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Miri -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "ERROR: arguments posicionals no vàlids."
|
msgstr "ERROR: arguments posicionals no vàlids."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERROR: valor geomètric incorrecte '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERROR: tamany incorrecte '%s'\n"
|
msgstr "ERROR: tamany incorrecte '%s'\n"
|
||||||
|
|
30
po/cs.po
30
po/cs.po
|
@ -10,7 +10,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-05-22 22:44+0200\n"
|
||||||
"Last-Translator: Tomáš Čech <sleep_walker@suse.cz>\n"
|
"Last-Translator: Tomáš Čech <sleep_walker@suse.cz>\n"
|
||||||
"Language-Team: Czech <kde-i18n-doc@kde.org>\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "CHYBA: neznámá volba --%s, ignoruji.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "CHYBA: volba --%s vyžaduje 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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "CHYBA: neznámá volba -%c, ignoruji.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "CHYBA: volba -%c vyžaduje 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
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "CHYBA: volba -%c vyžaduje argument!\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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "CHYBA: nebyl poskytnut parser.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "CHYBA: nebyly poskytnuty hodnoty.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "CHYBA: nebyly poskytnuty argumenty.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "CHYBA: nalezeny neplatné volby."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Viz --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Viz -%c.\n"
|
msgstr " Viz -%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "CHYBA: nalezeny neplatné volby."
|
msgstr "CHYBA: nalezeny neplatné volby."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "CHYBA: neplatná hodnota geometrie '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "CHYBA: neplatná hodnota velikosti '%s'\n"
|
msgstr "CHYBA: neplatná hodnota velikosti '%s'\n"
|
||||||
|
|
30
po/de.po
30
po/de.po
|
@ -9,7 +9,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary 0.7.0.57309\n"
|
"Project-Id-Version: elementary 0.7.0.57309\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2011-02-25 20:22+0100\n"
|
||||||
"Last-Translator: Fabian Nowak <timystery@arcor.de>\n"
|
"Last-Translator: Fabian Nowak <timystery@arcor.de>\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
|
@ -143,68 +143,68 @@ msgstr "es wurde keine Lizenz angegeben.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "FEHLER: Unbekannte Option --%s, ignoriert\n"
|
msgstr "FEHLER: Unbekannte Option --%s, ignoriert\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "FEHLER: Option --%s benötigt ein 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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "FEHLER: Unbekannte Option -%c, ignoriert\n"
|
msgstr "FEHLER: Unbekannte Option -%c, ignoriert\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "FEHLER: Option -%c benötigt ein 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
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "FEHLER: Option -%c benötigt ein Argument!\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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "FEHLER: Kein Parser bereitgestellt.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "FEHLER: Keine Werte bereitgestellt.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "FEHLER: Keine Argumente bereitgestellt.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "FEHLER: Ungültige Optionen gefunden."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Siehe --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Siehe -%c\n"
|
msgstr " Siehe -%c\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "FEHLER: Ungültige Optionen gefunden."
|
msgstr "FEHLER: Ungültige Optionen gefunden."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "FEHLER: Falscher Geometriewert \"%s\"\n"
|
msgstr "FEHLER: Falscher Geometriewert \"%s\"\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "FEHLER: Falscher Größenwert \"%s\"\n"
|
msgstr "FEHLER: Falscher Größenwert \"%s\"\n"
|
||||||
|
|
30
po/el.po
30
po/el.po
|
@ -11,7 +11,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary\n"
|
"Project-Id-Version: elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2012-12-19 15:58+0200\n"
|
||||||
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
|
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
|
||||||
"Language-Team: Ελληνικά, Σύγχρονα <opensuse-translation-el@opensuse.org>\n"
|
"Language-Team: Ελληνικά, Σύγχρονα <opensuse-translation-el@opensuse.org>\n"
|
||||||
|
@ -146,68 +146,68 @@ msgstr "δεν έχει οριστεί άδεια.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή --%s, αγνοήθηκε.\n"
|
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή --%s, αγνοήθηκε.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: η επιλογή --%s απαιτεί μια παράμετρο!\n"
|
msgstr "ΣΦΑΛΜΑ: η επιλογή --%s απαιτεί μια παράμετρο!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή -%c, αγνοήθηκε.\n"
|
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή -%c, αγνοήθηκε.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
|
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
|
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: δεν παρέχεται αναλυτής.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: δεν έχουν δοθεί τιμές.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ΣΦΑΛΜΑ:δεν έχουν δοθεί παράμετροι.\n"
|
msgstr "ΣΦΑΛΜΑ:δεν έχουν δοθεί παράμετροι.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Δείτε --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Δείτε -%c.\n"
|
msgstr " Δείτε -%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
|
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: μη έγκυρη γεωμετρική τιμή '%s'\n"
|
msgstr "ΣΦΑΛΜΑ: μη έγκυρη γεωμετρική τιμή '%s'\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ΣΦΑΛΜΑ: μη έγκυρη τιμή μεγέθους '%s'\n"
|
msgstr "ΣΦΑΛΜΑ: μη έγκυρη τιμή μεγέθους '%s'\n"
|
||||||
|
|
30
po/eo.po
30
po/eo.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: enlightenment\n"
|
"Project-Id-Version: enlightenment\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2013-11-05 18:59+0000\n"
|
||||||
"Last-Translator: Eliovir <Unknown>\n"
|
"Last-Translator: Eliovir <Unknown>\n"
|
||||||
"Language-Team: Esperanto <eo@li.org>\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERARO: nekonata opcio --%s. Ignorita.\n"
|
msgstr "ERARO: nekonata opcio --%s. Ignorita.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERARO: opcio --%s postulas argumenton!\n"
|
msgstr "ERARO: opcio --%s postulas argumenton!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERARO: nekonata opcio -%c. Ignorata.\n"
|
msgstr "ERARO: nekonata opcio -%c. Ignorata.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERARO: opcio -%c postulas argumenton!\n"
|
msgstr "ERARO: opcio -%c postulas argumenton!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "ERARO: nepra poziciaj argumento %s mankas.\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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr "ERARO: neeltena tipo de agado %d por pozicia argumento %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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERARO: neniu sintaksa analizilo provizita.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERARO: neniu valoro provizita.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERARO: neniu argumento provizita.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERARO: nevalidaj opcioj trovitaj."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Vidu --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Vidu -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "ERARO: nevalida poziciaj argumentoj trovitaj."
|
msgstr "ERARO: nevalida poziciaj argumentoj trovitaj."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERARO: nekorekta geometria valoro '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERARO: nekorekta valoro de grando '%s'\n"
|
msgstr "ERARO: nekorekta valoro de grando '%s'\n"
|
||||||
|
|
30
po/es.po
30
po/es.po
|
@ -9,7 +9,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary\n"
|
"Project-Id-Version: elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2015-05-03 18:19+0100\n"
|
||||||
"Last-Translator: Adrián Arévalo <adri58@gmail.com>\n"
|
"Last-Translator: Adrián Arévalo <adri58@gmail.com>\n"
|
||||||
"Language-Team: Enlightenment Team\n"
|
"Language-Team: Enlightenment Team\n"
|
||||||
|
@ -142,67 +142,67 @@ msgstr "no se definió la licencia.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERROR: opción desconocida --%s, ignorada.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERROR: La opción --%s requiere un argumento!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERROR: opción desconocida -%c, ignorada.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERROR: La opción -%c requiere un argumento!\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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "ERROR: Falta un argumento posicional requerido %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
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"
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERROR: no se proporcionó ningún parser.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERROR: no se proporcionó ningún valor.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERROR: no se proporcionó ningún argumento.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERROR: opciones inválidas."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Vea --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Vea -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "ERROR: argumentos posicionales inválidos encontrados."
|
msgstr "ERROR: argumentos posicionales inválidos encontrados."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERROR: valor geométrico incorrecto '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERROR: tamaño incorrecto '%s'\n"
|
msgstr "ERROR: tamaño incorrecto '%s'\n"
|
||||||
|
|
30
po/fi.po
30
po/fi.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: enlightenment\n"
|
"Project-Id-Version: enlightenment\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-08-31 15:13+0000\n"
|
||||||
"Last-Translator: Kai Huuhko <kai.huuhko@gmail.com>\n"
|
"Last-Translator: Kai Huuhko <kai.huuhko@gmail.com>\n"
|
||||||
"Language-Team: Finnish <fi@li.org>\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "VIRHE: tuntematon optio --%s, jätetty huomioimatta.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "VIRHE: optio --%s tarvitsee argumentin!\n"
|
msgstr "VIRHE: optio --%s tarvitsee argumentin!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "VIRHE: tuntematon optio -%c, jätetty huomioimatta.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "VIRHE: optio -%c tarvitsee argumentin\n"
|
msgstr "VIRHE: optio -%c tarvitsee argumentin\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "VIRHE: puuttuva pakollinen sija-argumentti %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr "VIRHE: toimintotyyppi %d ei ole tuettu sija-argumentille %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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "VIRHE: jäsennintä ei annettu.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "VIRHE: yhtään arvoa ei annettu.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "VIRHE: yhtään argumenttia ei annettu.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "VIRHE: virheellisiä optioita löydetty."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Katso --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Katso -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "VIRHE: virheellisiä sija-argumentteja löydetty."
|
msgstr "VIRHE: virheellisiä sija-argumentteja löydetty."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "VIRHE: virheellinen geometrinen arvo '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "VIRHE: virheellinen koon arvo '%s'\n"
|
msgstr "VIRHE: virheellinen koon arvo '%s'\n"
|
||||||
|
|
30
po/fr.po
30
po/fr.po
|
@ -11,7 +11,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Elementary\n"
|
"Project-Id-Version: Elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-05-25 20:18+0000\n"
|
||||||
"Last-Translator: Eliovir <Unknown>\n"
|
"Last-Translator: Eliovir <Unknown>\n"
|
||||||
"Language-Team: French <sansgourou@gmail.com>\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERREUR : option inconnue --%s, non prise en compte.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERREUR : l’option --%s requiert un 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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERREUR : option inconnue -%c, non prise en compte.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERREUR : l’option -%c requiert un 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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERREUR : aucun analyseur n’est fourni.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERREUR : aucune valeur n’est fournie.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERREUR : aucun argument n’est fourni.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERREUR : options non valides détectées."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Voir --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Voir -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERREUR : valeur géométrique incorrecte « %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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERREUR : valeur de taille incorrecte « %s »\n"
|
msgstr "ERREUR : valeur de taille incorrecte « %s »\n"
|
||||||
|
|
30
po/gl.po
30
po/gl.po
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary\n"
|
"Project-Id-Version: elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-05-24 08:39+0000\n"
|
||||||
"Last-Translator: Kaptan <khanyux@gmail.com>\n"
|
"Last-Translator: Kaptan <khanyux@gmail.com>\n"
|
||||||
"Language-Team: Galician <proxecto@trasno.net>\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERRO: opción descoñecida --%s, ignorada.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERRO: opción --%s require un argumento!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERRO: opción descoñecida -%c, ignorada.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERRO: opción -%c require un argumento!\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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERRO: non se forneceu ningún procesador.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERRO: non se forneceu ningún valor.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERRO: non se forneceu ningún argumento.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERRO: atopadas opcións inválidas."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Consulte --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Consulte -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERRO: valor xeométrico incorrecto '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERRO: valor do tamaño incorrecto '%s'\n"
|
msgstr "ERRO: valor do tamaño incorrecto '%s'\n"
|
||||||
|
|
30
po/hu.po
30
po/hu.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary 1.8.2\n"
|
"Project-Id-Version: elementary 1.8.2\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-01-29 15:27+0100\n"
|
||||||
"Last-Translator: rezso <rezso@rezso.net>\n"
|
"Last-Translator: rezso <rezso@rezso.net>\n"
|
||||||
"Language-Team: General\n"
|
"Language-Team: General\n"
|
||||||
|
@ -142,68 +142,68 @@ msgstr "Nincs definiált licenc.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "HIBA: ismeretlen opció: --%s, figyelmen kívül hagyva.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "HIBA: --%s opció argumentumot igényel.\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "HIBA: ismeretlen opció: -%c, figyelmen kívül hagyva.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "HIBA: -%c opció argumentumot igényel.\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
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "HIBA: -%c opció argumentumot igényel.\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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "HIBA: hiányzó parser.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "HIBA: hiányzó értékek.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "HIBA: hiányzó argumentumok.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "HIBA: érvénytelen opciók találhatók."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Lásd --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Lásd -%c.\n"
|
msgstr " Lásd -%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "HIBA: érvénytelen opciók találhatók."
|
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
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "HIBA: helytelen geometria érték: '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "HIBA: helytelen méret érték: '%s'\n"
|
msgstr "HIBA: helytelen méret érték: '%s'\n"
|
||||||
|
|
30
po/it.po
30
po/it.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Elementary\n"
|
"Project-Id-Version: Elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2015-06-11 14:19+0200\n"
|
||||||
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
|
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
|
||||||
"Language-Team: General\n"
|
"Language-Team: General\n"
|
||||||
|
@ -140,68 +140,68 @@ msgstr "nessuna licenza definita.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERRORE: opzione sconosciuta --%s, ignorata.\n"
|
msgstr "ERRORE: opzione sconosciuta --%s, ignorata.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERRORE: l'opzione --%s richiede un argomento!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERRORE: opzione sconosciuta -%c, ignorata.\n"
|
msgstr "ERRORE: opzione sconosciuta -%c, ignorata.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERRORE: l'opzione -%c richiede un argomento!\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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "ERRORE: manca l'argomento posizionale %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ERRORE: azione di tipo %d non supportata per argomento posizionale %s\n"
|
"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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERRORE: nessun parser fornito.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERRORE: nessun valore fornito.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERRORE: nessun argomento fornito.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERRORE: trovate opzioni non valide."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Vedere --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Vedere -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "ERRORE: trovati argomenti posizionali non validi."
|
msgstr "ERRORE: trovati argomenti posizionali non validi."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERRORE: valore geometrico non corretto '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERRORE: valore dimensione non corretto '%s'\n"
|
msgstr "ERRORE: valore dimensione non corretto '%s'\n"
|
||||||
|
|
30
po/ja.po
30
po/ja.po
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Efl\n"
|
"Project-Id-Version: Efl\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2012-06-24 17:10+0900\n"
|
||||||
"Last-Translator: Daichi Fukui<when.a.cat.sits.beside.you@gmail.com>\n"
|
"Last-Translator: Daichi Fukui<when.a.cat.sits.beside.you@gmail.com>\n"
|
||||||
"Language-Team: Enlightenment Team\n"
|
"Language-Team: Enlightenment Team\n"
|
||||||
|
@ -140,68 +140,68 @@ msgstr "ライセンスが定義されていません.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "エラー: 不明なオプション --%s, 無視.\n"
|
msgstr "エラー: 不明なオプション --%s, 無視.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "エラー: オプション --%s には引数が必要です.\n"
|
msgstr "エラー: オプション --%s には引数が必要です.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "エラー: 不明なオプション -%c, 無視.\n"
|
msgstr "エラー: 不明なオプション -%c, 無視.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "エラー: オプション -%c には引数が必要です.\n"
|
msgstr "エラー: オプション -%c には引数が必要です.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "エラー: オプション -%c には引数が必要です.\n"
|
msgstr "エラー: オプション -%c には引数が必要です.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "エラー: パーサーがありません.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "エラー: 値がありません.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "エラー: 引数がありません.\n"
|
msgstr "エラー: 引数がありません.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "エラー: 不正なオプションです."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr "--%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr "-%c を参照.\n"
|
msgstr "-%c を参照.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "エラー: 不正なオプションです."
|
msgstr "エラー: 不正なオプションです."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "エラー: 不正なジオメトリ値 '%s'\n"
|
msgstr "エラー: 不正なジオメトリ値 '%s'\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "エラー: 不正なsize値です '%s'\n"
|
msgstr "エラー: 不正なsize値です '%s'\n"
|
||||||
|
|
30
po/ko.po
30
po/ko.po
|
@ -10,7 +10,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Efl\n"
|
"Project-Id-Version: Efl\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-11-10 01:01+0900\n"
|
||||||
"Last-Translator: Daniel Juyung Seo <seojuyung2@gmail.com>\n"
|
"Last-Translator: Daniel Juyung Seo <seojuyung2@gmail.com>\n"
|
||||||
"Language-Team: Enlightenment Team\n"
|
"Language-Team: Enlightenment Team\n"
|
||||||
|
@ -145,67 +145,67 @@ msgstr "정의한 라이선스가 없습니다.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "오류: 알 수 없는 --%s 옵션을 무시합니다.\n"
|
msgstr "오류: 알 수 없는 --%s 옵션을 무시합니다.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "오류: --%s 옵션에 인자가 필요합니다!\n"
|
msgstr "오류: --%s 옵션에 인자가 필요합니다!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "오류: 알 수 없는 -%c 옵션을 무시합니다.\n"
|
msgstr "오류: 알 수 없는 -%c 옵션을 무시합니다.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "오류: -%c 옵션에 인자가 필요합니다!\n"
|
msgstr "오류: -%c 옵션에 인자가 필요합니다!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "오류: %s 옵션에 위치 인자가 필요합니다!\n"
|
msgstr "오류: %s 옵션에 위치 인자가 필요합니다!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr "오류: 지원하지 않는 동작 형식 %d의 위치 인자 %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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "오류: 해석 프로그램이 존재하지 않습니다.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "오류: 값이 존재하지 않습니다.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "인자가 존재하지 않습니다.\n"
|
msgstr "인자가 존재하지 않습니다.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "오류: 잘못된 옵션이 있습니다."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "오류: 잘못된 위치 인자가 있습니다."
|
msgstr "오류: 잘못된 위치 인자가 있습니다."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "오류: '%s' 값의 좌표가 올바르지 않습니다\n"
|
msgstr "오류: '%s' 값의 좌표가 올바르지 않습니다\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "오류: '%s' 값의 크기가 올바르지 않습니다\n"
|
msgstr "오류: '%s' 값의 크기가 올바르지 않습니다\n"
|
||||||
|
|
30
po/lt.po
30
po/lt.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: enlightenment\n"
|
"Project-Id-Version: enlightenment\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-02-21 22:38+0000\n"
|
||||||
"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
|
"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
|
||||||
"Language-Team: Lithuanian <lt@li.org>\n"
|
"Language-Team: Lithuanian <lt@li.org>\n"
|
||||||
|
@ -142,67 +142,67 @@ msgstr ""
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "KLAIDA: nežinomas parametras --%s, nepaisomas.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "KLAIDA: nežinomas parametras -%c, nepaisomas.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "KLAIDA: aptikti netinkami parametrai."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr ""
|
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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
30
po/nl.po
30
po/nl.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary 0.7.0.57309\n"
|
"Project-Id-Version: elementary 0.7.0.57309\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2011-06-19 16:41+0100\n"
|
||||||
"Last-Translator: Heimen Stoffels <vistausss@gmail.com>\n"
|
"Last-Translator: Heimen Stoffels <vistausss@gmail.com>\n"
|
||||||
"Language-Team: Dutch <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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "FOUT: onbekende optie --%s, genegeerd.\n"
|
msgstr "FOUT: onbekende optie --%s, genegeerd.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "FOUT: optie --%s vereist een 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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "FOUT: onbekende opties -%c, genegeerd.\n"
|
msgstr "FOUT: onbekende opties -%c, genegeerd.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "FOUT: optie -%c vereist een 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
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "FOUT: optie -%c vereist een argument!\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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "FOUT: geen doorvoerder beschikbaar gesteld.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "FOUT: geen waarden beschikbaar gesteld.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "FOUT: geen argumenten beschibaar gesteld.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "FOUT: ongeldige opties gevonden."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr "Zie --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr "Zie -%c.\n"
|
msgstr "Zie -%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "FOUT: ongeldige opties gevonden."
|
msgstr "FOUT: ongeldige opties gevonden."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "Fout: foutieve wiskundige waarde '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "FOUT: foutieve grootte-waarden '%s'\n"
|
msgstr "FOUT: foutieve grootte-waarden '%s'\n"
|
||||||
|
|
30
po/pl.po
30
po/pl.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary\n"
|
"Project-Id-Version: elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2013-11-23 14:48+0100\n"
|
||||||
"Last-Translator: Konrad Makowski <poczta@konradmakowski.pl>\n"
|
"Last-Translator: Konrad Makowski <poczta@konradmakowski.pl>\n"
|
||||||
"Language-Team: General\n"
|
"Language-Team: General\n"
|
||||||
|
@ -143,68 +143,68 @@ msgstr "nie zdefiniowano licencji.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "BŁĄD: nieznana opcja --%s, zignorowano.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "BŁĄD: opcja --%s wymaga argumentu!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "BŁĄD: nieznana opcja --%c, zignorowano.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "BŁĄD: opcja --%c wymaga argumentu!\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
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "BŁĄD: opcja --%c wymaga argumentu!\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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "BŁĄD: nie dostarczono parsera.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "BŁĄD: nie podano wartości.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "BŁĄD: nie podano argumentów.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "BŁĄD: wykryto błędne funkcje."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr "Zobacz --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr "Zobacz -%c.\n"
|
msgstr "Zobacz -%c.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "BŁĄD: wykryto błędne funkcje."
|
msgstr "BŁĄD: wykryto błędne funkcje."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "BŁĄD: nieprawidłowa wartość geometryczna \"%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "BŁĄD: nieprawdiłowy rozmiar wartości \"%s\"\n"
|
msgstr "BŁĄD: nieprawdiłowy rozmiar wartości \"%s\"\n"
|
||||||
|
|
30
po/pt.po
30
po/pt.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Elementary\n"
|
"Project-Id-Version: Elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2013-11-05 14:11-0000\n"
|
||||||
"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
|
"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
|
||||||
"Language-Team: General\n"
|
"Language-Team: General\n"
|
||||||
|
@ -142,67 +142,67 @@ msgstr "licença não definida.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ERRO: opção desconhecida --%s, ignorada.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ERRO: a opção --%s requer um argumento!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ERRO: opção desconhecida --%c, ignorada.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ERRO: a opção --%c requer um argumento!\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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "ERRO: falta o argumento de posição necessário %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
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"
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ERRO: nenhum processador fornecido.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ERRO: nenhum valor fornecido.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ERRO: nenhum argumento fornecido.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ERRO: encontradas opções inválidas."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr "Consulte --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr "Consulte -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "ERRO: encontrados argumentos de posição inválidos."
|
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
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ERRO: valor geométrico incorreto \"%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ERRO: tamanho incorreto \"%s\"\n"
|
msgstr "ERRO: tamanho incorreto \"%s\"\n"
|
||||||
|
|
30
po/ru.po
30
po/ru.po
|
@ -9,7 +9,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary 1.11\n"
|
"Project-Id-Version: elementary 1.11\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2015-02-07 15:16+0300\n"
|
||||||
"Last-Translator: Игорь Мурзов <garik@efl.so>\n"
|
"Last-Translator: Игорь Мурзов <garik@efl.so>\n"
|
||||||
"Language-Team: ru <enlightenment-intl@lists.sourceforge.net>\n"
|
"Language-Team: ru <enlightenment-intl@lists.sourceforge.net>\n"
|
||||||
|
@ -143,67 +143,67 @@ msgstr ""
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr ""
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr ""
|
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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
30
po/sl.po
30
po/sl.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Efl\n"
|
"Project-Id-Version: Efl\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2016-09-21 17:00+0200\n"
|
||||||
"Last-Translator: Renato Rener <renato.rener@gmail.com>\n"
|
"Last-Translator: Renato Rener <renato.rener@gmail.com>\n"
|
||||||
"Language-Team: Enlightenment Team\n"
|
"Language-Team: Enlightenment Team\n"
|
||||||
|
@ -141,67 +141,67 @@ msgstr "definirana ni bila nobena licenca.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "NAPAKA:·neznana možnost·--%s,·prezrto.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "NAPAKA:·možnost·--%s·zahteva 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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "NAPAKA:·neznana možnost·-%c,·prezrto.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "NAPAKA:·možnost·-%c zahteva 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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "NAPAKA: manjka zahtevani argument nahajališča %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr "NAPAKA: nepodprto dejanje vrste %d za argumente nahajališča %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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "NAPAKA:·ni podan razčlenjevalnik.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "NAPAKA::·ni podanih vrednosti.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "NAPAKA::·ni podanih argumentov.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "NAPAKA::·najdene nepravilne možnosti"
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr "·Glej·--%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr "·Glej·-%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "NAPAKA: nepravilni argumenti nahajališča najdeni."
|
msgstr "NAPAKA: nepravilni argumenti nahajališča najdeni."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "NAPAKA::·nepravilna geometrijska vrednost·'%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "NAPAKA::·nepravilna vrednost velikosti·'%s'\n"
|
msgstr "NAPAKA::·nepravilna vrednost velikosti·'%s'\n"
|
||||||
|
|
30
po/sr.po
30
po/sr.po
|
@ -9,7 +9,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: а\n"
|
"Project-Id-Version: а\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2015-01-31 14:06+0100\n"
|
||||||
"Last-Translator: Саша Петровић <salepetronije@gmail.com>\n"
|
"Last-Translator: Саша Петровић <salepetronije@gmail.com>\n"
|
||||||
"Language-Team: српски <xfce4@xfce4.org>\n"
|
"Language-Team: српски <xfce4@xfce4.org>\n"
|
||||||
|
@ -145,67 +145,67 @@ msgstr "није одређена дозвола.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "ГРЕШКА: непозната могућност --%s, занемарујем.\n"
|
msgstr "ГРЕШКА: непозната могућност --%s, занемарујем.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "ГРЕШКА: могућност --%s захтева одредницу!\n"
|
msgstr "ГРЕШКА: могућност --%s захтева одредницу!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "ГРЕШКА: непозната могућност -%c, занемарујем.\n"
|
msgstr "ГРЕШКА: непозната могућност -%c, занемарујем.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "ГРЕШКА: могућност -%c захтева одредницу!\n"
|
msgstr "ГРЕШКА: могућност -%c захтева одредницу!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "Грешка: недостаје потребна одредница положаја %s.\n"
|
msgstr "Грешка: недостаје потребна одредница положаја %s.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr "Грешка: неподржана радња врсте %d за одредницу положаја %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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "ГРЕШКА: није обезбеђен рашчлањивач.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "ГРЕШКА: нема обезбеђених вредности.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "ГРЕШКА: није обезбеђена одредница.\n"
|
msgstr "ГРЕШКА: није обезбеђена одредница.\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "ГРЕШКА: нађена је неисправна могућност."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Погледајте --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Погледајте -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "Грешка: нађена је неисправна одредница положаја."
|
msgstr "Грешка: нађена је неисправна одредница положаја."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "ГРЕШКА: неисправна геометријска вредност „%s“\n"
|
msgstr "ГРЕШКА: неисправна геометријска вредност „%s“\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "ГРЕШКА: неисправна вредност величине „%s“\n"
|
msgstr "ГРЕШКА: неисправна вредност величине „%s“\n"
|
||||||
|
|
30
po/tr.po
30
po/tr.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: enlightenment\n"
|
"Project-Id-Version: enlightenment\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2014-04-18 13:35+0000\n"
|
||||||
"Last-Translator: Ali E.İMREK <alierkanimrek@gmail.com>\n"
|
"Last-Translator: Ali E.İMREK <alierkanimrek@gmail.com>\n"
|
||||||
"Language-Team: Turkish <tr@li.org>\n"
|
"Language-Team: Turkish <tr@li.org>\n"
|
||||||
|
@ -142,67 +142,67 @@ msgstr "lisans tanımlanmadı.\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "HATA: bilinmeyen seçenek --%s, yoksayıldı.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "HATA: seçenek --%s bağımsız bir değişken gerektirir!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "HATA: bilinmeyen seçenek --%c, yoksayıldı.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "HATA: seçenek --%c bağımsız bir değişken gerektirir!\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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "HATA: konumsal argüman kayıp %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
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"
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "HATA: ayrıştırıcı sağlanmadı.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "HATA: değerler sağlanmadı.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "HATA: bağımsız değişkenler sağlanmadı.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "HATA: geçersiz seçenekler bulundu."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " Bakın --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " Bakın -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "HATA: geçersiz konumsal argümanlar bulundu."
|
msgstr "HATA: geçersiz konumsal argümanlar bulundu."
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "HATA: yanlış geometri değeri '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "HATA: yanlış boyut değeri '%s'\n"
|
msgstr "HATA: yanlış boyut değeri '%s'\n"
|
||||||
|
|
30
po/vi.po
30
po/vi.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary\n"
|
"Project-Id-Version: elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2015-09-29 18:06+0900\n"
|
||||||
"Last-Translator: Thiep Ha <thiepha@gmail.com>\n"
|
"Last-Translator: Thiep Ha <thiepha@gmail.com>\n"
|
||||||
"Language-Team: General\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"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "LỖI: không rõ lựa chọn --%s, bỏ qua.\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
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "LỖI: lựa chọn --%s đòi hỏi một tham số!\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
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "LỖI: không rõ lựa chọn -%c, bỏ qua.\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
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "LỖI: lựa chọn -%c đòi hỏi một tham số!\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
|
#, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "LỖI: thiếu tham số vị trí được yêu cầu %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
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
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"
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "LỖI: không cung cấp bộ phân tích.\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "LỖI: không cung cấp giá trị.\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "LỖI: không cung cấp đối số.\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."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "LỖI: phát hiện các tùy chọn không hợp lệ."
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr "Xem --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr "Xem -%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."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "LỖI: phát hiện các đối số vị trí không hợp lệ."
|
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
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "LỖI: giá trị hình học không đúng '%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
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "LỖI: giá trị kích thước không đúng '%s'\n"
|
msgstr "LỖI: giá trị kích thước không đúng '%s'\n"
|
||||||
|
|
30
po/zh_CN.po
30
po/zh_CN.po
|
@ -9,7 +9,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: elementary\n"
|
"Project-Id-Version: elementary\n"
|
||||||
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\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"
|
"PO-Revision-Date: 2012-12-22 03:55+0800\n"
|
||||||
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
|
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
|
||||||
"Language-Team: Chinese (simplified)\n"
|
"Language-Team: Chinese (simplified)\n"
|
||||||
|
@ -142,68 +142,68 @@ msgstr "未定义许可证。\n"
|
||||||
msgid "ERROR: unknown option --%s, ignored.\n"
|
msgid "ERROR: unknown option --%s, ignored.\n"
|
||||||
msgstr "错误:未知选项 --%s,忽略。\n"
|
msgstr "错误:未知选项 --%s,忽略。\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1703
|
#: src/lib/ecore/ecore_getopt.c:1710
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option --%s requires an argument!\n"
|
msgid "ERROR: option --%s requires an argument!\n"
|
||||||
msgstr "错误:选项 --%s 需要一个参数!\n"
|
msgstr "错误:选项 --%s 需要一个参数!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1745
|
#: src/lib/ecore/ecore_getopt.c:1752
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unknown option -%c, ignored.\n"
|
msgid "ERROR: unknown option -%c, ignored.\n"
|
||||||
msgstr "错误:未知选项 -%c,忽略。\n"
|
msgstr "错误:未知选项 -%c,忽略。\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1783
|
#: src/lib/ecore/ecore_getopt.c:1797
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: option -%c requires an argument!\n"
|
msgid "ERROR: option -%c requires an argument!\n"
|
||||||
msgstr "错误:选项 -%c 需要一个参数!\n"
|
msgstr "错误:选项 -%c 需要一个参数!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1878
|
#: src/lib/ecore/ecore_getopt.c:1892
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "ERROR: missing required positional argument %s.\n"
|
msgid "ERROR: missing required positional argument %s.\n"
|
||||||
msgstr "错误:选项 -%c 需要一个参数!\n"
|
msgstr "错误:选项 -%c 需要一个参数!\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:1910
|
#: src/lib/ecore/ecore_getopt.c:1924
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
msgid "ERROR: unsupported action type %d for positional argument %s\n"
|
||||||
msgstr ""
|
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"
|
msgid "ERROR: no parser provided.\n"
|
||||||
msgstr "错误:未提供解析器。\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"
|
msgid "ERROR: no values provided.\n"
|
||||||
msgstr "错误:未提供值。\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"
|
msgid "ERROR: no arguments provided.\n"
|
||||||
msgstr "错误:未提供参数。\n"
|
msgstr "错误:未提供参数。\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2071
|
#: src/lib/ecore/ecore_getopt.c:2085
|
||||||
msgid "ERROR: invalid options found."
|
msgid "ERROR: invalid options found."
|
||||||
msgstr "错误:无效的选项。"
|
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
|
#, c-format
|
||||||
msgid " See --%s.\n"
|
msgid " See --%s.\n"
|
||||||
msgstr " 参看 --%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
|
#, c-format
|
||||||
msgid " See -%c.\n"
|
msgid " See -%c.\n"
|
||||||
msgstr " 参看 -%c\n"
|
msgstr " 参看 -%c\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2137
|
#: src/lib/ecore/ecore_getopt.c:2151
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "ERROR: invalid positional arguments found."
|
msgid "ERROR: invalid positional arguments found."
|
||||||
msgstr "错误:无效的选项。"
|
msgstr "错误:无效的选项。"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2172
|
#: src/lib/ecore/ecore_getopt.c:2186
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect geometry value '%s'\n"
|
msgid "ERROR: incorrect geometry value '%s'\n"
|
||||||
msgstr "错误:不正确的形状 %s\n"
|
msgstr "错误:不正确的形状 %s\n"
|
||||||
|
|
||||||
#: src/lib/ecore/ecore_getopt.c:2190
|
#: src/lib/ecore/ecore_getopt.c:2204
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "ERROR: incorrect size value '%s'\n"
|
msgid "ERROR: incorrect size value '%s'\n"
|
||||||
msgstr "错误:不正确的大小 %s\n"
|
msgstr "错误:不正确的大小 %s\n"
|
||||||
|
|
|
@ -12,88 +12,41 @@ lib/ecore_x/Ecore_X_Atoms.h \
|
||||||
lib/ecore_x/Ecore_X_Cursor.h
|
lib/ecore_x/Ecore_X_Cursor.h
|
||||||
|
|
||||||
lib_ecore_x_libecore_x_la_SOURCES = \
|
lib_ecore_x_libecore_x_la_SOURCES = \
|
||||||
lib/ecore_x/ecore_x_atoms_decl.h
|
lib/ecore_x/ecore_x_atoms_decl.h \
|
||||||
|
lib/ecore_x/ecore_x.c \
|
||||||
if HAVE_ECORE_X_XCB
|
lib/ecore_x/ecore_x_dnd.c \
|
||||||
lib_ecore_x_libecore_x_la_SOURCES += \
|
lib/ecore_x/ecore_x_sync.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb.c \
|
lib/ecore_x/ecore_x_randr.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_atoms.c \
|
lib/ecore_x/ecore_x_fixes.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_extensions.c \
|
lib/ecore_x/ecore_x_damage.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_shape.c \
|
lib/ecore_x/ecore_x_composite.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_screensaver.c \
|
lib/ecore_x/ecore_x_error.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_sync.c \
|
lib/ecore_x/ecore_x_events.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_render.c \
|
lib/ecore_x/ecore_x_icccm.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_randr.c \
|
lib/ecore_x/ecore_x_keygrab.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_xfixes.c \
|
lib/ecore_x/ecore_x_netwm.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_composite.c \
|
lib/ecore_x/ecore_x_mwm.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_cursor.c \
|
lib/ecore_x/ecore_x_e.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_damage.c \
|
lib/ecore_x/ecore_x_selection.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_dnd.c \
|
lib/ecore_x/ecore_x_window.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_dpms.c \
|
lib/ecore_x/ecore_x_window_prop.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_drawable.c \
|
lib/ecore_x/ecore_x_window_shape.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_e.c \
|
lib/ecore_x/ecore_x_pixmap.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_gc.c \
|
lib/ecore_x/ecore_x_present.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_image.c \
|
lib/ecore_x/ecore_x_gc.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_input.c \
|
lib/ecore_x/ecore_x_xinerama.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_gesture.c \
|
lib/ecore_x/ecore_x_screensaver.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_mwm.c \
|
lib/ecore_x/ecore_x_dpms.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_pixmap.c \
|
lib/ecore_x/ecore_x_drawable.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_present.c \
|
lib/ecore_x/ecore_x_cursor.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_region.c \
|
lib/ecore_x/ecore_x_test.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_selection.c \
|
lib/ecore_x/ecore_x_atoms.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_textlist.c \
|
lib/ecore_x/ecore_x_region.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_events.c \
|
lib/ecore_x/ecore_x_image.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_keymap.c \
|
lib/ecore_x/ecore_x_xi2.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_keygrab.c \
|
lib/ecore_x/ecore_x_vsync.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_netwm.c \
|
lib/ecore_x/ecore_x_gesture.c \
|
||||||
lib/ecore_x/xcb/ecore_xcb_icccm.c \
|
lib/ecore_x/ecore_x_private.h
|
||||||
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_libecore_x_la_CPPFLAGS = \
|
lib_ecore_x_libecore_x_la_CPPFLAGS = \
|
||||||
-I$(top_builddir)/src/lib/efl \
|
-I$(top_builddir)/src/lib/efl \
|
||||||
|
@ -101,34 +54,9 @@ lib_ecore_x_libecore_x_la_CPPFLAGS = \
|
||||||
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
|
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
|
||||||
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
||||||
-DPACKAGE_DATA_DIR=\"$(datadir)/ecore_x\"
|
-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_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_DEPENDENCIES = @ECORE_X_INTERNAL_LIBS@ @USE_ECORE_CON_INTERNAL_LIBS@
|
||||||
lib_ecore_x_libecore_x_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
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
|
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
|
|
||||||
|
|
|
@ -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
|
modules_evas_engines_gl_generic_module_la_LIBTOOLFLAGS = --tag=disable-static
|
||||||
|
|
||||||
if BUILD_ENGINE_GL_X11
|
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
|
endif
|
||||||
if BUILD_ENGINE_WAYLAND_EGL
|
if BUILD_ENGINE_WAYLAND_EGL
|
||||||
modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_wayland_egl_cflags@
|
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
|
modules/evas/engines/gl_x11/evas_engine.h
|
||||||
if EVAS_STATIC_BUILD_GL_X11
|
if EVAS_STATIC_BUILD_GL_X11
|
||||||
lib_evas_libevas_la_SOURCES += $(GL_X11_SOURCES)
|
lib_evas_libevas_la_SOURCES += $(GL_X11_SOURCES)
|
||||||
lib_evas_libevas_la_CPPFLAGS += \
|
lib_evas_libevas_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@
|
||||||
@evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@
|
lib_evas_libevas_la_LIBADD += @evas_engine_gl_xlib_libs@
|
||||||
lib_evas_libevas_la_LIBADD += \
|
|
||||||
@evas_engine_gl_xlib_libs@ @evas_engine_gl_xcb_libs@
|
|
||||||
else
|
else
|
||||||
engineglx11pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH)
|
engineglx11pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH)
|
||||||
engineglx11pkg_LTLIBRARIES = modules/evas/engines/gl_x11/module.la
|
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/include \
|
||||||
-I$(top_srcdir)/src/lib/evas/cserve2 \
|
-I$(top_srcdir)/src/lib/evas/cserve2 \
|
||||||
@EVAS_CFLAGS@ \
|
@EVAS_CFLAGS@ \
|
||||||
@evas_engine_gl_xlib_cflags@ \
|
@evas_engine_gl_xlib_cflags@
|
||||||
@evas_engine_gl_xcb_cflags@
|
|
||||||
modules_evas_engines_gl_x11_module_la_LIBADD = \
|
modules_evas_engines_gl_x11_module_la_LIBADD = \
|
||||||
@USE_EVAS_LIBS@ \
|
@USE_EVAS_LIBS@ \
|
||||||
@evas_engine_gl_xlib_libs@ \
|
@evas_engine_gl_xlib_libs@
|
||||||
@evas_engine_gl_xcb_libs@
|
|
||||||
modules_evas_engines_gl_x11_module_la_DEPENDENCIES = \
|
modules_evas_engines_gl_x11_module_la_DEPENDENCIES = \
|
||||||
@USE_EVAS_INTERNAL_LIBS@
|
@USE_EVAS_INTERNAL_LIBS@
|
||||||
modules_evas_engines_gl_x11_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
|
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_CPPFLAGS += @evas_engine_software_xlib_cflags@
|
||||||
SOFTWARE_X11_LIBADD += @evas_engine_software_xlib_libs@
|
SOFTWARE_X11_LIBADD += @evas_engine_software_xlib_libs@
|
||||||
endif
|
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
|
if EVAS_STATIC_BUILD_SOFTWARE_X11
|
||||||
lib_evas_libevas_la_SOURCES += $(SOFTWARE_X11_SOURCES)
|
lib_evas_libevas_la_SOURCES += $(SOFTWARE_X11_SOURCES)
|
||||||
lib_evas_libevas_la_CPPFLAGS += $(SOFTWARE_X11_CPPFLAGS)
|
lib_evas_libevas_la_CPPFLAGS += $(SOFTWARE_X11_CPPFLAGS)
|
||||||
|
|
|
@ -111,8 +111,8 @@ typedef enum _Ecore_Evas_Engine_Type
|
||||||
ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
|
ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
|
||||||
ECORE_EVAS_ENGINE_XRENDER_X11,
|
ECORE_EVAS_ENGINE_XRENDER_X11,
|
||||||
ECORE_EVAS_ENGINE_OPENGL_X11,
|
ECORE_EVAS_ENGINE_OPENGL_X11,
|
||||||
ECORE_EVAS_ENGINE_SOFTWARE_XCB,
|
ECORE_EVAS_ENGINE_SOFTWARE_XCB, /* @deprecated */
|
||||||
ECORE_EVAS_ENGINE_XRENDER_XCB,
|
ECORE_EVAS_ENGINE_XRENDER_XCB, /* @deprecated */
|
||||||
ECORE_EVAS_ENGINE_SOFTWARE_GDI,
|
ECORE_EVAS_ENGINE_SOFTWARE_GDI,
|
||||||
ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
|
ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
|
||||||
ECORE_EVAS_ENGINE_DIRECT3D,
|
ECORE_EVAS_ENGINE_DIRECT3D,
|
||||||
|
|
|
@ -261,13 +261,9 @@ ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine)
|
||||||
#else
|
#else
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
#endif
|
#endif
|
||||||
case ECORE_EVAS_ENGINE_SOFTWARE_XCB:
|
case ECORE_EVAS_ENGINE_SOFTWARE_XCB: /* @deprecated */
|
||||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
|
|
||||||
return EINA_TRUE;
|
|
||||||
#else
|
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
#endif
|
case ECORE_EVAS_ENGINE_XRENDER_XCB: /* @deprecated */
|
||||||
case ECORE_EVAS_ENGINE_XRENDER_XCB:
|
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
case ECORE_EVAS_ENGINE_SOFTWARE_GDI:
|
case ECORE_EVAS_ENGINE_SOFTWARE_GDI:
|
||||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
|
#ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
|
||||||
|
|
|
@ -264,10 +264,6 @@ _ecore_evas_available_engines_get(void)
|
||||||
#endif
|
#endif
|
||||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
|
#ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
|
||||||
ADDENG("software_x11");
|
ADDENG("software_x11");
|
||||||
#else
|
|
||||||
# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
|
|
||||||
ADDENG("software_x11");
|
|
||||||
# endif
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else if (!strcmp(name, "buffer"))
|
else if (!strcmp(name, "buffer"))
|
||||||
|
|
|
@ -72,8 +72,8 @@ EAPI extern Ecore_X_Version *ecore_x_version;
|
||||||
* @li @ref Ecore_X_Window_Parent_Group
|
* @li @ref Ecore_X_Window_Parent_Group
|
||||||
* @li @ref Ecore_X_Window_Shape
|
* @li @ref Ecore_X_Window_Shape
|
||||||
*
|
*
|
||||||
* When using the XLib backend, setting the ECORE_X_SYNC environment variable
|
* The ECORE_X_SYNC environment variable will cause X calls to be run
|
||||||
* will cause X calls to be run synchronously for easier debugging.
|
* synchronously for easier debugging.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
typedef unsigned int Ecore_X_ID;
|
typedef unsigned int Ecore_X_ID;
|
||||||
|
@ -89,11 +89,7 @@ typedef struct _Ecore_X_Icon
|
||||||
#endif // ifndef _ECORE_X_WINDOW_PREDEF
|
#endif // ifndef _ECORE_X_WINDOW_PREDEF
|
||||||
typedef void *Ecore_X_Visual;
|
typedef void *Ecore_X_Visual;
|
||||||
typedef Ecore_X_ID Ecore_X_Drawable;
|
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;
|
typedef void *Ecore_X_GC;
|
||||||
#endif /* HAVE_ECORE_X_XCB */
|
|
||||||
typedef Ecore_X_ID Ecore_X_Colormap;
|
typedef Ecore_X_ID Ecore_X_Colormap;
|
||||||
typedef Ecore_X_ID Ecore_X_Time;
|
typedef Ecore_X_ID Ecore_X_Time;
|
||||||
typedef Ecore_X_ID Ecore_X_Cursor;
|
typedef Ecore_X_ID Ecore_X_Cursor;
|
||||||
|
@ -1118,7 +1114,7 @@ struct Ecore_X_Event_Present_Idle
|
||||||
}; /**< @since 1.9 */
|
}; /**< @since 1.9 */
|
||||||
|
|
||||||
EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
|
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.
|
@warning avoid using it.
|
||||||
*/
|
*/
|
||||||
EAPI extern int ECORE_X_EVENT_MOUSE_IN;
|
EAPI extern int ECORE_X_EVENT_MOUSE_IN;
|
||||||
|
|
|
@ -1966,8 +1966,6 @@ ecore_x_randr_crtc_info_free(Ecore_X_Randr_Crtc_Info *info)
|
||||||
* @param mode The mode added to the output.
|
* @param mode The mode added to the output.
|
||||||
* @return @c EINA_FALSE if output or mode equal Ecore_X_Randr_None, else
|
* @return @c EINA_FALSE if output or mode equal Ecore_X_Randr_None, else
|
||||||
* @c EINA_TRUE.
|
* @c EINA_TRUE.
|
||||||
* Additionally, if xcb backend is used, the success of the addition is
|
|
||||||
* reported back directly.
|
|
||||||
* @since 1.2.0
|
* @since 1.2.0
|
||||||
*/
|
*/
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
File diff suppressed because it is too large
Load Diff
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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);
|
|
||||||
}
|
|
||||||
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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);
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,129 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @defgroup Ecore_X_Pixmap_Group X Pixmap Functions
|
|
||||||
* @ingroup Ecore_X_Group
|
|
||||||
*
|
|
||||||
* Functions that operate on pixmaps.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new pixmap.
|
|
||||||
* @param win Window used to determine which screen of the display the
|
|
||||||
* pixmap should be created on. If 0, the default root window
|
|
||||||
* is used.
|
|
||||||
* @param w Width of the new pixmap.
|
|
||||||
* @param h Height of the new pixmap.
|
|
||||||
* @param dep Depth of the pixmap. If 0, the default depth of the default
|
|
||||||
* screen is used.
|
|
||||||
* @return New pixmap.
|
|
||||||
* @ingroup Ecore_X_Pixmap_Group
|
|
||||||
*/
|
|
||||||
EAPI Ecore_X_Pixmap
|
|
||||||
ecore_x_pixmap_new(Ecore_X_Window win,
|
|
||||||
int w,
|
|
||||||
int h,
|
|
||||||
int dep)
|
|
||||||
{
|
|
||||||
Ecore_X_Pixmap pmap;
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (win == 0) win = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
|
||||||
if (dep == 0) dep = ((xcb_screen_t *)_ecore_xcb_screen)->root_depth;
|
|
||||||
|
|
||||||
pmap = xcb_generate_id(_ecore_xcb_conn);
|
|
||||||
xcb_create_pixmap(_ecore_xcb_conn, dep, pmap, win, w, h);
|
|
||||||
|
|
||||||
// ecore_x_flush();
|
|
||||||
return pmap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deletes the reference to the given pixmap.
|
|
||||||
*
|
|
||||||
* If no other clients have a reference to the given pixmap, the server
|
|
||||||
* will destroy it.
|
|
||||||
*
|
|
||||||
* @param pmap The given pixmap.
|
|
||||||
* @ingroup Ecore_X_Pixmap_Group
|
|
||||||
*/
|
|
||||||
EAPI void
|
|
||||||
ecore_x_pixmap_free(Ecore_X_Pixmap pmap)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
xcb_free_pixmap(_ecore_xcb_conn, pmap);
|
|
||||||
// ecore_x_flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pastes a rectangular area of the given pixmap onto the given drawable.
|
|
||||||
* @param pmap The given pixmap.
|
|
||||||
* @param dest The given drawable.
|
|
||||||
* @param gc The graphics context which governs which operation will
|
|
||||||
* be used to paste the area onto the drawable.
|
|
||||||
* @param sx The X position of the area on the pixmap.
|
|
||||||
* @param sy The Y position of the area on the pixmap.
|
|
||||||
* @param w The width of the area.
|
|
||||||
* @param h The height of the area.
|
|
||||||
* @param dx The X position at which to paste the area on @p dest.
|
|
||||||
* @param dy The Y position at which to paste the area on @p dest.
|
|
||||||
* @ingroup Ecore_X_Pixmap_Group
|
|
||||||
*/
|
|
||||||
EAPI void
|
|
||||||
ecore_x_pixmap_paste(Ecore_X_Pixmap pmap,
|
|
||||||
Ecore_X_Drawable dest,
|
|
||||||
Ecore_X_GC gc,
|
|
||||||
int sx,
|
|
||||||
int sy,
|
|
||||||
int w,
|
|
||||||
int h,
|
|
||||||
int dx,
|
|
||||||
int dy)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
xcb_copy_area(_ecore_xcb_conn, pmap, dest, gc, sx, sy, dx, dy, w, h);
|
|
||||||
// ecore_x_flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the size of the given pixmap.
|
|
||||||
* @param pmap The given pixmap.
|
|
||||||
* @param x Pointer to an integer in which to store the X position.
|
|
||||||
* @param y Pointer to an integer in which to store the Y position.
|
|
||||||
* @param w Pointer to an integer in which to store the width.
|
|
||||||
* @param h Pointer to an integer in which to store the height.
|
|
||||||
* @ingroup Ecore_X_Pixmap_Group
|
|
||||||
*/
|
|
||||||
EAPI void
|
|
||||||
ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap,
|
|
||||||
int *x,
|
|
||||||
int *y,
|
|
||||||
int *w,
|
|
||||||
int *h)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
if (pmap)
|
|
||||||
ecore_x_drawable_geometry_get(pmap, x, y, w, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the depth of the given pixmap.
|
|
||||||
* @param pmap The given pixmap.
|
|
||||||
* @return The depth of the pixmap.
|
|
||||||
* @ingroup Ecore_X_Pixmap_Group
|
|
||||||
*/
|
|
||||||
EAPI int
|
|
||||||
ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
return ecore_x_drawable_depth_get(pmap);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,200 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
# ifdef ECORE_XCB_XPRESENT
|
|
||||||
# include <xcb/present.h>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* local variables */
|
|
||||||
static Eina_Bool _xpresent_avail = EINA_FALSE;
|
|
||||||
|
|
||||||
/* external variables */
|
|
||||||
int _ecore_xcb_event_xpresent = -1;
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_xpresent_init(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_present_id);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_xpresent_finalize(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
const xcb_query_extension_reply_t *ext_reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_present_id);
|
|
||||||
if ((ext_reply) && (ext_reply->present))
|
|
||||||
{
|
|
||||||
xcb_present_query_version_cookie_t cookie;
|
|
||||||
xcb_present_query_version_reply_t *reply;
|
|
||||||
|
|
||||||
cookie =
|
|
||||||
xcb_present_query_version_unchecked(_ecore_xcb_conn,
|
|
||||||
XCB_PRESENT_MAJOR_VERSION,
|
|
||||||
XCB_PRESENT_MINOR_VERSION);
|
|
||||||
reply = xcb_present_query_version_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (reply)
|
|
||||||
{
|
|
||||||
_xpresent_avail = EINA_TRUE;
|
|
||||||
free(reply);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_xpresent_avail)
|
|
||||||
_ecore_xcb_event_xpresent = ext_reply->first_event;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
#define SET(X) e->X = ev->X
|
|
||||||
|
|
||||||
static void
|
|
||||||
_present_configure(xcb_present_configure_notify_event_t *ev)
|
|
||||||
{
|
|
||||||
Ecore_X_Event_Present_Configure *e;
|
|
||||||
|
|
||||||
e = calloc(1, sizeof(Ecore_X_Event_Present_Configure));
|
|
||||||
if (!e) return;
|
|
||||||
|
|
||||||
e->win = ev->window;
|
|
||||||
SET(x), SET(y);
|
|
||||||
SET(width), SET(height);
|
|
||||||
SET(off_x), SET(off_y);
|
|
||||||
SET(pixmap_width), SET(pixmap_height);
|
|
||||||
SET(pixmap_flags);
|
|
||||||
|
|
||||||
ecore_event_add(ECORE_X_EVENT_PRESENT_CONFIGURE, e, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_present_complete(xcb_present_complete_notify_event_t *ev)
|
|
||||||
{
|
|
||||||
unsigned int mode[] =
|
|
||||||
{
|
|
||||||
[XCB_PRESENT_COMPLETE_MODE_COPY] = ECORE_X_PRESENT_COMPLETE_MODE_COPY,
|
|
||||||
[XCB_PRESENT_COMPLETE_MODE_FLIP] = ECORE_X_PRESENT_COMPLETE_MODE_FLIP,
|
|
||||||
[XCB_PRESENT_COMPLETE_MODE_SKIP] = ECORE_X_PRESENT_COMPLETE_MODE_SKIP,
|
|
||||||
};
|
|
||||||
Ecore_X_Event_Present_Complete *e;
|
|
||||||
|
|
||||||
e = calloc(1, sizeof(Ecore_X_Event_Present_Complete));
|
|
||||||
if (!e) return;
|
|
||||||
|
|
||||||
e->win = ev->window;
|
|
||||||
SET(serial);
|
|
||||||
SET(ust), SET(msc);
|
|
||||||
e->kind = (ev->kind == XCB_PRESENT_COMPLETE_KIND_NOTIFY_MSC);
|
|
||||||
e->mode = mode[ev->mode];
|
|
||||||
ecore_event_add(ECORE_X_EVENT_PRESENT_COMPLETE, e, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_present_idle(xcb_present_idle_notify_event_t *ev)
|
|
||||||
{
|
|
||||||
Ecore_X_Event_Present_Idle *e;
|
|
||||||
|
|
||||||
e = calloc(1, sizeof(Ecore_X_Event_Present_Idle));
|
|
||||||
if (!e) return;
|
|
||||||
|
|
||||||
e->win = ev->window;
|
|
||||||
SET(serial);
|
|
||||||
SET(pixmap);
|
|
||||||
SET(idle_fence);
|
|
||||||
ecore_event_add(ECORE_X_EVENT_PRESENT_IDLE, e, NULL, NULL);
|
|
||||||
}
|
|
||||||
#undef SET
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_event_handle_present_event(xcb_ge_event_t *ev)
|
|
||||||
{
|
|
||||||
switch (ev->event_type)
|
|
||||||
{
|
|
||||||
case XCB_PRESENT_EVENT_CONFIGURE_NOTIFY:
|
|
||||||
_present_configure((xcb_present_configure_notify_event_t*)(long)ev->pad1);
|
|
||||||
break;
|
|
||||||
case XCB_PRESENT_EVENT_COMPLETE_NOTIFY:
|
|
||||||
_present_complete((xcb_present_complete_notify_event_t*)(long)ev->pad1);
|
|
||||||
break;
|
|
||||||
case XCB_PRESENT_EVENT_IDLE_NOTIFY:
|
|
||||||
_present_idle((xcb_present_idle_notify_event_t*)(long)ev->pad1);
|
|
||||||
break;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_present_select_events(Ecore_X_Window win, unsigned int events)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
xcb_present_select_input(_ecore_xcb_conn, _ecore_xcb_event_xpresent, win, events);
|
|
||||||
#else
|
|
||||||
(void)win;
|
|
||||||
(void)events;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_present_notify_msc(Ecore_X_Window win, unsigned int serial, unsigned long long target_msc, unsigned long long divisor, unsigned long long remainder)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
xcb_present_notify_msc(_ecore_xcb_conn, win, serial, target_msc, divisor, remainder);
|
|
||||||
#else
|
|
||||||
(void)win;
|
|
||||||
(void)serial;
|
|
||||||
(void)target_msc;
|
|
||||||
(void)divisor;
|
|
||||||
(void)remainder;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_present_pixmap(Ecore_X_Window win, Ecore_X_Pixmap pixmap, unsigned int serial, Ecore_X_Region valid,
|
|
||||||
Ecore_X_Region update, int x_off, int y_off, Ecore_X_Randr_Crtc target_crtc,
|
|
||||||
Ecore_X_Sync_Fence wait_fence, Ecore_X_Sync_Fence idle_fence, unsigned int options,
|
|
||||||
unsigned long long target_msc, unsigned long long divisor, unsigned long long remainder,
|
|
||||||
Ecore_X_Present *notifies, int num_notifies)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
#ifdef ECORE_XCB_XPRESENT
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
xcb_present_pixmap(_ecore_xcb_conn, win, pixmap, serial, valid, update,
|
|
||||||
x_off, y_off, target_crtc, wait_fence, idle_fence, options, target_msc,
|
|
||||||
divisor, remainder, num_notifies, (xcb_present_notify_t*)notifies);
|
|
||||||
#else
|
|
||||||
(void)win;
|
|
||||||
(void)pixmap;
|
|
||||||
(void)serial;
|
|
||||||
(void)valid;
|
|
||||||
(void)update;
|
|
||||||
(void)x_off;
|
|
||||||
(void)y_off;
|
|
||||||
(void)target_crtc;
|
|
||||||
(void)wait_fence;
|
|
||||||
(void)idle_fence;
|
|
||||||
(void)options;
|
|
||||||
(void)target_msc;
|
|
||||||
(void)divisor;
|
|
||||||
(void)remainder;
|
|
||||||
(void)notifies;
|
|
||||||
(void)num_notifies;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_present_exists(void)
|
|
||||||
{
|
|
||||||
return _xpresent_avail;
|
|
||||||
}
|
|
|
@ -1,448 +0,0 @@
|
||||||
#ifndef __ECORE_XCB_PRIVATE_H__
|
|
||||||
# define __ECORE_XCB_PRIVATE_H__
|
|
||||||
|
|
||||||
//# define LOGFNS 1
|
|
||||||
|
|
||||||
# ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#ifdef STDC_HEADERS
|
|
||||||
# include <stdlib.h>
|
|
||||||
# include <stddef.h>
|
|
||||||
#else
|
|
||||||
# ifdef HAVE_STDLIB_H
|
|
||||||
# include <stdlib.h>
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
# include <unistd.h> // included for close & gethostname functions
|
|
||||||
|
|
||||||
/* generic xcb includes */
|
|
||||||
# include <xcb/xcb.h>
|
|
||||||
# include <xcb/bigreq.h>
|
|
||||||
# include <xcb/shm.h>
|
|
||||||
# include <xcb/xcb_image.h>
|
|
||||||
|
|
||||||
/* EFL includes */
|
|
||||||
# include "Ecore.h"
|
|
||||||
# include "Ecore_Input.h"
|
|
||||||
# include "Ecore_X.h"
|
|
||||||
|
|
||||||
/* logging */
|
|
||||||
extern int _ecore_xcb_log_dom;
|
|
||||||
|
|
||||||
# ifdef ECORE_XCB_DEFAULT_LOG_COLOR
|
|
||||||
# undef ECORE_XCB_DEFAULT_LOG_COLOR
|
|
||||||
# endif
|
|
||||||
# define ECORE_XCB_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
|
|
||||||
|
|
||||||
# ifdef ERR
|
|
||||||
# undef ERR
|
|
||||||
# endif
|
|
||||||
# define ERR(...) EINA_LOG_DOM_ERR(_ecore_xcb_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
# ifdef DBG
|
|
||||||
# undef DBG
|
|
||||||
# endif
|
|
||||||
# define DBG(...) EINA_LOG_DOM_DBG(_ecore_xcb_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
# ifdef INF
|
|
||||||
# undef INF
|
|
||||||
# endif
|
|
||||||
# define INF(...) EINA_LOG_DOM_INFO(_ecore_xcb_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
# ifdef WRN
|
|
||||||
# undef WRN
|
|
||||||
# endif
|
|
||||||
# define WRN(...) EINA_LOG_DOM_WARN(_ecore_xcb_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
# ifdef CRI
|
|
||||||
# undef CRI
|
|
||||||
# endif
|
|
||||||
# define CRI(...) EINA_LOG_DOM_CRIT(_ecore_xcb_log_dom, __VA_ARGS__)
|
|
||||||
|
|
||||||
# ifdef LOGFNS
|
|
||||||
# include <stdio.h>
|
|
||||||
# define LOGFN(fl, ln, fn) printf("-ECORE-XCB: %25s: %5i - %s\n", fl, ln, fn);
|
|
||||||
# else
|
|
||||||
# define LOGFN(fl, ln, fn)
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# ifndef MAXHOSTNAMELEN
|
|
||||||
# define MAXHOSTNAMELEN 256
|
|
||||||
# endif
|
|
||||||
|
|
||||||
#define CHECK_XCB_CONN \
|
|
||||||
{ \
|
|
||||||
if (!_ecore_xcb_conn || xcb_connection_has_error(_ecore_xcb_conn)) \
|
|
||||||
{ \
|
|
||||||
DBG("XCB Connection Has Error !!"); \
|
|
||||||
_ecore_xcb_io_error_handle(NULL); \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* enums */
|
|
||||||
typedef enum _Ecore_Xcb_Encoding_Style Ecore_Xcb_Encoding_Style;
|
|
||||||
|
|
||||||
enum _Ecore_Xcb_Encoding_Style
|
|
||||||
{
|
|
||||||
XcbStringStyle,
|
|
||||||
XcbCompoundTextStyle,
|
|
||||||
XcbTextStyle,
|
|
||||||
XcbStdICCTextStyle,
|
|
||||||
XcbUTF8StringStyle
|
|
||||||
};
|
|
||||||
|
|
||||||
/* structures */
|
|
||||||
typedef struct _Ecore_X_DND_Source Ecore_X_DND_Source;
|
|
||||||
typedef struct _Ecore_X_DND_Target Ecore_X_DND_Target;
|
|
||||||
typedef struct _Ecore_X_Selection_Intern Ecore_X_Selection_Intern;
|
|
||||||
typedef struct _Ecore_X_Selection_Converter Ecore_X_Selection_Converter;
|
|
||||||
typedef struct _Ecore_X_Selection_Parser Ecore_X_Selection_Parser;
|
|
||||||
typedef struct _Ecore_Xcb_Textproperty Ecore_Xcb_Textproperty;
|
|
||||||
|
|
||||||
struct _Ecore_X_DND_Source
|
|
||||||
{
|
|
||||||
int version;
|
|
||||||
Ecore_X_Window win, dest;
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ECORE_X_DND_SOURCE_IDLE,
|
|
||||||
ECORE_X_DND_SOURCE_DRAGGING,
|
|
||||||
ECORE_X_DND_SOURCE_DROPPED,
|
|
||||||
ECORE_X_DND_SOURCE_CONVERTING
|
|
||||||
} state;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
short x, y;
|
|
||||||
unsigned short width, height;
|
|
||||||
} rectangle;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
Ecore_X_Window window;
|
|
||||||
int x, y;
|
|
||||||
} prev;
|
|
||||||
|
|
||||||
Ecore_X_Time time;
|
|
||||||
|
|
||||||
Ecore_X_Atom action, accepted_action;
|
|
||||||
|
|
||||||
int will_accept, suppress;
|
|
||||||
int await_status;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Ecore_X_DND_Target
|
|
||||||
{
|
|
||||||
int version;
|
|
||||||
Ecore_X_Window win, source;
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ECORE_X_DND_TARGET_IDLE,
|
|
||||||
ECORE_X_DND_TARGET_ENTERED
|
|
||||||
} state;
|
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
int x, y;
|
|
||||||
} pos;
|
|
||||||
|
|
||||||
Ecore_X_Time time;
|
|
||||||
|
|
||||||
Ecore_X_Atom action, accepted_action;
|
|
||||||
int will_accept;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Ecore_X_Selection_Intern
|
|
||||||
{
|
|
||||||
Ecore_X_Window win;
|
|
||||||
Ecore_X_Atom selection;
|
|
||||||
unsigned char *data;
|
|
||||||
int length;
|
|
||||||
Ecore_X_Time time;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Ecore_X_Selection_Converter
|
|
||||||
{
|
|
||||||
Ecore_X_Atom target;
|
|
||||||
Eina_Bool (*convert)(char *target,
|
|
||||||
void *data,
|
|
||||||
int size,
|
|
||||||
void **data_ret,
|
|
||||||
int *size_ret,
|
|
||||||
Ecore_X_Atom *type,
|
|
||||||
int *size_type);
|
|
||||||
Ecore_X_Selection_Converter *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Ecore_X_Selection_Parser
|
|
||||||
{
|
|
||||||
char *target;
|
|
||||||
void *(*parse)(const char *target, void *data, int size, int format);
|
|
||||||
Ecore_X_Selection_Parser *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _Ecore_Xcb_Textproperty
|
|
||||||
{
|
|
||||||
char *value;
|
|
||||||
Ecore_X_Atom encoding;
|
|
||||||
unsigned int format, nitems;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* external variables */
|
|
||||||
extern Ecore_X_Connection *_ecore_xcb_conn;
|
|
||||||
extern Ecore_X_Screen *_ecore_xcb_screen;
|
|
||||||
extern double _ecore_xcb_double_click_time;
|
|
||||||
extern int16_t _ecore_xcb_event_last_root_x;
|
|
||||||
extern int16_t _ecore_xcb_event_last_root_y;
|
|
||||||
|
|
||||||
/* external variables for extension events */
|
|
||||||
extern int _ecore_xcb_event_damage;
|
|
||||||
extern int _ecore_xcb_event_randr;
|
|
||||||
extern int _ecore_xcb_event_screensaver;
|
|
||||||
extern int _ecore_xcb_event_shape;
|
|
||||||
extern int _ecore_xcb_event_sync;
|
|
||||||
extern int _ecore_xcb_event_xfixes;
|
|
||||||
extern int _ecore_xcb_event_input;
|
|
||||||
extern int _ecore_xcb_event_gesture;
|
|
||||||
|
|
||||||
extern Ecore_X_Atom _ecore_xcb_atoms_wm_protocol[ECORE_X_WM_PROTOCOL_NUM];
|
|
||||||
|
|
||||||
extern int _ecore_xcb_button_grabs_num;
|
|
||||||
extern int _ecore_xcb_key_grabs_num;
|
|
||||||
extern Ecore_X_Window *_ecore_xcb_button_grabs;
|
|
||||||
extern Ecore_X_Window *_ecore_xcb_key_grabs;
|
|
||||||
extern Eina_Bool (*_ecore_xcb_window_grab_replay_func)(void *data,
|
|
||||||
int type,
|
|
||||||
void *event);
|
|
||||||
extern void *_ecore_xcb_window_grab_replay_data;
|
|
||||||
|
|
||||||
/* private function prototypes */
|
|
||||||
void _ecore_xcb_error_handler_init(void);
|
|
||||||
void _ecore_xcb_error_handler_shutdown(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_atoms_init(void);
|
|
||||||
void _ecore_xcb_atoms_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_extensions_init(void);
|
|
||||||
void _ecore_xcb_extensions_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_shape_init(void);
|
|
||||||
void _ecore_xcb_shape_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_screensaver_init(void);
|
|
||||||
void _ecore_xcb_screensaver_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_sync_init(void);
|
|
||||||
void _ecore_xcb_sync_finalize(void);
|
|
||||||
void _ecore_xcb_sync_magic_send(int val,
|
|
||||||
Ecore_X_Window win);
|
|
||||||
|
|
||||||
void _ecore_xcb_render_init(void);
|
|
||||||
void _ecore_xcb_render_finalize(void);
|
|
||||||
Eina_Bool _ecore_xcb_render_argb_get(void);
|
|
||||||
Eina_Bool _ecore_xcb_render_anim_get(void);
|
|
||||||
Eina_Bool _ecore_xcb_render_avail_get(void);
|
|
||||||
|
|
||||||
Eina_Bool _ecore_xcb_render_visual_supports_alpha(Ecore_X_Visual visual);
|
|
||||||
uint32_t _ecore_xcb_render_find_visual_id(int type,
|
|
||||||
Eina_Bool check_alpha);
|
|
||||||
Ecore_X_Visual *_ecore_xcb_render_visual_get(int visual_id);
|
|
||||||
|
|
||||||
void _ecore_xcb_randr_init(void);
|
|
||||||
void _ecore_xcb_randr_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_gesture_init(void);
|
|
||||||
void _ecore_xcb_gesture_finalize(void);
|
|
||||||
void _ecore_xcb_gesture_shutdown(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_xfixes_init(void);
|
|
||||||
void _ecore_xcb_xfixes_finalize(void);
|
|
||||||
Eina_Bool _ecore_xcb_xfixes_avail_get(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_damage_init(void);
|
|
||||||
void _ecore_xcb_damage_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_composite_init(void);
|
|
||||||
void _ecore_xcb_composite_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_present_init(void);
|
|
||||||
void _ecore_xcb_present_finalize(void);
|
|
||||||
void _ecore_xcb_event_handle_present_event(xcb_ge_event_t *ev);
|
|
||||||
extern int _ecore_xcb_event_xpresent;
|
|
||||||
|
|
||||||
void _ecore_xcb_dpms_init(void);
|
|
||||||
void _ecore_xcb_dpms_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_cursor_init(void);
|
|
||||||
void _ecore_xcb_cursor_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_xinerama_init(void);
|
|
||||||
void _ecore_xcb_xinerama_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_dnd_init(void);
|
|
||||||
void _ecore_xcb_dnd_shutdown(void);
|
|
||||||
Ecore_X_DND_Source *_ecore_xcb_dnd_source_get(void);
|
|
||||||
Ecore_X_DND_Target *_ecore_xcb_dnd_target_get(void);
|
|
||||||
void _ecore_xcb_dnd_drag(Ecore_X_Window root,
|
|
||||||
int x,
|
|
||||||
int y);
|
|
||||||
|
|
||||||
void _ecore_xcb_selection_init(void);
|
|
||||||
void _ecore_xcb_selection_shutdown(void);
|
|
||||||
void *_ecore_xcb_selection_parse(const char *target,
|
|
||||||
void *data,
|
|
||||||
int size,
|
|
||||||
int format);
|
|
||||||
char *_ecore_xcb_selection_target_get(Ecore_X_Atom target);
|
|
||||||
Ecore_X_Selection_Intern *_ecore_xcb_selection_get(Ecore_X_Atom selection);
|
|
||||||
|
|
||||||
# ifdef HAVE_ICONV
|
|
||||||
Eina_Bool _ecore_xcb_utf8_textlist_to_textproperty(char **list,
|
|
||||||
int count,
|
|
||||||
Ecore_Xcb_Encoding_Style style,
|
|
||||||
Ecore_Xcb_Textproperty *ret);
|
|
||||||
# endif
|
|
||||||
Eina_Bool _ecore_xcb_mb_textlist_to_textproperty(char **list,
|
|
||||||
int count,
|
|
||||||
Ecore_Xcb_Encoding_Style style,
|
|
||||||
Ecore_Xcb_Textproperty *ret);
|
|
||||||
Eina_Bool _ecore_xcb_textlist_to_textproperty(const char *type,
|
|
||||||
char **list,
|
|
||||||
int count,
|
|
||||||
Ecore_Xcb_Encoding_Style style,
|
|
||||||
Ecore_Xcb_Textproperty *ret);
|
|
||||||
|
|
||||||
# ifdef HAVE_ICONV
|
|
||||||
Eina_Bool _ecore_xcb_utf8_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
||||||
char ***list_ret,
|
|
||||||
int *count_ret);
|
|
||||||
# endif
|
|
||||||
Eina_Bool _ecore_xcb_mb_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
||||||
char ***list_ret,
|
|
||||||
int *count_ret);
|
|
||||||
Eina_Bool _ecore_xcb_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
||||||
const char *type,
|
|
||||||
char ***list_ret,
|
|
||||||
int *count_ret);
|
|
||||||
|
|
||||||
void _ecore_xcb_events_init(void);
|
|
||||||
void _ecore_xcb_events_shutdown(void);
|
|
||||||
void _ecore_xcb_events_handle(xcb_generic_event_t *ev);
|
|
||||||
Ecore_X_Time _ecore_xcb_events_last_time_get(void);
|
|
||||||
unsigned int _ecore_xcb_events_modifiers_get(unsigned int state);
|
|
||||||
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_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);
|
|
||||||
|
|
||||||
void _ecore_xcb_keymap_init(void);
|
|
||||||
void _ecore_xcb_keymap_finalize(void);
|
|
||||||
void _ecore_xcb_keymap_shutdown(void);
|
|
||||||
void _ecore_xcb_keymap_refresh(xcb_mapping_notify_event_t *event);
|
|
||||||
xcb_keysym_t _ecore_xcb_keymap_keycode_to_keysym(xcb_keycode_t keycode,
|
|
||||||
int col);
|
|
||||||
xcb_keycode_t *_ecore_xcb_keymap_keysym_to_keycode(xcb_keysym_t keysym);
|
|
||||||
char *_ecore_xcb_keymap_keysym_to_string(xcb_keysym_t keysym);
|
|
||||||
xcb_keycode_t _ecore_xcb_keymap_string_to_keycode(const char *key);
|
|
||||||
int _ecore_xcb_keymap_lookup_string(xcb_keycode_t keycode,
|
|
||||||
int state,
|
|
||||||
char *buffer,
|
|
||||||
int bytes,
|
|
||||||
xcb_keysym_t *sym);
|
|
||||||
|
|
||||||
void _ecore_xcb_input_init(void);
|
|
||||||
void _ecore_xcb_input_finalize(void);
|
|
||||||
void _ecore_xcb_input_shutdown(void);
|
|
||||||
# ifdef ECORE_XCB_XINPUT
|
|
||||||
void _ecore_xcb_input_handle_event(xcb_generic_event_t *event);
|
|
||||||
# else
|
|
||||||
void _ecore_xcb_input_handle_event(xcb_generic_event_t *event);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
void _ecore_xcb_dri_init(void);
|
|
||||||
void _ecore_xcb_dri_finalize(void);
|
|
||||||
|
|
||||||
void _ecore_xcb_xtest_init(void);
|
|
||||||
void _ecore_xcb_xtest_finalize(void);
|
|
||||||
|
|
||||||
Ecore_X_Window _ecore_xcb_window_root_of_screen_get(int screen);
|
|
||||||
void _ecore_xcb_window_prop_string_utf8_set(Ecore_X_Window win,
|
|
||||||
Ecore_X_Atom atom,
|
|
||||||
const char *str);
|
|
||||||
Ecore_X_Visual _ecore_xcb_window_visual_get(Ecore_X_Window win);
|
|
||||||
void _ecore_xcb_window_button_grab_remove(Ecore_X_Window win);
|
|
||||||
void _ecore_xcb_window_key_grab_remove(Ecore_X_Window win);
|
|
||||||
void _ecore_xcb_window_grab_allow_events(Ecore_X_Window event_win,
|
|
||||||
Ecore_X_Window child_win,
|
|
||||||
int type,
|
|
||||||
void *event,
|
|
||||||
Ecore_X_Time timestamp);
|
|
||||||
|
|
||||||
int _ecore_xcb_netwm_startup_info_begin(Ecore_X_Window win,
|
|
||||||
uint8_t data);
|
|
||||||
int _ecore_xcb_netwm_startup_info(Ecore_X_Window win,
|
|
||||||
uint8_t data);
|
|
||||||
Ecore_X_Window_State _ecore_xcb_netwm_window_state_get(Ecore_X_Atom atom);
|
|
||||||
|
|
||||||
int _ecore_xcb_error_handle(xcb_generic_error_t *err);
|
|
||||||
int _ecore_xcb_io_error_handle(xcb_generic_error_t *err);
|
|
||||||
|
|
||||||
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);
|
|
||||||
|
|
||||||
void _ecore_xcb_xdefaults_init(void);
|
|
||||||
void _ecore_xcb_xdefaults_shutdown(void);
|
|
||||||
char *_ecore_xcb_xdefaults_string_get(const char *prog,
|
|
||||||
const char *param);
|
|
||||||
int _ecore_xcb_xdefaults_int_get(const char *prog,
|
|
||||||
const char *param);
|
|
||||||
|
|
||||||
void _ecore_xcb_modifiers_get(void);
|
|
||||||
|
|
||||||
#endif
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,159 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
#include <pixman.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* [ ] XPolygonRegion
|
|
||||||
* [ ] XShrinkRegion
|
|
||||||
* [ ] XClipBox
|
|
||||||
* [ ] XXorRegion
|
|
||||||
*/
|
|
||||||
|
|
||||||
EAPI Ecore_X_XRegion *
|
|
||||||
ecore_x_xregion_new()
|
|
||||||
{
|
|
||||||
pixman_region16_t *region;
|
|
||||||
|
|
||||||
region = (pixman_region16_t *)malloc(sizeof(pixman_region16_t));
|
|
||||||
if (!region) return NULL;
|
|
||||||
|
|
||||||
pixman_region_init(region);
|
|
||||||
|
|
||||||
return (Ecore_X_XRegion *)region;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_xregion_free(Ecore_X_XRegion *region)
|
|
||||||
{
|
|
||||||
if (!region) return;
|
|
||||||
|
|
||||||
pixman_region_fini(region);
|
|
||||||
free(region);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_set(Ecore_X_XRegion *region,
|
|
||||||
Ecore_X_GC gc)
|
|
||||||
{
|
|
||||||
xcb_rectangle_t *rects;
|
|
||||||
pixman_box16_t *boxes;
|
|
||||||
int num = 0, i = 0;
|
|
||||||
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!region) return EINA_FALSE;
|
|
||||||
|
|
||||||
boxes = pixman_region_rectangles((pixman_region16_t *)region, &num);
|
|
||||||
if ((!boxes) || (num == 0)) return EINA_FALSE;
|
|
||||||
|
|
||||||
rects = (xcb_rectangle_t *)malloc(sizeof(xcb_rectangle_t) * num);
|
|
||||||
if (!rects) return EINA_FALSE;
|
|
||||||
|
|
||||||
for (i = 0; i < num; i++)
|
|
||||||
{
|
|
||||||
rects[i].x = boxes[i].x1;
|
|
||||||
rects[i].y = boxes[i].y1;
|
|
||||||
rects[i].width = boxes[i].x2 - boxes[i].x1 + 1;
|
|
||||||
rects[i].height = boxes[i].y2 - boxes[i].y1 + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
xcb_set_clip_rectangles(_ecore_xcb_conn, XCB_CLIP_ORDERING_YX_BANDED,
|
|
||||||
gc, 0, 0, num, rects);
|
|
||||||
|
|
||||||
// ecore_x_flush();
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_xregion_translate(Ecore_X_XRegion *region,
|
|
||||||
int x,
|
|
||||||
int y)
|
|
||||||
{
|
|
||||||
if (!region) return;
|
|
||||||
|
|
||||||
pixman_region_translate((pixman_region16_t *)region, x, y);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_intersect(Ecore_X_XRegion *dst,
|
|
||||||
Ecore_X_XRegion *r1,
|
|
||||||
Ecore_X_XRegion *r2)
|
|
||||||
{
|
|
||||||
return pixman_region_intersect((pixman_region16_t *)dst,
|
|
||||||
(pixman_region16_t *)r1,
|
|
||||||
(pixman_region16_t *)r2);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_union(Ecore_X_XRegion *dst,
|
|
||||||
Ecore_X_XRegion *r1,
|
|
||||||
Ecore_X_XRegion *r2)
|
|
||||||
{
|
|
||||||
return pixman_region_union((pixman_region16_t *)dst,
|
|
||||||
(pixman_region16_t *)r1,
|
|
||||||
(pixman_region16_t *)r2);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_union_rect(Ecore_X_XRegion *dst,
|
|
||||||
Ecore_X_XRegion *src,
|
|
||||||
Ecore_X_Rectangle *rect)
|
|
||||||
{
|
|
||||||
return pixman_region_union_rect((pixman_region16_t *)dst,
|
|
||||||
(pixman_region16_t *)src,
|
|
||||||
rect->x, rect->y, rect->width, rect->height);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_subtract(Ecore_X_XRegion *dst,
|
|
||||||
Ecore_X_XRegion *rm,
|
|
||||||
Ecore_X_XRegion *rs)
|
|
||||||
{
|
|
||||||
return pixman_region_subtract((pixman_region16_t *)dst,
|
|
||||||
(pixman_region16_t *)rm,
|
|
||||||
(pixman_region16_t *)rs);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_is_empty(Ecore_X_XRegion *region)
|
|
||||||
{
|
|
||||||
if (!region) return EINA_TRUE;
|
|
||||||
|
|
||||||
return !pixman_region_not_empty((pixman_region16_t *)region);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_is_equal(Ecore_X_XRegion *r1,
|
|
||||||
Ecore_X_XRegion *r2)
|
|
||||||
{
|
|
||||||
if ((!r1) || (!r2)) return EINA_FALSE;
|
|
||||||
|
|
||||||
return pixman_region_equal((pixman_region16_t *)r1,
|
|
||||||
(pixman_region16_t *)r2);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_point_contain(Ecore_X_XRegion *region,
|
|
||||||
int x,
|
|
||||||
int y)
|
|
||||||
{
|
|
||||||
if (!region) return EINA_FALSE;
|
|
||||||
|
|
||||||
return pixman_region_contains_point((pixman_region16_t *)region, x, y, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_xregion_rect_contain(Ecore_X_XRegion *region,
|
|
||||||
Ecore_X_Rectangle *rect)
|
|
||||||
{
|
|
||||||
pixman_box16_t box;
|
|
||||||
|
|
||||||
if ((!region) || (!rect)) return EINA_FALSE;
|
|
||||||
|
|
||||||
box.x1 = rect->x;
|
|
||||||
box.y1 = rect->y;
|
|
||||||
box.x2 = rect->x + rect->width - 1;
|
|
||||||
box.y2 = rect->y + rect->height - 1;
|
|
||||||
|
|
||||||
return pixman_region_contains_rectangle((pixman_region16_t *)region, &box);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,225 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
#include <ctype.h> // for isupper/tolower
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
# include <xcb/render.h>
|
|
||||||
# include <xcb/xcb_renderutil.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* local function prototypes */
|
|
||||||
static Eina_Bool _ecore_xcb_render_parse_boolean(char *v);
|
|
||||||
|
|
||||||
/* local variables */
|
|
||||||
static Eina_Bool _render_avail = EINA_FALSE;
|
|
||||||
static Eina_Bool _render_argb = EINA_FALSE;
|
|
||||||
static Eina_Bool _render_anim = EINA_FALSE;
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_render_init(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_render_id);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_render_finalize(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
const xcb_query_extension_reply_t *ext_reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_render_id);
|
|
||||||
if ((ext_reply) && (ext_reply->present))
|
|
||||||
{
|
|
||||||
xcb_render_query_version_cookie_t cookie;
|
|
||||||
xcb_render_query_version_reply_t *reply;
|
|
||||||
|
|
||||||
cookie =
|
|
||||||
xcb_render_query_version_unchecked(_ecore_xcb_conn,
|
|
||||||
XCB_RENDER_MAJOR_VERSION,
|
|
||||||
XCB_RENDER_MINOR_VERSION);
|
|
||||||
reply = xcb_render_query_version_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (reply)
|
|
||||||
{
|
|
||||||
// if ((reply->major_version >= XCB_RENDER_MAJOR_VERSION) &&
|
|
||||||
if (reply->minor_version >= XCB_RENDER_MINOR_VERSION)
|
|
||||||
{
|
|
||||||
char *v = NULL;
|
|
||||||
|
|
||||||
_render_avail = EINA_TRUE;
|
|
||||||
_ecore_xcb_xdefaults_init();
|
|
||||||
if ((reply->major_version > 0) || (reply->minor_version >= 5))
|
|
||||||
{
|
|
||||||
_render_argb = EINA_TRUE;
|
|
||||||
v = getenv("XCURSOR_CORE");
|
|
||||||
if (!v)
|
|
||||||
v = _ecore_xcb_xdefaults_string_get("Xcursor", "core");
|
|
||||||
if ((v) && (_ecore_xcb_render_parse_boolean(v)))
|
|
||||||
_render_argb = EINA_FALSE;
|
|
||||||
}
|
|
||||||
if ((_render_argb) &&
|
|
||||||
((reply->major_version > 0) || (reply->minor_version >= 8)))
|
|
||||||
{
|
|
||||||
_render_anim = EINA_TRUE;
|
|
||||||
v = getenv("XCURSOR_ANIM");
|
|
||||||
if (!v)
|
|
||||||
v = _ecore_xcb_xdefaults_string_get("Xcursor", "anim");
|
|
||||||
if ((v) && (_ecore_xcb_render_parse_boolean(v)))
|
|
||||||
_render_anim = EINA_FALSE;
|
|
||||||
}
|
|
||||||
_ecore_xcb_xdefaults_shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
free(reply);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_render_avail_get(void)
|
|
||||||
{
|
|
||||||
return _render_avail;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_render_argb_get(void)
|
|
||||||
{
|
|
||||||
return _render_argb;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_render_anim_get(void)
|
|
||||||
{
|
|
||||||
return _render_anim;
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_render_visual_supports_alpha(Ecore_X_Visual visual)
|
|
||||||
{
|
|
||||||
Eina_Bool ret = EINA_FALSE;
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
const xcb_render_query_pict_formats_reply_t *reply;
|
|
||||||
xcb_render_pictvisual_t *vis;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!visual) return EINA_FALSE;
|
|
||||||
if (!_render_avail) return EINA_FALSE;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
reply = xcb_render_util_query_formats(_ecore_xcb_conn);
|
|
||||||
if (!reply) return EINA_FALSE;
|
|
||||||
|
|
||||||
vis =
|
|
||||||
xcb_render_util_find_visual_format(reply,
|
|
||||||
((xcb_visualtype_t *)visual)->visual_id);
|
|
||||||
if (vis)
|
|
||||||
{
|
|
||||||
xcb_render_pictforminfo_t temp;
|
|
||||||
xcb_render_pictforminfo_t *format;
|
|
||||||
|
|
||||||
temp.id = vis->format;
|
|
||||||
format =
|
|
||||||
xcb_render_util_find_format(reply, XCB_PICT_FORMAT_ID, &temp, 0);
|
|
||||||
|
|
||||||
if ((format->type == XCB_RENDER_PICT_TYPE_DIRECT) &&
|
|
||||||
(format->direct.alpha_mask))
|
|
||||||
ret = EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t
|
|
||||||
_ecore_xcb_render_find_visual_id(int type,
|
|
||||||
Eina_Bool check_alpha)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
const xcb_render_query_pict_formats_reply_t *reply;
|
|
||||||
xcb_render_pictvisual_t *visual = NULL;
|
|
||||||
xcb_render_pictscreen_iterator_t screens;
|
|
||||||
xcb_render_pictdepth_iterator_t depths;
|
|
||||||
xcb_render_pictvisual_iterator_t visuals;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_render_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_RENDER
|
|
||||||
reply = xcb_render_util_query_formats(_ecore_xcb_conn);
|
|
||||||
if (!reply) return 0;
|
|
||||||
|
|
||||||
for (screens = xcb_render_query_pict_formats_screens_iterator(reply);
|
|
||||||
screens.rem; xcb_render_pictscreen_next(&screens))
|
|
||||||
{
|
|
||||||
for (depths = xcb_render_pictscreen_depths_iterator(screens.data);
|
|
||||||
depths.rem; xcb_render_pictdepth_next(&depths))
|
|
||||||
{
|
|
||||||
for (visuals = xcb_render_pictdepth_visuals_iterator(depths.data);
|
|
||||||
visuals.rem; xcb_render_pictvisual_next(&visuals))
|
|
||||||
{
|
|
||||||
xcb_render_pictforminfo_t temp;
|
|
||||||
xcb_render_pictforminfo_t *format;
|
|
||||||
|
|
||||||
visual = visuals.data;
|
|
||||||
temp.id = visual->format;
|
|
||||||
|
|
||||||
format =
|
|
||||||
xcb_render_util_find_format(reply, XCB_PICT_FORMAT_ID,
|
|
||||||
&temp, 0);
|
|
||||||
if (!format) continue;
|
|
||||||
if (format->type == type)
|
|
||||||
{
|
|
||||||
if (check_alpha)
|
|
||||||
{
|
|
||||||
if (format->direct.alpha_mask)
|
|
||||||
return visual->visual;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return visual->visual;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* local function prototypes */
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_xcb_render_parse_boolean(char *v)
|
|
||||||
{
|
|
||||||
char c;
|
|
||||||
|
|
||||||
c = *v;
|
|
||||||
if (isupper((int)c))
|
|
||||||
c = tolower(c);
|
|
||||||
if ((c == 't') || (c == 'y') || (c == '1'))
|
|
||||||
return EINA_TRUE;
|
|
||||||
if ((c == 'f') || (c == 'n') || (c == '0'))
|
|
||||||
return EINA_FALSE;
|
|
||||||
if (c == 'o')
|
|
||||||
{
|
|
||||||
char d;
|
|
||||||
|
|
||||||
d = v[1];
|
|
||||||
if (isupper((int)d))
|
|
||||||
d = tolower(d);
|
|
||||||
if (d == 'n') return EINA_TRUE;
|
|
||||||
if (d == 'f') return EINA_FALSE;
|
|
||||||
}
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,404 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
# ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
# include <xcb/screensaver.h>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* local variables */
|
|
||||||
static Eina_Bool _screensaver_avail = EINA_FALSE;
|
|
||||||
|
|
||||||
/* external variables */
|
|
||||||
int _ecore_xcb_event_screensaver = -1;
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_screensaver_init(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_screensaver_id);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_screensaver_finalize(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
const xcb_query_extension_reply_t *ext_reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_screensaver_id);
|
|
||||||
if ((ext_reply) && (ext_reply->present))
|
|
||||||
{
|
|
||||||
xcb_screensaver_query_version_cookie_t cookie;
|
|
||||||
xcb_screensaver_query_version_reply_t *reply;
|
|
||||||
|
|
||||||
cookie =
|
|
||||||
xcb_screensaver_query_version_unchecked(_ecore_xcb_conn,
|
|
||||||
XCB_SCREENSAVER_MAJOR_VERSION,
|
|
||||||
XCB_SCREENSAVER_MINOR_VERSION);
|
|
||||||
reply =
|
|
||||||
xcb_screensaver_query_version_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (reply)
|
|
||||||
{
|
|
||||||
if ((reply->server_major_version >= XCB_SCREENSAVER_MAJOR_VERSION) &&
|
|
||||||
(reply->server_minor_version >= XCB_SCREENSAVER_MINOR_VERSION))
|
|
||||||
_screensaver_avail = EINA_TRUE;
|
|
||||||
|
|
||||||
free(reply);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_screensaver_avail)
|
|
||||||
_ecore_xcb_event_screensaver = ext_reply->first_event;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI int
|
|
||||||
ecore_x_screensaver_idle_time_get(void)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_screensaver_query_info_cookie_t cookie;
|
|
||||||
xcb_screensaver_query_info_reply_t *reply;
|
|
||||||
Ecore_X_Window root;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
|
||||||
cookie = xcb_screensaver_query_info_unchecked(_ecore_xcb_conn, root);
|
|
||||||
reply = xcb_screensaver_query_info_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return 0;
|
|
||||||
ret = (reply->ms_until_server / 1000);
|
|
||||||
free(reply);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_set(int timeout,
|
|
||||||
int interval,
|
|
||||||
int prefer_blanking,
|
|
||||||
int allow_exposures)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_set_screen_saver(_ecore_xcb_conn,
|
|
||||||
timeout, interval, prefer_blanking, allow_exposures);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_timeout_set(int timeout)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
uint16_t pint;
|
|
||||||
uint8_t pblank, pexpo;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return;
|
|
||||||
pint = reply->interval;
|
|
||||||
pblank = reply->prefer_blanking;
|
|
||||||
pexpo = reply->allow_exposures;
|
|
||||||
free(reply);
|
|
||||||
xcb_set_screen_saver(_ecore_xcb_conn, timeout, pint, pblank, pexpo);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI int
|
|
||||||
ecore_x_screensaver_timeout_get(void)
|
|
||||||
{
|
|
||||||
int timeout = 0;
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return 0;
|
|
||||||
timeout = reply->timeout;
|
|
||||||
free(reply);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return timeout;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_blank_set(int blank)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
uint16_t pint, pto;
|
|
||||||
uint8_t pexpo;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return;
|
|
||||||
pto = reply->timeout;
|
|
||||||
pint = reply->interval;
|
|
||||||
pexpo = reply->allow_exposures;
|
|
||||||
free(reply);
|
|
||||||
xcb_set_screen_saver(_ecore_xcb_conn, pto, pint, blank, pexpo);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI int
|
|
||||||
ecore_x_screensaver_blank_get(void)
|
|
||||||
{
|
|
||||||
int blank = 0;
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return 0;
|
|
||||||
blank = reply->prefer_blanking;
|
|
||||||
free(reply);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return blank;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_expose_set(int expose)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
uint16_t pint, pto;
|
|
||||||
uint8_t pblank;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return;
|
|
||||||
pto = reply->timeout;
|
|
||||||
pint = reply->interval;
|
|
||||||
pblank = reply->prefer_blanking;
|
|
||||||
free(reply);
|
|
||||||
xcb_set_screen_saver(_ecore_xcb_conn, pto, pint, pblank, expose);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI int
|
|
||||||
ecore_x_screensaver_expose_get(void)
|
|
||||||
{
|
|
||||||
int expose = 0;
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return 0;
|
|
||||||
expose = reply->allow_exposures;
|
|
||||||
free(reply);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return expose;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_interval_set(int interval)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
uint16_t pto;
|
|
||||||
uint8_t pblank, pexpose;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return;
|
|
||||||
pto = reply->timeout;
|
|
||||||
pblank = reply->prefer_blanking;
|
|
||||||
pexpose = reply->allow_exposures;
|
|
||||||
free(reply);
|
|
||||||
xcb_set_screen_saver(_ecore_xcb_conn, pto, interval, pblank, pexpose);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI int
|
|
||||||
ecore_x_screensaver_interval_get(void)
|
|
||||||
{
|
|
||||||
int interval = 0;
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_get_screen_saver_cookie_t cookie;
|
|
||||||
xcb_get_screen_saver_reply_t *reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
cookie = xcb_get_screen_saver_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_get_screen_saver_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return 0;
|
|
||||||
interval = reply->interval;
|
|
||||||
free(reply);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return interval;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_event_listen_set(Eina_Bool on)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
Ecore_X_Window root;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_screensaver_avail) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
root = ((xcb_screen_t *)_ecore_xcb_screen)->root;
|
|
||||||
if (on)
|
|
||||||
xcb_screensaver_select_input(_ecore_xcb_conn, root,
|
|
||||||
XCB_SCREENSAVER_EVENT_NOTIFY_MASK |
|
|
||||||
XCB_SCREENSAVER_EVENT_CYCLE_MASK);
|
|
||||||
else
|
|
||||||
xcb_screensaver_select_input(_ecore_xcb_conn, root, 0);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_screensaver_event_available_get(void)
|
|
||||||
{
|
|
||||||
return _screensaver_avail;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_screensaver_custom_blanking_enable(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
uint32_t mask_list[9];
|
|
||||||
|
|
||||||
xcb_screensaver_set_attributes_checked
|
|
||||||
(_ecore_xcb_conn,
|
|
||||||
((xcb_screen_t *)_ecore_xcb_screen)->root,
|
|
||||||
-9999, -9999, 1, 1, 0,
|
|
||||||
XCB_WINDOW_CLASS_INPUT_ONLY,
|
|
||||||
XCB_COPY_FROM_PARENT, XCB_COPY_FROM_PARENT,
|
|
||||||
0, mask_list);
|
|
||||||
return EINA_TRUE;
|
|
||||||
#else
|
|
||||||
return EINA_FALSE;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_screensaver_custom_blanking_disable(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_screensaver_unset_attributes_checked
|
|
||||||
(_ecore_xcb_conn,
|
|
||||||
((xcb_screen_t *)_ecore_xcb_screen)->root);
|
|
||||||
return EINA_TRUE;
|
|
||||||
#else
|
|
||||||
return EINA_FALSE;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EINA_DEPRECATED EAPI void
|
|
||||||
ecore_x_screensaver_supend(void)
|
|
||||||
{
|
|
||||||
ecore_x_screensaver_suspend();
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_suspend(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_screensaver_suspend(_ecore_xcb_conn, 1);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_resume(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SCREENSAVER
|
|
||||||
xcb_screensaver_suspend(_ecore_xcb_conn, 0);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_reset(void)
|
|
||||||
{
|
|
||||||
ecore_x_dpms_enabled_set(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_screensaver_activate(void)
|
|
||||||
{
|
|
||||||
ecore_x_dpms_enabled_set(1);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,50 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
#ifdef ECORE_XCB_SHAPE
|
|
||||||
# include <xcb/shape.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* external variables */
|
|
||||||
int _ecore_xcb_event_shape = -1;
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_shape_init(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SHAPE
|
|
||||||
xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_shape_id);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_shape_finalize(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SHAPE
|
|
||||||
const xcb_query_extension_reply_t *ext_reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SHAPE
|
|
||||||
ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_shape_id);
|
|
||||||
if ((ext_reply) && (ext_reply->present))
|
|
||||||
{
|
|
||||||
xcb_shape_query_version_cookie_t cookie;
|
|
||||||
xcb_shape_query_version_reply_t *reply;
|
|
||||||
Eina_Bool _shape_avail;
|
|
||||||
|
|
||||||
_shape_avail = EINA_FALSE;
|
|
||||||
cookie = xcb_shape_query_version_unchecked(_ecore_xcb_conn);
|
|
||||||
reply = xcb_shape_query_version_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (reply)
|
|
||||||
{
|
|
||||||
_shape_avail = EINA_TRUE;
|
|
||||||
free(reply);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_shape_avail)
|
|
||||||
_ecore_xcb_event_shape = ext_reply->first_event;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,338 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
# ifdef ECORE_XCB_SYNC
|
|
||||||
# include <xcb/sync.h>
|
|
||||||
# endif
|
|
||||||
|
|
||||||
/* local variables */
|
|
||||||
static Eina_Bool _sync_avail = EINA_FALSE;
|
|
||||||
|
|
||||||
/* external variables */
|
|
||||||
int _ecore_xcb_event_sync = -1;
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_sync_init(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_prefetch_extension_data(_ecore_xcb_conn, &xcb_sync_id);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_sync_finalize(void)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
const xcb_query_extension_reply_t *ext_reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
ext_reply = xcb_get_extension_data(_ecore_xcb_conn, &xcb_sync_id);
|
|
||||||
if ((ext_reply) && (ext_reply->present))
|
|
||||||
{
|
|
||||||
xcb_sync_initialize_cookie_t cookie;
|
|
||||||
xcb_sync_initialize_reply_t *reply;
|
|
||||||
|
|
||||||
cookie =
|
|
||||||
xcb_sync_initialize_unchecked(_ecore_xcb_conn,
|
|
||||||
XCB_SYNC_MAJOR_VERSION,
|
|
||||||
XCB_SYNC_MINOR_VERSION);
|
|
||||||
reply = xcb_sync_initialize_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (reply)
|
|
||||||
{
|
|
||||||
if (reply->major_version >= 3) _sync_avail = EINA_TRUE;
|
|
||||||
free(reply);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_sync_avail)
|
|
||||||
_ecore_xcb_event_sync = ext_reply->first_event;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_sync_magic_send(int val,
|
|
||||||
Ecore_X_Window win)
|
|
||||||
{
|
|
||||||
xcb_client_message_event_t ev;
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
memset(&ev, 0, sizeof(xcb_client_message_event_t));
|
|
||||||
ev.response_type = XCB_CLIENT_MESSAGE;
|
|
||||||
ev.format = 32;
|
|
||||||
ev.window = win;
|
|
||||||
ev.type = 27777;
|
|
||||||
ev.data.data32[0] = 0x7162534;
|
|
||||||
ev.data.data32[1] = (0x10000000 + val);
|
|
||||||
ev.data.data32[2] = win;
|
|
||||||
|
|
||||||
xcb_send_event(_ecore_xcb_conn, 0, win, XCB_EVENT_MASK_NO_EVENT,
|
|
||||||
(const char *)&ev);
|
|
||||||
// ecore_x_flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* public functions */
|
|
||||||
EAPI Ecore_X_Sync_Alarm
|
|
||||||
ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
uint32_t list[6], mask;
|
|
||||||
xcb_sync_int64_t init;
|
|
||||||
Ecore_X_Sync_Alarm alarm;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
init.lo = 0;
|
|
||||||
init.hi = 0;
|
|
||||||
xcb_sync_set_counter(_ecore_xcb_conn, counter, init);
|
|
||||||
|
|
||||||
mask = (XCB_SYNC_CA_COUNTER | XCB_SYNC_CA_VALUE_TYPE |
|
|
||||||
XCB_SYNC_CA_VALUE | XCB_SYNC_CA_TEST_TYPE |
|
|
||||||
XCB_SYNC_CA_DELTA | XCB_SYNC_CA_EVENTS);
|
|
||||||
list[0] = counter;
|
|
||||||
list[1] = XCB_SYNC_VALUETYPE_ABSOLUTE;
|
|
||||||
list[2] = 1;
|
|
||||||
list[3] = XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON;
|
|
||||||
list[4] = 1;
|
|
||||||
list[5] = 1;
|
|
||||||
alarm = xcb_generate_id(_ecore_xcb_conn);
|
|
||||||
|
|
||||||
xcb_sync_create_alarm(_ecore_xcb_conn, alarm, mask, list);
|
|
||||||
ecore_x_sync(); // needed
|
|
||||||
|
|
||||||
return alarm;
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!alarm)) return EINA_FALSE;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_destroy_alarm(_ecore_xcb_conn, alarm);
|
|
||||||
// ecore_x_flush();
|
|
||||||
return EINA_TRUE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_sync_counter_query(Ecore_X_Sync_Counter counter,
|
|
||||||
unsigned int *val)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_query_counter_cookie_t cookie;
|
|
||||||
xcb_sync_query_counter_reply_t *reply;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return EINA_FALSE;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
cookie = xcb_sync_query_counter_unchecked(_ecore_xcb_conn, counter);
|
|
||||||
reply = xcb_sync_query_counter_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (reply)
|
|
||||||
{
|
|
||||||
if (val) *val = (unsigned int)reply->counter_value.lo;
|
|
||||||
free(reply);
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_sync_counter_inc(Ecore_X_Sync_Counter counter,
|
|
||||||
int by)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_int64_t v;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
v.hi = (by < 0) ? ~0 : 0;
|
|
||||||
v.lo = by;
|
|
||||||
|
|
||||||
xcb_sync_change_counter(_ecore_xcb_conn, counter, v);
|
|
||||||
// ecore_x_flush();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter,
|
|
||||||
int val)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_query_counter_cookie_t cookie;
|
|
||||||
xcb_sync_query_counter_reply_t *reply;
|
|
||||||
xcb_sync_int64_t v1, v2;
|
|
||||||
xcb_sync_waitcondition_t cond;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
cookie = xcb_sync_query_counter_unchecked(_ecore_xcb_conn, counter);
|
|
||||||
reply = xcb_sync_query_counter_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return;
|
|
||||||
v1 = reply->counter_value;
|
|
||||||
free(reply);
|
|
||||||
|
|
||||||
v1.hi = (val < 0) ? ~0 : 0;
|
|
||||||
v1.lo = val;
|
|
||||||
v2.hi = ((val + 1) < 0) ? ~0 : 0;
|
|
||||||
v2.lo = (val + 1);
|
|
||||||
|
|
||||||
cond.trigger.counter = counter;
|
|
||||||
cond.trigger.wait_type = XCB_SYNC_VALUETYPE_ABSOLUTE;
|
|
||||||
cond.trigger.wait_value = v1;
|
|
||||||
cond.trigger.test_type = XCB_SYNC_TESTTYPE_POSITIVE_COMPARISON;
|
|
||||||
cond.event_threshold = v2;
|
|
||||||
|
|
||||||
xcb_sync_await(_ecore_xcb_conn, 1, &cond);
|
|
||||||
// ecore_x_flush();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Ecore_X_Sync_Counter
|
|
||||||
ecore_x_sync_counter_new(int val)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_counter_t counter;
|
|
||||||
xcb_sync_int64_t v;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if (!_sync_avail) return 0;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
v.hi = (val < 0) ? ~0 : 0;
|
|
||||||
v.lo = val;
|
|
||||||
|
|
||||||
counter = xcb_generate_id(_ecore_xcb_conn);
|
|
||||||
xcb_sync_create_counter(_ecore_xcb_conn, counter, v);
|
|
||||||
// ecore_x_flush();
|
|
||||||
|
|
||||||
return counter;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_sync_counter_free(Ecore_X_Sync_Counter counter)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_destroy_counter(_ecore_xcb_conn, counter);
|
|
||||||
// ecore_x_flush();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter,
|
|
||||||
int val)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_int64_t v;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
v.hi = (val < 0) ? ~0 : 0;
|
|
||||||
v.lo = val;
|
|
||||||
|
|
||||||
xcb_sync_set_counter(_ecore_xcb_conn, counter, v);
|
|
||||||
// ecore_x_flush();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI void
|
|
||||||
ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter,
|
|
||||||
int val_hi,
|
|
||||||
unsigned int val_lo)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_int64_t v;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
v.hi = val_hi;
|
|
||||||
v.lo = val_lo;
|
|
||||||
|
|
||||||
xcb_sync_set_counter(_ecore_xcb_conn, counter, v);
|
|
||||||
// ecore_x_flush();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter,
|
|
||||||
int *val_hi,
|
|
||||||
unsigned int *val_lo)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
xcb_sync_query_counter_cookie_t cookie;
|
|
||||||
xcb_sync_query_counter_reply_t *reply;
|
|
||||||
xcb_sync_int64_t value;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
if ((!_sync_avail) || (!counter)) return EINA_FALSE;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_SYNC
|
|
||||||
cookie =
|
|
||||||
xcb_sync_query_counter_unchecked(_ecore_xcb_conn,
|
|
||||||
(xcb_sync_counter_t)counter);
|
|
||||||
reply = xcb_sync_query_counter_reply(_ecore_xcb_conn, cookie, NULL);
|
|
||||||
if (!reply) return EINA_FALSE;
|
|
||||||
value = reply->counter_value;
|
|
||||||
free(reply);
|
|
||||||
if (val_hi) *val_hi = (int)value.hi;
|
|
||||||
if (val_lo) *val_lo = (unsigned int)value.lo;
|
|
||||||
return EINA_TRUE;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,509 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
//#include "Ecore_X_Atoms.h"
|
|
||||||
#include <langinfo.h>
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
# include <iconv.h>
|
|
||||||
#endif
|
|
||||||
#ifndef CODESET
|
|
||||||
# define CODESET "INVALID"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int _ecore_xcb_textlist_get_buffer_size(Eina_Bool is_wide,
|
|
||||||
void *list,
|
|
||||||
int count);
|
|
||||||
static int _ecore_xcb_textlist_get_wc_len(wchar_t *wstr);
|
|
||||||
static void *_ecore_xcb_textlist_alloc_list(Eina_Bool is_wide,
|
|
||||||
int count,
|
|
||||||
int nitems);
|
|
||||||
static void _ecore_xcb_textlist_copy_list(Eina_Bool is_wide,
|
|
||||||
void *text,
|
|
||||||
char **list,
|
|
||||||
int count);
|
|
||||||
static wchar_t *_ecore_xcb_textlist_copy_wchar(wchar_t *str1,
|
|
||||||
wchar_t *str2);
|
|
||||||
static int _ecore_xcb_textlist_len_wchar(wchar_t *str);
|
|
||||||
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_utf8_textlist_to_textproperty(char **list,
|
|
||||||
int count,
|
|
||||||
Ecore_Xcb_Encoding_Style style,
|
|
||||||
Ecore_Xcb_Textproperty *ret)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
return _ecore_xcb_textlist_to_textproperty("utf8string", list, count,
|
|
||||||
style, ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_mb_textlist_to_textproperty(char **list,
|
|
||||||
int count,
|
|
||||||
Ecore_Xcb_Encoding_Style style,
|
|
||||||
Ecore_Xcb_Textproperty *ret)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
return _ecore_xcb_textlist_to_textproperty("multiByte", list, count,
|
|
||||||
style, ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* NB: This Function May Not Be Correct !!!
|
|
||||||
* (as I do not know text conversion, locales, etc, etc very well)
|
|
||||||
*
|
|
||||||
* Portions were ripped from libX11 XTextListToTextProperty
|
|
||||||
*/
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_textlist_to_textproperty(const char *type,
|
|
||||||
char **list,
|
|
||||||
int count,
|
|
||||||
Ecore_Xcb_Encoding_Style style,
|
|
||||||
Ecore_Xcb_Textproperty *ret)
|
|
||||||
{
|
|
||||||
Eina_Bool is_wide = EINA_FALSE;
|
|
||||||
Ecore_X_Atom encoding;
|
|
||||||
int len = 0, nitems = 0, i = 0;
|
|
||||||
size_t from_left = 0, to_left = 0;
|
|
||||||
int unconv_num = 0, val = 0;
|
|
||||||
char *buff, *to, *value, *from;
|
|
||||||
const char *to_type, *from_type;
|
|
||||||
char **mb = NULL;
|
|
||||||
wchar_t **wc = NULL;
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
iconv_t conv;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
if (!strcmp("wideChar", type)) is_wide = EINA_TRUE;
|
|
||||||
len = _ecore_xcb_textlist_get_buffer_size(is_wide, list, count);
|
|
||||||
if (!(buff = (char *)malloc(len * sizeof(char)))) return EINA_FALSE;
|
|
||||||
from_type = nl_langinfo(CODESET);
|
|
||||||
switch (style)
|
|
||||||
{
|
|
||||||
case XcbStringStyle:
|
|
||||||
case XcbStdICCTextStyle:
|
|
||||||
encoding = ECORE_X_ATOM_STRING;
|
|
||||||
to_type = nl_langinfo(CODESET);
|
|
||||||
// to_type = "string";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XcbUTF8StringStyle:
|
|
||||||
encoding = ECORE_X_ATOM_UTF8_STRING;
|
|
||||||
to_type = "UTF-8";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XcbCompoundTextStyle:
|
|
||||||
encoding = ECORE_X_ATOM_COMPOUND_TEXT;
|
|
||||||
to_type = nl_langinfo(CODESET);
|
|
||||||
// to_type = "compoundText";
|
|
||||||
break;
|
|
||||||
|
|
||||||
case XcbTextStyle:
|
|
||||||
encoding = ECORE_X_ATOM_TEXT;
|
|
||||||
to_type = nl_langinfo(CODESET);
|
|
||||||
// to_type = "multiByte";
|
|
||||||
if (!is_wide)
|
|
||||||
{
|
|
||||||
nitems = 0;
|
|
||||||
mb = (char **)list;
|
|
||||||
to = buff;
|
|
||||||
for (i = 0; ((i < count) && (len > 0)); i++)
|
|
||||||
{
|
|
||||||
if (*mb) strcpy(to, *mb);
|
|
||||||
else *to = '\0';
|
|
||||||
from_left = (*mb ? strlen(*mb) : 0) + 1;
|
|
||||||
nitems += from_left;
|
|
||||||
to += from_left;
|
|
||||||
mb++;
|
|
||||||
}
|
|
||||||
unconv_num = 0;
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
free(buff);
|
|
||||||
return EINA_FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count < 1)
|
|
||||||
{
|
|
||||||
nitems = 0;
|
|
||||||
goto done;
|
|
||||||
}
|
|
||||||
|
|
||||||
retry:
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
conv = iconv_open(to_type, from_type);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (is_wide)
|
|
||||||
wc = (wchar_t **)list;
|
|
||||||
else
|
|
||||||
mb = (char **)list;
|
|
||||||
|
|
||||||
to = buff;
|
|
||||||
to_left = len;
|
|
||||||
unconv_num = 0;
|
|
||||||
for (i = 1; to_left > 0; i++)
|
|
||||||
{
|
|
||||||
if (is_wide)
|
|
||||||
{
|
|
||||||
from = (char *)*wc;
|
|
||||||
from_left = _ecore_xcb_textlist_get_wc_len(*wc);
|
|
||||||
wc++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
from = *mb;
|
|
||||||
from_left = (*mb ? strlen(*mb) : 0);
|
|
||||||
mb++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
val = iconv(conv, &from, &from_left, &to, &to_left);
|
|
||||||
#endif
|
|
||||||
if (val < 0) continue;
|
|
||||||
if ((val > 0) && (style == XcbStdICCTextStyle) &&
|
|
||||||
(encoding == ECORE_X_ATOM_STRING))
|
|
||||||
{
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
iconv_close(conv);
|
|
||||||
#endif
|
|
||||||
encoding = ECORE_X_ATOM_COMPOUND_TEXT;
|
|
||||||
goto retry;
|
|
||||||
}
|
|
||||||
|
|
||||||
unconv_num += val;
|
|
||||||
*to++ = '\0';
|
|
||||||
to_left--;
|
|
||||||
if (i >= count) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
iconv_close(conv);
|
|
||||||
#endif
|
|
||||||
nitems = (to - buff);
|
|
||||||
|
|
||||||
done:
|
|
||||||
if (nitems <= 0) nitems = 1;
|
|
||||||
if (!(value = (char *)malloc(nitems * sizeof(char))))
|
|
||||||
{
|
|
||||||
free(buff);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
if (nitems == 1)
|
|
||||||
*value = 0;
|
|
||||||
else
|
|
||||||
memcpy(value, buff, nitems);
|
|
||||||
nitems--;
|
|
||||||
free(buff);
|
|
||||||
|
|
||||||
ret->value = value;
|
|
||||||
ret->encoding = encoding;
|
|
||||||
ret->format = 8;
|
|
||||||
ret->nitems = nitems;
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_utf8_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
||||||
char ***list_ret,
|
|
||||||
int *count_ret)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
return _ecore_xcb_textproperty_to_textlist(text_prop, "utf8String",
|
|
||||||
list_ret, count_ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_mb_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
||||||
char ***list_ret,
|
|
||||||
int *count_ret)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
return _ecore_xcb_textproperty_to_textlist(text_prop, "multiByte",
|
|
||||||
list_ret, count_ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
Eina_Bool
|
|
||||||
_ecore_xcb_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
||||||
const char *type,
|
|
||||||
char ***list_ret,
|
|
||||||
int *count_ret)
|
|
||||||
{
|
|
||||||
Eina_Bool is_wide = EINA_FALSE;
|
|
||||||
Eina_Bool do_strcpy = EINA_FALSE;
|
|
||||||
const char *from_type;
|
|
||||||
char *buff, *to, *from;
|
|
||||||
char *lptr, *sptr;
|
|
||||||
int nitems = 0, len = 0, num = 0, ret = 0;
|
|
||||||
size_t from_left = 0, to_left = 0;
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
iconv_t conv = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
*list_ret = NULL;
|
|
||||||
*count_ret = 0;
|
|
||||||
if (!strcmp("wideChar", type)) is_wide = EINA_TRUE;
|
|
||||||
|
|
||||||
nitems = text_prop->nitems;
|
|
||||||
if (nitems <= 0) return EINA_TRUE;
|
|
||||||
|
|
||||||
if (text_prop->format != 8) return EINA_FALSE;
|
|
||||||
|
|
||||||
from_type = nl_langinfo(CODESET);
|
|
||||||
if (text_prop->encoding == ECORE_X_ATOM_UTF8_STRING)
|
|
||||||
from_type = "UTF-8";
|
|
||||||
|
|
||||||
if (is_wide)
|
|
||||||
len = (text_prop->nitems + 1) * sizeof(wchar_t);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!strcmp(type, "utf8String"))
|
|
||||||
len = text_prop->nitems * 6 + 1;
|
|
||||||
else
|
|
||||||
len = text_prop->nitems * MB_CUR_MAX + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
buff = (char *)malloc(len * sizeof(char));
|
|
||||||
if (!buff) return EINA_FALSE;
|
|
||||||
|
|
||||||
to = buff;
|
|
||||||
to_left = len;
|
|
||||||
|
|
||||||
if (!strcmp(from_type, type))
|
|
||||||
do_strcpy = EINA_TRUE;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
#ifdef HAVE_ICONV
|
|
||||||
conv = iconv_open(type, from_type);
|
|
||||||
#endif
|
|
||||||
if (!conv)
|
|
||||||
{
|
|
||||||
free(buff);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lptr = sptr = text_prop->value;
|
|
||||||
num = *count_ret = 0;
|
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
if ((nitems == 0) || (*sptr == 0))
|
|
||||||
{
|
|
||||||
from = lptr;
|
|
||||||
from_left = sptr - lptr;
|
|
||||||
lptr = sptr;
|
|
||||||
if (do_strcpy)
|
|
||||||
{
|
|
||||||
int l = 0;
|
|
||||||
|
|
||||||
l = MIN(from_left, to_left);
|
|
||||||
strncpy(to, from, l);
|
|
||||||
from += len;
|
|
||||||
to += len;
|
|
||||||
from_left -= l;
|
|
||||||
to_left -= l;
|
|
||||||
ret = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
ret = iconv(conv, &from, &from_left, &to, &to_left);
|
|
||||||
|
|
||||||
if (ret < 0) continue;
|
|
||||||
num += ret;
|
|
||||||
(*count_ret)++;
|
|
||||||
if (nitems == 0) break;
|
|
||||||
lptr = ++sptr;
|
|
||||||
if (is_wide)
|
|
||||||
{
|
|
||||||
*((wchar_t *)to) = (wchar_t)0;
|
|
||||||
to += sizeof(wchar_t);
|
|
||||||
to_left -= sizeof(wchar_t);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*((char *)to) = '\0';
|
|
||||||
to++;
|
|
||||||
to_left--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
sptr++;
|
|
||||||
|
|
||||||
nitems--;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if HAVE_ICONV
|
|
||||||
if (!do_strcpy) iconv_close(conv);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (is_wide)
|
|
||||||
{
|
|
||||||
*((wchar_t *)to) = (wchar_t)0;
|
|
||||||
to_left -= sizeof(wchar_t);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
*((char *)to) = '\0';
|
|
||||||
to_left--;
|
|
||||||
}
|
|
||||||
|
|
||||||
*list_ret =
|
|
||||||
_ecore_xcb_textlist_alloc_list(is_wide, *count_ret, (len - to_left));
|
|
||||||
if (*list_ret)
|
|
||||||
_ecore_xcb_textlist_copy_list(is_wide, buff, *list_ret, *count_ret);
|
|
||||||
|
|
||||||
free(buff);
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_ecore_xcb_textlist_get_buffer_size(Eina_Bool is_wide,
|
|
||||||
void *list,
|
|
||||||
int count)
|
|
||||||
{
|
|
||||||
int len = 0;
|
|
||||||
char **mb;
|
|
||||||
wchar_t **wc;
|
|
||||||
|
|
||||||
if (!list) return 0;
|
|
||||||
if (is_wide)
|
|
||||||
{
|
|
||||||
wc = (wchar_t **)list;
|
|
||||||
for (; count-- > 0; wc++)
|
|
||||||
if (*wc) len += _ecore_xcb_textlist_get_wc_len(*wc) + 1;
|
|
||||||
len *= 5;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mb = (char **)list;
|
|
||||||
for (; count-- > 0; mb++)
|
|
||||||
if (*mb) len += strlen(*mb) + 1;
|
|
||||||
len *= 3;
|
|
||||||
}
|
|
||||||
len = (len / 2048 + 1) * 2048;
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_ecore_xcb_textlist_get_wc_len(wchar_t *wstr)
|
|
||||||
{
|
|
||||||
wchar_t *ptr;
|
|
||||||
|
|
||||||
ptr = wstr;
|
|
||||||
while (*ptr)
|
|
||||||
ptr++;
|
|
||||||
|
|
||||||
return ptr - wstr;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void *
|
|
||||||
_ecore_xcb_textlist_alloc_list(Eina_Bool is_wide,
|
|
||||||
int count,
|
|
||||||
int nitems)
|
|
||||||
{
|
|
||||||
if (is_wide)
|
|
||||||
{
|
|
||||||
wchar_t **list;
|
|
||||||
|
|
||||||
list = (wchar_t **)malloc(count * sizeof(wchar_t *));
|
|
||||||
if (!list) return NULL;
|
|
||||||
*list = (wchar_t *)malloc(nitems * sizeof(wchar_t));
|
|
||||||
if (!*list)
|
|
||||||
{
|
|
||||||
free(list);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return *list;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char **list;
|
|
||||||
|
|
||||||
list = (char **)malloc(count * sizeof(char *));
|
|
||||||
if (!list) return NULL;
|
|
||||||
*list = (char *)malloc(nitems * sizeof(char));
|
|
||||||
if (!*list)
|
|
||||||
{
|
|
||||||
free(list);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return *list;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_xcb_textlist_copy_list(Eina_Bool is_wide,
|
|
||||||
void *text,
|
|
||||||
char **list,
|
|
||||||
int count)
|
|
||||||
{
|
|
||||||
int len = 0;
|
|
||||||
|
|
||||||
if (is_wide)
|
|
||||||
{
|
|
||||||
wchar_t *txt, *str, **wlist;
|
|
||||||
|
|
||||||
txt = (wchar_t *)text;
|
|
||||||
wlist = (wchar_t **)list;
|
|
||||||
for (str = *wlist; count > 0; count--, wlist++)
|
|
||||||
{
|
|
||||||
_ecore_xcb_textlist_copy_wchar(str, txt);
|
|
||||||
*wlist = str;
|
|
||||||
len = (_ecore_xcb_textlist_len_wchar(str) + 1);
|
|
||||||
str += len;
|
|
||||||
txt += len;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
char *txt, *str, **slist;
|
|
||||||
|
|
||||||
txt = (char *)text;
|
|
||||||
slist = (char **)list;
|
|
||||||
for (str = *slist; count > 0; count--, slist++)
|
|
||||||
{
|
|
||||||
strcpy(str, txt);
|
|
||||||
*slist = str;
|
|
||||||
len = strlen(str) + 1;
|
|
||||||
str += len;
|
|
||||||
txt += len;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static wchar_t *
|
|
||||||
_ecore_xcb_textlist_copy_wchar(wchar_t *str1,
|
|
||||||
wchar_t *str2)
|
|
||||||
{
|
|
||||||
wchar_t *tmp;
|
|
||||||
|
|
||||||
tmp = str1;
|
|
||||||
while ((*str1++ = *str2++))
|
|
||||||
;
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
_ecore_xcb_textlist_len_wchar(wchar_t *str)
|
|
||||||
{
|
|
||||||
wchar_t *ptr;
|
|
||||||
|
|
||||||
ptr = str;
|
|
||||||
while (*ptr)
|
|
||||||
ptr++;
|
|
||||||
return ptr - str;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,375 +0,0 @@
|
||||||
#include "ecore_xcb_private.h"
|
|
||||||
# include <fcntl.h>
|
|
||||||
# include <dlfcn.h>
|
|
||||||
# include <X11/Xlib-xcb.h>
|
|
||||||
|
|
||||||
#define ECORE_XCB_VSYNC_DRI2 1
|
|
||||||
#define DRM_EVENT_CONTEXT_VERSION 2
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_VSYNC_DRI2
|
|
||||||
|
|
||||||
/* relevant header bits of dri/drm inlined here to avoid needing external */
|
|
||||||
/* headers to build drm */
|
|
||||||
typedef unsigned int drm_magic_t;
|
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
DRM_VBLANK_ABSOLUTE = 0x00000000,
|
|
||||||
DRM_VBLANK_RELATIVE = 0x00000001,
|
|
||||||
DRM_VBLANK_EVENT = 0x04000000,
|
|
||||||
DRM_VBLANK_FLIP = 0x08000000,
|
|
||||||
DRM_VBLANK_NEXTONMISS = 0x10000000,
|
|
||||||
DRM_VBLANK_SECONDARY = 0x20000000,
|
|
||||||
DRM_VBLANK_SIGNAL = 0x40000000
|
|
||||||
} drmVBlankSeqType;
|
|
||||||
|
|
||||||
typedef struct _drmVBlankReq
|
|
||||||
{
|
|
||||||
drmVBlankSeqType type;
|
|
||||||
unsigned int sequence;
|
|
||||||
unsigned long signal;
|
|
||||||
} drmVBlankReq;
|
|
||||||
|
|
||||||
typedef struct _drmVBlankReply
|
|
||||||
{
|
|
||||||
drmVBlankSeqType type;
|
|
||||||
unsigned int sequence;
|
|
||||||
long tval_sec, tval_usec;
|
|
||||||
} drmVBlankReply;
|
|
||||||
|
|
||||||
typedef union _drmVBlank
|
|
||||||
{
|
|
||||||
drmVBlankReq request;
|
|
||||||
drmVBlankReply reply;
|
|
||||||
} drmVBlank;
|
|
||||||
|
|
||||||
typedef struct _drmEventContext
|
|
||||||
{
|
|
||||||
int version;
|
|
||||||
void (*vblank_handler)(int fd,
|
|
||||||
unsigned int sequence,
|
|
||||||
unsigned int tv_sec,
|
|
||||||
unsigned int tv_usec,
|
|
||||||
void *user_data);
|
|
||||||
void (*page_flip_handler)(int fd,
|
|
||||||
unsigned int sequence,
|
|
||||||
unsigned int tv_sec,
|
|
||||||
unsigned int tv_usec,
|
|
||||||
void *user_data);
|
|
||||||
} drmEventContext;
|
|
||||||
|
|
||||||
static int (*sym_drmClose)(int fd) = NULL;
|
|
||||||
static int (*sym_drmGetMagic)(int fd,
|
|
||||||
drm_magic_t *magic) = NULL;
|
|
||||||
static int (*sym_drmWaitVBlank)(int fd,
|
|
||||||
drmVBlank *vbl) = NULL;
|
|
||||||
static int (*sym_drmHandleEvent)(int fd,
|
|
||||||
drmEventContext *evctx) = NULL;
|
|
||||||
|
|
||||||
/* dri */
|
|
||||||
static Bool (*sym_DRI2QueryExtension)(Display *display,
|
|
||||||
int *eventBase,
|
|
||||||
int *errorBase) = NULL;
|
|
||||||
static Bool (*sym_DRI2QueryVersion)(Display *display,
|
|
||||||
int *major,
|
|
||||||
int *minor) = NULL;
|
|
||||||
static Bool (*sym_DRI2Connect)(Display *display,
|
|
||||||
XID window,
|
|
||||||
char **driverName,
|
|
||||||
char **deviceName) = NULL;
|
|
||||||
static Bool (*sym_DRI2Authenticate)(Display *display,
|
|
||||||
XID window,
|
|
||||||
drm_magic_t magic) = NULL;
|
|
||||||
|
|
||||||
/* local function prototypes */
|
|
||||||
static Eina_Bool _ecore_xcb_dri_link(void);
|
|
||||||
static Eina_Bool _ecore_xcb_dri_start(void);
|
|
||||||
static void _ecore_xcb_dri_shutdown(void);
|
|
||||||
|
|
||||||
static Eina_Bool _ecore_xcb_dri_cb(void *data EINA_UNUSED,
|
|
||||||
Ecore_Fd_Handler *fdh EINA_UNUSED);
|
|
||||||
static void _ecore_xcb_dri_tick_begin(void *data EINA_UNUSED);
|
|
||||||
static void _ecore_xcb_dri_tick_end(void *data EINA_UNUSED);
|
|
||||||
static void _ecore_xcb_dri_tick_schedule(void);
|
|
||||||
static void _ecore_xcb_dri_vblank_handler(int fd EINA_UNUSED,
|
|
||||||
unsigned int frame EINA_UNUSED,
|
|
||||||
unsigned int sec EINA_UNUSED,
|
|
||||||
unsigned int usec EINA_UNUSED,
|
|
||||||
void *data EINA_UNUSED);
|
|
||||||
|
|
||||||
/* local variables */
|
|
||||||
static Ecore_X_Window _vsync_root = 0;
|
|
||||||
static int _drm_fd = -1;
|
|
||||||
static Ecore_Fd_Handler *_drm_fdh = NULL;
|
|
||||||
static unsigned int _drm_magic = 0;
|
|
||||||
static Eina_Bool _drm_event_busy = EINA_FALSE;
|
|
||||||
static void *_drm_lib = NULL;
|
|
||||||
static void *_dri_lib = NULL;
|
|
||||||
static drmEventContext _drm_evctx;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_dri_init(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
_ecore_xcb_dri_finalize(void)
|
|
||||||
{
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
}
|
|
||||||
|
|
||||||
EAPI Eina_Bool
|
|
||||||
ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win)
|
|
||||||
{
|
|
||||||
#ifdef ECORE_XCB_VSYNC_DRI2
|
|
||||||
Ecore_X_Window root;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
#ifdef ECORE_XCB_VSYNC_DRI2
|
|
||||||
root = ecore_x_window_root_get(win);
|
|
||||||
if (root != _vsync_root)
|
|
||||||
{
|
|
||||||
_vsync_root = root;
|
|
||||||
if (_vsync_root)
|
|
||||||
{
|
|
||||||
if (!_ecore_xcb_dri_link())
|
|
||||||
{
|
|
||||||
ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
_ecore_xcb_dri_shutdown();
|
|
||||||
if (!_ecore_xcb_dri_start())
|
|
||||||
{
|
|
||||||
_vsync_root = 0;
|
|
||||||
ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER);
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
ecore_animator_custom_source_tick_begin_callback_set
|
|
||||||
(_ecore_xcb_dri_tick_begin, NULL);
|
|
||||||
ecore_animator_custom_source_tick_end_callback_set
|
|
||||||
(_ecore_xcb_dri_tick_end, NULL);
|
|
||||||
ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_CUSTOM);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (_drm_fd >= 0)
|
|
||||||
{
|
|
||||||
_ecore_xcb_dri_shutdown();
|
|
||||||
ecore_animator_custom_source_tick_begin_callback_set
|
|
||||||
(NULL, NULL);
|
|
||||||
ecore_animator_custom_source_tick_end_callback_set
|
|
||||||
(NULL, NULL);
|
|
||||||
ecore_animator_source_set(ECORE_ANIMATOR_SOURCE_TIMER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return EINA_TRUE;
|
|
||||||
#else
|
|
||||||
return EINA_FALSE;
|
|
||||||
win = 0;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/* local functions */
|
|
||||||
#ifdef ECORE_XCB_VSYNC_DRI2
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_xcb_dri_link(void)
|
|
||||||
{
|
|
||||||
const char *_drm_libs[] =
|
|
||||||
{
|
|
||||||
"libdrm.so.2",
|
|
||||||
"libdrm.so.1",
|
|
||||||
"libdrm.so.0",
|
|
||||||
"libdrm.so",
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
const char *_dri_libs[] =
|
|
||||||
{
|
|
||||||
"libdri2.so.2",
|
|
||||||
"libdri2.so.1",
|
|
||||||
"libdri2.so.0",
|
|
||||||
"libdri2.so",
|
|
||||||
"libGL.so.4",
|
|
||||||
"libGL.so.3",
|
|
||||||
"libGL.so.2",
|
|
||||||
"libGL.so.1",
|
|
||||||
"libGL.so.0",
|
|
||||||
"libGL.so",
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
int i = 0, fail = 0;
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
|
|
||||||
# define SYM(lib, xx) \
|
|
||||||
do { \
|
|
||||||
sym_## xx = dlsym(lib, #xx); \
|
|
||||||
if (!(sym_## xx)) { \
|
|
||||||
fprintf(stderr, "%s\n", dlerror()); \
|
|
||||||
fail = 1; \
|
|
||||||
} \
|
|
||||||
} while (0);
|
|
||||||
|
|
||||||
if (_drm_lib) return EINA_TRUE;
|
|
||||||
|
|
||||||
for (i = 0; _drm_libs[i]; i++)
|
|
||||||
{
|
|
||||||
_drm_lib = dlopen(_drm_libs[i], (RTLD_LOCAL | RTLD_LAZY));
|
|
||||||
if (_drm_lib)
|
|
||||||
{
|
|
||||||
fail = 0;
|
|
||||||
SYM(_drm_lib, drmClose);
|
|
||||||
SYM(_drm_lib, drmGetMagic);
|
|
||||||
SYM(_drm_lib, drmWaitVBlank);
|
|
||||||
SYM(_drm_lib, drmHandleEvent);
|
|
||||||
if (fail)
|
|
||||||
{
|
|
||||||
dlclose(_drm_lib);
|
|
||||||
_drm_lib = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!_drm_lib) return EINA_FALSE;
|
|
||||||
for (i = 0; _dri_libs[i]; i++)
|
|
||||||
{
|
|
||||||
if ((_dri_lib = dlopen(_dri_libs[i], (RTLD_LOCAL | RTLD_LAZY))))
|
|
||||||
{
|
|
||||||
fail = 0;
|
|
||||||
SYM(_dri_lib, DRI2QueryExtension);
|
|
||||||
SYM(_dri_lib, DRI2QueryVersion);
|
|
||||||
SYM(_dri_lib, DRI2Connect);
|
|
||||||
SYM(_dri_lib, DRI2Authenticate);
|
|
||||||
if (fail)
|
|
||||||
{
|
|
||||||
dlclose(_dri_lib);
|
|
||||||
_dri_lib = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!_dri_lib)
|
|
||||||
{
|
|
||||||
dlclose(_drm_lib);
|
|
||||||
_drm_lib = NULL;
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_xcb_dri_start(void)
|
|
||||||
{
|
|
||||||
Ecore_X_Display *disp;
|
|
||||||
int _dri2_event = 0, _dri2_error = 0;
|
|
||||||
int _dri2_major = 0, _dri2_minor = 0;
|
|
||||||
char *device = NULL, *driver = NULL;
|
|
||||||
|
|
||||||
disp = ecore_x_display_get();
|
|
||||||
if (!sym_DRI2QueryExtension(disp, &_dri2_event, &_dri2_error))
|
|
||||||
return 0;
|
|
||||||
if (!sym_DRI2QueryVersion(disp, &_dri2_major, &_dri2_minor))
|
|
||||||
return 0;
|
|
||||||
if (_dri2_major < 2) return 0;
|
|
||||||
if (!sym_DRI2Connect(disp, _vsync_root, &driver, &device))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
_drm_fd = open(device, O_RDWR);
|
|
||||||
if (_drm_fd < 0) return 0;
|
|
||||||
|
|
||||||
sym_drmGetMagic(_drm_fd, &_drm_magic);
|
|
||||||
if (!sym_DRI2Authenticate(disp, _vsync_root, _drm_magic))
|
|
||||||
{
|
|
||||||
close(_drm_fd);
|
|
||||||
_drm_fd = -1;
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(&_drm_evctx, 0, sizeof(_drm_evctx));
|
|
||||||
_drm_evctx.version = DRM_EVENT_CONTEXT_VERSION;
|
|
||||||
_drm_evctx.vblank_handler = _ecore_xcb_dri_vblank_handler;
|
|
||||||
_drm_evctx.page_flip_handler = NULL;
|
|
||||||
|
|
||||||
_drm_fdh = ecore_main_fd_handler_add(_drm_fd, ECORE_FD_READ,
|
|
||||||
_ecore_xcb_dri_cb, NULL, NULL, NULL);
|
|
||||||
if (!_drm_fdh)
|
|
||||||
{
|
|
||||||
close(_drm_fd);
|
|
||||||
_drm_fd = -1;
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return EINA_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_xcb_dri_shutdown(void)
|
|
||||||
{
|
|
||||||
if (_drm_fd >= 0)
|
|
||||||
{
|
|
||||||
close(_drm_fd);
|
|
||||||
_drm_fd = -1;
|
|
||||||
}
|
|
||||||
if (_drm_fdh)
|
|
||||||
{
|
|
||||||
ecore_main_fd_handler_del(_drm_fdh);
|
|
||||||
_drm_fdh = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_ecore_xcb_dri_cb(void *data EINA_UNUSED,
|
|
||||||
Ecore_Fd_Handler *fdh EINA_UNUSED)
|
|
||||||
{
|
|
||||||
sym_drmHandleEvent(_drm_fd, &_drm_evctx);
|
|
||||||
return ECORE_CALLBACK_RENEW;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_xcb_dri_tick_begin(void *data EINA_UNUSED)
|
|
||||||
{
|
|
||||||
_drm_event_busy = EINA_TRUE;
|
|
||||||
_ecore_xcb_dri_tick_schedule();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_xcb_dri_tick_end(void *data EINA_UNUSED)
|
|
||||||
{
|
|
||||||
_drm_event_busy = EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_xcb_dri_tick_schedule(void)
|
|
||||||
{
|
|
||||||
drmVBlank vbl;
|
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
|
||||||
CHECK_XCB_CONN;
|
|
||||||
|
|
||||||
vbl.request.type = (DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT);
|
|
||||||
vbl.request.sequence = 1;
|
|
||||||
vbl.request.signal = 0;
|
|
||||||
|
|
||||||
sym_drmWaitVBlank(_drm_fd, &vbl);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_ecore_xcb_dri_vblank_handler(int fd EINA_UNUSED,
|
|
||||||
unsigned int frame EINA_UNUSED,
|
|
||||||
unsigned int sec EINA_UNUSED,
|
|
||||||
unsigned int usec EINA_UNUSED,
|
|
||||||
void *data EINA_UNUSED)
|
|
||||||
{
|
|
||||||
ecore_animator_custom_tick();
|
|
||||||
if (_drm_event_busy) _ecore_xcb_dri_tick_schedule();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue