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:
Carsten Haitzler 2016-11-01 23:04:47 +09:00
parent f399e77a92
commit 4ed2e01591
127 changed files with 417 additions and 32322 deletions

View File

@ -1912,7 +1912,7 @@ EFL_LIB_START([Evas])
# X11
AC_ARG_WITH([x11],
[AS_HELP_STRING([--with-x11=xlib|xcb|none],[X11 method to use: xlib, xcb or none])])
[AS_HELP_STRING([--with-x11=xlib|none],[Use X11 (Xlib) or not])])
if test "x${have_windows}" = "xyes" || test "x${have_ps3}" = "xyes" || test "x${have_darwin}" = "xyes"; then
with_x11="none"
@ -1921,7 +1921,6 @@ elif test "x${with_x11}" = "x"; then
fi
want_x11_xlib="no"
want_x11_xcb="no"
want_x11_none="no"
want_x11_any="no"
case "${with_x11}" in
@ -1929,11 +1928,6 @@ case "${with_x11}" in
want_x11_xlib="yes"
want_x11_any="yes"
;;
xcb)
want_x11_xcb="yes"
want_x11_any="yes"
CFOPT_WARNING="xyes"
;;
none)
want_x11_none="yes"
;;
@ -1961,10 +1955,8 @@ case "${with_opengl}" in
esac
want_x11_xlib_opengl="no"
want_x11_xcb_opengl="no"
if test "${with_opengl}" != "none"; then
want_x11_xlib_opengl="${want_x11_xlib}"
want_x11_xcb_opengl="${want_x11_xcb}"
want_x11_any_opengl="${want_x11_any}"
fi
@ -2529,50 +2521,30 @@ EVAS_CHECK_ENGINE([gl-drm], [${want_gl_drm}], [no], [OpenGL Drm])
EVAS_CHECK_ENGINE([eglfs], [${want_eglfs}], [no], [OpenGL Fb])
# Software XCB
have_evas_engine_software_xcb="no"
if test "${with_x11}" = "xcb" ; then
EVAS_CHECK_ENGINE([software-xcb], [${want_x11_xcb}], [no], [Software XCB])
else
AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XCB], [false])
AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XCB], [false])
fi
AC_MSG_CHECKING([whether to build Software XCB Engine])
AC_MSG_RESULT([${have_evas_engine_software_xcb}])
# No Software XCB ? Then try Software Xlib
# Software Xlib
have_evas_engine_software_xlib="no"
if test "x${want_x11_xcb}" = "xno" ; then
EVAS_CHECK_ENGINE([software-xlib], [${want_x11_xlib}], [no], [Software Xlib])
else
AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_XLIB], [false])
AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_XLIB], [false])
fi
EVAS_CHECK_ENGINE([software-xlib], [${want_x11_xlib}], [no], [Software Xlib])
AC_MSG_CHECKING([whether to build Software Xlib Engine])
AC_MSG_RESULT([${have_evas_engine_software_xlib}])
# If software_x11 is available, define everything needed for X11
have_evas_engine_software_x11="no"
if test "x${have_evas_engine_software_xlib}" = "xyes" || test "x${have_evas_engine_software_xlib}" = "xstatic" || test "x${have_evas_engine_software_xcb}" = "xyes" || test "x${have_evas_engine_software_xcb}" = "xstatic" ; then
if test "x${have_evas_engine_software_xlib}" = "xyes" || test "x${have_evas_engine_software_xlib}" = "xstatic"; then
have_evas_engine_software_x11="yes"
AC_DEFINE_UNQUOTED([BUILD_ENGINE_SOFTWARE_X11], [1], [Build software X11 engine])
fi
AM_CONDITIONAL([BUILD_ENGINE_SOFTWARE_X11], [test "x${have_evas_engine_software_x11}" = "xyes"])
if test "x${have_evas_engine_software_xlib}" = "xstatic" || test "x${have_evas_engine_software_xcb}" = "xstatic"; then
if test "x${have_evas_engine_software_xlib}" = "xstatic"; then
AC_DEFINE_UNQUOTED([EVAS_STATIC_BUILD_SOFTWARE_X11], [1], [Build software X11 engine as part of libevas])
fi
AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xcb}" = "xstatic" || test "x${have_evas_engine_software_xlib}" = "xstatic"])
AM_CONDITIONAL([EVAS_STATIC_BUILD_SOFTWARE_X11], [test "x${have_evas_engine_software_xlib}" = "xstatic"])
# Needed for evas-software-x11.pc
AC_SUBST([have_evas_engine_software_xlib])
AC_SUBST([have_evas_engine_software_xcb])
# Software generic
AC_DEFINE([EVAS_STATIC_BUILD_SOFTWARE_GENERIC], [1], [Build software generic engine as part of libevas])
@ -2584,28 +2556,10 @@ if test "${with_opengl}" = "es" ; then
AC_DEFINE(GL_GLES, 1, [GLSL runtime shader GLES2 support])
fi
# OpenGL XCB
have_evas_engine_gl_xcb="no"
if test "${want_x11_xcb_opengl}" = "yes"; then
EVAS_CHECK_ENGINE([gl-xcb], [${want_x11_xcb_opengl}], [no], [OpenGL XCB])
else
AM_CONDITIONAL([BUILD_ENGINE_GL_XCB], [false])
AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XCB], [false])
fi
AC_MSG_CHECKING([whether to build OpenGL XCB Engine])
AC_MSG_RESULT([${have_evas_engine_gl_xcb}])
# No openGL XCB ? Then try OpenGL Xlib
# OpenGL Xlib
have_evas_engine_gl_xlib="no"
if test "x${have_evas_engine_gl_xcb}" = "xno" ; then
EVAS_CHECK_ENGINE([gl-xlib], [${want_x11_xlib_opengl}], [no], [OpenGL XLib])
else
AM_CONDITIONAL([BUILD_ENGINE_GL_XLIB], [false])
AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_XLIB], [false])
fi
EVAS_CHECK_ENGINE([gl-xlib], [${want_x11_xlib_opengl}], [no], [OpenGL XLib])
AC_MSG_CHECKING([whether to build OpenGL Xlib Engine])
AC_MSG_RESULT([${have_evas_engine_gl_xlib}])
@ -2613,21 +2567,20 @@ AC_MSG_RESULT([${have_evas_engine_gl_xlib}])
# If opengl_x11 is available, define everything needed for X11
have_evas_engine_gl_x11="no"
if test "x${have_evas_engine_gl_xlib}" = "xyes" || test "x${have_evas_engine_gl_xlib}" = "xstatic" || test "x${have_evas_engine_gl_xcb}" = "xyes" || test "x${have_evas_engine_gl_xcb}" = "xstatic" ; then
if test "x${have_evas_engine_gl_xlib}" = "xyes" || test "x${have_evas_engine_gl_xlib}" = "xstatic"; then
have_evas_engine_gl_x11="yes"
AC_DEFINE_UNQUOTED([BUILD_ENGINE_GL_X11], [1], [Build OpenGL X11 engine])
fi
AM_CONDITIONAL([BUILD_ENGINE_GL_X11], [test "x${have_evas_engine_gl_x11}" = "xyes"])
if test "x${have_evas_engine_gl_xlib}" = "xstatic" || test "x${have_evas_engine_gl_xcb}" = "xstatic"; then
if test "x${have_evas_engine_gl_xlib}" = "xstatic"; then
AC_DEFINE_UNQUOTED([EVAS_STATIC_BUILD_GL_X11], [1], [Build OpenGL X11 engine as part of libevas])
fi
AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xcb}" = "xstatic" || test "x${have_evas_engine_gl_xlib}" = "xstatic"])
AM_CONDITIONAL([EVAS_STATIC_BUILD_GL_X11], [test "x${have_evas_engine_gl_xlib}" = "xstatic"])
# Needed for evas-opengl-x11.pc
AC_SUBST([have_evas_engine_gl_xlib])
AC_SUBST([have_evas_engine_gl_xcb])
# OpenGL SDL
@ -2679,7 +2632,6 @@ AC_SUBST([evas_engine_gl_common_libs])
have_evas_engine_gl_common="no"
have_static_evas_engine_gl_common="no"
if test "x$have_evas_engine_gl_xlib" = "xyes" || \
test "x$have_evas_engine_gl_xcb" = "xyes" || \
test "x$have_evas_engine_gl_sdl" = "xyes" || \
test "x$have_evas_engine_gl_cocoa" = "xyes" || \
test "x$have_evas_engine_gl_drm" = "xyes" || \
@ -2688,7 +2640,6 @@ if test "x$have_evas_engine_gl_xlib" = "xyes" || \
have_evas_engine_gl_common="yes"
fi
if test "x$have_evas_engine_gl_xlib" = "xstatic" || \
test "x$have_evas_engine_gl_xcb" = "xstatic" || \
test "x$have_evas_engine_gl_sdl" = "xstatic" || \
test "x$have_evas_engine_gl_cocoa" = "xstatic" || \
test "x$have_evas_engine_gl_drm" = "xstatic" || \
@ -4177,65 +4128,6 @@ EFL_INTERNAL_DEPEND_PKG([ECORE_X], [eina])
## Xlib
## XCB
### Checks for header files
AC_CHECK_DECL([MAXHOSTNAMELEN], [FOUND_MAXHOSTNAMELEN=yes])
if test "x${FOUND_MAXHOSTNAMELEN}" != "xyes" ; then
FOUND_MAXHOSTNAMELEN="not found"
AC_COMPILE_IFELSE(
[
AC_LANG_PROGRAM(
[[
#include <sys/param.h>
]],
[[
int h = MAXHOSTNAMELEN;
]])
],
[
FOUND_MAXHOSTNAMELEN="sys/param.h"
AC_DEFINE([NEED_SYS_PARAM_H], [1], [Define to 1 if you need <sys/param.h> to define MAXHOSTNAMELEN])
])
AC_COMPILE_IFELSE(
[
AC_LANG_PROGRAM(
[[
#include <netdb.h>
]],
[[
int h = MAXHOSTNAMELEN;
]])
],
[
FOUND_MAXHOSTNAMELEN="netdb.h"
AC_DEFINE([NEED_NETDB_H], [1], [Define to 1 if you need <netdb.h> to define MAXHOSTNAMELEN])
])
AC_MSG_CHECKING([for header that defines MAXHOSTNAMELEN])
AC_MSG_RESULT([$FOUND_MAXHOSTNAMELEN])
fi
## Xlib
if test "x${want_x11_xcb}" = "xyes" ; then
KEYSYMDEFDIR=`$PKG_CONFIG --variable=includedir xproto`/X11
FILES="keysymdef.h XF86keysym.h Sunkeysym.h DECkeysym.h HPkeysym.h"
for i in $FILES; do
if test -f "$KEYSYMDEFDIR/$i"; then
KEYSYMDEFS="$KEYSYMDEFS $KEYSYMDEFDIR/$i"
elif test "x$i" = "xkeysymdef.h"; then
AC_MSG_ERROR([Cannot find keysymdef.h])
fi
done
AC_MSG_CHECKING([keysym definitions])
AC_MSG_RESULT([$KEYSYMDEFS])
AC_SUBST([KEYSYMDEFS])
fi
### Checks for types
### Checks for structures
@ -4302,54 +4194,6 @@ if test "x${want_x11_xlib}" = "xyes" ; then
EFL_CHECK_FUNCS([ECORE_X], [dlopen dlsym])
fi
## XCB
if test "${want_x11_xcb}" = "yes"; then
dnl note: added pixman-1 as ecore_xcb_region uses that
EFL_DEPEND_PKG([ECORE_X], [ECORE_X_XCB],
[x11-xcb xcb xcb-shm xcb-event xcb-icccm >= 0.3.8 xcb-util >= 0.3.8 xcb-image xcb-keysyms >= 0.3.8 xcb-composite xcb-present xcb-damage xcb-dpms xcb-randr xcb-render xcb-screensaver xcb-shape xcb-sync xcb-xfixes xcb-xinerama xcb-xtest xcb-renderutil pixman-1])
dnl TODO: remove these ifdefs from code!
AC_DEFINE([ECORE_XCB_COMPOSITE], [1], [Build support for XCB composite])
AC_DEFINE([ECORE_XCB_DAMAGE], [1], [Build support for XCB damage])
AC_DEFINE([ECORE_XCB_DPMS], [1], [Build support for XCB dpms])
AC_DEFINE([ECORE_XCB_RANDR], [1], [Build support for XCB randr])
AC_DEFINE([ECORE_XCB_RENDER], [1], [Build support for XCB render])
AC_DEFINE([ECORE_XCB_SCREENSAVER], [1], [Build support for XCB screensaver])
AC_DEFINE([ECORE_XCB_SHAPE], [1], [Build support for XCB shape])
AC_DEFINE([ECORE_XCB_SYNC], [1], [Build support for XCB sync])
AC_DEFINE([ECORE_XCB_XFIXES], [1], [Build support for XCB xfixes])
AC_DEFINE([ECORE_XCB_XINERAMA], [1], [Build support for XCB xinerama])
AC_DEFINE([ECORE_XCB_XTEST], [1], [Build support for XCB xtest])
AC_DEFINE([ECORE_XCB_CURSOR], [1], [Build support for XCB cursor])
EFL_OPTIONAL_DEPEND_PKG([ECORE_X], [${want_xpresent}], [ECORE_XCB_XPRESENT],
[xcb-present])
AC_DEFINE_IF([ECORE_XCB_XPRESENT], [test "${want_xpresent}" = "yes"],
[1], [Build support for XCB Present])
EFL_ADD_FEATURE([ECORE_X], [xpresent])
EFL_OPTIONAL_DEPEND_PKG([ECORE_X], [${want_gesture}], [ECORE_XCB_GESTURE],
[xcb-gesture])
AC_DEFINE_IF([ECORE_XCB_XGESTURE], [test "${want_gesture}" = "yes"],
[1], [Build support for XCB xgesture])
EFL_ADD_FEATURE([ECORE_X], [gesture])
dnl input extension disabled currently in xcb as xcb-input has some issues
dnl remember to add xcb-xinput to EFL_DEPEND_PKG()
dnl AC_DEFINE([ECORE_XCB_XINPUT], [1], [Build support for XCB input])
dnl dri extension disabled currently in xcb
dnl remember to add xcb-dri2 to EFL_DEPEND_PKG()
dnl AC_DEFINE([ECORE_XCB_DRI], [1], [Build support for XCB dri])
EFL_EVAL_PKGS([ECORE_X])
EFL_CHECK_FUNCS([ECORE_X], [dlopen iconv])
HAVE_ECORE_X_BACKEND="HAVE_ECORE_X_XCB"
fi
EFL_ADD_LIBS([ECORE_X], [${ECORE_X_LIBS}])
AC_SUBST([HAVE_ECORE_X_BACKEND])
@ -4357,7 +4201,6 @@ AC_SUBST([HAVE_ECORE_X_BACKEND])
EFL_LIB_END_OPTIONAL([Ecore_X])
AM_CONDITIONAL([HAVE_ECORE_X_XLIB], [test "${want_x11_xlib}" = "yes"])
AM_CONDITIONAL([HAVE_ECORE_X_XCB], [test "${want_x11_xcb}" = "yes"])
#### End of Ecore_X
@ -4610,7 +4453,6 @@ AM_CONDITIONAL([BUILD_ECORE_EVAS_WIN32],
ECORE_EVAS_MODULE([software-x11], [${want_x11_any}])
have_ecore_evas_software_xlib="no"
have_ecore_evas_software_xcb="no"
if test "x$have_ecore_evas_software_x11" = "xyes" ; then
have_ecore_evas_software_xlib=${have_evas_engine_software_xlib}
if test "x${have_ecore_evas_software_xlib}" = "xstatic"; then
@ -4619,13 +4461,6 @@ if test "x$have_ecore_evas_software_x11" = "xyes" ; then
if test "x${have_ecore_evas_software_xlib}" = "xyes"; then
AC_DEFINE([BUILD_ECORE_EVAS_SOFTWARE_XLIB], [1], [Evas Software Xlib Engine Support])
fi
have_ecore_evas_software_xcb=${have_evas_engine_software_xcb}
if test "x$have_ecore_evas_software_xcb" = "xstatic"; then
have_ecore_evas_software_xcb="yes"
fi
if test "x$have_ecore_evas_software_xcb" = "xyes"; then
AC_DEFINE([BUILD_ECORE_EVAS_SOFTWARE_XCB], [1], [Evas Software XCB Engine Support])
fi
fi
# XXX TODO: ecore_evas_opengl_x11
@ -4633,39 +4468,17 @@ fi
ECORE_EVAS_MODULE([opengl-x11], [${want_x11_any_opengl}])
have_ecore_evas_opengl_xlib="no"
have_ecore_evas_opengl_xcb="no"
if test "x${have_ecore_evas_opengl_x11}" = "xyes" || test "x${have_ecore_evas_opengl_x11}" = "xstatic" ; then
have_ecore_evas_opengl_xlib=${have_evas_engine_gl_xlib}
if test "x${have_ecore_evas_opengl_xlib}" = "xyes" ; then
AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_XLIB], [1], [OpenGL Xlib rendering backend])
fi
# opengl does not work with xcb (yet)
have_ecore_evas_opengl_xcb=${have_evas_engine_gl_xcb}
if test "x${have_ecore_evas_opengl_xcb}" = "xstatic"; then
have_ecore_evas_opengl_xcb="yes"
fi
if test "x${have_ecore_evas_opengl_xcb}" = "xyes"; then
PKG_CHECK_MODULES([XCB_X11],
[x11-xcb],
[
have_ecore_x_opengl_xcb="yes"
requirements_ecore_x="x11-xcb ${requirements_ecore_x}"
AC_DEFINE([BUILD_ECORE_X_OPENGL_XCB], [1], [Build support for XCB-based OpenGL])
AC_DEFINE([BUILD_ECORE_EVAS_OPENGL_XCB], [1], [OpenGL XCB rendering backend])
],
[have_ecore_x_opengl_xcb="no"])
else
have_ecore_x_opengl_xcb="no"
AC_MSG_NOTICE([XCB-based OpenGL explicitly disabled])
fi
fi
build_ecore_evas_x11="no"
build_ecore_evas_vnc="no"
if test "x$have_ecore_evas_software_x11" = "xyes" || \
test "x$have_ecore_evas_opengl_x11" = "xyes" || \
test "x$have_ecore_evas_software_xcb" = "xyes"; then
test "x$have_ecore_evas_opengl_x11" = "xyes"; then
AC_DEFINE([BUILD_ECORE_EVAS_X11], [1], [Support for X Window Engines in Ecore_Evas])
build_ecore_evas_x11="yes"
if test "$want_vnc_server" = "yes"; then
@ -6062,27 +5875,6 @@ if test -n "$CFOPT_WARNING"; then
echo "==-- WARNING --=="
echo ""
echo "_____________________________________________________________________"
if test "x${with_x11}" = "xxcb"; then
echo "_____________________________________________________________________"
echo "You have chosen to use XCB instead of Xlib. It is a myth that XCB"
echo "is amazingly faster than Xlib (when used sensibly). It can be"
echo "faster in a few corner cases on startup of an app, but it comes"
echo "with many downsides. One of those is more complex code inside"
echo "ecore_x, which is far less tested in XCB mode than Xlib. Also"
echo "the big catch is that OpenGL support basically requires Xlib anyway"
echo "so if you want OpenGL in X11, you need Xlib regardless and so you"
echo "gain nothing really in terms of speed and no savings in memory"
echo "because Xlib is still linked, loaded and used, BUT instead you"
echo "have OpenGL drivers working with an hybrid XCB/Xlib (mostly XCB)"
echo "toolkit and this is basically never tested by anyone working on"
echo "the OpenGL drivers, so you will have bugs. Do not enable XCB"
echo "and use OpenGL. XCB is only useful if you wish to shave a few Kb"
echo "off the memory footprint of a whole system and live with less"
echo "tested code, and possibly unimplemented features in ecore_x. To"
echo "remove the XCB setup, remove the --with-x11=xcb option to"
echo "configure."
echo "_____________________________________________________________________"
fi
if test "x${want_physics}" = "xno"; then
echo "_____________________________________________________________________"
echo "You have chosen to disable physics support. This disables lots of"

View File

@ -123,167 +123,6 @@ pthread_create(NULL, NULL, NULL, NULL);
])
])
dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_XCB],
[
requirement=""
have_dep="no"
evas_engine_[]$1[]_cflags=""
evas_engine_[]$1[]_libs=""
PKG_CHECK_EXISTS([xcb xcb-shm xcb-image >= 0.2.1 pixman-1],
[
have_dep="yes"
requirement="xcb xcb-shm xcb-image >= 0.2.1 pixman-1"
],
[have_dep="no"])
if test "x${have_dep}" = "xyes" ; then
if test "x$3" = "xstatic" ; then
requirements_pc_evas="${requirement} ${requirements_pc_evas}"
requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}"
else
PKG_CHECK_MODULES([XCB], [${requirement}])
evas_engine_[]$1[]_cflags="${XCB_CFLAGS}"
evas_engine_[]$1[]_libs="${XCB_LIBS}"
fi
fi
AC_SUBST([evas_engine_$1_cflags])
AC_SUBST([evas_engine_$1_libs])
AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5])
])
dnl use: EVAS_CHECK_ENGINE_DEP_GL_XCB(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EVAS_CHECK_ENGINE_DEP_GL_XCB],
[
requirement=""
EFL_FIND_X(evas_engine_[]$1, [GL/gl.h],
[X11 XCreateColormap Xrender XRenderCreatePicture],
[
CFLAGS_save="$CFLAGS"
CFLAGS="$CFLAGS $evas_engine_[]$1[]_cflags"
CPPFLAGS_save="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $evas_engine_[]$1[]_cflags"
AC_CHECK_HEADER([GL/glext.h],
[have_dep="yes"],
[have_dep="no"],
[
#include <GL/gl.h>
#include <GL/glext.h>
#include <GL/glx.h>
])
CPPFLAGS=$CPPFLAGS_save
CFLAGS=$CFLAGS_save
gl_pt_lib="";
have_gl_pt="no"
AC_MSG_CHECKING([whether pthread_create() is supported])
CFLAGS_save="${CFLAGS}"
CFLAGS="${CFLAGS} -pthread"
LIBS_save="${LIBS}"
LIBS="${LIBS} -pthread"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[
#include <pthread.h>
]],
[[
pthread_create(NULL, NULL, NULL, NULL);
]])],
[have_gl_pt="yes"],
[have_gl_pt="no"])
CFLAGS=${CFLAGS_save}
LIBS=${LIBS_save}
AC_MSG_RESULT([${have_gl_pt}])
if test "x$have_gl_pt" = "xyes" ; then
gl_pt_lib=" -pthread"
fi
if test "x$have_dep" = "xyes" ; then
LIBS_save="$LIBS"
LIBS="$LIBS $evas_engine_[]$1[]_libs"
AC_CHECK_LIB([GL], [glXCreateContext], [have_dep="yes"], [have_dep="no"], [-lm $gl_pt_lib])
LIBS="$LIBS_save"
fi
],[
have_dep=no
])
PKG_CHECK_EXISTS([x11-xcb xcb xcb-glx xcb-render xcb-renderutil],
[
have_dep="yes"
requirement="x11-xcb xcb xcb-glx xcb-render xcb-renderutil"
],
[have_dep="no"])
if test "x${have_dep}" = "xyes" ; then
if test "x$3" = "xstatic" ; then
requirements_pc_evas="${requirement} ${requirements_pc_evas}"
requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}"
else
PKG_CHECK_MODULES([XCB_GL], [${requirement}])
fi
fi
if test "x${with_opengl}" = "xes" ; then
have_dep=no
fi
if test "x${have_dep}" = "xyes" ; then
evas_engine_[]$1[]_cflags="$evas_engine_[]$1[]_cflags $XCB_GL_CFLAGS"
evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs $XCB_GL_LIBS -lGL $gl_pt_lib"
evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGL $gl_pt_lib"
else
CFLAGS_save="$CFLAGS"
CFLAGS="$CFLAGS $evas_engine_[]$1[]_cflags"
CPPFLAGS_save="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $evas_engine_[]$1[]_cflags"
AC_CHECK_HEADER([GLES2/gl2.h],
[have_egl="yes"],
[have_egl="no"],
[
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <EGL/egl.h>
])
CPPFLAGS=$CPPFLAGS_save
CFLAGS=$CFLAGS_save
if test "x${have_egl}" = "xyes" ; then
LIBS_save="$LIBS"
LIBS="$LIBS $evas_engine_[]$1[]_libs"
AC_CHECK_LIB(GLESv2, glTexImage2D, [have_glesv2="yes"], , -lEGL -lm $gl_pt_lib)
if test "x${have_glesv2}" = "xyes" ; then
evas_engine_[]$1[]_cflags="$evas_engine_[]$1[]_cflags $XCB_GL_CFLAGS"
evas_engine_[]$1[]_libs="$evas_engine_[]$1[]_libs $XCB_GL_LIBS -lGLESv2 -lEGL -lm $gl_pt_lib"
evas_engine_gl_common_libs="$evas_engine_[]$1[]_libdirs -lGLESv2 -lm $gl_pt_lib"
have_dep="yes"
AC_DEFINE(GLES_VARIETY_SGX, 1, [Imagination SGX GLES2 support])
gles_variety_sgx="yes"
fi
fi
fi
if test "x$3" = "xstatic" && test "x${have_dep}" = "xyes" ; then
requirements_libs_evas="${evas_engine_[]$1[]_libs} ${requirements_libs_evas}"
requirements_pc_evas="${requirement} ${requirements_pc_evas}"
requirements_pc_deps_evas="${requirement} ${requirements_pc_deps_evas}"
fi
AS_IF([test "x${have_dep}" = "xyes"], [$4], [$5])
])
dnl use: EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI(engine, simple, want_static[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
AC_DEFUN([EVAS_CHECK_ENGINE_DEP_SOFTWARE_GDI],

View File

@ -3,4 +3,3 @@ Description: Evas OpenGL X11 engine
Version: @VERSION@
Xlib=@have_evas_engine_gl_xlib@
XCB=@have_evas_engine_gl_xcb@

View File

@ -3,4 +3,3 @@ Description: Evas software X11 engine
Version: @VERSION@
Xlib=@have_evas_engine_software_xlib@
XCB=@have_evas_engine_software_xcb@

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-02-10 09:34+0000\n"
"Last-Translator: JoanColl <Unknown>\n"
"Language-Team: Catalan\n"
@ -143,67 +143,67 @@ msgstr "no s'ha definit la llicència.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERROR: opció desconeguda --%s, s'ha ignorat.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERROR: l'opció --%s requereix un argument!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERROR: opció desconeguda -%c, s'ha ignorat.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERROR: L'opció -%c requereix un argument!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERROR: es requereix argument posicional %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERROR: acció no permesa %d per argument posicional %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERROR: no s'ha proporcionat cap analitzador.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERROR: no s'ha proporcionat cap valor.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERROR: no s'ha proporcionat cap argument.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERROR: s'han trobat opcions no vàlides."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Miri --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Miri -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERROR: arguments posicionals no vàlids."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERROR: valor geomètric incorrecte '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERROR: tamany incorrecte '%s'\n"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-05-22 22:44+0200\n"
"Last-Translator: Tomáš Čech <sleep_walker@suse.cz>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@ -145,68 +145,68 @@ msgstr "nebyla definována licence.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "CHYBA: neznámá volba --%s, ignoruji.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "CHYBA: volba --%s vyžaduje argument!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "CHYBA: neznámá volba -%c, ignoruji.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "CHYBA: volba -%c vyžaduje argument!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "CHYBA: volba -%c vyžaduje argument!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "CHYBA: nebyl poskytnut parser.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "CHYBA: nebyly poskytnuty hodnoty.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "CHYBA: nebyly poskytnuty argumenty.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "CHYBA: nalezeny neplatné volby."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Viz --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Viz -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "CHYBA: nalezeny neplatné volby."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "CHYBA: neplatná hodnota geometrie '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "CHYBA: neplatná hodnota velikosti '%s'\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2011-02-25 20:22+0100\n"
"Last-Translator: Fabian Nowak <timystery@arcor.de>\n"
"Language-Team: German\n"
@ -143,68 +143,68 @@ msgstr "es wurde keine Lizenz angegeben.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "FEHLER: Unbekannte Option --%s, ignoriert\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "FEHLER: Option --%s benötigt ein Argument!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "FEHLER: Unbekannte Option -%c, ignoriert\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "FEHLER: Option -%c benötigt ein Argument!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "FEHLER: Option -%c benötigt ein Argument!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "FEHLER: Kein Parser bereitgestellt.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "FEHLER: Keine Werte bereitgestellt.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "FEHLER: Keine Argumente bereitgestellt.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "FEHLER: Ungültige Optionen gefunden."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Siehe --%s\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Siehe -%c\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "FEHLER: Ungültige Optionen gefunden."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "FEHLER: Falscher Geometriewert \"%s\"\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "FEHLER: Falscher Größenwert \"%s\"\n"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2012-12-19 15:58+0200\n"
"Last-Translator: Efstathios Iosifidis <iosifidis@opensuse.org>\n"
"Language-Team: Ελληνικά, Σύγχρονα <opensuse-translation-el@opensuse.org>\n"
@ -146,68 +146,68 @@ msgstr "δεν έχει οριστεί άδεια.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή --%s, αγνοήθηκε.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ΣΦΑΛΜΑ: η επιλογή --%s απαιτεί μια παράμετρο!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ΣΦΑΛΜΑ: άγνωστη επιλογή -%c, αγνοήθηκε.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ΣΦAΛΜΑ: η επιλογή -%c απαιτεί μία παράμετρο!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ΣΦΑΛΜΑ: δεν παρέχεται αναλυτής.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ΣΦΑΛΜΑ: δεν έχουν δοθεί τιμές.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ΣΦΑΛΜΑ:δεν έχουν δοθεί παράμετροι.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Δείτε --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Δείτε -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "ΣΦΑΛΜΑ: βρέθηκαν μη έγκυρες επιλογές."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ΣΦΑΛΜΑ: μη έγκυρη γεωμετρική τιμή '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ΣΦΑΛΜΑ: μη έγκυρη τιμή μεγέθους '%s'\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2013-11-05 18:59+0000\n"
"Last-Translator: Eliovir <Unknown>\n"
"Language-Team: Esperanto <eo@li.org>\n"
@ -142,67 +142,67 @@ msgstr "neniu permesilo estas difinita.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERARO: nekonata opcio --%s. Ignorita.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERARO: opcio --%s postulas argumenton!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERARO: nekonata opcio -%c. Ignorata.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERARO: opcio -%c postulas argumenton!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERARO: nepra poziciaj argumento %s mankas.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERARO: neeltena tipo de agado %d por pozicia argumento %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERARO: neniu sintaksa analizilo provizita.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERARO: neniu valoro provizita.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERARO: neniu argumento provizita.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERARO: nevalidaj opcioj trovitaj."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Vidu --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Vidu -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERARO: nevalida poziciaj argumentoj trovitaj."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERARO: nekorekta geometria valoro '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERARO: nekorekta valoro de grando '%s'\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-05-03 18:19+0100\n"
"Last-Translator: Adrián Arévalo <adri58@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@ -142,67 +142,67 @@ msgstr "no se definió la licencia.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERROR: opción desconocida --%s, ignorada.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERROR: La opción --%s requiere un argumento!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERROR: opción desconocida -%c, ignorada.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERROR: La opción -%c requiere un argumento!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERROR: Falta un argumento posicional requerido %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERROR: tipo de acción %d no permitido para argumento posicional %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERROR: no se proporcionó ningún parser.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERROR: no se proporcionó ningún valor.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERROR: no se proporcionó ningún argumento.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERROR: opciones inválidas."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Vea --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Vea -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERROR: argumentos posicionales inválidos encontrados."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERROR: valor geométrico incorrecto '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERROR: tamaño incorrecto '%s'\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-08-31 15:13+0000\n"
"Last-Translator: Kai Huuhko <kai.huuhko@gmail.com>\n"
"Language-Team: Finnish <fi@li.org>\n"
@ -142,67 +142,67 @@ msgstr "lisenssiä ei määritelty.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "VIRHE: tuntematon optio --%s, jätetty huomioimatta.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "VIRHE: optio --%s tarvitsee argumentin!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "VIRHE: tuntematon optio -%c, jätetty huomioimatta.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "VIRHE: optio -%c tarvitsee argumentin\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "VIRHE: puuttuva pakollinen sija-argumentti %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "VIRHE: toimintotyyppi %d ei ole tuettu sija-argumentille %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "VIRHE: jäsennintä ei annettu.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "VIRHE: yhtään arvoa ei annettu.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "VIRHE: yhtään argumenttia ei annettu.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "VIRHE: virheellisiä optioita löydetty."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Katso --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Katso -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "VIRHE: virheellisiä sija-argumentteja löydetty."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "VIRHE: virheellinen geometrinen arvo '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "VIRHE: virheellinen koon arvo '%s'\n"

View File

@ -11,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-05-25 20:18+0000\n"
"Last-Translator: Eliovir <Unknown>\n"
"Language-Team: French <sansgourou@gmail.com>\n"
@ -148,67 +148,67 @@ msgstr "aucune licence nest définie.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERREUR : option inconnue --%s, non prise en compte.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERREUR : loption --%s requiert un argument !\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERREUR : option inconnue -%c, non prise en compte.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERREUR : loption -%c requiert un argument !\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERREUR : aucun analyseur nest fourni.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERREUR : aucune valeur nest fournie.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERREUR : aucun argument nest fourni.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERREUR : options non valides détectées."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Voir --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Voir -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERREUR : valeur géométrique incorrecte « %s »\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERREUR : valeur de taille incorrecte « %s »\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-05-24 08:39+0000\n"
"Last-Translator: Kaptan <khanyux@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\n"
@ -141,67 +141,67 @@ msgstr "non se definiu a licenza.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERRO: opción descoñecida --%s, ignorada.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERRO: opción --%s require un argumento!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERRO: opción descoñecida -%c, ignorada.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERRO: opción -%c require un argumento!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERRO: non se forneceu ningún procesador.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERRO: non se forneceu ningún valor.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERRO: non se forneceu ningún argumento.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERRO: atopadas opcións inválidas."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Consulte --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Consulte -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERRO: valor xeométrico incorrecto '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERRO: valor do tamaño incorrecto '%s'\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 1.8.2\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-01-29 15:27+0100\n"
"Last-Translator: rezso <rezso@rezso.net>\n"
"Language-Team: General\n"
@ -142,68 +142,68 @@ msgstr "Nincs definiált licenc.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "HIBA: ismeretlen opció: --%s, figyelmen kívül hagyva.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "HIBA: --%s opció argumentumot igényel.\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "HIBA: ismeretlen opció: -%c, figyelmen kívül hagyva.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "HIBA: -%c opció argumentumot igényel.\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "HIBA: -%c opció argumentumot igényel.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "HIBA: hiányzó parser.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "HIBA: hiányzó értékek.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "HIBA: hiányzó argumentumok.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "HIBA: érvénytelen opciók találhatók."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Lásd --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Lásd -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "HIBA: érvénytelen opciók találhatók."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "HIBA: helytelen geometria érték: '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "HIBA: helytelen méret érték: '%s'\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-06-11 14:19+0200\n"
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
"Language-Team: General\n"
@ -140,68 +140,68 @@ msgstr "nessuna licenza definita.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERRORE: opzione sconosciuta --%s, ignorata.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERRORE: l'opzione --%s richiede un argomento!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERRORE: opzione sconosciuta -%c, ignorata.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERRORE: l'opzione -%c richiede un argomento!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERRORE: manca l'argomento posizionale %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
"ERRORE: azione di tipo %d non supportata per argomento posizionale %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERRORE: nessun parser fornito.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERRORE: nessun valore fornito.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERRORE: nessun argomento fornito.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERRORE: trovate opzioni non valide."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Vedere --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Vedere -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERRORE: trovati argomenti posizionali non validi."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERRORE: valore geometrico non corretto '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERRORE: valore dimensione non corretto '%s'\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Efl\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2012-06-24 17:10+0900\n"
"Last-Translator: Daichi Fukui<when.a.cat.sits.beside.you@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@ -140,68 +140,68 @@ msgstr "ライセンスが定義されていません.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "エラー: 不明なオプション --%s, 無視.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "エラー: オプション --%s には引数が必要です.\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "エラー: 不明なオプション -%c, 無視.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "エラー: オプション -%c には引数が必要です.\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "エラー: オプション -%c には引数が必要です.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "エラー: パーサーがありません.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "エラー: 値がありません.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "エラー: 引数がありません.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "エラー: 不正なオプションです."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "--%s を参照.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "-%c を参照.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "エラー: 不正なオプションです."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "エラー: 不正なジオメトリ値 '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "エラー: 不正なsize値です '%s'\n"

View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Efl\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-11-10 01:01+0900\n"
"Last-Translator: Daniel Juyung Seo <seojuyung2@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@ -145,67 +145,67 @@ msgstr "정의한 라이선스가 없습니다.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "오류: 알 수 없는 --%s 옵션을 무시합니다.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "오류: --%s 옵션에 인자가 필요합니다!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "오류: 알 수 없는 -%c 옵션을 무시합니다.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "오류: -%c 옵션에 인자가 필요합니다!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "오류: %s 옵션에 위치 인자가 필요합니다!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "오류: 지원하지 않는 동작 형식 %d의 위치 인자 %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "오류: 해석 프로그램이 존재하지 않습니다.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "오류: 값이 존재하지 않습니다.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "인자가 존재하지 않습니다.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "오류: 잘못된 옵션이 있습니다."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " --%s 옵션을 참조하십시오.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " -%c 옵션을 참조하십시오.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "오류: 잘못된 위치 인자가 있습니다."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "오류: '%s' 값의 좌표가 올바르지 않습니다\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "오류: '%s' 값의 크기가 올바르지 않습니다\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-02-21 22:38+0000\n"
"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
"Language-Team: Lithuanian <lt@li.org>\n"
@ -142,67 +142,67 @@ msgstr ""
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "KLAIDA: nežinomas parametras --%s, nepaisomas.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "KLAIDA: nežinomas parametras -%c, nepaisomas.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "KLAIDA: aptikti netinkami parametrai."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2011-06-19 16:41+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@gmail.com>\n"
"Language-Team: Dutch <vistausss@gmail.com>\n"
@ -144,68 +144,68 @@ msgstr "geen licentie was gedefinieerd.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "FOUT: onbekende optie --%s, genegeerd.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "FOUT: optie --%s vereist een argument!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "FOUT: onbekende opties -%c, genegeerd.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "FOUT: optie -%c vereist een argument!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "FOUT: optie -%c vereist een argument!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "FOUT: geen doorvoerder beschikbaar gesteld.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "FOUT: geen waarden beschikbaar gesteld.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "FOUT: geen argumenten beschibaar gesteld.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "FOUT: ongeldige opties gevonden."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Zie --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Zie -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "FOUT: ongeldige opties gevonden."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "Fout: foutieve wiskundige waarde '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "FOUT: foutieve grootte-waarden '%s'\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2013-11-23 14:48+0100\n"
"Last-Translator: Konrad Makowski <poczta@konradmakowski.pl>\n"
"Language-Team: General\n"
@ -143,68 +143,68 @@ msgstr "nie zdefiniowano licencji.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "BŁĄD: nieznana opcja --%s, zignorowano.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "BŁĄD: opcja --%s wymaga argumentu!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "BŁĄD: nieznana opcja --%c, zignorowano.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "BŁĄD: opcja --%c wymaga argumentu!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "BŁĄD: opcja --%c wymaga argumentu!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "BŁĄD: nie dostarczono parsera.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "BŁĄD: nie podano wartości.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "BŁĄD: nie podano argumentów.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "BŁĄD: wykryto błędne funkcje."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Zobacz --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Zobacz -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "BŁĄD: wykryto błędne funkcje."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "BŁĄD: nieprawidłowa wartość geometryczna \"%s\"\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "BŁĄD: nieprawdiłowy rozmiar wartości \"%s\"\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2013-11-05 14:11-0000\n"
"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
"Language-Team: General\n"
@ -142,67 +142,67 @@ msgstr "licença não definida.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ERRO: opção desconhecida --%s, ignorada.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ERRO: a opção --%s requer um argumento!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ERRO: opção desconhecida --%c, ignorada.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ERRO: a opção --%c requer um argumento!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "ERRO: falta o argumento de posição necessário %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "ERRO: tipo de ação não suportado %d para o argumento de posição %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ERRO: nenhum processador fornecido.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ERRO: nenhum valor fornecido.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ERRO: nenhum argumento fornecido.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ERRO: encontradas opções inválidas."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Consulte --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Consulte -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "ERRO: encontrados argumentos de posição inválidos."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ERRO: valor geométrico incorreto \"%s\"\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ERRO: tamanho incorreto \"%s\"\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary 1.11\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-02-07 15:16+0300\n"
"Last-Translator: Игорь Мурзов <garik@efl.so>\n"
"Language-Team: ru <enlightenment-intl@lists.sourceforge.net>\n"
@ -143,67 +143,67 @@ msgstr ""
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Efl\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2016-09-21 17:00+0200\n"
"Last-Translator: Renato Rener <renato.rener@gmail.com>\n"
"Language-Team: Enlightenment Team\n"
@ -141,67 +141,67 @@ msgstr "definirana ni bila nobena licenca.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "NAPAKA:·neznana možnost·--%s,·prezrto.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "NAPAKA:·možnost·--%s·zahteva argument!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "NAPAKA:·neznana možnost·-%c,·prezrto.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "NAPAKA:·možnost·-%c zahteva argument!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "NAPAKA: manjka zahtevani argument nahajališča %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "NAPAKA: nepodprto dejanje vrste %d za argumente nahajališča %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "NAPAKA:·ni podan razčlenjevalnik.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "NAPAKA::·ni podanih vrednosti.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "NAPAKA::·ni podanih argumentov.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "NAPAKA::·najdene nepravilne možnosti"
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "·Glej·--%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "·Glej·-%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "NAPAKA: nepravilni argumenti nahajališča najdeni."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "NAPAKA::·nepravilna geometrijska vrednost·'%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "NAPAKA::·nepravilna vrednost velikosti·'%s'\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: а\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-01-31 14:06+0100\n"
"Last-Translator: Саша Петровић <salepetronije@gmail.com>\n"
"Language-Team: српски <xfce4@xfce4.org>\n"
@ -145,67 +145,67 @@ msgstr "није одређена дозвола.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "ГРЕШКА: непозната могућност --%s, занемарујем.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "ГРЕШКА: могућност --%s захтева одредницу!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "ГРЕШКА: непозната могућност -%c, занемарујем.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "ГРЕШКА: могућност -%c захтева одредницу!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "Грешка: недостаје потребна одредница положаја %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "Грешка: неподржана радња врсте %d за одредницу положаја %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "ГРЕШКА: није обезбеђен рашчлањивач.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "ГРЕШКА: нема обезбеђених вредности.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "ГРЕШКА: није обезбеђена одредница.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "ГРЕШКА: нађена је неисправна могућност."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Погледајте --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Погледајте -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "Грешка: нађена је неисправна одредница положаја."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "ГРЕШКА: неисправна геометријска вредност „%s“\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "ГРЕШКА: неисправна вредност величине „%s“\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: enlightenment\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2014-04-18 13:35+0000\n"
"Last-Translator: Ali E.İMREK <alierkanimrek@gmail.com>\n"
"Language-Team: Turkish <tr@li.org>\n"
@ -142,67 +142,67 @@ msgstr "lisans tanımlanmadı.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "HATA: bilinmeyen seçenek --%s, yoksayıldı.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "HATA: seçenek --%s bağımsız bir değişken gerektirir!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "HATA: bilinmeyen seçenek --%c, yoksayıldı.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "HATA: seçenek --%c bağımsız bir değişken gerektirir!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "HATA: konumsal argüman kayıp %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "HATA: %d desteklenmeyen eylem türü %s konumsal argümanı için.\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "HATA: ayrıştırıcı sağlanmadı.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "HATA: değerler sağlanmadı.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "HATA: bağımsız değişkenler sağlanmadı.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "HATA: geçersiz seçenekler bulundu."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " Bakın --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " Bakın -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "HATA: geçersiz konumsal argümanlar bulundu."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "HATA: yanlış geometri değeri '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "HATA: yanlış boyut değeri '%s'\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2015-09-29 18:06+0900\n"
"Last-Translator: Thiep Ha <thiepha@gmail.com>\n"
"Language-Team: General\n"
@ -143,67 +143,67 @@ msgstr "không định nghĩa giấy phép.\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "LỖI: không rõ lựa chọn --%s, bỏ qua.\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "LỖI: lựa chọn --%s đòi hỏi một tham số!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "LỖI: không rõ lựa chọn -%c, bỏ qua.\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "LỖI: lựa chọn -%c đòi hỏi một tham số!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "LỖI: thiếu tham số vị trí được yêu cầu %s.\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr "LỖI: kiểu hoạt động không được hỗ trợ %d cho tham số vị trí %s\n"
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "LỖI: không cung cấp bộ phân tích.\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "LỖI: không cung cấp giá trị.\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "LỖI: không cung cấp đối số.\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "LỖI: phát hiện các tùy chọn không hợp lệ."
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr "Xem --%s.\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr "Xem -%c.\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
msgid "ERROR: invalid positional arguments found."
msgstr "LỖI: phát hiện các đối số vị trí không hợp lệ."
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "LỖI: giá trị hình học không đúng '%s'\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "LỖI: giá trị kích thước không đúng '%s'\n"

View File

@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
"POT-Creation-Date: 2016-10-28 09:22+0900\n"
"POT-Creation-Date: 2016-11-01 22:10+0900\n"
"PO-Revision-Date: 2012-12-22 03:55+0800\n"
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
"Language-Team: Chinese (simplified)\n"
@ -142,68 +142,68 @@ msgstr "未定义许可证。\n"
msgid "ERROR: unknown option --%s, ignored.\n"
msgstr "错误:未知选项 --%s忽略。\n"
#: src/lib/ecore/ecore_getopt.c:1703
#: src/lib/ecore/ecore_getopt.c:1710
#, c-format
msgid "ERROR: option --%s requires an argument!\n"
msgstr "错误:选项 --%s 需要一个参数!\n"
#: src/lib/ecore/ecore_getopt.c:1745
#: src/lib/ecore/ecore_getopt.c:1752
#, c-format
msgid "ERROR: unknown option -%c, ignored.\n"
msgstr "错误:未知选项 -%c忽略。\n"
#: src/lib/ecore/ecore_getopt.c:1783
#: src/lib/ecore/ecore_getopt.c:1797
#, c-format
msgid "ERROR: option -%c requires an argument!\n"
msgstr "错误:选项 -%c 需要一个参数!\n"
#: src/lib/ecore/ecore_getopt.c:1878
#: src/lib/ecore/ecore_getopt.c:1892
#, fuzzy, c-format
msgid "ERROR: missing required positional argument %s.\n"
msgstr "错误:选项 -%c 需要一个参数!\n"
#: src/lib/ecore/ecore_getopt.c:1910
#: src/lib/ecore/ecore_getopt.c:1924
#, c-format
msgid "ERROR: unsupported action type %d for positional argument %s\n"
msgstr ""
#: src/lib/ecore/ecore_getopt.c:2031 src/lib/ecore/ecore_getopt.c:2097
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
msgid "ERROR: no parser provided.\n"
msgstr "错误:未提供解析器。\n"
#: src/lib/ecore/ecore_getopt.c:2036 src/lib/ecore/ecore_getopt.c:2102
#: src/lib/ecore/ecore_getopt.c:2050 src/lib/ecore/ecore_getopt.c:2116
msgid "ERROR: no values provided.\n"
msgstr "错误:未提供值。\n"
#: src/lib/ecore/ecore_getopt.c:2045 src/lib/ecore/ecore_getopt.c:2111
#: src/lib/ecore/ecore_getopt.c:2059 src/lib/ecore/ecore_getopt.c:2125
msgid "ERROR: no arguments provided.\n"
msgstr "错误:未提供参数。\n"
#: src/lib/ecore/ecore_getopt.c:2071
#: src/lib/ecore/ecore_getopt.c:2085
msgid "ERROR: invalid options found."
msgstr "错误:无效的选项。"
#: src/lib/ecore/ecore_getopt.c:2077 src/lib/ecore/ecore_getopt.c:2143
#: src/lib/ecore/ecore_getopt.c:2091 src/lib/ecore/ecore_getopt.c:2157
#, c-format
msgid " See --%s.\n"
msgstr " 参看 --%s\n"
#: src/lib/ecore/ecore_getopt.c:2079 src/lib/ecore/ecore_getopt.c:2145
#: src/lib/ecore/ecore_getopt.c:2093 src/lib/ecore/ecore_getopt.c:2159
#, c-format
msgid " See -%c.\n"
msgstr " 参看 -%c\n"
#: src/lib/ecore/ecore_getopt.c:2137
#: src/lib/ecore/ecore_getopt.c:2151
#, fuzzy
msgid "ERROR: invalid positional arguments found."
msgstr "错误:无效的选项。"
#: src/lib/ecore/ecore_getopt.c:2172
#: src/lib/ecore/ecore_getopt.c:2186
#, c-format
msgid "ERROR: incorrect geometry value '%s'\n"
msgstr "错误:不正确的形状 %s\n"
#: src/lib/ecore/ecore_getopt.c:2190
#: src/lib/ecore/ecore_getopt.c:2204
#, c-format
msgid "ERROR: incorrect size value '%s'\n"
msgstr "错误:不正确的大小 %s\n"

View File

@ -12,88 +12,41 @@ lib/ecore_x/Ecore_X_Atoms.h \
lib/ecore_x/Ecore_X_Cursor.h
lib_ecore_x_libecore_x_la_SOURCES = \
lib/ecore_x/ecore_x_atoms_decl.h
if HAVE_ECORE_X_XCB
lib_ecore_x_libecore_x_la_SOURCES += \
lib/ecore_x/xcb/ecore_xcb.c \
lib/ecore_x/xcb/ecore_xcb_atoms.c \
lib/ecore_x/xcb/ecore_xcb_extensions.c \
lib/ecore_x/xcb/ecore_xcb_shape.c \
lib/ecore_x/xcb/ecore_xcb_screensaver.c \
lib/ecore_x/xcb/ecore_xcb_sync.c \
lib/ecore_x/xcb/ecore_xcb_render.c \
lib/ecore_x/xcb/ecore_xcb_randr.c \
lib/ecore_x/xcb/ecore_xcb_xfixes.c \
lib/ecore_x/xcb/ecore_xcb_composite.c \
lib/ecore_x/xcb/ecore_xcb_cursor.c \
lib/ecore_x/xcb/ecore_xcb_damage.c \
lib/ecore_x/xcb/ecore_xcb_dnd.c \
lib/ecore_x/xcb/ecore_xcb_dpms.c \
lib/ecore_x/xcb/ecore_xcb_drawable.c \
lib/ecore_x/xcb/ecore_xcb_e.c \
lib/ecore_x/xcb/ecore_xcb_gc.c \
lib/ecore_x/xcb/ecore_xcb_image.c \
lib/ecore_x/xcb/ecore_xcb_input.c \
lib/ecore_x/xcb/ecore_xcb_gesture.c \
lib/ecore_x/xcb/ecore_xcb_mwm.c \
lib/ecore_x/xcb/ecore_xcb_pixmap.c \
lib/ecore_x/xcb/ecore_xcb_present.c \
lib/ecore_x/xcb/ecore_xcb_region.c \
lib/ecore_x/xcb/ecore_xcb_selection.c \
lib/ecore_x/xcb/ecore_xcb_textlist.c \
lib/ecore_x/xcb/ecore_xcb_events.c \
lib/ecore_x/xcb/ecore_xcb_keymap.c \
lib/ecore_x/xcb/ecore_xcb_keygrab.c \
lib/ecore_x/xcb/ecore_xcb_netwm.c \
lib/ecore_x/xcb/ecore_xcb_icccm.c \
lib/ecore_x/xcb/ecore_xcb_window.c \
lib/ecore_x/xcb/ecore_xcb_window_prop.c \
lib/ecore_x/xcb/ecore_xcb_window_shape.c \
lib/ecore_x/xcb/ecore_xcb_window_shadow.c \
lib/ecore_x/xcb/ecore_xcb_xinerama.c \
lib/ecore_x/xcb/ecore_xcb_error.c \
lib/ecore_x/xcb/ecore_xcb_xtest.c \
lib/ecore_x/xcb/ecore_xcb_vsync.c \
lib/ecore_x/xcb/ecore_xcb_xdefaults.c \
lib/ecore_x/xcb/ecore_xcb_private.h
else
lib_ecore_x_libecore_x_la_SOURCES += \
lib/ecore_x/xlib/ecore_x.c \
lib/ecore_x/xlib/ecore_x_dnd.c \
lib/ecore_x/xlib/ecore_x_sync.c \
lib/ecore_x/xlib/ecore_x_randr.c \
lib/ecore_x/xlib/ecore_x_fixes.c \
lib/ecore_x/xlib/ecore_x_damage.c \
lib/ecore_x/xlib/ecore_x_composite.c \
lib/ecore_x/xlib/ecore_x_error.c \
lib/ecore_x/xlib/ecore_x_events.c \
lib/ecore_x/xlib/ecore_x_icccm.c \
lib/ecore_x/xlib/ecore_x_keygrab.c \
lib/ecore_x/xlib/ecore_x_netwm.c \
lib/ecore_x/xlib/ecore_x_mwm.c \
lib/ecore_x/xlib/ecore_x_e.c \
lib/ecore_x/xlib/ecore_x_selection.c \
lib/ecore_x/xlib/ecore_x_window.c \
lib/ecore_x/xlib/ecore_x_window_prop.c \
lib/ecore_x/xlib/ecore_x_window_shape.c \
lib/ecore_x/xlib/ecore_x_pixmap.c \
lib/ecore_x/xlib/ecore_x_present.c \
lib/ecore_x/xlib/ecore_x_gc.c \
lib/ecore_x/xlib/ecore_x_xinerama.c \
lib/ecore_x/xlib/ecore_x_screensaver.c \
lib/ecore_x/xlib/ecore_x_dpms.c \
lib/ecore_x/xlib/ecore_x_drawable.c \
lib/ecore_x/xlib/ecore_x_cursor.c \
lib/ecore_x/xlib/ecore_x_test.c \
lib/ecore_x/xlib/ecore_x_atoms.c \
lib/ecore_x/xlib/ecore_x_region.c \
lib/ecore_x/xlib/ecore_x_image.c \
lib/ecore_x/xlib/ecore_x_xi2.c \
lib/ecore_x/xlib/ecore_x_vsync.c \
lib/ecore_x/xlib/ecore_x_gesture.c \
lib/ecore_x/xlib/ecore_x_private.h
endif
lib/ecore_x/ecore_x_atoms_decl.h \
lib/ecore_x/ecore_x.c \
lib/ecore_x/ecore_x_dnd.c \
lib/ecore_x/ecore_x_sync.c \
lib/ecore_x/ecore_x_randr.c \
lib/ecore_x/ecore_x_fixes.c \
lib/ecore_x/ecore_x_damage.c \
lib/ecore_x/ecore_x_composite.c \
lib/ecore_x/ecore_x_error.c \
lib/ecore_x/ecore_x_events.c \
lib/ecore_x/ecore_x_icccm.c \
lib/ecore_x/ecore_x_keygrab.c \
lib/ecore_x/ecore_x_netwm.c \
lib/ecore_x/ecore_x_mwm.c \
lib/ecore_x/ecore_x_e.c \
lib/ecore_x/ecore_x_selection.c \
lib/ecore_x/ecore_x_window.c \
lib/ecore_x/ecore_x_window_prop.c \
lib/ecore_x/ecore_x_window_shape.c \
lib/ecore_x/ecore_x_pixmap.c \
lib/ecore_x/ecore_x_present.c \
lib/ecore_x/ecore_x_gc.c \
lib/ecore_x/ecore_x_xinerama.c \
lib/ecore_x/ecore_x_screensaver.c \
lib/ecore_x/ecore_x_dpms.c \
lib/ecore_x/ecore_x_drawable.c \
lib/ecore_x/ecore_x_cursor.c \
lib/ecore_x/ecore_x_test.c \
lib/ecore_x/ecore_x_atoms.c \
lib/ecore_x/ecore_x_region.c \
lib/ecore_x/ecore_x_image.c \
lib/ecore_x/ecore_x_xi2.c \
lib/ecore_x/ecore_x_vsync.c \
lib/ecore_x/ecore_x_gesture.c \
lib/ecore_x/ecore_x_private.h
lib_ecore_x_libecore_x_la_CPPFLAGS = \
-I$(top_builddir)/src/lib/efl \
@ -101,34 +54,9 @@ lib_ecore_x_libecore_x_la_CPPFLAGS = \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
-DPACKAGE_DATA_DIR=\"$(datadir)/ecore_x\"
if HAVE_ECORE_X_XCB
lib_ecore_x_libecore_x_la_CPPFLAGS += -I$(top_builddir)/src/lib/ecore_x/xcb
endif
lib_ecore_x_libecore_x_la_LIBADD = @ECORE_X_LIBS@ @USE_ECORE_CON_LIBS@
lib_ecore_x_libecore_x_la_DEPENDENCIES = @ECORE_X_INTERNAL_LIBS@ @USE_ECORE_CON_INTERNAL_LIBS@
lib_ecore_x_libecore_x_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
if HAVE_ECORE_X_XCB
MAINTAINERCLEANFILES += \
$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h \
$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h
BUILT_SOURCES += \
$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
$(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h: $(KEYSYMDEFS) utils/ecore/makekeys$(EXEEXT)
$(MKDIR_P) $(top_builddir)/src/lib/ecore_x/xcb
$(top_builddir)/src/utils/ecore/makekeys $(KEYSYMDEFS) > $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h
mv -f $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table_h $(top_builddir)/src/lib/ecore_x/xcb/ecore_xcb_keysym_table.h
endif
### Utils
noinst_PROGRAMS += utils/ecore/makekeys
utils_ecore_makekeys_SOURCES = utils/ecore/makekeys.c
utils_ecore_makekeys_CFLAGS = @ECORE_X_CFLAGS@
endif
EXTRA_DIST2 += utils/ecore/mkks.sh

View File

@ -894,7 +894,7 @@ modules_evas_engines_gl_generic_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
modules_evas_engines_gl_generic_module_la_LIBTOOLFLAGS = --tag=disable-static
if BUILD_ENGINE_GL_X11
modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@
modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@
endif
if BUILD_ENGINE_WAYLAND_EGL
modules_evas_engines_gl_common_libevas_engine_gl_common_la_CPPFLAGS += @evas_engine_wayland_egl_cflags@
@ -996,10 +996,8 @@ modules/evas/engines/gl_x11/evas_x_main.c \
modules/evas/engines/gl_x11/evas_engine.h
if EVAS_STATIC_BUILD_GL_X11
lib_evas_libevas_la_SOURCES += $(GL_X11_SOURCES)
lib_evas_libevas_la_CPPFLAGS += \
@evas_engine_gl_xlib_cflags@ @evas_engine_gl_xcb_cflags@
lib_evas_libevas_la_LIBADD += \
@evas_engine_gl_xlib_libs@ @evas_engine_gl_xcb_libs@
lib_evas_libevas_la_CPPFLAGS += @evas_engine_gl_xlib_cflags@
lib_evas_libevas_la_LIBADD += @evas_engine_gl_xlib_libs@
else
engineglx11pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH)
engineglx11pkg_LTLIBRARIES = modules/evas/engines/gl_x11/module.la
@ -1014,12 +1012,10 @@ modules_evas_engines_gl_x11_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
-I$(top_srcdir)/src/lib/evas/include \
-I$(top_srcdir)/src/lib/evas/cserve2 \
@EVAS_CFLAGS@ \
@evas_engine_gl_xlib_cflags@ \
@evas_engine_gl_xcb_cflags@
@evas_engine_gl_xlib_cflags@
modules_evas_engines_gl_x11_module_la_LIBADD = \
@USE_EVAS_LIBS@ \
@evas_engine_gl_xlib_libs@ \
@evas_engine_gl_xcb_libs@
@evas_engine_gl_xlib_libs@
modules_evas_engines_gl_x11_module_la_DEPENDENCIES = \
@USE_EVAS_INTERNAL_LIBS@
modules_evas_engines_gl_x11_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@
@ -1169,22 +1165,6 @@ modules/evas/engines/software_x11/evas_xlib_dri_image.h
SOFTWARE_X11_CPPFLAGS += @evas_engine_software_xlib_cflags@
SOFTWARE_X11_LIBADD += @evas_engine_software_xlib_libs@
endif
if BUILD_ENGINE_SOFTWARE_XCB
SOFTWARE_X11_SOURCES += \
modules/evas/engines/software_x11/evas_xcb_xdefaults.c \
modules/evas/engines/software_x11/evas_xcb_outbuf.c \
modules/evas/engines/software_x11/evas_xcb_buffer.c \
modules/evas/engines/software_x11/evas_xcb_color.c \
modules/evas/engines/software_x11/evas_xcb_main.c \
modules/evas/engines/software_x11/evas_xcb_image.c \
modules/evas/engines/software_x11/evas_xcb_outbuf.h \
modules/evas/engines/software_x11/evas_xcb_buffer.h \
modules/evas/engines/software_x11/evas_xcb_color.h \
modules/evas/engines/software_x11/evas_xcb_xdefaults.h \
modules/evas/engines/software_x11/evas_xcb_image.h
SOFTWARE_X11_CPPFLAGS += @evas_engine_software_xcb_cflags@
SOFTWARE_X11_LIBADD += @evas_engine_software_xcb_libs@
endif
if EVAS_STATIC_BUILD_SOFTWARE_X11
lib_evas_libevas_la_SOURCES += $(SOFTWARE_X11_SOURCES)
lib_evas_libevas_la_CPPFLAGS += $(SOFTWARE_X11_CPPFLAGS)

View File

@ -111,8 +111,8 @@ typedef enum _Ecore_Evas_Engine_Type
ECORE_EVAS_ENGINE_SOFTWARE_XLIB,
ECORE_EVAS_ENGINE_XRENDER_X11,
ECORE_EVAS_ENGINE_OPENGL_X11,
ECORE_EVAS_ENGINE_SOFTWARE_XCB,
ECORE_EVAS_ENGINE_XRENDER_XCB,
ECORE_EVAS_ENGINE_SOFTWARE_XCB, /* @deprecated */
ECORE_EVAS_ENGINE_XRENDER_XCB, /* @deprecated */
ECORE_EVAS_ENGINE_SOFTWARE_GDI,
ECORE_EVAS_ENGINE_SOFTWARE_DDRAW,
ECORE_EVAS_ENGINE_DIRECT3D,

View File

@ -261,13 +261,9 @@ ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine)
#else
return EINA_FALSE;
#endif
case ECORE_EVAS_ENGINE_SOFTWARE_XCB:
#ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
return EINA_TRUE;
#else
case ECORE_EVAS_ENGINE_SOFTWARE_XCB: /* @deprecated */
return EINA_FALSE;
#endif
case ECORE_EVAS_ENGINE_XRENDER_XCB:
case ECORE_EVAS_ENGINE_XRENDER_XCB: /* @deprecated */
return EINA_FALSE;
case ECORE_EVAS_ENGINE_SOFTWARE_GDI:
#ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI

View File

@ -264,10 +264,6 @@ _ecore_evas_available_engines_get(void)
#endif
#ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
ADDENG("software_x11");
#else
# ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
ADDENG("software_x11");
# endif
#endif
}
else if (!strcmp(name, "buffer"))

View File

@ -72,8 +72,8 @@ EAPI extern Ecore_X_Version *ecore_x_version;
* @li @ref Ecore_X_Window_Parent_Group
* @li @ref Ecore_X_Window_Shape
*
* When using the XLib backend, setting the ECORE_X_SYNC environment variable
* will cause X calls to be run synchronously for easier debugging.
* The ECORE_X_SYNC environment variable will cause X calls to be run
* synchronously for easier debugging.
*/
typedef unsigned int Ecore_X_ID;
@ -89,11 +89,7 @@ typedef struct _Ecore_X_Icon
#endif // ifndef _ECORE_X_WINDOW_PREDEF
typedef void *Ecore_X_Visual;
typedef Ecore_X_ID Ecore_X_Drawable;
#ifdef HAVE_ECORE_X_XCB
typedef Ecore_X_ID Ecore_X_GC;
#else // ifdef HAVE_ECORE_X_XCB
typedef void *Ecore_X_GC;
#endif /* HAVE_ECORE_X_XCB */
typedef Ecore_X_ID Ecore_X_Colormap;
typedef Ecore_X_ID Ecore_X_Time;
typedef Ecore_X_ID Ecore_X_Cursor;
@ -1118,7 +1114,7 @@ struct Ecore_X_Event_Present_Idle
}; /**< @since 1.9 */
EAPI extern int ECORE_X_EVENT_ANY; /**< low level event dependent on
backend in use, if Xlib will be XEvent, if XCB will be xcb_generic_event_t.
backend in use, will be XEvent.
@warning avoid using it.
*/
EAPI extern int ECORE_X_EVENT_MOUSE_IN;

View File

@ -1966,8 +1966,6 @@ ecore_x_randr_crtc_info_free(Ecore_X_Randr_Crtc_Info *info)
* @param mode The mode added to the output.
* @return @c EINA_FALSE if output or mode equal Ecore_X_Randr_None, else
* @c EINA_TRUE.
* Additionally, if xcb backend is used, the success of the addition is
* reported back directly.
* @since 1.2.0
*/
EAPI Eina_Bool

File diff suppressed because it is too large Load Diff

View File

@ -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);
}
}

View File

@ -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
}

View File

@ -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);
}

View File

@ -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
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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

View File

@ -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
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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