Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
#ifndef __ECORE_XCB_PRIVATE_H__
|
2011-07-14 08:35:42 -07:00
|
|
|
# define __ECORE_XCB_PRIVATE_H__
|
|
|
|
|
|
|
|
//# define LOGFNS 1
|
|
|
|
|
|
|
|
# ifdef HAVE_CONFIG_H
|
|
|
|
# include "config.h"
|
|
|
|
# endif
|
|
|
|
|
2012-11-23 14:38:23 -08:00
|
|
|
#ifdef STDC_HEADERS
|
|
|
|
# include <stdlib.h>
|
|
|
|
# include <stddef.h>
|
|
|
|
#else
|
|
|
|
# ifdef HAVE_STDLIB_H
|
|
|
|
# include <stdlib.h>
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
#ifdef HAVE_ALLOCA_H
|
|
|
|
# include <alloca.h>
|
|
|
|
#elif !defined alloca
|
|
|
|
# ifdef __GNUC__
|
|
|
|
# define alloca __builtin_alloca
|
|
|
|
# elif defined _AIX
|
|
|
|
# define alloca __alloca
|
|
|
|
# elif defined _MSC_VER
|
|
|
|
# include <malloc.h>
|
|
|
|
# define alloca _alloca
|
|
|
|
# elif !defined HAVE_ALLOCA
|
|
|
|
# ifdef __cplusplus
|
|
|
|
extern "C"
|
|
|
|
# endif
|
|
|
|
void *alloca (size_t);
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
# include <unistd.h> // included for close & gethostname functions
|
|
|
|
|
|
|
|
/* generic xcb includes */
|
|
|
|
# include <xcb/xcb.h>
|
|
|
|
# include <xcb/bigreq.h>
|
|
|
|
# include <xcb/shm.h>
|
2011-08-23 09:39:52 -07:00
|
|
|
# include <xcb/xcb_image.h>
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
/* 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 CRIT
|
|
|
|
# undef CRIT
|
|
|
|
# endif
|
2011-10-20 22:40:59 -07:00
|
|
|
# define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_xcb_log_dom, __VA_ARGS__)
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
# ifndef MIN
|
|
|
|
# define MIN(x, y) (((x) > (y)) ? (y) : (x))
|
|
|
|
# endif
|
|
|
|
|
|
|
|
# ifndef MAX
|
|
|
|
# define MAX(a, b) ((a < b) ? b : a)
|
|
|
|
# endif
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
#define CHECK_XCB_CONN \
|
|
|
|
{ \
|
|
|
|
if (xcb_connection_has_error(_ecore_xcb_conn)) \
|
|
|
|
{ \
|
|
|
|
DBG("XCB Connection Has Error !!"); \
|
|
|
|
_ecore_xcb_io_error_handle(NULL); \
|
|
|
|
} \
|
|
|
|
}
|
2011-09-20 02:12:02 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* enums */
|
|
|
|
typedef enum _Ecore_Xcb_Encoding_Style Ecore_Xcb_Encoding_Style;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
enum _Ecore_Xcb_Encoding_Style
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
XcbStringStyle,
|
|
|
|
XcbCompoundTextStyle,
|
2011-07-14 08:35:42 -07:00
|
|
|
XcbTextStyle,
|
2011-10-20 22:40:59 -07:00
|
|
|
XcbStdICCTextStyle,
|
2011-07-14 08:35:42 -07:00
|
|
|
XcbUTF8StringStyle
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
};
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* structures */
|
2011-10-20 22:40:59 -07:00
|
|
|
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;
|
2011-07-14 08:35:42 -07:00
|
|
|
typedef struct _Ecore_X_Selection_Converter Ecore_X_Selection_Converter;
|
2011-10-20 22:40:59 -07:00
|
|
|
typedef struct _Ecore_X_Selection_Parser Ecore_X_Selection_Parser;
|
|
|
|
typedef struct _Ecore_Xcb_Textproperty Ecore_Xcb_Textproperty;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct _Ecore_X_DND_Source
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
int version;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Window win, dest;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
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;
|
2010-08-02 11:54:27 -07:00
|
|
|
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Time time;
|
|
|
|
|
|
|
|
Ecore_X_Atom action, accepted_action;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
int will_accept, suppress;
|
|
|
|
int await_status;
|
2011-07-14 08:35:42 -07:00
|
|
|
};
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct _Ecore_X_DND_Target
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
int version;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
Ecore_X_Window win, source;
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
ECORE_X_DND_TARGET_IDLE,
|
|
|
|
ECORE_X_DND_TARGET_ENTERED
|
|
|
|
} state;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
int x, y;
|
|
|
|
} pos;
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
|
|
|
Ecore_X_Time time;
|
|
|
|
|
|
|
|
Ecore_X_Atom action, accepted_action;
|
2011-10-20 22:40:59 -07:00
|
|
|
int will_accept;
|
2011-07-14 08:35:42 -07:00
|
|
|
};
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct _Ecore_X_Selection_Intern
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
|
|
|
Ecore_X_Window win;
|
2011-10-20 22:40:59 -07:00
|
|
|
Ecore_X_Atom selection;
|
2011-07-14 08:35:42 -07:00
|
|
|
unsigned char *data;
|
2011-10-20 22:40:59 -07:00
|
|
|
int length;
|
|
|
|
Ecore_X_Time time;
|
2011-07-14 08:35:42 -07:00
|
|
|
};
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct _Ecore_X_Selection_Converter
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Selection_Converter *next;
|
|
|
|
};
|
2010-08-02 11:54:27 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct _Ecore_X_Selection_Parser
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
char *target;
|
|
|
|
void *(*parse)(const char *target, void *data, int size, int format);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Selection_Parser *next;
|
|
|
|
};
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
struct _Ecore_Xcb_Textproperty
|
2011-07-14 08:35:42 -07:00
|
|
|
{
|
2011-10-20 22:40:59 -07:00
|
|
|
char *value;
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Atom encoding;
|
|
|
|
unsigned int format, nitems;
|
|
|
|
};
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
/* external variables */
|
Here is ecore_x with XCB backend.
* The XCB backend is disabled by default during the
configuration. To enable it, add --enable-ecore-x-xcb. See the
messages that configure displays when it finishes.
* The way XCB is detected, and used in src/lib/ecore_x/Makefile.am
should be improved
* Any program that uses ecore_evas does not need to be modified.
Any program that uses ecore_x may need some changes. That is,
adding some functions (_prefetch and _fetch ones). No other
change is needed. See the documention of any _get functions, as
these are the ones that need those functions.
* There are some missing parts, especially everything that involves
the keyboard, as porting Xlib functions related to strings (utf8
stuff, XKeysymToString, etc...) is an horror. So keyboard events
are not working yet.
* I tried to write as much documentation as I could. But there is
certainly some missing doc here and there.
there are certainly other things that I have forgotten.
Improvements of that backend:
* the creation of an ecore_evas is faster. Especially when done over
an ssh connection (on my computer, 7-10s with Xlib, 1.5s with XCB,
over an ssh)
* A Window Manager should be more responsive. But it's not tomorrow
that e17 will use it :)
Have fun !
SVN revision: 29500
2007-04-13 10:15:19 -07:00
|
|
|
extern Ecore_X_Connection *_ecore_xcb_conn;
|
2010-08-02 11:54:27 -07:00
|
|
|
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;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
/* 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;
|
2011-11-04 05:44:28 -07:00
|
|
|
extern int _ecore_xcb_event_gesture;
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
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;
|
2011-10-20 22:40:59 -07:00
|
|
|
extern Eina_Bool (*_ecore_xcb_window_grab_replay_func)(void *data,
|
|
|
|
int type,
|
|
|
|
void *event);
|
2011-07-14 08:35:42 -07:00
|
|
|
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);
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_sync_magic_send(int val,
|
|
|
|
Ecore_X_Window win);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_randr_init(void);
|
|
|
|
void _ecore_xcb_randr_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-11-04 05:44:28 -07:00
|
|
|
void _ecore_xcb_gesture_init(void);
|
|
|
|
void _ecore_xcb_gesture_finalize(void);
|
|
|
|
void _ecore_xcb_gesture_shutdown(void);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_xfixes_init(void);
|
|
|
|
void _ecore_xcb_xfixes_finalize(void);
|
|
|
|
Eina_Bool _ecore_xcb_xfixes_avail_get(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_damage_init(void);
|
|
|
|
void _ecore_xcb_damage_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_composite_init(void);
|
|
|
|
void _ecore_xcb_composite_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_dpms_init(void);
|
|
|
|
void _ecore_xcb_dpms_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_cursor_init(void);
|
|
|
|
void _ecore_xcb_cursor_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_xinerama_init(void);
|
|
|
|
void _ecore_xcb_xinerama_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_dnd_init(void);
|
|
|
|
void _ecore_xcb_dnd_shutdown(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_DND_Source *_ecore_xcb_dnd_source_get(void);
|
|
|
|
Ecore_X_DND_Target *_ecore_xcb_dnd_target_get(void);
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Selection_Intern *_ecore_xcb_selection_get(Ecore_X_Atom selection);
|
|
|
|
|
|
|
|
# ifdef HAVE_ICONV
|
2011-10-20 22:40:59 -07:00
|
|
|
Eina_Bool _ecore_xcb_utf8_textlist_to_textproperty(char **list,
|
|
|
|
int count,
|
|
|
|
Ecore_Xcb_Encoding_Style style,
|
|
|
|
Ecore_Xcb_Textproperty *ret);
|
2011-07-14 08:35:42 -07:00
|
|
|
# endif
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
# ifdef HAVE_ICONV
|
2011-10-20 22:40:59 -07:00
|
|
|
Eina_Bool _ecore_xcb_utf8_textproperty_to_textlist(const Ecore_Xcb_Textproperty *text_prop,
|
|
|
|
char ***list_ret,
|
|
|
|
int *count_ret);
|
2011-07-14 08:35:42 -07:00
|
|
|
# endif
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Time _ecore_xcb_events_last_time_get(void);
|
|
|
|
unsigned int _ecore_xcb_events_modifiers_get(unsigned int state);
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
xcb_keycode_t *_ecore_xcb_keymap_keysym_to_keycode(xcb_keysym_t keysym);
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
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
|
2012-11-28 22:43:44 -08:00
|
|
|
void _ecore_xcb_input_handle_event(xcb_generic_event_t *event);
|
2011-07-14 08:35:42 -07:00
|
|
|
# endif
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_dri_init(void);
|
|
|
|
void _ecore_xcb_dri_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_xtest_init(void);
|
|
|
|
void _ecore_xcb_xtest_finalize(void);
|
2011-07-14 08:35:42 -07:00
|
|
|
|
|
|
|
Ecore_X_Window _ecore_xcb_window_root_of_screen_get(int screen);
|
2011-10-20 22:40:59 -07:00
|
|
|
void _ecore_xcb_window_prop_string_utf8_set(Ecore_X_Window win,
|
|
|
|
Ecore_X_Atom atom,
|
|
|
|
const char *str);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Visual _ecore_xcb_window_visual_get(Ecore_X_Window win);
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
|
|
|
|
2012-11-28 22:43:44 -08:00
|
|
|
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);
|
2011-07-14 08:35:42 -07:00
|
|
|
Ecore_X_Window_State _ecore_xcb_netwm_window_state_get(Ecore_X_Atom atom);
|
|
|
|
|
2011-10-20 22:40:59 -07:00
|
|
|
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);
|
2011-09-08 14:51:08 -07:00
|
|
|
|
2011-09-29 02:56:07 -07:00
|
|
|
void _ecore_xcb_modifiers_get(void);
|
|
|
|
|
2011-07-14 08:35:42 -07:00
|
|
|
#endif
|