Ecore.h   Ecore.h 
/**
@brief Ecore Library Public API Calls
These routines are used for Ecore Library interaction
*/
/**
@mainpage Ecore
@version 1.1
@date 2000-2011
Please see the @ref authors page for contact details.
@section intro Introduction
Ecore is a library of convenience functions. A brief explanation of how
to use
it can be found in @ref Ecore_Main_Loop_Page.
The Ecore library provides the following modules:
@li @ref Ecore_Main_Loop_Group
@li @ref Ecore_File_Group
@li @ref Ecore_Con_Group
@li @link Ecore_Evas.h Ecore_Evas - Evas convenience functions. @endli
nk
@li @ref Ecore_FB_Group
@li @link Ecore_Ipc.h Ecore_IPC - Inter Process Communication functio
ns. @endlink
@li @link Ecore_X.h Ecore_X - X Windows System wrapper. @endlink
@li @ref Ecore_Win32_Group
@li @ref Ecore_WinCE_Group
For more info on Ecore usage, there are these @ref Examples.
@section compiling How to compile using Ecore?
pkgconfig (.pc) files are installed for every ecore module.
Thus, to compile using any of them, you can use something like the follo
wing:
@verbatim
gcc *.c $(pkg-config ecore ecore-$x ecore-$y [...] --cflags --libs)
@endverbatim
@section install How is it installed?
Suggested configure options for evas for a Linux desktop X display:
@verbatim
./configure \
make
su -
...
make install
@endverbatim
*/
/**
@page authors Authors
@author Carsten Haitzler <raster@rasterman.com>
@author Tom Gilbert <tom@linuxbrit.co.uk>
@author Burra <burra@colorado.edu>
@author Chris Ross <chris@darkrock.co.uk>
@author Term <term@twistedpath.org>
@author Tilman Sauerbeck <tilman@code-monkey.de>
@author Ibukun Olumuyiwa <ibukun@computer.org>
@author Yuri <da2001@hotmail.ru>
@author Nicholas Curran <quasar@bigblue.net.au>
@author Howell Tam <pigeon@pigeond.net>
@author Nathan Ingersoll <rbdpngn@users.sourceforge.net>
@author Andrew Elcock <andy@elcock.org>
@author Kim Woelders <kim@woelders.dk>
@author Sebastian Dransfeld <sebastid@tango.flipp.net>
@author Simon Poole <simon.armlinux@themalago.net>
@author Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com>
@author dan sinclair <zero@everburning.com>
@author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
@author David 'onefang' Seikel <onefang@gmail.com>
@author Hisham 'CodeWarrior' Mardam Bey <hisham@hisham.cc>
@author Brian 'rephorm' Mattern <rephorm@rephorm.com>
@author Tim Horton <hortont424@gmail.com>
@author Arnaud de Turckheim 'quarium' <quarium@gmail.com>
@author Matt Barclay <mbarclay@gmail.com>
@author Peter Wehrfritz <peter.wehrfritz@web.de>
@author Albin "Lutin" Tonnerre <albin.tonnerre@gmail.com>
@author Vincent Torri <vincent.torri@gmail.com>
@author Lars Munch <lars@segv.dk>
@author Andre Dieb <andre.dieb@gmail.com>
@author Mathieu Taillefumier <mathieu.taillefumier@free.fr>
@author Rui Miguel Silva Seabra <rms@1407.org>
@author Samsung Electronics
@author Samsung SAIT
@author Nicolas Aguirre <aguirre.nicolas@gmail.com>
@author Brett Nash <nash@nash.id.au>
@author Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
@author Leif Middelschulte <leif.middelschulte@gmail.com>
@author Mike McCormack <mj.mccormack@samsung.com>
@author Sangho Park <gouache95@gmail.com>
@author Jihoon Kim <jihoon48.kim@samsung.com> <imfine98@gmail.com>
@author Daniel Juyung Seo <seojuyung2@gmail.com> <juyung.seo@samsung.com
>
Please contact <enlightenment-devel@lists.sourceforge.net> to get in
contact with the developers and maintainers.
*/
/*
@page Ecore_Main_Loop_Page The Ecore Main Loop
@section intro What is Ecore?
Ecore is a clean and tiny event loop library with many modules to do lot
s of
convenient things for a programmer, to save time and effort.
It's small and lean, designed to work on embedded systems all the way to
large and powerful multi-cpu workstations. It serialises all system sign
als,
events etc. into a single event queue, that is easily processed without
needing to worry about concurrency. A properly written, event-driven pro
gram
using this kind of programming doesn't need threads, nor has to worry ab
out
concurrency. It turns a program into a state machine, and makes it very
robust and easy to follow.
Ecore gives you other handy primitives, such as timers to tick over for
you
and call specified functions at particular times so the programmer can u
se
this to do things, like animate, or time out on connections or tasks tha
t take
too long etc.
Idle handlers are provided too, as well as calls on entering an idle sta
te
(often a very good time to update the state of the program). All events
that
enter the system are passed to specific callback functions that the prog
ram
sets up to handle those events. Handling them is simple and other Ecore
modules produce more events on the queue, coming from other sources such
as
file descriptors etc.
Ecore also lets you have functions called when file descriptors become a
ctive
for reading or writing, allowing for streamlined, non-blocking IO.
Here is an example of a simple program and its basic event loop flow:
@image html prog_flow.png
@image latex prog_flow.eps width=\textwidth
@section work How does Ecore work?
Ecore is very easy to learn and use. All the function calls are designed
to
be easy to remember, explicit in describing what they do, and heavily
name-spaced. Ecore programs can start and be very simple.
For example:
@code
#include <Ecore.h>
int
main(int argc, const char **argv)
{
ecore_init();
ecore_app_args_set(argc, argv);
ecore_main_loop_begin();
ecore_shutdown();
return 0;
}
@endcode
This program is very simple and doesn't check for errors, but it does st
art up
and begin a main loop waiting for events or timers to tick off. This pro
gram
doesn't set up any, but now we can expand on this simple program a littl
e
more by adding some event handlers and timers.
@code
#include <Ecore.h>
Ecore_Timer *timer1 = NULL;
Ecore_Event_Handler *handler1 = NULL;
double start_time = 0.0;
int
timer_func(void *data)
{
printf("Tick timer. Sec: %3.2f\n", ecore_time_get() - start_time);
return 1;
}
int
exit_func(void *data, int ev_type, void *ev)
{
Ecore_Event_Signal_Exit *e;
e = (Ecore_Event_Signal_Exit *)ev;
if (e->interrupt) printf("Exit: interrupt\n");
else if (e->quit) printf("Exit: quit\n");
else if (e->terminate) printf("Exit: terminate\n");
ecore_main_loop_quit();
return 1;
}
int
main(int argc, const char **argv)
{
ecore_init();
ecore_app_args_set(argc, argv);
start_time = ecore_time_get();
handler1 = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, exit_func, N
ULL);
timer1 = ecore_timer_add(0.5, timer_func, NULL);
ecore_main_loop_begin();
ecore_shutdown();
return 0;
}
@endcode
In the previous example, we initialize our application and get the time
at
which our program has started so we can calculate an offset. We set
up a timer to tick off in 0.5 seconds, and since it returns 1, will
keep ticking off every 0.5 seconds until it returns 0, or is deleted
by hand. An event handler is set up to call a function -
exit_func(),
whenever an event of type ECORE_EVENT_SIGNAL_EXIT is received (CTRL-C
on the command line will cause such an event to happen). If this event
occurs it tells you what kind of exit signal was received, and asks
the main loop to quit when it is finished by calling
ecore_main_loop_quit().
The handles returned by ecore_timer_add() and
ecore_event_handler_add() are
only stored here as an example. If you don't need to address the timer o
r
event handler again you don't need to store the result, so just call the
function, and don't assign the result to any variable.
This program looks slightly more complex than needed to do these simple
things, but in principle, programs don't get any more complex. You add m
ore
event handlers, for more events, will have more timers and such, BUT it
all
follows the same principles as shown in this example.
*/
/*
@page Ecore_Config_Page The Enlightened Property Library
The Enlightened Property Library (Ecore_Config) is an adbstraction
from the complexities of writing your own configuration. It provides
many features using the Enlightenment 17 development libraries.
To use the library, you:
@li Set the default values of your properties.
@li Load the configuration from a file. You must set the default values
first, so that the library knows the correct type of each argument.
The following examples show how to use the Enlightened Property Library:
@li @link config_basic_example.c config_basic_example.c @endlink
@li @link config_listener_example.c config_listener_example.c @endlink
*/
/**
@page X_Window_System_Page X Window System
The Ecore library includes a wrapper for handling the X window system.
This page briefly explains what the X window system is and various terms
that are used.
*/
#ifndef _ECORE_H #ifndef _ECORE_H
#define _ECORE_H #define _ECORE_H
#ifdef _MSC_VER #ifdef _MSC_VER
# include <Evil.h> # include <Evil.h>
#endif #endif
#include <Eina.h> #include <Eina.h>
#ifdef EAPI #ifdef EAPI
skipping to change at line 52 skipping to change at line 310
# include <sys/time.h> # include <sys/time.h>
# include <signal.h> # include <signal.h>
#endif #endif
#include <sys/types.h> #include <sys/types.h>
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
/** /**
* @file Ecore.h * @defgroup Ecore_Init_Group Ecore initialization and shutdown functions.
* @defgroup Ecore_Group Ecore - Main Loop and Job Functions. *
* @brief The file that provides the program utility, main loop and timer * @{
* functions. */
*
* This header provides the Ecore event handling loop. For more EAPI int
* details, see @ref Ecore_Main_Loop_Group. ecore_init(void);
* EAPI int
* For the main loop to be of any use, you need to be able to add events ecore_shutdown(void);
* and event handlers. Events for file descriptor events are covered in
* @ref Ecore_FD_Handler_Group. /**
* * @}
* Time functions are covered in @ref Ecore_Time_Group. */
*
* There is also provision for callbacks for when the loop enters or /**
* exits an idle state. See @ref Idle_Group for more information. *
* * @defgroup Ecore_Main_Loop_Group Ecore main loop functions
* Functions are also provided for spawning child processes using fork. *
* See @ref Ecore_Exe_Group for more details. * These are functions acting on Ecore's main loop itself or on
* * events and infrastructure directly linked to it. This loop is
* @{ * designed to work on embedded systems all the way to large and
*/ * powerful multi-cpu workstations.
*
* It serialises all system signals and events into a single event
* queue, that can be easily processed without needing to worry
* about concurrency. A properly written, event-driven program
* using this kind of programming does not need threads. It makes
* the program very robust and easy to follow.
*
* For example, for the main loop to be of any use, you need to be
* able to add @b events and event handlers on it. Events for file
* descriptor events are covered in @ref Ecore_FD_Handler_Group.
*
* Timer functions are covered in @ref Ecore_Time_Group.
*
* There is also provision for callbacks for when the loop enters or
* exits an @b idle state. See @ref Ecore_Idle_Group for more
* information on it.
*
* Functions are also provided for spawning child processes using
* @c fork(). See @ref Ecore_Exe_Group for more details on it.
*
* Here is an example of simple program and its basic event loop
* flow:
*
* @image html prog_flow.png
* @image latex prog_flow.eps width=\textwidth
*
* For examples of setting up and using a main loop, see
* @ref Ecore_Main_Loop_Page.
*
* @{
*/
#define ECORE_VERSION_MAJOR 1 #define ECORE_VERSION_MAJOR 1
#define ECORE_VERSION_MINOR 0 #define ECORE_VERSION_MINOR 0
typedef struct _Ecore_Version typedef struct _Ecore_Version
{ {
int major; int major;
int minor; int minor;
int micro; int micro;
int revision; int revision;
} Ecore_Version; } Ecore_Version;
EAPI extern Ecore_Version *ecore_version; EAPI extern Ecore_Version *ecore_version;
#define ECORE_CALLBACK_CANCEL EINA_FALSE /**< Return value to remove a call #define ECORE_CALLBACK_CANCEL EINA_FALSE /**< Return value to remove a cal
back */ lback */
#define ECORE_CALLBACK_RENEW EINA_TRUE /**< Return value to keep a callbac #define ECORE_CALLBACK_RENEW EINA_TRUE /**< Return value to keep a callba
k */ ck */
#define ECORE_CALLBACK_PASS_ON EINA_TRUE /**< Return value to pass event to next handler */ #define ECORE_CALLBACK_PASS_ON EINA_TRUE /**< Return value to pass event to next handler */
#define ECORE_CALLBACK_DONE EINA_FALSE /**< Return value to stop event hand #define ECORE_CALLBACK_DONE EINA_FALSE /**< Return value to stop event h
ling */ andling */
/**
* @typedef Ecore_Task_Cb Ecore_Task_Cb
* A callback run for a task (timer, idler, poller, animator, etc)
*/
typedef Eina_Bool (*Ecore_Task_Cb)(void *data);
/**
* @typedef Ecore_Eselect_Function Ecore_Eselect_Function
* A function which can be used to replace select() in the main loop
*/
typedef int (*Ecore_Select_Function)(int nfds, fd_set *readfds, fd_set *wri
tefds, fd_set *exceptfds, struct timeval *timeout);
EAPI void
ecore_main_loop_iterate(void);
EAPI void
ecore_main_loop_select_func_set(Ecore_Select_Function func);
EAPI Ecore_Select_Function
ecore_main_loop_select_func_get(void);
EAPI Eina_Bool
ecore_main_loop_glib_integrate(void);
EAPI void
ecore_main_loop_glib_always_integrate_disable(void);
EAPI void
ecore_main_loop_begin(void);
EAPI void
ecore_main_loop_quit(void);
/**
* @typedef Ecore_Cb Ecore_Cb
* A generic callback called as a hook when a certain point in
* execution is reached.
*/
typedef void (*Ecore_Cb)(void *data);
/**
* @typedef Ecore_Data_Cb Ecore_Data_Cb
* A callback which is used to return data to the main function
*/
typedef void *(*Ecore_Data_Cb)(void *data);
/**
* @brief Call callback asynchronously in the main loop.
* @since 1.1.0
*
* @param callback The callback to call in the main loop
* @param data The data to give to that call back
*
* For all calls that need to happen in the main loop (most EFL functions d
o),
* this helper function provides the infrastructure needed to do it safely
* by avoiding dead lock, race condition and properly wake up the main loop
.
*
* Remember after that function call, you should never touch again the @p d
ata
* in the thread, it is owned by the main loop and your callback should tak
e
* care of freeing it if necessary.
*/
EAPI void
ecore_main_loop_thread_safe_call_async(Ecore_Cb callback,
void *data);
/**
* @brief Call callback synchronously in the main loop.
* @since 1.1.0
*
* @param callback The callback to call in the main loop
* @param data The data to give to that call back
* @return the value returned by the callback in the main loop
*
* For all calls that need to happen in the main loop (most EFL functions d
o),
* this helper function provides the infrastructure needed to do it safely
* by avoiding dead lock, race condition and properly wake up the main loop
.
*
* Remember this function will block until the callback is executed in the
* main loop. It can take time and you have no guaranty about the timeline.
*/
EAPI void *
ecore_main_loop_thread_safe_call_sync(Ecore_Data_Cb callback,
void *data);
/**
* @brief This function suspend the main loop in a know state
* @since 1.1.0
*
* @result the number of time ecore_thread_main_loop_begin() has been calle
d
* in this thread, if the main loop was suspended correctly. If not, it ret
urn @c -1.
*
* This function suspend the main loop in a know state, this let you
* use any EFL call you want after it return. Be carefull, the main loop
* is blocked until you call ecore_thread_main_loop_end(). This is
* the only sane way to achieve pseudo thread safety.
*
* Notice that until the main loop is blocked, the thread is blocked
* and their is noway around that.
*
* We still advise you, when possible, to use ecore_main_loop_thread_safe_c
all_async()
* as it will not block the thread nor the main loop.
*/
EAPI int
ecore_thread_main_loop_begin(void);
/**
* @brief Unlock the main loop.
* @since 1.1.0
*
* @result the number of time ecore_thread_main_loop_end() need to be calle
d before
* the main loop is unlocked again. @c -1 will be returned if you are tryin
g to unlock
* when there wasn't enough call to ecore_thread_main_loop_begin().
*
* After a call to ecore_thread_main_loop_begin(), you need to absolutly
* call ecore_thread_main_loop_end(), or you application will stay frozen.
*/
EAPI int
ecore_thread_main_loop_end(void);
/**
* @}
*/
/**
* @defgroup Ecore_Event_Group Ecore Event functions
*
* Ecore events are used to wake up the Ecore main loop to warn
* about state changes, tasks completed, data available for reading
* or writing, etc. They are the base of the event oriented
* programming.
*
* The idea is to write many functions (callbacks) that will be
* registered to specific events, and called when these events
* happen. This way, when the system state changes (a mouse click is
* detected, a key is pressed, or the content of a file changes, for
* example), the respective callbacks will be called with some
* information about that event. Usually the function/callback will
* have a data pointer to the event info (the position in the screen
* where the mouse was clicked, the name of the key that was
* pressed, or the name of the file that has changed).
*
* The basic usage, when one needs to watch for an existing event,
* is to register a callback to it using ecore_event_add(). Of
* course it's necessary to know beforehand what are the types of
* events that the system/library will emmit. This should be
* available with the documentation from that system/library.
*
* When writing a library or group of functions that need to inform
* about something, and you already are running on top of a main
* loop, it is usually a good approach to use events. This way you
* allow others to register as many callbacks as necessary to this
* event, and don't have to care about who is registering to it. The
* functions ecore_event_type_new() and ecore_event_add() are
* available for this purpose.
*
* Example that deals with events:
*
* @li @ref ecore_event_example_c
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
#define ECORE_EVENT_NONE 0 #define ECORE_EVENT_NONE 0
#define ECORE_EVENT_SIGNAL_USER 1 /**< User signal event */ #define ECORE_EVENT_SIGNAL_USER 1 /**< User signal event */
#define ECORE_EVENT_SIGNAL_HUP 2 /**< Hup signal event */ #define ECORE_EVENT_SIGNAL_HUP 2 /**< Hup signal event */
#define ECORE_EVENT_SIGNAL_EXIT 3 /**< Exit signal event */ #define ECORE_EVENT_SIGNAL_EXIT 3 /**< Exit signal event */
#define ECORE_EVENT_SIGNAL_POWER 4 /**< Power signal event */ #define ECORE_EVENT_SIGNAL_POWER 4 /**< Power signal event */
#define ECORE_EVENT_SIGNAL_REALTIME 5 /**< Realtime signal event */ #define ECORE_EVENT_SIGNAL_REALTIME 5 /**< Realtime signal event */
#define ECORE_EVENT_COUNT 6 #define ECORE_EVENT_COUNT 6
#define ECORE_EXE_PRIORITY_INHERIT 9999 typedef struct _Ecore_Win32_Handler Ecore_Win32_Handler; /**< A
handle for HANDLE handlers on Windows */
typedef struct _Ecore_Event_Handler Ecore_Event_Handler; /**< A
handle for an event handler */
typedef struct _Ecore_Event_Filter Ecore_Event_Filter; /**< A h
andle for an event filter */
typedef struct _Ecore_Event Ecore_Event; /**< A handle f
or an event */
typedef struct _Ecore_Event_Signal_User Ecore_Event_Signal_User; /**
< User signal event */
typedef struct _Ecore_Event_Signal_Hup Ecore_Event_Signal_Hup; /**<
Hup signal event */
typedef struct _Ecore_Event_Signal_Exit Ecore_Event_Signal_Exit; /**
< Exit signal event */
typedef struct _Ecore_Event_Signal_Power Ecore_Event_Signal_Power; /*
*< Power signal event */
typedef struct _Ecore_Event_Signal_Realtime Ecore_Event_Signal_Realtime;
/**< Realtime signal event */
/**
* @typedef Ecore_Filter_Cb
* A callback used for filtering events from the main loop.
*/
typedef Eina_Bool (*Ecore_Filter_Cb)(void *data, void *loop_data, int type,
void *event);
/**
* @typedef Ecore_End_Cb Ecore_End_Cb
* This is the callback which is called at the end of a function,
* usually for cleanup purposes.
*/
typedef void (*Ecore_End_Cb)(void *user_data, void *func_data);
/**
* @typedef Ecore_Event_Handler_Cb Ecore_Event_Handler_Cb
* A callback used by the main loop to handle events of a specified
* type.
*/
typedef Eina_Bool (*Ecore_Event_Handler_Cb)(void *data, int type, void *eve
nt);
struct _Ecore_Event_Signal_User /** User signal event */
{
int number; /**< The signal number. Either 1 or 2 */
void *ext_data; /**< Extension data - not used */
#if !defined (_WIN32) && !defined (__lv2ppu__)
siginfo_t data; /**< Signal info */
#endif
};
struct _Ecore_Event_Signal_Hup /** Hup signal event */
{
void *ext_data; /**< Extension data - not used */
#if !defined (_WIN32) && !defined (__lv2ppu__)
siginfo_t data; /**< Signal info */
#endif
};
struct _Ecore_Event_Signal_Exit /** Exit request event */
{
Eina_Bool interrupt : 1; /**< Set if the exit request was an interrupt
signal*/
Eina_Bool quit : 1; /**< set if the exit request was a quit signal
*/
Eina_Bool terminate : 1; /**< Set if the exit request was a terminate si
ngal */
void *ext_data; /**< Extension data - not used */
#if !defined (_WIN32) && !defined (__lv2ppu__)
siginfo_t data; /**< Signal info */
#endif
};
struct _Ecore_Event_Signal_Power /** Power event */
{
void *ext_data; /**< Extension data - not used */
#if !defined (_WIN32) && !defined (__lv2ppu__)
siginfo_t data; /**< Signal info */
#endif
};
struct _Ecore_Event_Signal_Realtime /** Realtime event */
{
int num; /**< The realtime signal's number */
#if !defined (_WIN32) && !defined (__lv2ppu__)
siginfo_t data; /**< Signal info */
#endif
};
EAPI Ecore_Event_Handler *
ecore_event_handler_add(int type,
Ecore_Event_Handler_Cb func,
const void *data);
EAPI void *
ecore_event_handler_del(Ecore_Event_Handler *event_handler);
EAPI Ecore_Event *
ecore_event_add(int type,
void *ev,
Ecore_End_Cb func_free,
void *data);
EAPI void *
ecore_event_del(Ecore_Event *event);
EAPI void *
ecore_event_handler_data_get(Ecore_Event_Handler *eh);
EAPI void *
ecore_event_handler_data_set(Ecore_Event_Handler *eh,
const void *data);
EAPI int
ecore_event_type_new(void);
EAPI Ecore_Event_Filter *
ecore_event_filter_add(Ecore_Data_Cb func_start,
Ecore_Filter_Cb func_filter,
Ecore_End_Cb func_end,
const void *data);
EAPI void *
ecore_event_filter_del(Ecore_Event_Filter *ef);
EAPI int
ecore_event_current_type_get(void);
EAPI void *
ecore_event_current_event_get(void);
/**
* @}
*/
/**
* @defgroup Ecore_Exe_Group Process Spawning Functions
*
* Functions that deal with and send signals to spawned processes.
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
#define ECORE_EXE_PRIORITY_INHERIT 9999
EAPI extern int ECORE_EXE_EVENT_ADD; /**< A child process has been adde
d */
EAPI extern int ECORE_EXE_EVENT_DEL; /**< A child process has been dele
ted (it exited, naming consistent with the rest of ecore). */
EAPI extern int ECORE_EXE_EVENT_DATA; /**< Data from a child process. */
EAPI extern int ECORE_EXE_EVENT_ERROR; /**< Errors from a child process.
*/
enum _Ecore_Exe_Flags /* flags for executing a child with its stdin and/
or stdout piped back */
{
ECORE_EXE_NONE = 0, /**< No exe flags at all */
ECORE_EXE_PIPE_READ = 1, /**< Exe Pipe Read mask */
ECORE_EXE_PIPE_WRITE = 2, /**< Exe Pipe Write mask */
ECORE_EXE_PIPE_ERROR = 4, /**< Exe Pipe error mask */
ECORE_EXE_PIPE_READ_LINE_BUFFERED = 8, /**< Reads are buffered until a n
ewline and split 1 line per Ecore_Exe_Event_Data_Line */
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED = 16, /**< Errors are buffered until
a newline and split 1 line per Ecore_Exe_Event_Data_Line */
ECORE_EXE_PIPE_AUTO = 32, /**< stdout and stderr are buffered automatica
lly */
ECORE_EXE_RESPAWN = 64, /**< FIXME: Exe is restarted if it dies */
ECORE_EXE_USE_SH = 128, /**< Use /bin/sh to run the command. */
ECORE_EXE_NOT_LEADER = 256, /**< Do not use setsid() to have the execute
d process be its own session leader */
ECORE_EXE_TERM_WITH_PARENT = 512 /**< Makes child receive SIGTERM when p
arent dies. */
};
typedef enum _Ecore_Exe_Flags Ecore_Exe_Flags;
enum _Ecore_Exe_Win32_Priority
{
ECORE_EXE_WIN32_PRIORITY_IDLE, /**< Idle priority, for monitoring th
e system */
ECORE_EXE_WIN32_PRIORITY_BELOW_NORMAL, /**< Below default priority *
/
ECORE_EXE_WIN32_PRIORITY_NORMAL, /**< Default priority */
ECORE_EXE_WIN32_PRIORITY_ABOVE_NORMAL, /**< Above default priority *
/
ECORE_EXE_WIN32_PRIORITY_HIGH, /**< High priority, use with care as
other threads in the system will not get processor time */
ECORE_EXE_WIN32_PRIORITY_REALTIME /**< Realtime priority, should be
almost never used as it can interrupt system threads that manage mouse inpu
t, keyboard input, and background disk flushing */
};
typedef enum _Ecore_Exe_Win32_Priority Ecore_Exe_Win32_Priority;
typedef struct _Ecore_Exe Ecore_Exe; /**< A handle for spawned
processes */
/**
* @typedef Ecore_Exe_Cb Ecore_Exe_Cb
* A callback to run with the associated @ref Ecore_Exe, usually
* for cleanup purposes.
*/
typedef void (*Ecore_Exe_Cb)(void *data, const E
core_Exe *exe);
typedef struct _Ecore_Exe_Event_Add Ecore_Exe_Event_Add; /**< Spawned
Exe add event */
typedef struct _Ecore_Exe_Event_Del Ecore_Exe_Event_Del; /**< Spawned
Exe exit event */
typedef struct _Ecore_Exe_Event_Data_Line Ecore_Exe_Event_Data_Line; /**< L
ines from a child process */
typedef struct _Ecore_Exe_Event_Data Ecore_Exe_Event_Data; /**< Data f
rom a child process */
struct _Ecore_Exe_Event_Add /** Process add event */
{
Ecore_Exe *exe; /**< The handle to the added process */
void *ext_data; /**< Extension data - not used */
};
struct _Ecore_Exe_Event_Del /** Process exit event */
{
pid_t pid; /**< The process ID of the process that exited */
int exit_code; /**< The exit code of the process */
Ecore_Exe *exe; /**< The handle to the exited process, or NULL if not fo
und */
int exit_signal; /** < The signal that caused the process to exit
*/
Eina_Bool exited : 1; /** < set to 1 if the process exited of its ow
n accord */
Eina_Bool signalled : 1; /** < set to 1 id the process exited due to un
caught signal */
void *ext_data; /**< Extension data - not used */
#if !defined (_WIN32) && !defined (__lv2ppu__)
siginfo_t data; /**< Signal info */
#endif
};
EAPI extern int ECORE_EXE_EVENT_ADD; /**< A child process has been added struct _Ecore_Exe_Event_Data_Line /**< Lines from a child process */
*/ {
EAPI extern int ECORE_EXE_EVENT_DEL; /**< A child process has been delet char *line;
ed (it exited, naming consistent with the rest of ecore). */ int size;
EAPI extern int ECORE_EXE_EVENT_DATA; /**< Data from a child process. */ };
EAPI extern int ECORE_EXE_EVENT_ERROR; /**< Errors from a child process.
*/ struct _Ecore_Exe_Event_Data /** Data from a child process event */
{
enum _Ecore_Fd_Handler_Flags Ecore_Exe *exe; /**< The handle to the process */
{ void *data; /**< the raw binary data from the child
ECORE_FD_READ = 1, /**< Fd Read mask */ process that was received */
ECORE_FD_WRITE = 2, /**< Fd Write mask */ int size; /**< the size of this data in bytes */
ECORE_FD_ERROR = 4 /**< Fd Error mask */ Ecore_Exe_Event_Data_Line *lines; /**< an array of line data if line buf
}; fered, the last one has it's line member set to NULL */
typedef enum _Ecore_Fd_Handler_Flags Ecore_Fd_Handler_Flags; };
enum _Ecore_Exe_Flags /* flags for executing a child with its stdin and/ EAPI void
or stdout piped back */ ecore_exe_run_priority_set(int pri);
{ EAPI int
ECORE_EXE_NONE = 0, /**< No exe flags at all */ ecore_exe_run_priority_get(void);
ECORE_EXE_PIPE_READ = 1, /**< Exe Pipe Read mask */ EAPI Ecore_Exe *
ECORE_EXE_PIPE_WRITE = 2, /**< Exe Pipe Write mask */ ecore_exe_run(const char *exe_cmd,
ECORE_EXE_PIPE_ERROR = 4, /**< Exe Pipe error mask */ const void *data);
ECORE_EXE_PIPE_READ_LINE_BUFFERED = 8, /**< Reads are buffered unti EAPI Ecore_Exe *
l a newline and delivered 1 event per line */ ecore_exe_pipe_run(const char *exe_cmd,
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED = 16, /**< Errors are buffered u Ecore_Exe_Flags flags,
ntil a newline and delivered 1 event per line */ const void *data);
ECORE_EXE_PIPE_AUTO = 32, /**< stdout and stderr are buffered autom EAPI void
atically */ ecore_exe_callback_pre_free_set(Ecore_Exe *exe,
ECORE_EXE_RESPAWN = 64, /**< FIXME: Exe is restarted if it dies */ Ecore_Exe_Cb func);
ECORE_EXE_USE_SH = 128, /**< Use /bin/sh to run the command. */ EAPI Eina_Bool
ECORE_EXE_NOT_LEADER = 256 /**< Do not use setsid() to have the exe ecore_exe_send(Ecore_Exe *exe,
cuted process be its own session leader */ const void *data,
}; int size);
typedef enum _Ecore_Exe_Flags Ecore_Exe_Flags; EAPI void
ecore_exe_close_stdin(Ecore_Exe *exe);
enum _Ecore_Exe_Win32_Priority EAPI void
{ ecore_exe_auto_limits_set(Ecore_Exe *exe,
ECORE_EXE_WIN32_PRIORITY_IDLE, /**< Idle priority, for monitoring th int start_bytes,
e system */ int end_bytes,
ECORE_EXE_WIN32_PRIORITY_BELOW_NORMAL, /**< Below default priority * int start_lines,
/ int end_lines);
ECORE_EXE_WIN32_PRIORITY_NORMAL, /**< Default priority */ EAPI Ecore_Exe_Event_Data *
ECORE_EXE_WIN32_PRIORITY_ABOVE_NORMAL, /**< Above default priority * ecore_exe_event_data_get(Ecore_Exe *exe,
/ Ecore_Exe_Flags flags);
ECORE_EXE_WIN32_PRIORITY_HIGH, /**< High priority, use with care as EAPI void
other threads in the system will not get processor time */ ecore_exe_event_data_free(Ecore_Exe_Event_Data *data);
ECORE_EXE_WIN32_PRIORITY_REALTIME /**< Realtime priority, should be EAPI void *
almost never used as it can interrupt system threads that manage mouse inpu ecore_exe_free(Ecore_Exe *exe);
t, keyboard input, and background disk flushing */ EAPI pid_t
}; ecore_exe_pid_get(const Ecore_Exe *exe);
typedef enum _Ecore_Exe_Win32_Priority Ecore_Exe_Win32_Priority; EAPI void
ecore_exe_tag_set(Ecore_Exe *exe,
enum _Ecore_Poller_Type /* Poller types */ const char *tag);
{ EAPI const char *
ECORE_POLLER_CORE = 0 /**< The core poller interval */ ecore_exe_tag_get(const Ecore_Exe *exe);
}; EAPI const char *
typedef enum _Ecore_Poller_Type Ecore_Poller_Type; ecore_exe_cmd_get(const Ecore_Exe *exe);
EAPI void *
typedef struct _Ecore_Exe Ecore_Exe; /**< A handle for ecore_exe_data_get(const Ecore_Exe *exe);
spawned processes */ EAPI void *
typedef struct _Ecore_Timer Ecore_Timer; /**< A handle f ecore_exe_data_set(Ecore_Exe *exe,
or timers */ void *data);
typedef struct _Ecore_Idler Ecore_Idler; /**< A handle f EAPI Ecore_Exe_Flags
or idlers */ ecore_exe_flags_get(const Ecore_Exe *exe);
typedef struct _Ecore_Idle_Enterer Ecore_Idle_Enterer; /**< A h EAPI void
andle for idle enterers */ ecore_exe_pause(Ecore_Exe *exe);
typedef struct _Ecore_Idle_Exiter Ecore_Idle_Exiter; /**< A ha EAPI void
ndle for idle exiters */ ecore_exe_continue(Ecore_Exe *exe);
typedef struct _Ecore_Fd_Handler Ecore_Fd_Handler; /**< A han EAPI void
dle for Fd handlers */ ecore_exe_interrupt(Ecore_Exe *exe);
typedef struct _Ecore_Win32_Handler Ecore_Win32_Handler; /**< A EAPI void
handle for HANDLE handlers on Windows */ ecore_exe_quit(Ecore_Exe *exe);
typedef struct _Ecore_Event_Handler Ecore_Event_Handler; /**< A EAPI void
handle for an event handler */ ecore_exe_terminate(Ecore_Exe *exe);
typedef struct _Ecore_Event_Filter Ecore_Event_Filter; /**< A h EAPI void
andle for an event filter */ ecore_exe_kill(Ecore_Exe *exe);
typedef struct _Ecore_Event Ecore_Event; /**< A handle f EAPI void
or an event */ ecore_exe_signal(Ecore_Exe *exe,
typedef struct _Ecore_Animator Ecore_Animator; /**< A handl int num);
e for animators */ EAPI void
typedef struct _Ecore_Pipe Ecore_Pipe; /**< A handle fo ecore_exe_hup(Ecore_Exe *exe);
r pipes */
typedef struct _Ecore_Poller Ecore_Poller; /**< A handle /**
for pollers */ * @}
typedef struct _Ecore_Event_Signal_User Ecore_Event_Signal_User; /** */
< User signal event */
typedef struct _Ecore_Event_Signal_Hup Ecore_Event_Signal_Hup; /**< /**
Hup signal event */ * @defgroup Ecore_FD_Handler_Group File Event Handling Functions
typedef struct _Ecore_Event_Signal_Exit Ecore_Event_Signal_Exit; /** *
< Exit signal event */ * Functions that deal with file descriptor handlers.
typedef struct _Ecore_Event_Signal_Power Ecore_Event_Signal_Power; /* *
*< Power signal event */ * The @ref Ecore_Fd_Handler can be used to watch a file descriptor
typedef struct _Ecore_Event_Signal_Realtime Ecore_Event_Signal_Realtime; * for data available for reading, for the availability to write
/**< Realtime signal event */ * without blocking, and for errors on the file descriptor.
typedef struct _Ecore_Exe_Event_Add Ecore_Exe_Event_Add; /**< Sp *
awned Exe add event */ * ecore_main_fd_handler_add() is used to setup a handler for a
typedef struct _Ecore_Exe_Event_Del Ecore_Exe_Event_Del; /**< Sp * given file descriptor. This file descriptor can be the standard
awned Exe exit event */ * input, a network socket, a stream received through some driver
typedef struct _Ecore_Exe_Event_Data_Line Ecore_Exe_Event_Data_Line; / * of a hardware decoder, etc. Thus it can contain errors, like a
**< Lines from a child process */ * disconnection, a broken pipe, and so, and that's why it's
typedef struct _Ecore_Exe_Event_Data Ecore_Exe_Event_Data; /**< D * possible to check for these errors with the @ref ECORE_FD_ERROR
ata from a child process */ * flag.
typedef struct _Ecore_Thread Ecore_Thread; *
* An @ref Ecore_Fd_Handler can be used to watch on a file
/** * descriptor without blocking, still being able to receive events,
* @typedef Ecore_Data_Cb Ecore_Data_Cb * expire timers, and other watch for other things that happen in
* A callback which is used to return data to the main function * the Ecore main loop.
*/ *
typedef void *(*Ecore_Data_Cb) (void *data); * Example of use of a file descriptor handler:
/** * @li @ref ecore_fd_handler_example_c
* @typedef Ecore_Filter_Cb *
* A callback used for filtering events from the main loop. * @ingroup Ecore_Main_Loop_Group
*/ *
typedef Eina_Bool (*Ecore_Filter_Cb) (void *data, void *loop_data, int t * @{
ype, void *event); */
/**
* @typedef Ecore_Eselect_Function Ecore_Eselect_Function typedef struct _Ecore_Fd_Handler Ecore_Fd_Handler; /**< A handle for Fd han
* A function which can be used to replace select() in the main loop dlers */
*/
typedef int (*Ecore_Select_Function)(int nfds, fd_set *readfds, fd_set * enum _Ecore_Fd_Handler_Flags
writefds, fd_set *exceptfds, struct timeval *timeout); {
/** ECORE_FD_READ = 1, /**< Fd Read mask */
* @typedef Ecore_End_Cb Ecore_End_Cb ECORE_FD_WRITE = 2, /**< Fd Write mask */
* This is the callback which is called at the end of a function, usuall ECORE_FD_ERROR = 4 /**< Fd Error mask */
y for cleanup purposes. };
*/ typedef enum _Ecore_Fd_Handler_Flags Ecore_Fd_Handler_Flags;
typedef void (*Ecore_End_Cb) (void *user_data, void *func_data);
/** /**
* @typedef Ecore_Pipe_Cb Ecore_Pipe_Cb * @typedef Ecore_Fd_Cb Ecore_Fd_Cb
* The callback that data written to the pipe is sent to. * A callback used by an @ref Ecore_Fd_Handler.
*/ */
typedef void (*Ecore_Pipe_Cb) (void *data, void *buffer, unsigned int nb typedef Eina_Bool (*Ecore_Fd_Cb)(void *data, Ecore_Fd_Handler *fd_handler);
yte);
/** /**
* @typedef Ecore_Exe_Cb Ecore_Exe_Cb * @typedef Ecore_Fd_Prep_Cb Ecore_Fd_Prep_Cb
* A callback to run with the associated @ref Ecore_Exe, usually for cle * A callback used by an @ref Ecore_Fd_Handler.
anup purposes. */
*/ typedef void (*Ecore_Fd_Prep_Cb)(void *data, Ecore_Fd_Handler *fd_handler);
typedef void (*Ecore_Exe_Cb)(void *data, const Ecore_Exe *exe);
/** /**
* @typedef Ecore_Event_Handler_Cb Ecore_Event_Handler_Cb * @typedef Ecore_Win32_Handle_Cb Ecore_Win32_Handle_Cb
* A callback used by the main loop to handle events of a specified type * A callback used by an @ref Ecore_Win32_Handler.
. */
*/ typedef Eina_Bool (*Ecore_Win32_Handle_Cb)(void *data, Ecore_Win32_Handler
typedef Eina_Bool (*Ecore_Event_Handler_Cb) (void *data, int type, void *wh);
*event);
/** EAPI Ecore_Fd_Handler *
* @typedef Ecore_Thread_Cb Ecore_Thread_Cb ecore_main_fd_handler_add(int fd,
* A callback used by Ecore_Thread helper. Ecore_Fd_Handler_Flags flags,
*/ Ecore_Fd_Cb func,
typedef void (*Ecore_Thread_Cb) (void *data, Ecore_Thread *thread); const void *data,
/** Ecore_Fd_Cb buf_func,
* @typedef Ecore_Thread_Notify_Cb Ecore_Thread_Notify_Cb const void *buf_data);
* A callback used by the main loop to receive data sent by an @ref Ecor EAPI void
e_Thread_Group. ecore_main_fd_handler_prepare_callback_set(Ecore_Fd_Handler *fd_handler,
*/ Ecore_Fd_Prep_Cb func,
typedef void (*Ecore_Thread_Notify_Cb) (void *data, Ecore_Thread *thread, const void *data);
void *msg_data); EAPI void *
/** ecore_main_fd_handler_del(Ecore_Fd_Handler *fd_handler);
* @typedef Ecore_Task_Cb Ecore_Task_Cb EAPI int
* A callback run for a task (timer, idler, poller, animater, etc) ecore_main_fd_handler_fd_get(Ecore_Fd_Handler *fd_handler);
*/ EAPI Eina_Bool
typedef Eina_Bool (*Ecore_Task_Cb) (void *data); ecore_main_fd_handler_active_get(Ecore_Fd_Handler *fd_handler,
/** Ecore_Fd_Handler_Flags flags);
* @typedef Ecore_Cb Ecore_Cb EAPI void
* A generic callback called as a hook when a certain point in execution ecore_main_fd_handler_active_set(Ecore_Fd_Handler *fd_handler,
is reached. Ecore_Fd_Handler_Flags flags);
*/
typedef void (*Ecore_Cb) (void *data); EAPI Ecore_Win32_Handler *
/** ecore_main_win32_handler_add(void *h,
* @typedef Ecore_Fd_Cb Ecore_Fd_Cb Ecore_Win32_Handle_Cb func,
* A callback used by an @ref Ecore_Fd_Handler. const void *data);
*/ EAPI void *
typedef Eina_Bool (*Ecore_Fd_Cb) (void *data, Ecore_Fd_Handler *fd_handl ecore_main_win32_handler_del(Ecore_Win32_Handler *win32_handler);
er);
/** /**
* @typedef Ecore_Fd_Prep_Cb Ecore_Fd_Prep_Cb * @}
* A callback used by an @ref Ecore_Fd_Handler. */
*/
typedef void (*Ecore_Fd_Prep_Cb) (void *data, Ecore_Fd_Handler *fd_handl /**
er); * @defgroup Ecore_Poller_Group Ecore Poll functions
/** *
* @typedef Ecore_Win32_Handle_Cb Ecore_Win32_Handle_Cb * These functions are for the need to poll information, but provide
* A callback used by an @ref Ecore_Win32_Handler. * a shared abstracted API to pool such polling to minimise wakeup
*/ * and ensure all the polling happens in as few spots as possible
typedef Eina_Bool (*Ecore_Win32_Handle_Cb) (void *data, Ecore_Win32_Hand * areound a core poll interval. For now only 1 core poller type is
ler *wh); * supprted: ECORE_POLLER_CORE
*
typedef struct _Ecore_Job Ecore_Job; /**< A job handle */ * Example of @ref Ecore_Poller:
* @li @ref ecore_poller_example_c
struct _Ecore_Event_Signal_User /** User signal event */ *
{ * @ingroup Ecore_Main_Loop_Group
int number; /**< The signal number. Either 1 or 2 */ *
void *ext_data; /**< Extension data - not used */ * @{
*/
#ifndef _WIN32
siginfo_t data; /**< Signal info */ enum _Ecore_Poller_Type /* Poller types */
#endif {
}; ECORE_POLLER_CORE = 0 /**< The core poller interval */
};
struct _Ecore_Event_Signal_Hup /** Hup signal event */ typedef enum _Ecore_Poller_Type Ecore_Poller_Type;
{
void *ext_data; /**< Extension data - not used */ typedef struct _Ecore_Poller Ecore_Poller; /**< A handle for pollers */
#ifndef _WIN32 EAPI void
siginfo_t data; /**< Signal info */ ecore_poller_poll_interval_set(Ecore_Poller_Type type,
#endif double poll_time);
}; EAPI double
ecore_poller_poll_interval_get(Ecore_Poller_Type type);
struct _Ecore_Event_Signal_Exit /** Exit request event */ EAPI Eina_Bool
{ ecore_poller_poller_interval_set(Ecore_Poller *poller,
Eina_Bool interrupt : 1; /**< Set if the exit request was an inte int interval);
rrupt signal*/ EAPI int
Eina_Bool quit : 1; /**< set if the exit request was a quit ecore_poller_poller_interval_get(Ecore_Poller *poller);
signal */ EAPI Ecore_Poller *
Eina_Bool terminate : 1; /**< Set if the exit request was a termi ecore_poller_add(Ecore_Poller_Type type,
nate singal */ int interval,
void *ext_data; /**< Extension data - not used */ Ecore_Task_Cb func,
const void *data);
#ifndef _WIN32 EAPI void *ecore_poller_del(Ecore_Poller *poller);
siginfo_t data; /**< Signal info */
#endif /**
}; * @}
*/
struct _Ecore_Event_Signal_Power /** Power event */
{ /**
void *ext_data; /**< Extension data - not used */ * @defgroup Ecore_Animator_Group Ecore Animator functions
*
#ifndef _WIN32 * @brief Ecore animators are a helper to simplify creating
siginfo_t data; /**< Signal info */ * animations.
#endif *
}; * Creating an animation is as simple as saying for how long it
* should be run and having a callback that does the animation,
struct _Ecore_Event_Signal_Realtime /** Realtime event */ * something like this:
{ * @code
int num; /**< The realtime signal's number */ * static Eina_Bool
* _do_animation(void *data, double pos)
#ifndef _WIN32 * {
siginfo_t data; /**< Signal info */ * evas_object_move(data, 100 * pos, 100 * pos);
#endif * ... do some more animating ...
}; * }
* ...
struct _Ecore_Exe_Event_Add /** Process add event */ * ecore_animator_timeline_add(2, _do_animation, my_evas_object);
{ * @endcode
Ecore_Exe *exe; /**< The handle to the added process */ * In the sample above we create an animation to move
void *ext_data; /**< Extension data - not used */ * @c my_evas_object from position (0,0) to (100,100) in 2 seconds.
}; *
* If your animation will run for an unspecified amount of time you
struct _Ecore_Exe_Event_Del /** Process exit event */ * can use ecore_animator_add(), which is like using
{ * ecore_timer_add() with the interval being the
pid_t pid; /**< The process ID of the process that exited * * @ref ecore_animator_frametime_set "framerate". Note that this has
/ * tangible benefits to creating a timer for each animation in terms
int exit_code; /**< The exit code of the process */ * of performance.
Ecore_Exe *exe; /**< The handle to the exited process, or NULL i *
f not found */ * For a more detailed example that show several animation see
int exit_signal; /** < The signal that caused the process * @ref tutorial_ecore_animator.
to exit */ *
Eina_Bool exited : 1; /** < set to 1 if the process exited of i * @ingroup Ecore_Main_Loop_Group
ts own accord */ *
Eina_Bool signalled : 1; /** < set to 1 id the process exited due * @{
to uncaught signal */ */
void *ext_data; /**< Extension data - not used */
#ifndef _WIN32 typedef struct _Ecore_Animator Ecore_Animator; /**< A handle for animators
siginfo_t data; /**< Signal info */ */
#endif
}; enum _Ecore_Pos_Map /* Position mappings */
{
struct _Ecore_Exe_Event_Data_Line /**< Lines from a child process */ ECORE_POS_MAP_LINEAR, /**< Linear 0.0 -> 1.0 */
{ ECORE_POS_MAP_ACCELERATE, /**< Start slow then speed up */
char *line; ECORE_POS_MAP_DECELERATE, /**< Start fast then slow down */
int size; ECORE_POS_MAP_SINUSOIDAL, /**< Start slow, speed up then slow down at en
}; d */
ECORE_POS_MAP_ACCELERATE_FACTOR, /**< Start slow then speed up, v1 being
struct _Ecore_Exe_Event_Data /** Data from a child process event */ a power factor, 0.0 being linear, 1.0 being normal accelerate, 2.0 being m
{ uch more pronounced accelerate (squared), 3.0 being cubed, etc. */
Ecore_Exe *exe; /**< The handle to the process */ ECORE_POS_MAP_DECELERATE_FACTOR, /**< Start fast then slow down, v1 bein
void *data; /**< the raw binary data from the child process that wa g a power factor, 0.0 being linear, 1.0 being normal decelerate, 2.0 being
s received */ much more pronounced decelerate (squared), 3.0 being cubed, etc. */
int size; /**< the size of this data in bytes */ ECORE_POS_MAP_SINUSOIDAL_FACTOR, /**< Start slow, speed up then slow dow
Ecore_Exe_Event_Data_Line *lines; /**< an array of line data if lin n at end, v1 being a power factor, 0.0 being linear, 1.0 being normal sinus
e buffered, the last one has it's line member set to NULL */ oidal, 2.0 being much more pronounced sinusoidal (squared), 3.0 being cubed
}; , etc. */
ECORE_POS_MAP_DIVISOR_INTERP, /**< Start at gradient * v1, interpolated
/** via power of v2 curve */
* @defgroup Ecore_Init_Group Ecore initialisation and shutdown functions ECORE_POS_MAP_BOUNCE, /**< Start at 0.0 then "drop" like a ball bouncing
. to the ground at 1.0, and bounce v2 times, with decay factor of v1 */
*/ ECORE_POS_MAP_SPRING /**< Start at 0.0 then "wobble" like a spring rest
position 1.0, and wobble v2 times, with decay factor of v1 */
EAPI int ecore_init(void); };
EAPI int ecore_shutdown(void); typedef enum _Ecore_Pos_Map Ecore_Pos_Map;
/** enum _Ecore_Animator_Source /* Timing sources for animators */
* @} {
*/ ECORE_ANIMATOR_SOURCE_TIMER, /**< The default system clock/timer based a
nimator that ticks every "frametime" seconds */
/** ECORE_ANIMATOR_SOURCE_CUSTOM /**< A custom animator trigger that you nee
* @defgroup Ecore_Application_Group Ecore Application functions d to call ecore_animator_trigger() to make it tick */
* };
* @{ typedef enum _Ecore_Animator_Source Ecore_Animator_Source;
*/
/**
EAPI void ecore_app_args_set(int argc, const char **argv); * @typedef Ecore_Timeline_Cb Ecore_Timeline_Cb
EAPI void ecore_app_args_get(int *argc, char ***argv); * A callback run for a task (animators with runtimes)
EAPI void ecore_app_restart(void); */
typedef Eina_Bool (*Ecore_Timeline_Cb)(void *data, double pos);
/**
* @} /**
*/ * @brief Add an animator to call @p func at every animaton tick during mai
n
/** * loop execution.
* @defgroup Ecore_Event_Group Ecore Event functions *
* * @param func The function to call when it ticks off
* @{ * @param data The data to pass to the function
*/ * @return A handle to the new animator
*
EAPI Ecore_Event_Handler *ecore_event_handler_add(int type, Ecore_Event_ * This function adds a animator and returns its handle on success and NULL
Handler_Cb func, const void *data); on
EAPI void *ecore_event_handler_del(Ecore_Event_Handler *e * failure. The function @p func will be called every N seconds where N is
vent_handler); the
EAPI Ecore_Event *ecore_event_add(int type, void *ev, Ecore_End_ * @p frametime interval set by ecore_animator_frametime_set(). The functio
Cb func_free, void *data); n
EAPI void *ecore_event_del(Ecore_Event *event); * will be passed the @p data pointer as its parameter.
EAPI void *ecore_event_handler_data_get(Ecore_Event_Handl *
er *eh); * When the animator @p func is called, it must return a value of either 1
EAPI void *ecore_event_handler_data_set(Ecore_Event_Handl or
er *eh, void *data); * 0. If it returns 1 (or ECORE_CALLBACK_RENEW), it will be called again at
EAPI int ecore_event_type_new(void); * the next tick, or if it returns 0 (or ECORE_CALLBACK_CANCEL) it will be
EAPI Ecore_Event_Filter *ecore_event_filter_add(Ecore_Data_Cb func_star * deleted automatically making any references/handles for it invalid.
t, Ecore_Filter_Cb func_filter, Ecore_End_Cb func_end, const void *data); *
EAPI void *ecore_event_filter_del(Ecore_Event_Filter *ef) * @note The default @p frametime value is 1/30th of a second.
; *
EAPI int ecore_event_current_type_get(void); * @see ecore_animator_timeline_add()
EAPI void *ecore_event_current_event_get(void); * @see ecore_animator_frametime_set()
*/
/** EAPI Ecore_Animator *ecore_animator_add(Ecore_Task_Cb func,
* @} const void *data);
*/ /**
* @brief Add a animator that runs for a limited time
/** *
* @defgroup Ecore_Exe_Group Process Spawning Functions * @param runtime The time to run in seconds
* * @param func The function to call when it ticks off
* @{ * @param data The data to pass to the function
*/ * @return A handle to the new animator
*
EAPI void ecore_exe_run_priority_set(int pri); * This function is just like ecore_animator_add() except the animator only
EAPI int ecore_exe_run_priority_get(void); * runs for a limited time specified in seconds by @p runtime. Once the
EAPI Ecore_Exe *ecore_exe_run(const char *exe_cmd, const void *data); * runtime the animator has elapsed (animator finished) it will automatical
EAPI Ecore_Exe *ecore_exe_pipe_run(const char *exe_cmd, Ecore_Exe_Flags ly
flags, const void *data); * be deleted. The callback function @p func can return ECORE_CALLBACK_RENE
EAPI void ecore_exe_callback_pre_free_set(Ecore_Exe *exe, Ecore_E W
xe_Cb func); * to keep the animator running or ECORE_CALLBACK_CANCEL ro stop it and hav
EAPI Eina_Bool ecore_exe_send(Ecore_Exe *exe, const void *data, int si e
ze); * it be deleted automatically at any time.
EAPI void ecore_exe_close_stdin(Ecore_Exe *exe); *
EAPI void ecore_exe_auto_limits_set(Ecore_Exe *exe, int start_byt * The @p func will ALSO be passed a position parameter that will be in val
es, int end_bytes, int start_lines, int end_lines); ue
EAPI Ecore_Exe_Event_Data *ecore_exe_event_data_get(Ecore_Exe *exe, Ecor * from 0.0 to 1.0 to indicate where along the timeline (0.0 start, 1.0 end
e_Exe_Flags flags); )
EAPI void ecore_exe_event_data_free(Ecore_Exe_Event_Data *data); * the animator run is at. If the callback wishes not to have a linear
EAPI void *ecore_exe_free(Ecore_Exe *exe); * transition it can "map" this value to one of several curves and mappings
EAPI pid_t ecore_exe_pid_get(const Ecore_Exe *exe); * via ecore_animator_pos_map().
EAPI void ecore_exe_tag_set(Ecore_Exe *exe, const char *tag); *
EAPI const char *ecore_exe_tag_get(const Ecore_Exe *exe); * @note The default @p frametime value is 1/30th of a second.
EAPI const char *ecore_exe_cmd_get(const Ecore_Exe *exe); *
EAPI void *ecore_exe_data_get(const Ecore_Exe *exe); * @see ecore_animator_add()
EAPI Ecore_Exe_Flags ecore_exe_flags_get(const Ecore_Exe *exe); * @see ecore_animator_pos_map()
EAPI void ecore_exe_pause(Ecore_Exe *exe); * @since 1.1.0
EAPI void ecore_exe_continue(Ecore_Exe *exe); */
EAPI void ecore_exe_interrupt(Ecore_Exe *exe); EAPI Ecore_Animator *
EAPI void ecore_exe_quit(Ecore_Exe *exe); ecore_animator_timeline_add(double runtime,
EAPI void ecore_exe_terminate(Ecore_Exe *exe); Ecore_Timeline_Cb func,
EAPI void ecore_exe_kill(Ecore_Exe *exe); const void *data);
EAPI void ecore_exe_signal(Ecore_Exe *exe, int num); /**
EAPI void ecore_exe_hup(Ecore_Exe *exe); * @brief Delete the specified animator from the animator list.
*
/** * @param animator The animator to delete
* @} * @return The data pointer set for the animator on add
*/ *
* Delete the specified @p animator from the set of animators that are
/** * executed during main loop execution. This function returns the data
* @defgroup Ecore_Idle_Group Ecore Idle functions * parameter that was being passed to the callback on success, or NULL on
* * failure. After this call returns the specified animator object @p animat
* @{ or
*/ * is invalid and should not be used again. It will not get called again af
ter
EAPI Ecore_Idler *ecore_idler_add(Ecore_Task_Cb func, const void *data); * deletion.
EAPI void *ecore_idler_del(Ecore_Idler *idler); */
EAPI void *
EAPI Ecore_Idle_Enterer *ecore_idle_enterer_add(Ecore_Task_Cb func, cons ecore_animator_del(Ecore_Animator *animator);
t void *data); /**
EAPI Ecore_Idle_Enterer *ecore_idle_enterer_before_add(Ecore_Task_Cb fun * @brief Suspend the specified animator.
c, const void *data); *
EAPI void *ecore_idle_enterer_del(Ecore_Idle_Enterer *idle * @param animator The animator to delete
_enterer); *
* The specified @p animator will be temporarly removed from the set of
EAPI Ecore_Idle_Exiter *ecore_idle_exiter_add(Ecore_Task_Cb func, const * animators that are executed during main loop.
void *data); *
EAPI void *ecore_idle_exiter_del(Ecore_Idle_Exiter *idle_ex * @warning Freezing an animator doesn't freeze accounting of how long that
iter); * animator has been running. Therefore if the animator was created with
* ecore_animator_timeline_add() the @p pos argument given to the callback
/** * will increase as if the animator hadn't been frozen and the animator may
* @} * have it's execution halted if @p runtime elapsed.
*/ */
EAPI void
/** ecore_animator_freeze(Ecore_Animator *animator);
* @defgroup Ecore_Main Loop_Group Ecore Main Loop functions /**
* * @brief Restore execution of the specified animator.
* @{ *
*/ * @param animator The animator to delete
*
EAPI void ecore_main_loop_iterate(void); * The specified @p animator will be put back in the set of animators that
are
EAPI void ecore_main_loop_select_func_set(Ecore_Select_Func * executed during main loop.
tion func); */
EAPI Ecore_Select_Function ecore_main_loop_select_func_get(void); EAPI void
ecore_animator_thaw(Ecore_Animator *animator);
EAPI Eina_Bool ecore_main_loop_glib_integrate(void); /**
EAPI void ecore_main_loop_glib_always_integrate_disable(voi * @brief Set the animator call interval in seconds.
d); *
* @param frametime The time in seconds in between animator ticks.
EAPI void ecore_main_loop_begin(void); *
EAPI void ecore_main_loop_quit(void); * This function sets the time interval (in seconds) between animator ticks
EAPI Ecore_Fd_Handler *ecore_main_fd_handler_add(int fd, Ecore_Fd_Handle .
r_Flags flags, Ecore_Fd_Cb func, const void *data, * At every tick the callback of every existing animator will be called.
Ecore_Fd_Cb buf_func, c *
onst void *buf_data); * @warning Too small a value may cause performance issues and too high a
EAPI void ecore_main_fd_handler_prepare_callback_set(Ecore_ * value may cause your animation to seem "jerky".
Fd_Handler *fd_handler, Ecore_Fd_Prep_Cb func, const void *data); *
EAPI void *ecore_main_fd_handler_del(Ecore_Fd_Handler *fd_ha * @note The default @p frametime value is 1/30th of a second.
ndler); */
EAPI int ecore_main_fd_handler_fd_get(Ecore_Fd_Handler *fd EAPI void
_handler); ecore_animator_frametime_set(double frametime);
EAPI Eina_Bool ecore_main_fd_handler_active_get(Ecore_Fd_Handler /**
*fd_handler, Ecore_Fd_Handler_Flags flags); * @brief Get the animator call interval in seconds.
EAPI void ecore_main_fd_handler_active_set(Ecore_Fd_Handler *
*fd_handler, Ecore_Fd_Handler_Flags flags); * @return The time in second in between animator ticks.
*
EAPI Ecore_Win32_Handler *ecore_main_win32_handler_add(void *h, Ecore_Wi * This function retrieves the time in seconds between animator ticks.
n32_Handle_Cb func, const void *data); *
EAPI void *ecore_main_win32_handler_del(Ecore_Win32_Handl * @see ecore_animator_frametime_set()
er *win32_handler); */
EAPI double
/** ecore_animator_frametime_get(void);
* @} /**
*/ * @brief Maps an input position from 0.0 to 1.0 along a timeline to a
* position in a different curve.
/** *
* @defgroup Ecore_Pipe_Group Pipe wrapper * @param pos The input position to map
* * @param map The mapping to use
* @{ * @param v1 A parameter use by the mapping (pass 0.0 if not used)
*/ * @param v2 A parameter use by the mapping (pass 0.0 if not used)
* @return The mapped value
EAPI Ecore_Pipe *ecore_pipe_add(Ecore_Pipe_Cb handler, const void *data *
); * Takes an input position (0.0 to 1.0) and maps to a new position (normall
EAPI void *ecore_pipe_del(Ecore_Pipe *p); y
EAPI Eina_Bool ecore_pipe_write(Ecore_Pipe *p, const void *buffer, un * between 0.0 and 1.0, but it may go above/below 0.0 or 1.0 to show that i
signed int nbytes); t
EAPI void ecore_pipe_write_close(Ecore_Pipe *p); * has "overshot" the mark) using some interpolation (mapping) algorithm.
EAPI void ecore_pipe_read_close(Ecore_Pipe *p); *
* This function useful to create non-linear animations. It offers a variet
/** y
* @} * of possible animaton curves to be used:
*/ * @li ECORE_POS_MAP_LINEAR - Linear, returns @p pos
* @li ECORE_POS_MAP_ACCELERATE - Start slow then speed up
/** * @li ECORE_POS_MAP_DECELERATE - Start fast then slow down
* @defgroup Ecore_Thread_Group Ecore Thread functions * @li ECORE_POS_MAP_SINUSOIDAL - Start slow, speed up then slow down at en
* d
* @{ * @li ECORE_POS_MAP_ACCELERATE_FACTOR - Start slow then speed up, v1 being
*/ a
* power factor, 0.0 being linear, 1.0 being ECORE_POS_MAP_ACCELERATE, 2.0
EAPI Ecore_Thread *ecore_thread_run(Ecore_Thread_Cb func_blocking, * being much more pronounced accelerate (squared), 3.0 being cubed, etc.
Ecore_Thread_Cb func_end, * @li ECORE_POS_MAP_DECELERATE_FACTOR - Start fast then slow down, v1 bein
Ecore_Thread_Cb func_cancel, g a
const void *data); * power factor, 0.0 being linear, 1.0 being ECORE_POS_MAP_DECELERATE, 2.0
EAPI Ecore_Thread *ecore_thread_feedback_run(Ecore_Thread_Cb func_heavy, * being much more pronounced decelerate (squared), 3.0 being cubed, etc.
Ecore_Thread_Notify_Cb func * @li ECORE_POS_MAP_SINUSOIDAL_FACTOR - Start slow, speed up then slow dow
_notify, n
Ecore_Thread_Cb func_end, * at end, v1 being a power factor, 0.0 being linear, 1.0 being
Ecore_Thread_Cb func_cancel * ECORE_POS_MAP_SINUSOIDAL, 2.0 being much more pronounced sinusoidal
, * (squared), 3.0 being cubed, etc.
const void *data, * @li ECORE_POS_MAP_DIVISOR_INTERP - Start at gradient * v1, interpolated
Eina_Bool try_no_queue); via
EAPI Eina_Bool ecore_thread_cancel(Ecore_Thread *thread); * power of v2 curve
EAPI Eina_Bool ecore_thread_check(Ecore_Thread *thread); * @li ECORE_POS_MAP_BOUNCE - Start at 0.0 then "drop" like a ball bouncing
EAPI Eina_Bool ecore_thread_feedback(Ecore_Thread *thread, const voi to
d *msg_data); * the ground at 1.0, and bounce v2 times, with decay factor of v1
EAPI int ecore_thread_active_get(void); * @li ECORE_POS_MAP_SPRING - Start at 0.0 then "wobble" like a spring rest
EAPI int ecore_thread_pending_get(void); * position 1.0, and wobble v2 times, with decay factor of v1
EAPI int ecore_thread_pending_feedback_get(void); * @note When not listed v1 and v2 have no effect.
EAPI int ecore_thread_pending_total_get(void); *
EAPI int ecore_thread_max_get(void); * @image html ecore-pos-map.png
EAPI void ecore_thread_max_set(int num); * @image latex ecore-pos-map.eps width=\textwidth
EAPI void ecore_thread_max_reset(void); *
EAPI int ecore_thread_available_get(void); * One way to use this would be:
EAPI Eina_Bool ecore_thread_local_data_add(Ecore_Thread *thread, con * @code
st char *key, void *value, Eina_Free_Cb cb, Eina_Bool direct); * double pos; // input position in a timeline from 0.0 to 1.0
EAPI void *ecore_thread_local_data_set(Ecore_Thread *thread, con * double out; // output position after mapping
st char *key, void *value, Eina_Free_Cb cb); * int x1, y1, x2, y2; // x1 & y1 are start position, x2 & y2 are end posit
EAPI void *ecore_thread_local_data_find(Ecore_Thread *thread, co ion
nst char *key); * int x, y; // x & y are the calculated position
EAPI Eina_Bool ecore_thread_local_data_del(Ecore_Thread *thread, con *
st char *key); * out = ecore_animator_pos_map(pos, ECORE_POS_MAP_BOUNCE, 1.8, 7);
* x = (x1 * out) + (x2 * (1.0 - out));
EAPI Eina_Bool ecore_thread_global_data_add(const char *key, void *v * y = (y1 * out) + (y2 * (1.0 - out));
alue, Eina_Free_Cb cb, Eina_Bool direct); * move_my_object_to(myobject, x, y);
EAPI void *ecore_thread_global_data_set(const char *key, void *v * @endcode
alue, Eina_Free_Cb cb); * This will make an animaton that bounces 7 each times diminishing by a
EAPI void *ecore_thread_global_data_find(const char *key); * factor of 1.8.
EAPI Eina_Bool ecore_thread_global_data_del(const char *key); *
EAPI void *ecore_thread_global_data_wait(const char *key, double * @see _Ecore_Pos_Map
seconds); *
* @since 1.1.0
/** */
* @} EAPI double
*/ ecore_animator_pos_map(double pos,
Ecore_Pos_Map map,
/** double v1,
* @defgroup Ecore_Time_Group Ecore Time functions double v2);
* /**
* @{ * @brief Set the source of animator ticks for the mainloop
*/ *
* @param source The source of animator ticks to use
EAPI double ecore_time_get(void); *
EAPI double ecore_time_unix_get(void); * This sets the source of animator ticks. When an animator is active the
EAPI double ecore_loop_time_get(void); * mainloop will "tick" over frame by frame calling all animators that are
* registered until none are. The mainloop will tick at a given rate based
EAPI Ecore_Timer *ecore_timer_add(double in, Ecore_Task_Cb func, const v * on the animator source. The default source is the system clock timer
oid *data); * source - ECORE_ANIMATOR_SOURCE_TIMER. This source uses the system clock
EAPI Ecore_Timer *ecore_timer_loop_add(double in, Ecore_Task_Cb func, co * to tick over every N seconds (specified by ecore_animator_frametime_set(
nst void *data); ),
EAPI void *ecore_timer_del(Ecore_Timer *timer); * with the default being 1/30th of a second unless set otherwise). You can
EAPI void ecore_timer_interval_set(Ecore_Timer *timer, double in * set a custom tick source by setting the source to
); * ECORE_ANIMATOR_SOURCE_CUSTOM and then drive it yourself based on some in
EAPI double ecore_timer_interval_get(Ecore_Timer *timer); put
EAPI void ecore_timer_freeze(Ecore_Timer *timer); * tick source (like another application via ipc, some vertical blanking
EAPI void ecore_timer_thaw(Ecore_Timer *timer); * interrupt interrupt etc.) using
EAPI void ecore_timer_delay(Ecore_Timer *timer, double add); * ecore_animator_custom_source_tick_begin_callback_set() and
EAPI double ecore_timer_pending_get(Ecore_Timer *timer); * ecore_animator_custom_source_tick_end_callback_set() to set the function
EAPI double ecore_timer_precision_get(void); s
EAPI void ecore_timer_precision_set(double precision); * that will be called to start and stop the ticking source, which when it
* gets a "tick" should call ecore_animator_custom_tick() to make the "tick
/** " over 1
* @} * frame.
*/ */
EAPI void
/** ecore_animator_source_set(Ecore_Animator_Source source);
* @defgroup Ecore_Animator_Group Ecore Animator functions /**
* * @brief Get the animator source currently set.
* @{ *
*/ * @return The current animator source
*
EAPI Ecore_Animator *ecore_animator_add(Ecore_Task_Cb func, const void * * This gets the current animator source.
data); *
EAPI void *ecore_animator_del(Ecore_Animator *animator); * @see ecore_animator_source_set()
EAPI void ecore_animator_freeze(Ecore_Animator *animator); */
EAPI void ecore_animator_thaw(Ecore_Animator *animator); EAPI Ecore_Animator_Source
EAPI void ecore_animator_frametime_set(double frametime); ecore_animator_source_get(void);
EAPI double ecore_animator_frametime_get(void); /**
* @brief Set the function that begins a custom animator tick source
/** *
* @} * @param func The function to call when ticking is to begin
*/ * @param data The data passed to the tick begin function as its parameter
*
/** * The Ecore Animator infrastructure handles tracking if animators are need
* @defgroup Ecore_Poller_Group Ecore Poll functions ed
* * or not and which ones need to be called and when, but when the tick sour
* @{ ce
*/ * is custom, you have to provide a tick source by calling
* ecore_animator_custom_tick() to indicate a frame tick happened. In order
EAPI void ecore_poller_poll_interval_set(Ecore_Poller_Type type * to allow the source of ticks to be dynamically enabled or disabled as
, double poll_time); * needed, the @p func when set is called to enable the tick source to
EAPI double ecore_poller_poll_interval_get(Ecore_Poller_Type type * produce tick events that call ecore_animator_custom_tick(). If @p func
); * is NULL then no function is called to begin custom ticking.
EAPI Eina_Bool ecore_poller_poller_interval_set(Ecore_Poller *poller *
, int interval); * @see ecore_animator_source_set()
EAPI int ecore_poller_poller_interval_get(Ecore_Poller *poller * @see ecore_animator_custom_source_tick_end_callback_set()
); * @see ecore_animator_custom_tick()
EAPI Ecore_Poller *ecore_poller_add(Ecore_Poller_Type type, int interval */
, Ecore_Task_Cb func, const void *data); EAPI void
EAPI void *ecore_poller_del(Ecore_Poller *poller); ecore_animator_custom_source_tick_begin_callback_set(Ecore_Cb func,
const void *data);
/** /**
* @} * @brief Set the function that ends a custom animator tick source
*/ *
* @param func The function to call when ticking is to end
/** * @param data The data passed to the tick end function as its parameter
* @defgroup Ecore_Job_Group Ecore Job functions *
* * This function is a matching pair to the function set by
* @{ * ecore_animator_custom_source_tick_begin_callback_set() and is called
*/ * when ticking is to stop. If @p func is NULL then no function will be
* called to stop ticking. For more information please see
EAPI Ecore_Job *ecore_job_add(Ecore_Cb func, const void *data); * ecore_animator_custom_source_tick_begin_callback_set().
EAPI void *ecore_job_del(Ecore_Job *job); *
* @see ecore_animator_source_set()
/** * @see ecore_animator_custom_source_tick_begin_callback_set()
* @} * @see ecore_animator_custom_tick()
*/ */
EAPI void
/** ecore_animator_custom_source_tick_end_callback_set(Ecore_Cb func,
* @} const void *data);
*/ /**
* @brief Trigger a custom animator tick
*
* When animator source is set to ECORE_ANIMATOR_SOURCE_CUSTOM, then callin
g
* this function triggers a run of all animators currently registered with
* Ecore as this indicates a "frame tick" happened. This will do nothing if
* the animator source(set by ecore_animator_source_set()) is not set to
* ECORE_ANIMATOR_SOURCE_CUSTOM.
*
* @see ecore_animator_source_set()
* @see ecore_animator_custom_source_tick_begin_callback_set
* @see ecore_animator_custom_source_tick_end_callback_set()()
*/
EAPI void
ecore_animator_custom_tick(void);
/**
* @}
*/
/**
* @defgroup Ecore_Time_Group Ecore Time functions
*
* Functions that deal with time. These functions include those
* that simply retrieve it in a given format, and those that create
* events based on it.
*
* The timer allows callbacks to be called at specific intervals.
*
* Examples with functions that deal with time:
* @li @ref ecore_time_functions_example_c
* @li @ref ecore_timer_example_c
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
typedef struct _Ecore_Timer Ecore_Timer; /**< A handle for timers */
EAPI double
ecore_time_get(void);
EAPI double
ecore_time_unix_get(void);
EAPI double
ecore_loop_time_get(void);
EAPI Ecore_Timer *
ecore_timer_add(double in,
Ecore_Task_Cb func,
const void *data);
EAPI Ecore_Timer *
ecore_timer_loop_add(double in,
Ecore_Task_Cb func,
const void *data);
EAPI void *
ecore_timer_del(Ecore_Timer *timer);
EAPI void
ecore_timer_interval_set(Ecore_Timer *timer,
double in);
EAPI double
ecore_timer_interval_get(Ecore_Timer *timer);
EAPI void
ecore_timer_freeze(Ecore_Timer *timer);
EAPI void
ecore_timer_thaw(Ecore_Timer *timer);
EAPI void
ecore_timer_delay(Ecore_Timer *timer,
double add);
EAPI double
ecore_timer_pending_get(Ecore_Timer *timer);
EAPI double
ecore_timer_precision_get(void);
EAPI void
ecore_timer_precision_set(double precision);
EAPI char *
ecore_timer_dump(void);
/**
* @}
*/
/**
* @defgroup Ecore_Idle_Group Ecore Idle functions
*
* Callbacks that are called when the program enters or exits an
* idle state.
*
* The ecore main loop enters an idle state when it is waiting for
* timers to time out, data to come in on a file descriptor or any
* other event to occur. You can set callbacks to be called when
* the main loop enters an idle state, during an idle state or just
* after the program wakes up.
*
* Enterer callbacks are good for updating your program's state, if
* it has a state engine. Once all of the enterer handlers are
* called, the program will enter a "sleeping" state.
*
* Idler callbacks are called when the main loop has called all
* enterer handlers. They are useful for interfaces that require
* polling and timers would be too slow to use.
*
* If no idler callbacks are specified, then the process literally
* goes to sleep. Otherwise, the idler callbacks are called
* continuously while the loop is "idle", using as much CPU as is
* available to the process.
*
* Exiter callbacks are called when the main loop wakes up from an
* idle state.
*
* @note Idle state doesn't mean that the @b program is idle, but
* that the <b>main loop</b> is idle. It doesn't have any timers,
* events, fd handlers or anything else to process (which in most
* <em>event driven</em> programs also means that the @b program is
* idle too, but it's not a rule). The program itself may be doing
* a lot of processing in the idler, or in another thread, for
* example.
*
* Example with functions that deal with idle state:
*
* @li @ref ecore_idler_example_c
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
typedef struct _Ecore_Idler Ecore_Idler; /**< A handle for idlers */
typedef struct _Ecore_Idle_Enterer Ecore_Idle_Enterer; /**< A handle for id
le enterers */
typedef struct _Ecore_Idle_Exiter Ecore_Idle_Exiter; /**< A handle for idl
e exiters */
/**
* Add an idler handler.
* @param func The function to call when idling.
* @param data The data to be passed to this @p func call.
* @return A idler handle if successfully added. NULL otherwise.
*
* Add an idler handle to the event loop, returning a handle on
* success and NULL otherwise. The function @p func will be called
* repeatedly while no other events are ready to be processed, as
* long as it returns 1 (or ECORE_CALLBACK_RENEW). A return of 0
* (or ECORE_CALLBACK_CANCEL) deletes the idler.
*
* Idlers are useful for progressively prossessing data without blocking.
*/
EAPI Ecore_Idler *
ecore_idler_add(Ecore_Task_Cb func,
const void *data);
/**
* Delete an idler callback from the list to be executed.
* @param idler The handle of the idler callback to delete
* @return The data pointer passed to the idler callback on success. NULL
* otherwise.
*/
EAPI void *
ecore_idler_del(Ecore_Idler *idler);
EAPI Ecore_Idle_Enterer *
ecore_idle_enterer_add(Ecore_Task_Cb func,
const void *data);
EAPI Ecore_Idle_Enterer *
ecore_idle_enterer_before_add(Ecore_Task_Cb func,
const void *data);
EAPI void *
ecore_idle_enterer_del(Ecore_Idle_Enterer *idle_enterer);
EAPI Ecore_Idle_Exiter *
ecore_idle_exiter_add(Ecore_Task_Cb func,
const void *data);
EAPI void *
ecore_idle_exiter_del(Ecore_Idle_Exiter *idle_exiter);
/**
* @}
*/
/**
* @defgroup Ecore_Thread_Group Ecore Thread functions
*
* Facilities to run heavy tasks in different threads to avoid blocking
* the main loop.
*
* The EFL is, for the most part, not thread safe. This means that if you
* have some task running in another thread and you have, for example, an
* Evas object to show the status progress of this task, you cannot update
* the object from within the thread. This can only be done from the main
* thread, the one running the main loop. This problem can be solved
* by running a thread that sends messages to the main one using an
* @ref Ecore_Pipe_Group "Ecore_Pipe", but when you need to handle other
* things like cancelling the thread, your code grows in coplexity and gets
* much harder to maintain.
*
* Ecore Thread is here to solve that problem. It is @b not a simple wrappe
r
* around standard POSIX threads (or the equivalent in other systems) and
* it's not meant to be used to run parallel tasks throughout the entire
* duration of the program, especially when these tasks are performance
* critical, as Ecore manages these tasks using a pool of threads based on
* system configuration.
*
* What Ecore Thread does, is make it a lot easier to dispatch a worker
* function to perform some heavy task and then get the result once it
* completes, without blocking the application's UI. In addition, cancellin
g
* and rescheduling comes practically for free and the developer needs not
* worry about how many threads are launched, since Ecore will schedule
* them according to the number of processors the system has and maximum
* amount of concurrent threads set for the application.
*
* At the system level, Ecore will start a new thread on an as-needed basis
* until the maximum set is reached. When no more threads can be launched,
* new worker functions will be queued in a waiting list until a thread
* becomes available. This way, system threads will be shared throughout
* different worker functions, but running only one at a time. At the same
* time, a worker function that is rescheduled may be run on a different
* thread the next time.
*
* The ::Ecore_Thread handler has two meanings, depending on what context
* it is on. The one returned when starting a worker with any of the
* functions ecore_thread_run() or ecore_thread_feedback_run() is an
* identifier of that specific instance of the function and can be used fro
m
* the main loop with the ecore_thread_cancel() and ecore_thread_check()
* functions. This handler must not be shared with the worker function
* function running in the thread. This same handler will be the one receiv
ed
* on the @c end, @c cancel and @c feedback callbacks.
*
* The worker function, that's the one running in the thread, also receives
* an ::Ecore_Thread handler that can be used with ecore_thread_cancel() an
d
* ecore_thread_check(), sharing the flag with the main loop. But this
* handler is also associated with the thread where the function is running
.
* This has strong implications when working with thread local data.
*
* There are two kinds of worker threads Ecore handles: simple, or short,
* workers and feedback workers.
*
* The first kind is for simple functions that perform a
* usually small but time consuming task. Ecore will run this function in
* a thread as soon as one becomes available and notify the calling user of
* its completion once the task is done.
*
* The following image shows the flow of a program running four tasks on
* a pool of two threads.
*
* @image html ecore_thread.png
* @image rtf ecore_thread.png
* @image latex ecore_thread.eps width=\textwidth
*
* For larger tasks that may require continuous communication with the main
* program, the feedback workers provide the same functionality plus a way
* for the function running in the thread to send messages to the main
* thread.
*
* The next diagram omits some details shown in the previous one regarding
* how threads are spawned and tasks are queued, but illustrates how feedba
ck
* jobs communicate with the main loop and the special case of threads
* running out of pool.
*
* @image html ecore_thread_feedback.png
* @image rtf ecore_thread_feedback.png
* @image latex ecore_thread_feedback.eps width=\textwidth
*
* See an overview example in @ref ecore_thread_example_c.
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
typedef struct _Ecore_Thread Ecore_Thread; /**< A handle for threaded jobs
*/
/**
* @typedef Ecore_Thread_Cb Ecore_Thread_Cb
* A callback used by Ecore_Thread helper.
*/
typedef void (*Ecore_Thread_Cb)(void *data, Ecore_Thread *thread);
/**
* @typedef Ecore_Thread_Notify_Cb Ecore_Thread_Notify_Cb
* A callback used by the main loop to receive data sent by an
* @ref Ecore_Thread_Group.
*/
typedef void (*Ecore_Thread_Notify_Cb)(void *data, Ecore_Thread *thread, vo
id *msg_data);
/**
* Schedule a task to run in a parallel thread to avoid locking the main lo
op
*
* @param func_blocking The function that should run in another thread.
* @param func_end Function to call from main loop when @p func_blocking
* completes its task successfully (may be NULL)
* @param func_cancel Function to call from main loop if the thread running
* @p func_blocking is cancelled or fails to start (may be NULL)
* @param data User context data to pass to all callbacks.
* @return A new thread handler, or NULL on failure
*
* This function will try to create a new thread to run @p func_blocking in
,
* or if the maximum number of concurrent threads has been reached, will
* add it to the pending list, where it will wait until a thread becomes
* available. The return value will be an ::Ecore_Thread handle that can
* be used to cancel the thread before its completion.
*
* @note This function should always return immediately, but in the rare
* case that Ecore is built with no thread support, @p func_blocking will
* be called here, actually blocking the main loop.
*
* Once a thread becomes available, @p func_blocking will be run in it unti
l
* it finishes, then @p func_end is called from the thread containing the
* main loop to inform the user of its completion. While in @p func_blockin
g,
* no functions from the EFL can be used, except for those from Eina that a
re
* marked to be thread-safe. Even for the latter, caution needs to be taken
* if the data is shared across several threads.
*
* @p func_end will be called from the main thread when @p func_blocking en
ds,
* so here it's safe to use anything from the EFL freely.
*
* The thread can also be cancelled before its completion calling
* ecore_thread_cancel(), either from the main thread or @p func_blocking.
* In this case, @p func_cancel will be called, also from the main thread
* to inform of this happening. If the thread could not be created, this
* function will be called and it's @c thread parameter will be NULL. It's
* also safe to call any EFL function here, as it will be running in the
* main thread.
*
* Inside @p func_blocking, it's possible to call ecore_thread_reschedule()
* to tell Ecore that this function should be called again.
*
* Be aware that no assumptions can be made about the order in which the
* @p func_end callbacks for each task will be called. Once the function is
* running in a different thread, it's the OS that will handle its running
* schedule, and different functions may take longer to finish than others.
* Also remember that just starting several tasks together doesn't mean the
y
* will be running at the same time. Ecore will schedule them based on the
* number of threads available for the particular system it's running in,
* so some of the jobs started may be waiting until another one finishes
* before it can execute its own @p func_blocking.
*
* @see ecore_thread_feedback_run()
* @see ecore_thread_cancel()
* @see ecore_thread_reschedule()
* @see ecore_thread_max_set()
*/
EAPI Ecore_Thread *
ecore_thread_run(Ecore_Thread_Cb func_blocking,
Ecore_Thread_Cb func_end,
Ecore_Thread_Cb func_cancel,
const void *data);
/**
* Launch a thread to run a task than can talk back to the main thread
*
* @param func_heavy The function that should run in another thread.
* @param func_notify Function that receives the data sent from the thread
* @param func_end Function to call from main loop when @p func_heavy
* completes its task successfully
* @param func_cancel Function to call from main loop if the thread running
* @p func_heavy is cancelled or fails to start
* @param data User context data to pass to all callback.
* @param try_no_queue If you want to run outside of the thread pool.
* @return A new thread handler, or NULL on failure
*
* See ecore_thread_run() for a general description of this function.
*
* The difference with the above is that ecore_thread_run() is meant for
* tasks that don't need to communicate anything until they finish, while
* this function is provided with a new callback, @p func_notify, that will
* be called from the main thread for every message sent from @p func_heavy
* with ecore_thread_feedback().
*
* Like with ecore_thread_run(), a new thread will be launched to run
* @p func_heavy unless the maximum number of simultaneous threadas has bee
n
* reached, in which case the function will be scheduled to run whenever a
* running task ends and a thread becomes free. But if @p try_no_queue is
* set, Ecore will first try to launch a thread outside of the pool to run
* the task. If it fails, it will revert to the normal behaviour of using a
* thread from the pool as if @p try_no_queue had not been set.
*
* Keep in mind that Ecore handles the thread pool based on the number of
* CPUs available, but running a thread outside of the pool doesn't count f
or
* this, so having too many of them may have drastic effects over the
* program's performance.
*
* @see ecore_thread_feedback()
* @see ecore_thread_run()
* @see ecore_thread_cancel()
* @see ecore_thread_reschedule()
* @see ecore_thread_max_set()
*/
EAPI Ecore_Thread *
ecore_thread_feedback_run(Ecore_Thread_Cb func_heavy,
Ecore_Thread_Notify_Cb func_notify,
Ecore_Thread_Cb func_end,
Ecore_Thread_Cb func_cancel,
const void *data,
Eina_Bool try_no_queue);
/**
* Cancel a running thread.
*
* @param thread The thread to cancel.
* @return Will return EINA_TRUE if the thread has been cancelled,
* EINA_FALSE if it is pending.
*
* This function can be called both in the main loop or in the running thre
ad.
*
* This function cancels a running thread. If @p thread can be immediately
* cancelled (it's still pending execution after creation or rescheduling),
* then the @c cancel callback will be called, @p thread will be freed and
* the function will return EINA_TRUE.
*
* If the thread is already running, then this function returns EINA_FALSE
* after marking the @p thread as pending cancellation. For the thread to
* actually be terminated, it needs to return from the user function back
* into Ecore control. This can happen in several ways:
* @li The function ends and returns normally. If it hadn't been cancelled,
* @c func_end would be called here, but instead @c func_cancel will happen
.
* @li The function returns after requesting to be rescheduled with
* ecore_thread_reschedule().
* @li The function is prepared to leave early by checking if
* ecore_thread_check() returns EINA_TRUE.
*
* The user function can cancel itself by calling ecore_thread_cancel(), bu
t
* it should always use the ::Ecore_Thread handle passed to it and never
* share it with the main loop thread by means of shared user data or any
* other way.
*
* @p thread will be freed and should not be used again if this function
* returns EINA_TRUE or after the @c func_cancel callback returns.
*
* @see ecore_thread_check()
*/
EAPI Eina_Bool
ecore_thread_cancel(Ecore_Thread *thread);
/**
* Checks if a thread is pending cancellation
*
* @param thread The thread to test.
* @return EINA_TRUE if the thread is pending cancellation,
* EINA_FALSE if it is not.
*
* This function can be called both in the main loop or in the running thre
ad.
*
* When ecore_thread_cancel() is called on an already running task, the
* thread is marked as pending cancellation. This function returns EINA_TRU
E
* if this mark is set for the given @p thread and can be used from the
* main loop thread to check if a still active thread has been cancelled,
* or from the user function running in the thread to check if it should
* stop doing what it's doing and return early, effectively cancelling the
* task.
*
* @see ecore_thread_cancel()
*/
EAPI Eina_Bool
ecore_thread_check(Ecore_Thread *thread);
/**
* Sends data from the worker thread to the main loop
*
* @param thread The current ::Ecore_Thread context to send data from
* @param msg_data Data to be transmitted to the main loop
* @return EINA_TRUE if @p msg_data was successfully sent to main loop,
* EINA_FALSE if anything goes wrong.
*
* You should use this function only in the @c func_heavy call.
*
* Only the address to @p msg_data will be sent and once this function
* returns EINA_TRUE, the job running in the thread should never touch the
* contents of it again. The data sent should be malloc()'ed or something
* similar, as long as it's not memory local to the thread that risks being
* overwritten or deleted once it goes out of scope or the thread finishes.
*
* Care must be taken that @p msg_data is properly freed in the @c func_not
ify
* callback set when creating the thread.
*
* @see ecore_thread_feedback_run()
*/
EAPI Eina_Bool
ecore_thread_feedback(Ecore_Thread *thread,
const void *msg_data);
/**
* Asks for the function in the thread to be called again at a later time
*
* @param thread The current ::Ecore_Thread context to rescheduled
* @return EINA_TRUE if the task was successfully rescheduled,
* EINA_FALSE if anything goes wrong.
*
* This function should be called only from the same function represented
* by @pthread.
*
* Calling this function will mark the thread for a reschedule, so as soon
* as it returns, it will be added to the end of the list of pending tasks.
* If no other tasks are waiting or there are sufficient threads available,
* the rescheduled task will be launched again immediately.
*
* This should never return EINA_FALSE, unless it was called from the wrong
* thread or with the wrong arguments.
*
* The @c func_end callback set when the thread is created will not be
* called until the function in the thread returns without being reschedule
d.
* Similarly, if the @p thread is cancelled, the reschedule will not take
* effect.
*/
EAPI Eina_Bool
ecore_thread_reschedule(Ecore_Thread *thread);
/**
* Gets the number of active threads running jobs
*
* @return Number of active threads running jobs
*
* This returns the number of threads currently running jobs of any type
* through the Ecore_Thread API.
*
* @note Jobs started through the ecore_thread_feedback_run() function with
* the @c try_no_queue parameter set to EINA_TRUE will not be accounted for
* in the return of this function unless the thread creation fails and it
* falls back to using one from the pool.
*/
EAPI int
ecore_thread_active_get(void);
/**
* Gets the number of short jobs waiting for a thread to run
*
* @return Number of pending threads running "short" jobs
*
* This returns the number of tasks started with ecore_thread_run() that ar
e
* pending, waiting for a thread to become available to run them.
*/
EAPI int
ecore_thread_pending_get(void);
/**
* Gets the number of feedback jobs waiting for a thread to run
*
* @return Number of pending threads running "feedback" jobs
*
* This returns the number of tasks started with ecore_thread_feedback_run(
)
* that are pending, waiting for a thread to become available to run them.
*/
EAPI int
ecore_thread_pending_feedback_get(void);
/**
* Gets the total number of pending jobs
*
* @return Number of pending threads running jobs
*
* Same as the sum of ecore_thread_pending_get() and
* ecore_thread_pending_feedback_get().
*/
EAPI int
ecore_thread_pending_total_get(void);
/**
* Gets the maximum number of threads that can run simultaneously
*
* @return Max possible number of Ecore_Thread's running concurrently
*
* This returns the maximum number of Ecore_Thread's that may be running at
* the same time. If this number is reached, new jobs started by either
* ecore_thread_run() or ecore_thread_feedback_run() will be added to the
* respective pending queue until one of the running threads finishes its
* task and becomes available to run a new one.
*
* By default, this will be the number of available CPUs for the
* running program (as returned by eina_cpu_count()), or 1 if this value
* could not be fetched.
*
* @see ecore_thread_max_set()
* @see ecore_thread_max_reset()
*/
EAPI int
ecore_thread_max_get(void);
/**
* Sets the maximum number of threads allowed to run simultaneously
*
* @param num The new maximum
*
* This sets a new value for the maximum number of concurrently running
* Ecore_Thread's. It @b must an integer between 1 and (2 * @c x), where @c
x
* is the number for CPUs available.
*
* @see ecore_thread_max_get()
* @see ecore_thread_max_reset()
*/
EAPI void
ecore_thread_max_set(int num);
/**
* Resets the maximum number of concurrently running threads to the default
*
* This resets the value returned by ecore_thread_max_get() back to its
* default.
*
* @see ecore_thread_max_get()
* @see ecore_thread_max_set()
*/
EAPI void
ecore_thread_max_reset(void);
/**
* Gets the number of threads available for running tasks
*
* @return The number of available threads
*
* Same as doing ecore_thread_max_get() - ecore_thread_active_get().
*
* This function may return a negative number only in the case the user
* changed the maximum number of running threads while other tasks are
* running.
*/
EAPI int
ecore_thread_available_get(void);
/**
* Adds some data to a hash local to the thread
*
* @param thread The thread context the data belongs to
* @param key The name under which the data will be stored
* @param value The data to add
* @param cb Function to free the data when removed from the hash
* @param direct If true, this will not copy the key string (like
* eina_hash_direct_add())
* @return EINA_TRUE on success, EINA_FALSE on failure
*
* Ecore Thread has a mechanism to share data across several worker functio
ns
* that run on the same system thread. That is, the data is stored per
* thread and for a worker function to have access to it, it must be run
* by the same thread that stored the data.
*
* When there are no more workers pending, the thread will be destroyed
* along with the internal hash and any data left in it will be freed with
* the @p cb function given.
*
* This set of functions is useful to share things around several instances
* of a function when that thing is costly to create and can be reused, but
* may only be used by one function at a time.
*
* For example, if you have a program doing requisitions to a database,
* these requisitions can be done in threads so that waiting for the
* database to respond doesn't block the UI. Each of these threads will
* run a function, and each function will be dependent on a connection to
* the database, which may not be able to handle more than one request at
* a time so for each running function you will need one connection handle.
* The options then are:
* @li Each function opens a connection when it's called, does the work and
* closes the connection when it finishes. This may be costly, wasting a lo
t
* of time on resolving hostnames, negotiating permissions and allocating
* memory.
* @li Open the connections in the main loop and pass it to the threads
* using the data pointer. Even worse, it's just as costly as before and no
w
* it may even be kept with connections open doing nothing until a thread
* becomes available to run the function.
* @li Have a way to share connection handles, so that each instance of the
* function can check if an available connection exists, and if it doesn't,
* create one and add it to the pool. When no more connections are needed,
* they are all closed.
*
* The last option is the most efficient, but it requires a lot of work to
* implement properly. Using thread local data helps to achieve the same
* result while avoiding doing all the tracking work on your code. The way
* to use it would be, at the worker function, to ask for the connection
* with ecore_thread_local_data_find() and if it doesn't exist, then open
* a new one and save it with ecore_thread_local_data_add(). Do the work an
d
* forget about the connection handle, when everything is done the function
* just ends. The next worker to run on that thread will check if a
* connection exists and find that it does, so the process of opening a
* new one has been spared. When no more workers exist, the thread is
* destroyed and the callback used when saving the connection will be calle
d
* to close it.
*
* This function adds the data @p value to the thread data under the given
* @p key.
* No other value in the hash may have the same @p key. If you need to
* change the value under a @p key, or you don't know if one exists already
,
* you can use ecore_thread_local_data_set().
*
* Neither @p key nor @p value may be NULL and @p key will be copied in the
* hash, unless @p direct is set, in which case the string used should not
* be freed until the data is removed from the hash.
*
* The @p cb function will be called when the data in the hash needs to be
* freed, be it because it got deleted with ecore_thread_local_data_del() o
r
* because @p thread was terminated and the hash destroyed. This parameter
* may be NULL, in which case @p value needs to be manually freed after
* removing it from the hash with either ecore_thread_local_data_del() or
* ecore_thread_local_data_set(), but it's very unlikely that this is what
* you want.
*
* This function, and all of the others in the @c ecore_thread_local_data
* family of functions, can only be called within the worker function runni
ng
* in the thread. Do not call them from the main loop or from a thread
* other than the one represented by @p thread.
*
* @see ecore_thread_local_data_set()
* @see ecore_thread_local_data_find()
* @see ecore_thread_local_data_del()
*/
EAPI Eina_Bool
ecore_thread_local_data_add(Ecore_Thread *thread,
const char *key,
void *value,
Eina_Free_Cb cb,
Eina_Bool direct);
/**
* Sets some data in the hash local to the given thread
*
* @param thread The thread context the data belongs to
* @param key The name under which the data will be stored
* @param value The data to add
* @param cb Function to free the data when removed from the hash
*
* If no data exists in the hash under the @p key, this function adds
* @p value in the hash under the given @p key and returns NULL.
* The key itself is copied.
*
* If the hash already contains something under @p key, the data will be
* replaced by @p value and the old value will be returned.
*
* NULL will also be returned if either @p key or @p value are NULL, or if
* an error occurred.
*
* This function, and all of the others in the @c ecore_thread_local_data
* family of functions, can only be called within the worker function runni
ng
* in the thread. Do not call them from the main loop or from a thread
* other than the one represented by @p thread.
*
* @see ecore_thread_local_data_add()
* @see ecore_thread_local_data_del()
* @see ecore_thread_local_data_find()
*/
EAPI void *
ecore_thread_local_data_set(Ecore_Thread *thread,
const char *key,
void *value,
Eina_Free_Cb cb);
/**
* Gets data stored in the hash local to the given thread
*
* @param thread The thread context the data belongs to
* @param key The name under which the data is stored
* @return The value under the given key, or NULL on error
*
* Finds and return the data stored in the shared hash under the key @p key
.
*
* This function, and all of the others in the @c ecore_thread_local_data
* family of functions, can only be called within the worker function runni
ng
* in the thread. Do not call them from the main loop or from a thread
* other than the one represented by @p thread.
*
* @see ecore_thread_local_data_add()
* @see ecore_thread_local_data_wait()
*/
EAPI void *
ecore_thread_local_data_find(Ecore_Thread *thread,
const char *key);
/**
* Deletes from the thread's hash the data corresponding to the given key
*
* @param thread The thread context the data belongs to
* @param key The name under which the data is stored
* @return EINA_TRUE on success, EINA_FALSE on failure
*
* If there's any data stored associated with @p key in the global hash,
* this function will remove it from it and return EINA_TRUE. If no data
* exists or an error occurs, it returns EINA_FALSE.
*
* If the data was added to the hash with a free function, then it will
* also be freed after removing it from the hash, otherwise it requires
* to be manually freed by the user, which means that if no other reference
* to it exists before calling this function, it will result in a memory
* leak.
*
* This function, and all of the others in the @c ecore_thread_local_data
* family of functions, can only be called within the worker function runni
ng
* in the thread. Do not call them from the main loop or from a thread
* other than the one represented by @p thread.
*
* @see ecore_thread_local_data_add()
*/
EAPI Eina_Bool
ecore_thread_local_data_del(Ecore_Thread *thread,
const char *key);
/**
* Adds some data to a hash shared by all threads
*
* @param key The name under which the data will be stored
* @param value The data to add
* @param cb Function to free the data when removed from the hash
* @param direct If true, this will not copy the key string (like
* eina_hash_direct_add())
* @return EINA_TRUE on success, EINA_FALSE on failure
*
* Ecore Thread keeps a hash that can be used to share data across several
* threads, including the main loop one, without having to manually handle
* mutexes to do so safely.
*
* This function adds the data @p value to this hash under the given @p key
.
* No other value in the hash may have the same @p key. If you need to
* change the value under a @p key, or you don't know if one exists already
,
* you can use ecore_thread_global_data_set().
*
* Neither @p key nor @p value may be NULL and @p key will be copied in the
* hash, unless @p direct is set, in which case the string used should not
* be freed until the data is removed from the hash.
*
* The @p cb function will be called when the data in the hash needs to be
* freed, be it because it got deleted with ecore_thread_global_data_del()
or
* because Ecore Thread was shut down and the hash destroyed. This paramete
r
* may be NULL, in which case @p value needs to be manually freed after
* removing it from the hash with either ecore_thread_global_data_del() or
* ecore_thread_global_data_set().
*
* Manually freeing any data that was added to the hash with a @p cb functi
on
* is likely to produce a segmentation fault, or any other strange
* happenings, later on in the program.
*
* @see ecore_thread_global_data_del()
* @see ecore_thread_global_data_set()
* @see ecore_thread_global_data_find()
*/
EAPI Eina_Bool
ecore_thread_global_data_add(const char *key,
void *value,
Eina_Free_Cb cb,
Eina_Bool direct);
/**
* Sets some data in the hash shared by all threads
*
* @param key The name under which the data will be stored
* @param value The data to add
* @param cb Function to free the data when removed from the hash
*
* If no data exists in the hash under the @p key, this function adds
* @p value in the hash under the given @p key and returns NULL.
* The key itself is copied.
*
* If the hash already contains something under @p key, the data will be
* replaced by @p value and the old value will be returned.
*
* NULL will also be returned if either @p key or @p value are NULL, or if
* an error occurred.
*
* @see ecore_thread_global_data_add()
* @see ecore_thread_global_data_del()
* @see ecore_thread_global_data_find()
*/
EAPI void *
ecore_thread_global_data_set(const char *key,
void *value,
Eina_Free_Cb cb);
/**
* Gets data stored in the hash shared by all threads
*
* @param key The name under which the data is stored
* @return The value under the given key, or NULL on error
*
* Finds and return the data stored in the shared hash under the key @p key
.
*
* Keep in mind that the data returned may be used by more than one thread
* at the same time and no reference counting is done on it by Ecore.
* Freeing the data or modifying its contents may require additional
* precautions to be considered, depending on the application's design.
*
* @see ecore_thread_global_data_add()
* @see ecore_thread_global_data_wait()
*/
EAPI void *
ecore_thread_global_data_find(const char *key);
/**
* Deletes from the shared hash the data corresponding to the given key
*
* @param key The name under which the data is stored
* @return EINA_TRUE on success, EINA_FALSE on failure
*
* If there's any data stored associated with @p key in the global hash,
* this function will remove it from it and return EINA_TRUE. If no data
* exists or an error occurs, it returns EINA_FALSE.
*
* If the data was added to the hash with a free function, then it will
* also be freed after removing it from the hash, otherwise it requires
* to be manually freed by the user, which means that if no other reference
* to it exists before calling this function, it will result in a memory
* leak.
*
* Note, also, that freeing data that other threads may be using will resul
t
* in a crash, so appropriate care must be taken by the application when
* that possibility exists.
*
* @see ecore_thread_global_data_add()
*/
EAPI Eina_Bool
ecore_thread_global_data_del(const char *key);
/**
* Gets data stored in the shared hash, or wait for it if it doesn't exist
*
* @param key The name under which the data is stored
* @param seconds The amount of time in seconds to wait for the data.
* @return The value under the given key, or NULL on error
*
* Finds and return the data stored in the shared hash under the key @p key
.
*
* If there's nothing in the hash under the given @p key, the function
* will block and wait up to @p seconds seconds for some other thread to
* add it with either ecore_thread_global_data_add() or
* ecore_thread_global_data_set(). If after waiting there's still no data
* to get, NULL will be returned.
*
* If @p seconds is 0, then no waiting will happen and this function works
* like ecore_thread_global_data_find(). If @p seconds is less than 0, then
* the function will wait indefinitely.
*
* Keep in mind that the data returned may be used by more than one thread
* at the same time and no reference counting is done on it by Ecore.
* Freeing the data or modifying its contents may require additional
* precautions to be considered, depending on the application's design.
*
* @see ecore_thread_global_data_add()
* @see ecore_thread_global_data_find()
*/
EAPI void *
ecore_thread_global_data_wait(const char *key,
double seconds);
/**
* @}
*/
/**
* @defgroup Ecore_Pipe_Group Pipe wrapper
*
* These functions wrap the pipe / write / read functions to easily
* integrate its use into ecore's main loop.
*
* The ecore_pipe_add() function creates file descriptors (sockets
* on Windows) and attach a handle to the ecore main loop. That
* handle is called when data is read in the pipe. To write data in
* the pipe, just call ecore_pipe_write(). When you are done, just
* call ecore_pipe_del().
*
* For examples see here:
* @li @ref tutorial_ecore_pipe_gstreamer_example
* @li @ref tutorial_ecore_pipe_simple_example
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
typedef struct _Ecore_Pipe Ecore_Pipe; /**< A handle for pipes */
/**
* @typedef Ecore_Pipe_Cb Ecore_Pipe_Cb
* The callback that data written to the pipe is sent to.
*/
typedef void (*Ecore_Pipe_Cb)(void *data, void *buffer, unsigned int nbyte)
;
EAPI Ecore_Pipe *
ecore_pipe_add(Ecore_Pipe_Cb handler,
const void *data);
EAPI void *
ecore_pipe_del(Ecore_Pipe *p);
EAPI Eina_Bool
ecore_pipe_write(Ecore_Pipe *p,
const void *buffer,
unsigned int nbytes);
EAPI void
ecore_pipe_write_close(Ecore_Pipe *p);
EAPI void
ecore_pipe_read_close(Ecore_Pipe *p);
EAPI void
ecore_pipe_thaw(Ecore_Pipe *p);
EAPI void
ecore_pipe_freeze(Ecore_Pipe *p);
EAPI int
ecore_pipe_wait(Ecore_Pipe *p,
int message_count,
double wait);
/**
* @}
*/
/**
* @defgroup Ecore_Job_Group Ecore Job functions
*
* You can queue jobs that are to be done by the main loop when the
* current event is dealt with.
*
* Jobs are processed by the main loop similarly to events. They
* also will be executed in the order in which they were added.
*
* A good use for them is when you don't want to execute an action
* immeditately, but want to give the control back to the main loop
* so that it will call your job callback when jobs start being
* processed (and if there are other jobs added before yours, they
* will be processed first). This also gives the chance to other
* actions in your program to cancel the job before it is started.
*
* Examples of using @ref Ecore_Job:
* @li @ref ecore_job_example_c
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
typedef struct _Ecore_Job Ecore_Job; /**< A job handle */
EAPI Ecore_Job *
ecore_job_add(Ecore_Cb func,
const void *data);
EAPI void *
ecore_job_del(Ecore_Job *job);
/**
* @}
*/
/**
* @defgroup Ecore_Application_Group Ecore Application functions
*
* @{
*/
EAPI void
ecore_app_args_set(int argc,
const char **argv);
EAPI void
ecore_app_args_get(int *argc,
char ***argv);
EAPI void
ecore_app_restart(void);
/**
* @}
*/
/**
* @defgroup Ecore_Throttle_Group Ecore Throttle functions
*
* @ingroup Ecore_Main_Loop_Group
*
* @{
*/
EAPI void
ecore_throttle_adjust(double amount);
EAPI double
ecore_throttle_get(void);
/**
* @}
*/
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 8 change blocks. 
640 lines changed or deleted 2450 lines changed or added


 Ecore_Con.h   Ecore_Con.h 
skipping to change at line 17 skipping to change at line 17
# include <ws2tcpip.h> # include <ws2tcpip.h>
#else #else
# include <netdb.h> # include <netdb.h>
#endif #endif
#include <Eina.h> #include <Eina.h>
#ifdef EAPI #ifdef EAPI
# undef EAPI # undef EAPI
#endif #endif
#ifdef _MSC_VER #ifdef _WIN32
# ifdef BUILDING_DLL # ifdef EFL_ECORE_CON_BUILD
# define EAPI __declspec(dllexport) # ifdef DLL_EXPORT
# define EAPI __declspec(dllexport)
# else
# define EAPI
# endif
# else # else
# define EAPI __declspec(dllimport) # define EAPI __declspec(dllimport)
# endif # endif
#else #else
# ifdef __GNUC__ # ifdef __GNUC__
# if __GNUC__ >= 4 # if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default"))) # define EAPI __attribute__ ((visibility("default")))
# else # else
# define EAPI # define EAPI
# endif # endif
skipping to change at line 103 skipping to change at line 107
* @li ECORE_CON_EVENT_SERVER_DATA: Whenever your server object connects to its destination * @li ECORE_CON_EVENT_SERVER_DATA: Whenever your server object connects to its destination
* and receives data, an event of this type is emitted. The data will cont ain both * and receives data, an event of this type is emitted. The data will cont ain both
* the size and contents of the message sent by the server. It should be n oted that * the size and contents of the message sent by the server. It should be n oted that
* data within this object is transient, so it must be duplicated in order to be * data within this object is transient, so it must be duplicated in order to be
* retained. This event will continue to occur until the server has stoppe d sending its * retained. This event will continue to occur until the server has stoppe d sending its
* message, so a good option for storing this data is an Eina_Strbuf. Once the message has * message, so a good option for storing this data is an Eina_Strbuf. Once the message has
* been received in full, the server object must be freed with ecore_con_se rver_free. * been received in full, the server object must be freed with ecore_con_se rver_free.
* *
*/ */
/**
* @defgroup Ecore_Con_Buffer Buffering
*
* As Ecore_Con works on an event driven design, as data arrives, events wi
ll
* be produced containing the data that arrived. It is up to the user of
* Ecore_Con to either parse as they go, append to a file to later parse th
e
* whole file in one go, or append to memory to parse or handle leter.
*
* To help with this Eina has some handy API's. The Eina_Binbuf and
* Eina_Strbuf APIs, abstract dynamic buffer management and make it trivial
* to handle buffers at runtime, without having to manage them. Eina_Binbuf
* makes it possible to create, expand, reset and slice a blob of memory -
* all via API. No system calls, no pointer manipulations and no size
* calculation.
*
* Additional functions include adding content at specified byte positions
in
* the buffer, escaping the inputs, find and replace strings. This provides
* extreme flexibility to play around, with a dynamic blob of memory.
*
* It is good to free it (using eina_binbuf_free()) after using it.
*
* Eina_Binbuf compliments Ecore_Con use cases, where dynamic sizes of data
* arrive from the network (think http download in chunks). Using
* Eina_Binbuf provides enough flexibility to handle data as it arrives and
* to defer its processing until desired, without having to think about
* where to store the temporary data and how to manage its size.
*
* An example of how to use these with Ecore_Con follows.
*
* @code
* #include <Eina.h>
* #include <Ecore.h>
* #include <Ecore_Con.h>
*
* static Eina_Bool
* data_callback(void *data, int type, void *event)
* {
* Ecore_Con_Event_Url_Data *url_data = event;
* if ( url_data->size > 0)
* {
* // append data as it arrives - don't worry where or how it gets
stored.
* // Also don't worry about size, expanding, reallocing etc.
* // just keep appending - size is automatically handled.
*
* eina_binbuf_append_length(data, url_data->data, url_data->size);
*
* fprintf(stderr, "Appended %d \n", url_data->size);
* }
* return EINA_TRUE;
* }
*
*
*
* static Eina_Bool
* completion_callback(void *data, int type, void *event)
* {
* Ecore_Con_Event_Url_Complete *url_complete = event;
* printf("download completed with status code: %d\n", url_complete->sta
tus);
*
* // get the data back from Eina_Binbuf
* char *ptr = eina_binbuf_string_get(data);
* size_t size = eina_binbuf_length_get(data);
*
* // process data as required (write to file)
* fprintf(stderr, "Size of data = %d bytes\n", size);
* int fd = open("./elm.png", O_CREAT);
* write(fd, ptr, size);
* close(fd);
*
* // free it when done.
* eina_binbuf_free(data);
*
* ecore_main_loop_quit();
*
* return EINA_TRUE;
* }
*
*
* int
* main(int argc, char **argv)
* {
*
* const char *url = "http://www.enlightenment.org/p/index/d/logo.png";
*
* ecore_init();
* ecore_con_init();
* ecore_con_url_init();
*
*
* // This is single additional line to manage dynamic network data.
* Eina_Binbuf *data = eina_binbuf_new();
* Ecore_Con_Url *url_con = ecore_con_url_new(url);
*
* ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE,
* completion_callbac
k,
* data);
* ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA,
* data_callback,
* data);
* ecore_con_url_get(url_con);
*
* ecore_main_loop_begin();
* return 0;
* }
* @endcode
*/
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#define ECORE_CON_USE_SSL ECORE_CON_USE_SSL2 #define ECORE_CON_USE_SSL ECORE_CON_USE_SSL2
#define ECORE_CON_REMOTE_SYSTEM ECORE_CON_REMOTE_TCP #define ECORE_CON_REMOTE_SYSTEM ECORE_CON_REMOTE_TCP
/** /**
* @typedef Ecore_Con_Server * @typedef Ecore_Con_Server
* A connection handle to a server * A connection handle to a server
* @ingroup Ecore_Con_Server_Group * @ingroup Ecore_Con_Server_Group
skipping to change at line 142 skipping to change at line 253
* @{ * @{
*/ */
/** /**
* @typedef Ecore_Con_Event_Client_Add * @typedef Ecore_Con_Event_Client_Add
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
*/ */
typedef struct _Ecore_Con_Event_Client_Add Ecore_Con_Event_Client_Add; typedef struct _Ecore_Con_Event_Client_Add Ecore_Con_Event_Client_Add;
/** /**
* @typedef Ecore_Con_Event_Client_Upgrade
* Used as the @p data param for the corresponding event
* @since 1.1
*/
typedef struct _Ecore_Con_Event_Client_Upgrade Ecore_Con_Event_Client_Upgra
de;
/**
* @typedef Ecore_Con_Event_Client_Del * @typedef Ecore_Con_Event_Client_Del
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
*/ */
typedef struct _Ecore_Con_Event_Client_Del Ecore_Con_Event_Client_Del; typedef struct _Ecore_Con_Event_Client_Del Ecore_Con_Event_Client_Del;
/** /**
* @typedef Ecore_Con_Event_Client_Error
* Used as the @p data param for the corresponding event
* @since 1.1
*/
typedef struct _Ecore_Con_Event_Client_Error Ecore_Con_Event_Client_Error;
/**
* @typedef Ecore_Con_Event_Server_Add * @typedef Ecore_Con_Event_Server_Add
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
*/ */
typedef struct _Ecore_Con_Event_Server_Add Ecore_Con_Event_Server_Add; typedef struct _Ecore_Con_Event_Server_Add Ecore_Con_Event_Server_Add;
/** /**
* @typedef Ecore_Con_Event_Server_Upgrade
* Used as the @p data param for the corresponding event
* @since 1.1
*/
typedef struct _Ecore_Con_Event_Server_Upgrade Ecore_Con_Event_Server_Upgra
de;
/**
* @typedef Ecore_Con_Event_Server_Del * @typedef Ecore_Con_Event_Server_Del
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
*/ */
typedef struct _Ecore_Con_Event_Server_Del Ecore_Con_Event_Server_Del; typedef struct _Ecore_Con_Event_Server_Del Ecore_Con_Event_Server_Del;
/** /**
* @typedef Ecore_Con_Event_Server_Error
* Used as the @p data param for the corresponding event
* @since 1.1
*/
typedef struct _Ecore_Con_Event_Server_Error Ecore_Con_Event_Server_Error;
/**
* @typedef Ecore_Con_Event_Client_Data * @typedef Ecore_Con_Event_Client_Data
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
*/ */
typedef struct _Ecore_Con_Event_Client_Data Ecore_Con_Event_Client_Data; typedef struct _Ecore_Con_Event_Client_Data Ecore_Con_Event_Client_Data;
/** /**
* @typedef Ecore_Con_Event_Server_Data * @typedef Ecore_Con_Event_Server_Data
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
*/ */
typedef struct _Ecore_Con_Event_Server_Data Ecore_Con_Event_Server_Data; typedef struct _Ecore_Con_Event_Server_Data Ecore_Con_Event_Server_Data;
/** /**
* @typedef Ecore_Con_Event_Client_Write
* Used as the @p data param for the corresponding event
* @since 1.1
*/
typedef struct _Ecore_Con_Event_Client_Write Ecore_Con_Event_Client_Write;
/**
* @typedef Ecore_Con_Event_Server_Write
* Used as the @p data param for the corresponding event
* @since 1.1
*/
typedef struct _Ecore_Con_Event_Server_Write Ecore_Con_Event_Server_Write;
/**
* @typedef Ecore_Con_Event_Url_Data * @typedef Ecore_Con_Event_Url_Data
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
* @ingroup Ecore_Con_Url_Group
*/ */
typedef struct _Ecore_Con_Event_Url_Data Ecore_Con_Event_Url_Data; typedef struct _Ecore_Con_Event_Url_Data Ecore_Con_Event_Url_Data;
/** /**
* @typedef Ecore_Con_Event_Url_Complete * @typedef Ecore_Con_Event_Url_Complete
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
* @ingroup Ecore_Con_Url_Group
*/ */
typedef struct _Ecore_Con_Event_Url_Complete Ecore_Con_Event_Url_Complete; typedef struct _Ecore_Con_Event_Url_Complete Ecore_Con_Event_Url_Complete;
/** /**
* @typedef Ecore_Con_Event_Url_Progress * @typedef Ecore_Con_Event_Url_Progress
* Used as the @p data param for the corresponding event * Used as the @p data param for the corresponding event
* @ingroup Ecore_Con_Url_Group
*/ */
typedef struct _Ecore_Con_Event_Url_Progress Ecore_Con_Event_Url_Progress; typedef struct _Ecore_Con_Event_Url_Progress Ecore_Con_Event_Url_Progress;
/** /**
* @struct _Ecore_Con_Event_Client_Add * @struct _Ecore_Con_Event_Client_Add
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_ADD event * Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_ADD event
*/ */
struct _Ecore_Con_Event_Client_Add struct _Ecore_Con_Event_Client_Add
{ {
Ecore_Con_Client *client; /** the client that connected */ Ecore_Con_Client *client; /** the client that connected */
}; };
/** /**
* @struct _Ecore_Con_Event_Client_Upgrade
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_UPGRADE ev
ent
* @since 1.1
*/
struct _Ecore_Con_Event_Client_Upgrade
{
Ecore_Con_Client *client; /** the client that completed handshake */
};
/**
* @struct _Ecore_Con_Event_Client_Del * @struct _Ecore_Con_Event_Client_Del
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_DEL event * Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_DEL event
*/ */
struct _Ecore_Con_Event_Client_Del struct _Ecore_Con_Event_Client_Del
{ {
Ecore_Con_Client *client; /** the client that was lost */ Ecore_Con_Client *client; /** the client that was lost */
}; };
/** /**
* @struct _Ecore_Con_Event_Client_Error
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_ERROR even
t
*/
struct _Ecore_Con_Event_Client_Error
{
Ecore_Con_Client *client; /** the client for which an error occurred */
char *error; /**< the error string describing what happened */
};
/**
* @struct _Ecore_Con_Event_Server_Add * @struct _Ecore_Con_Event_Server_Add
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_ADD event * Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_ADD event
*/ */
struct _Ecore_Con_Event_Server_Add struct _Ecore_Con_Event_Server_Add
{ {
Ecore_Con_Server *server; /** the server that was connected to */ Ecore_Con_Server *server; /** the server that was connected to */
}; };
/** /**
* @struct _Ecore_Con_Event_Server_Upgrade
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_UPGRADE ev
ent
* @since 1.1
*/
struct _Ecore_Con_Event_Server_Upgrade
{
Ecore_Con_Server *server; /** the server that was connected to */
};
/**
* @struct _Ecore_Con_Event_Server_Del * @struct _Ecore_Con_Event_Server_Del
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_DEL event * Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_DEL event
*/ */
struct _Ecore_Con_Event_Server_Del struct _Ecore_Con_Event_Server_Del
{ {
Ecore_Con_Server *server; /** the client that was lost */ Ecore_Con_Server *server; /** the client that was lost */
}; };
/** /**
* @struct _Ecore_Con_Event_Server_Error
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_ERROR even
t
*/
struct _Ecore_Con_Event_Server_Error
{
Ecore_Con_Server *server; /** the server for which an error occurred */
char *error; /**< the error string describing what happened */
};
/**
* @struct _Ecore_Con_Event_Client_Data * @struct _Ecore_Con_Event_Client_Data
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_DATA event * Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_DATA event
*/ */
struct _Ecore_Con_Event_Client_Data struct _Ecore_Con_Event_Client_Data
{ {
Ecore_Con_Client *client; /**< the client that connected */ Ecore_Con_Client *client; /**< the client that connected */
void *data; /**< the data that the client sent */ void *data; /**< the data that the client sent */
int size; /**< the length of the data sent */ int size; /**< the length of the data sent */
}; };
skipping to change at line 248 skipping to change at line 444
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_DATA event * Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_DATA event
*/ */
struct _Ecore_Con_Event_Server_Data struct _Ecore_Con_Event_Server_Data
{ {
Ecore_Con_Server *server; /**< the server that was connected to */ Ecore_Con_Server *server; /**< the server that was connected to */
void *data; /**< the data that the server sent */ void *data; /**< the data that the server sent */
int size; /**< the length of the data sent */ int size; /**< the length of the data sent */
}; };
/** /**
* @struct _Ecore_Con_Event_Client_Write
* Used as the @p data param for the @ref ECORE_CON_EVENT_CLIENT_WRITE even
t
*/
struct _Ecore_Con_Event_Client_Write
{
Ecore_Con_Client *client; /**< the client that connected */
int size; /**< the length of the data sent */
};
/**
* @struct _Ecore_Con_Event_Server_Write
* Used as the @p data param for the @ref ECORE_CON_EVENT_SERVER_WRITE even
t
*/
struct _Ecore_Con_Event_Server_Write
{
Ecore_Con_Server *server; /**< the server that was connected to */
int size; /**< the length of the data sent */
};
/**
* @struct _Ecore_Con_Event_Url_Data * @struct _Ecore_Con_Event_Url_Data
* Used as the @p data param for the @ref ECORE_CON_EVENT_URL_DATA event * Used as the @p data param for the @ref ECORE_CON_EVENT_URL_DATA event
* @ingroup Ecore_Con_Url_Group
*/ */
struct _Ecore_Con_Event_Url_Data struct _Ecore_Con_Event_Url_Data
{ {
Ecore_Con_Url *url_con; Ecore_Con_Url *url_con; /**< a pointer to the connection object */
int size; int size; /**< the size of the current received data (in bytes) */
unsigned char data[1]; unsigned char data[1]; /**< the data received on this event */
}; };
/** /**
* @struct _Ecore_Con_Event_Url_Complete * @struct _Ecore_Con_Event_Url_Complete
* Used as the @p data param for the @ref ECORE_CON_EVENT_URL_COMPLETE even t * Used as the @p data param for the @ref ECORE_CON_EVENT_URL_COMPLETE even t
* @ingroup Ecore_Con_Url_Group
*/ */
struct _Ecore_Con_Event_Url_Complete struct _Ecore_Con_Event_Url_Complete
{ {
Ecore_Con_Url *url_con; Ecore_Con_Url *url_con; /**< a pointer to the connection object */
int status; int status; /**< HTTP status code of the operation (200, 404, 401, etc.)
*/
}; };
/** /**
* @struct _Ecore_Con_Event_Url_Progress * @struct _Ecore_Con_Event_Url_Progress
* Used as the @p data param for the @ref ECORE_CON_EVENT_URL_PROGRESS even t * Used as the @p data param for the @ref ECORE_CON_EVENT_URL_PROGRESS even t
* @ingroup Ecore_Con_Url_Group
*/ */
struct _Ecore_Con_Event_Url_Progress struct _Ecore_Con_Event_Url_Progress
{ {
Ecore_Con_Url *url_con; Ecore_Con_Url *url_con; /**< a pointer to the connection object */
struct struct
{ {
double total; double total; /**< total size of the downloading data (in bytes) */
double now; double now; /**< current size of the downloading data (in bytes) */
} down; } down; /**< download info */
struct struct
{ {
double total; double total; /**< total size of the uploading data (in bytes) */
double now; double now; /**< current size of the uploading data (in bytes) */
} up; } up; /**< upload info */
}; };
/** A client has connected to the server */ /** A client has connected to the server */
EAPI extern int ECORE_CON_EVENT_CLIENT_ADD; EAPI extern int ECORE_CON_EVENT_CLIENT_ADD;
/** A client has disconnected from the server */ /** A client has disconnected from the server */
EAPI extern int ECORE_CON_EVENT_CLIENT_DEL; EAPI extern int ECORE_CON_EVENT_CLIENT_DEL;
/** A client experienced an error
* @since 1.1
*/
EAPI extern int ECORE_CON_EVENT_CLIENT_ERROR;
/** A client connection has been upgraded to SSL
* @since 1.1
*/
EAPI extern int ECORE_CON_EVENT_CLIENT_UPGRADE;
/** A server was created */ /** A server was created */
EAPI extern int ECORE_CON_EVENT_SERVER_ADD; EAPI extern int ECORE_CON_EVENT_SERVER_ADD;
/** A server connection was lost */ /** A server connection was lost */
EAPI extern int ECORE_CON_EVENT_SERVER_DEL; EAPI extern int ECORE_CON_EVENT_SERVER_DEL;
/** A server experienced an error
* @since 1.1
*/
EAPI extern int ECORE_CON_EVENT_SERVER_ERROR;
/** A server connection has been upgraded to SSL
* @since 1.1
*/
EAPI extern int ECORE_CON_EVENT_SERVER_UPGRADE;
/** A server connection has sent data to its client
* @since 1.1
*/
EAPI extern int ECORE_CON_EVENT_CLIENT_WRITE;
/** A server connection object has sent data
* @since 1.1
*/
EAPI extern int ECORE_CON_EVENT_SERVER_WRITE;
/** A client connected to the server has sent data */ /** A client connected to the server has sent data */
EAPI extern int ECORE_CON_EVENT_CLIENT_DATA; EAPI extern int ECORE_CON_EVENT_CLIENT_DATA;
/** A server connection object has data */ /** A server connection object has data */
EAPI extern int ECORE_CON_EVENT_SERVER_DATA; EAPI extern int ECORE_CON_EVENT_SERVER_DATA;
/** A URL object has data */ /** A URL object has data */
EAPI extern int ECORE_CON_EVENT_URL_DATA; EAPI extern int ECORE_CON_EVENT_URL_DATA;
/** A URL object has completed its transfer to and from the server and can be reused */ /** A URL object has completed its transfer to and from the server and can be reused */
EAPI extern int ECORE_CON_EVENT_URL_COMPLETE; EAPI extern int ECORE_CON_EVENT_URL_COMPLETE;
/** A URL object has made progress in its transfer */ /** A URL object has made progress in its transfer */
EAPI extern int ECORE_CON_EVENT_URL_PROGRESS; EAPI extern int ECORE_CON_EVENT_URL_PROGRESS;
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Ecore_Con_Lib_Group Ecore Connection Library Functions * @defgroup Ecore_Con_Lib_Group Ecore Connection Library Functions
* *
* Utility functions that set up and shut down the Ecore Connection
* library.
*
* There's also ecore_con_lookup() that can be used to make simple asynchro
nous
* DNS lookups.
*
* A simple example of how to use these functions:
* @li @ref ecore_con_lookup_example_c
*
* @{ * @{
*/ */
/** /**
* @typedef Ecore_Con_Dns_Cb * @typedef Ecore_Con_Dns_Cb
* A callback type for use with @ref ecore_con_lookup. * A callback type for use with @ref ecore_con_lookup.
*/ */
typedef void (*Ecore_Con_Dns_Cb)(const char *canonname, typedef void (*Ecore_Con_Dns_Cb)(const char *canonname,
const char *ip, const char *ip,
struct sockaddr *addr, struct sockaddr *addr,
skipping to change at line 335 skipping to change at line 587
/** /**
* @typedef Ecore_Con_Type * @typedef Ecore_Con_Type
* @enum _Ecore_Con_Type * @enum _Ecore_Con_Type
* Types for an ecore_con client/server object. A correct way to set this type is * Types for an ecore_con client/server object. A correct way to set this type is
* with an ECORE_CON_$TYPE, optionally OR'ed with an ECORE_CON_$USE if encr yption is desired, * with an ECORE_CON_$TYPE, optionally OR'ed with an ECORE_CON_$USE if encr yption is desired,
* and LOAD_CERT if the previously loaded certificate should be used. * and LOAD_CERT if the previously loaded certificate should be used.
* @code * @code
* ECORE_CON_REMOTE_TCP | ECORE_CON_USE_TLS | ECORE_CON_LOAD_CERT * ECORE_CON_REMOTE_TCP | ECORE_CON_USE_TLS | ECORE_CON_LOAD_CERT
* @endcode * @endcode
* @ingroup Ecore_Con_Server_Group
*/ */
typedef enum _Ecore_Con_Type typedef enum _Ecore_Con_Type
{ {
/** Socket in ~/.ecore */ /** Socket in ~/.ecore */
ECORE_CON_LOCAL_USER = 0, ECORE_CON_LOCAL_USER = 0,
/** Socket in /tmp */ /** Socket in /tmp */
ECORE_CON_LOCAL_SYSTEM = 1, ECORE_CON_LOCAL_SYSTEM = 1,
/** Abstract socket */ /** Abstract socket */
ECORE_CON_LOCAL_ABSTRACT = 2, ECORE_CON_LOCAL_ABSTRACT = 2,
/** Remote server using TCP */ /** Remote server using TCP */
skipping to change at line 365 skipping to change at line 618
/** Use SSL3 */ /** Use SSL3 */
ECORE_CON_USE_SSL3 = (1 << 5), ECORE_CON_USE_SSL3 = (1 << 5),
/** Use TLS */ /** Use TLS */
ECORE_CON_USE_TLS = (1 << 6), ECORE_CON_USE_TLS = (1 << 6),
/** Use both TLS and SSL3 */ /** Use both TLS and SSL3 */
ECORE_CON_USE_MIXED = ECORE_CON_USE_SSL3 | ECORE_CON_USE_TLS, ECORE_CON_USE_MIXED = ECORE_CON_USE_SSL3 | ECORE_CON_USE_TLS,
/** Attempt to use the loaded certificate */ /** Attempt to use the loaded certificate */
ECORE_CON_LOAD_CERT = (1 << 7) ECORE_CON_LOAD_CERT = (1 << 7)
} Ecore_Con_Type; } Ecore_Con_Type;
/**
* Initialises the Ecore_Con library.
* @return Number of times the library has been initialised without being
* shut down.
*
* @note This function already calls ecore_init() internally, so you don't
need
* to call it explicitly.
*/
EAPI int ecore_con_init(void); EAPI int ecore_con_init(void);
/**
* Shuts down the Ecore_Con library.
* @return Number of times the library has been initialised without being
* shut down.
* @note This function already calls ecore_shutdown() internally, so you do
n't
* need to call it explicitly unless you called ecore_init() explicitly too
.
*/
EAPI int ecore_con_shutdown(void); EAPI int ecore_con_shutdown(void);
/**
* Do an asynchronous DNS lookup.
*
* @param name IP address or server name to translate.
* @param done_cb Callback to notify when done.
* @param data User data to be given to done_cb.
* @return EINA_TRUE if the request did not fail to be set up, EINA_FALSE i
f it
* failed.
*
* This function performs a DNS lookup on the hostname specified by @p name
,
* then calls @p done_cb with the result and the @p data given as parameter
.
* The result will be given to the @p done_cb as follows:
* @li @c canonname - the canonical name of the address
* @li @c ip - the resolved ip address
* @li @c addr - a pointer to the socket address
* @li @c addrlen - the length of the socket address, in bytes
* @li @c data - the data pointer given as parameter to ecore_con_lookup()
*/
EAPI Eina_Bool ecore_con_lookup(const char *name, EAPI Eina_Bool ecore_con_lookup(const char *name,
Ecore_Con_Dns_Cb done_cb, Ecore_Con_Dns_Cb done_cb,
const void *data); const void *data);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Ecore_Con_SSL_Group Ecore Connection SSL Functions * @defgroup Ecore_Con_SSL_Group Ecore Connection SSL Functions
* *
* @{ * @{
*/ */
EAPI int ecore_con_ssl_available_get(void); EAPI int ecore_con_ssl_available_get(void);
EAPI Eina_Bool ecore_con_ssl_server_cert_add(Ecore_Con_Server *svr, const char *cert); EAPI Eina_Bool ecore_con_ssl_server_cert_add(Ecore_Con_Server *svr, const char *cert);
EAPI Eina_Bool ecore_con_ssl_server_privkey_add(Ecore_Con_Server *s vr, const char *key_file); EAPI Eina_Bool ecore_con_ssl_server_privkey_add(Ecore_Con_Server *s vr, const char *key_file);
EAPI Eina_Bool ecore_con_ssl_server_crl_add(Ecore_Con_Server *svr, const char *crl_file); EAPI Eina_Bool ecore_con_ssl_server_crl_add(Ecore_Con_Server *svr, const char *crl_file);
EAPI Eina_Bool ecore_con_ssl_server_cafile_add(Ecore_Con_Server *sv r, const char *ca_file); EAPI Eina_Bool ecore_con_ssl_server_cafile_add(Ecore_Con_Server *sv r, const char *ca_file);
EAPI void ecore_con_ssl_server_verify(Ecore_Con_Server *svr); EAPI void ecore_con_ssl_server_verify(Ecore_Con_Server *svr);
EAPI void ecore_con_ssl_server_verify_basic(Ecore_Con_Server *
svr);
EAPI Eina_Bool ecore_con_ssl_server_upgrade(Ecore_Con_Server *svr,
Ecore_Con_Type compl_type);
EAPI Eina_Bool ecore_con_ssl_client_upgrade(Ecore_Con_Client *cl, E
core_Con_Type compl_type);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Ecore_Con_Server_Group Ecore Connection Server Functions * @defgroup Ecore_Con_Server_Group Ecore Connection Server Functions
* *
* This group of functions is applied to an @ref Ecore_Con_Server object. I
t
* doesn't mean that they should be used in the server application, but on
the
* server object. In fact, most of them should be used in the client
* application, when retrieving information or sending data.
*
* Setting up a server is very simple: you just need to start it with
* ecore_con_server_add() and setup some callbacks to the events
* #ECORE_CON_EVENT_CLIENT_ADD, #ECORE_CON_EVENT_CLIENT_DEL and
* #ECORE_CON_EVENT_CLIENT_DATA, that will be called when a client is
* communicating with the server:
*
* @code
* if (!(svr = ecore_con_server_add(ECORE_CON_REMOTE_TCP, "127.0.0.1", 8080
, NULL)))
* exit(1);
*
* ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_ADD, _add_cb, NULL);
* ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DEL, _del_cb, NULL);
* ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, _data_cb, NULL);
*
* ecore_main_loop_begin();
* @endcode
*
* The function ecore_con_server_connect() can be used to write a client th
at
* connects to a server. The resulting code will be very similar to the ser
ver
* code:
*
* @code
* if (!(svr = ecore_con_server_connect(ECORE_CON_REMOTE_TCP, "127.0.0.1",
8080, NULL)))
* exit(1);
*
* ecore_event_handler_add(ECORE_CON_EVENT_SERVER_ADD, _add_cb, NULL);
* ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DEL, _del_cb, NULL);
* ecore_event_handler_add(ECORE_CON_EVENT_SERVER_DATA, _data_cb, NULL);
*
* ecore_main_loop_begin();
* @endcode
*
* After these two pieces of code are executed, respectively, in the server
and
* client code, the server will be up and running and the client will try t
o
* connect to it. The connection, with its subsequent messages being sent f
rom
* server to client and client to server, can be represented in the followi
ng
* sequence diagram:
*
* @htmlonly
* <img src="ecore_con-client-server.png" style="max-width: 400px"/>
* <a href="ecore_con-client-server.png">Full size</a>
* @endhtmlonly
*
* @image rtf ecore_con-client-server.png
* @image latex ecore_con-client-server.eps width=\textwidth
*
* Please notice the important difference between these two codes: the firs
t is
* used for writing a @b server, while the second should be used for writin
g a
* @b client.
*
* A reference for the @c client functions can be found at @ref
* Ecore_Con_Client_Group.
*
* Examples of usage for this API can be found here:
* @li @ref ecore_con_server_simple_example_c
* @li @ref ecore_con_client_simple_example_c
*
* @{ * @{
*/ */
/**
* Creates a server to listen for connections.
*
* @param type The connection type.
* @param name Name to associate with the socket. It is used when
* generating the socket name of a Unix socket, or for
* determining what host to listen on for TCP sockets.
* @c NULL will not be accepted.
* @param port Number to identify socket. When a Unix socket is use
d,
* it becomes part of the socket name. When a TCP socke
t
* is used, it is used as the TCP port.
* @param data Data to associate with the created Ecore_Con_Server
* object.
* @return A new Ecore_Con_Server.
*
* The socket on which the server listens depends on the connection
* type:
* @li If @a type is @c ECORE_CON_LOCAL_USER, the server will listen on
* the Unix socket "~/.ecore/[name]/[port]".
* @li If @a type is @c ECORE_CON_LOCAL_SYSTEM, the server will listen
* on Unix socket "/tmp/.ecore_service|[name]|[port]".
* @li If @a type is @c ECORE_CON_REMOTE_TCP, the server will listen
* on TCP port @c port.
*
* More information about the @p type can be found at @ref _Ecore_Con_Type.
*
* The @p data parameter can be fetched later using ecore_con_server_data_g
et()
* or changed with ecore_con_server_data_set().
*/
EAPI Ecore_Con_Server *ecore_con_server_add(Ecore_Con_Type type, EAPI Ecore_Con_Server *ecore_con_server_add(Ecore_Con_Type type,
const char *name, int port, const char *name, int port,
const void *data); const void *data);
/**
* Creates a connection to the specified server and returns an associated o
bject.
*
* @param type The connection type.
* @param name Name used when determining what socket to connect to.
* It is used to generate the socket name when the socke
t
* is a Unix socket. It is used as the hostname when
* connecting with a TCP socket.
* @param port Number to identify the socket to connect to. Used wh
en
* generating the socket name for a Unix socket, or as t
he
* TCP port when connecting to a TCP socket.
* @param data Data to associate with the created Ecore_Con_Server
* object.
* @return A new Ecore_Con_Server.
*
* The socket to which the connection is made depends on the connection typ
e:
* @li If @a type is @c ECORE_CON_LOCAL_USER, the function will
* connect to the server at the Unix socket
* "~/.ecore/[name]/[port]".
* @li If @a type is @c ECORE_CON_LOCAL_SYSTEM, the function will
* connect to the server at the Unix socket
* "/tmp/.ecore_service|[name]|[port]".
* @li If @a type is @c ECORE_CON_REMOTE_TCP, the function will
* connect to the server at the TCP port "[name]:[port]".
*
* More information about the @p type can be found at @ref _Ecore_Con_Type.
*
* This function won't block. It will either succeed, or fail due to invali
d
* parameters, failed memory allocation, etc., returning @c NULL on that ca
se.
*
* However, even if this call returns a valid @ref Ecore_Con_Server, the
* connection will only be successfully completed if an event of type
* #ECORE_CON_EVENT_SERVER_ADD is received. If it fails to complete, an
* #ECORE_CON_EVENT_SERVER_DEL will be received.
*
* The @p data parameter can be fetched later using ecore_con_server_data_g
et()
* or changed with ecore_con_server_data_set().
*/
EAPI Ecore_Con_Server *ecore_con_server_connect(Ecore_Con_Type type, EAPI Ecore_Con_Server *ecore_con_server_connect(Ecore_Con_Type type,
const char *name, int port, const char *name, int port,
const void *data); const void *data);
/**
* Closes the connection and frees the given server.
*
* @param svr The given server.
* @return Data associated with the server when it was created.
*
* All the clients connected to this server will be disconnected.
*
* @see ecore_con_server_add, ecore_con_server_connect
*/
EAPI void * ecore_con_server_del(Ecore_Con_Server *svr); EAPI void * ecore_con_server_del(Ecore_Con_Server *svr);
/**
* Retrieves the data associated with the given server.
*
* @param svr The given server.
* @return The associated data.
*
* @see ecore_con_server_data_set()
*/
EAPI void * ecore_con_server_data_get(Ecore_Con_Server *svr); EAPI void * ecore_con_server_data_get(Ecore_Con_Server *svr);
/**
* Sets the data associated with the given server.
*
* @param svr The given server.
* @param data The data to associate with @p svr
* @return The previously associated data, if any.
*
* @see ecore_con_server_data_get()
*/
EAPI void * ecore_con_server_data_set(Ecore_Con_Server *svr, EAPI void * ecore_con_server_data_set(Ecore_Con_Server *svr,
void *data); void *data);
/**
* Retrieves whether the given server is currently connected.
*
* @param svr The given server.
* @return #EINA_TRUE if the server is connected. #EINA_FALSE otherwise.
*/
EAPI Eina_Bool ecore_con_server_connected_get(Ecore_Con_Server *svr ); EAPI Eina_Bool ecore_con_server_connected_get(Ecore_Con_Server *svr );
EAPI Eina_List * ecore_con_server_clients_get(Ecore_Con_Server *svr); /**
* Retrieves the current list of clients.
*
* @param svr The given server.
* @return The list of clients on this server.
*
* Each node in the returned list points to an @ref Ecore_Con_Client. This
list
* cannot be modified or freed. It can also change if new clients are conne
cted
* or disconnected, and will become invalid when the server is deleted/free
d.
*/
EAPI const Eina_List * ecore_con_server_clients_get(Ecore_Con_Server *svr);
/**
* Retrieves the name of server.
*
* @param svr The given server.
* @return The name of the server.
*
* The name returned is the name used to connect on this server.
*/
EAPI const char * ecore_con_server_name_get(Ecore_Con_Server *svr); EAPI const char * ecore_con_server_name_get(Ecore_Con_Server *svr);
/**
* Retrieves the server port in use.
*
* @param svr The given server.
* @return The server port in use.
*
* The port where the server is listening for connections.
*/
EAPI int ecore_con_server_port_get(Ecore_Con_Server *svr); EAPI int ecore_con_server_port_get(Ecore_Con_Server *svr);
/**
* @brief Check how long a server has been connected
*
* @param svr The server to check
* @return The total time, in seconds, that the server has been
* connected/running
*
* This function is used to find out the time that has been elapsed since
* ecore_con_server_add() succeeded.
*/
EAPI double ecore_con_server_uptime_get(Ecore_Con_Server *svr); EAPI double ecore_con_server_uptime_get(Ecore_Con_Server *svr);
/**
* Sends the given data to the given server.
*
* @param svr The given server.
* @param data The given data.
* @param size Length of the data, in bytes, to send.
* @return The number of bytes sent. @c 0 will be returned if there is an
* error.
*
* This function will send the given data to the server as soon as the prog
ram
* is back to the main loop. Thus, this function returns immediately
* (non-blocking). If the data needs to be sent @b now, call
* ecore_con_server_flush() after this one.
*
* @see ecore_con_client_send()
* @see ecore_con_server_flush()
*/
EAPI int ecore_con_server_send(Ecore_Con_Server *svr, EAPI int ecore_con_server_send(Ecore_Con_Server *svr,
const void *data, const void *data,
int size); int size);
/**
* Sets a limit on the number of clients that can be handled concurrently
* by the given server, and a policy on what to do if excess clients try to
* connect.
*
* @param svr The given server.
* @param client_limit The maximum number of clients to handle
* concurrently. -1 means unlimited (default). 0
* effectively disables the server.
* @param reject_excess_clients Set to 1 to automatically disconnect
* excess clients as soon as they connect if you are
* already handling client_limit clients. Set to 0
* (default) to just hold off on the "accept()"
* system call until the number of active clients
* drops. This causes the kernel to queue up to 4096
* connections (or your kernel's limit, whichever is
* lower).
*
* Beware that if you set this once ecore is already running, you may
* already have pending CLIENT_ADD events in your event queue. Those
* clients have already connected and will not be affected by this call.
* Only clients subsequently trying to connect will be affected.
*/
EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server * svr, EAPI void ecore_con_server_client_limit_set(Ecore_Con_Server * svr,
int client_limit, int client_limit,
char reject_excess _clients); char reject_excess _clients);
/**
* Gets the IP address of a server that has been connected to.
*
* @param svr The given server.
* @return A pointer to an internal string that contains the IP address of
* the connected server in the form "XXX.YYY.ZZZ.AAA" IP notation.
* This string should not be modified or trusted to stay valid aft
er
* deletion for the @p svr object. If no IP is known NULL is retur
ned.
*/
EAPI const char * ecore_con_server_ip_get(Ecore_Con_Server *svr); EAPI const char * ecore_con_server_ip_get(Ecore_Con_Server *svr);
/**
* Flushes all pending data to the given server.
*
* @param svr The given server.
*
* This function will block until all data is sent to the server.
*
* @see ecore_con_server_send()
* @see ecore_con_client_flush()
*/
EAPI void ecore_con_server_flush(Ecore_Con_Server *svr); EAPI void ecore_con_server_flush(Ecore_Con_Server *svr);
/**
* Set the default time after which an inactive client will be disconnected
*
* @param svr The server object
* @param timeout The timeout, in seconds, to disconnect after
*
* This function is used by the server to set the default idle timeout on
* clients. If the any of the clients becomes idle for a time higher than t
his
* value, it will be disconnected. A value of < 1 disables the idle timeout
.
*
* This timeout is not affected by the one set by
* ecore_con_client_timeout_set(). A client will be disconnected whenever t
he
* client or the server timeout is reached. That means, the lower timeout v
alue
* will be used for that client if ecore_con_client_timeout_set() is used o
n it.
*
* @see ecore_con_server_timeout_get()
* @see ecore_con_client_timeout_set()
*/
EAPI void ecore_con_server_timeout_set(Ecore_Con_Server *svr, double timeout); EAPI void ecore_con_server_timeout_set(Ecore_Con_Server *svr, double timeout);
/**
* Get the default time after which an inactive client will be disconnected
*
* @param svr The server object
* @return The timeout, in seconds, to disconnect after
*
* This function is used to get the idle timeout for clients. A value of <
1
* means the idle timeout is disabled.
*
* @see ecore_con_server_timeout_set()
* @see ecore_con_client_timeout_get()
*/
EAPI double ecore_con_server_timeout_get(Ecore_Con_Server *svr); EAPI double ecore_con_server_timeout_get(Ecore_Con_Server *svr);
/** /**
* Get the fd that the server is connected to
*
* @param svr The server object
* @return The fd, or -1 on failure
*
* This function returns the fd which is used by the underlying server conn
ection.
* It should not be tampered with unless you REALLY know what you are doing
.
* @note This function is only valid for servers created with ecore_con_ser
ver_connect()
* @warning Seriously. Don't use this unless you know what you are doing.
* @since 1.1
*/
EAPI int ecore_con_server_fd_get(Ecore_Con_Server *svr);
/**
* Get the fd that the client is connected to
*
* @param cl The client object
* @return The fd, or -1 on failure
*
* This function returns the fd which is used by the underlying client conn
ection.
* It should not be tampered with unless you REALLY know what you are doing
.
* @since 1.1
*/
EAPI int ecore_con_client_fd_get(Ecore_Con_Client *cl);
/**
* @} * @}
*/ */
/** /**
* @defgroup Ecore_Con_Client_Group Ecore Connection Client Functions * @defgroup Ecore_Con_Client_Group Ecore Connection Client Functions
* *
* Functions to communicate with and/or set options on a client.
*
* This set of functions, as explained in @ref Ecore_Con_Server_Group, is u
sed
* to send data to a client, or to set options and get information about th
is
* client. Most of them should be used on the server, applied on the client
* object.
*
* If you need to implement a client, the way to connect to a server is
* described in @ref Ecore_Con_Server_Group.
*
* An example of usage of these functions can be found at:
* @li @ref ecore_con_client_simple_example_c
*
* @{ * @{
*/ */
/**
* Sends the given data to the given client.
*
* @param cl The given client.
* @param data The given data.
* @param size Length of the data, in bytes, to send.
* @return The number of bytes sent. @c 0 will be returned if there is an
* error.
*
* This function will send the given data to the client as soon as the prog
ram
* is back to the main loop. Thus, this function returns immediately
* (non-blocking). If the data needs to be sent @b now, call
* ecore_con_client_flush() after this one.
*
* @see ecore_con_server_send()
* @see ecore_con_client_flush()
*/
EAPI int ecore_con_client_send(Ecore_Con_Client *cl, EAPI int ecore_con_client_send(Ecore_Con_Client *cl,
const void *data, const void *data,
int size); int size);
/**
* Retrieves the server representing the socket the client has
* connected to.
*
* @param cl The given client.
* @return The server that the client connected to.
*/
EAPI Ecore_Con_Server *ecore_con_client_server_get(Ecore_Con_Client *cl); EAPI Ecore_Con_Server *ecore_con_client_server_get(Ecore_Con_Client *cl);
/**
* Closes the connection and frees memory allocated to the given client.
*
* @param cl The given client.
* @return Data associated with the client.
*/
EAPI void * ecore_con_client_del(Ecore_Con_Client *cl); EAPI void * ecore_con_client_del(Ecore_Con_Client *cl);
/**
* Sets the data associated with the given client to @p data.
*
* @param cl The given client.
* @param data What to set the data to.
*/
EAPI void ecore_con_client_data_set(Ecore_Con_Client *cl, EAPI void ecore_con_client_data_set(Ecore_Con_Client *cl,
const void *data); const void *data);
/**
* Retrieves the data associated with the given client.
*
* @param cl The given client.
* @return The data associated with @p cl.
*/
EAPI void * ecore_con_client_data_get(Ecore_Con_Client *cl); EAPI void * ecore_con_client_data_get(Ecore_Con_Client *cl);
/**
* Gets the IP address of a client that has connected.
*
* @param cl The given client.
* @return A pointer to an internal string that contains the IP address of
* the connected client in the form "XXX.YYY.ZZZ.AAA" IP notation.
*
* The returned string should not be modified, freed or trusted to stay val
id
* after deletion for the @p cl object. If no IP is known NULL is returned.
*/
EAPI const char * ecore_con_client_ip_get(Ecore_Con_Client *cl); EAPI const char * ecore_con_client_ip_get(Ecore_Con_Client *cl);
/**
* Flushes all pending data to the given client.
*
* @param cl The given client.
*
* This function will block until all data is sent to the server.
*
* @see ecore_con_client_send()
* @see ecore_con_server_flush()
*/
EAPI void ecore_con_client_flush(Ecore_Con_Client *cl); EAPI void ecore_con_client_flush(Ecore_Con_Client *cl);
/**
* @brief Check how long a client has been connected
*
* @param cl The client to check
* @return The total time, in seconds, that the client has been connected t
o
* the server
*
* This function is used to find out how long a client has been connected f
or.
*/
EAPI double ecore_con_client_uptime_get(Ecore_Con_Client *cl); EAPI double ecore_con_client_uptime_get(Ecore_Con_Client *cl);
/**
* Get the default time after which the client will be disconnected when
* inactive
*
* @param cl The client object
* @return The timeout, in seconds, to disconnect after
*
* This function is used to get the idle timeout for a client. A value of
< 1
* means the idle timeout is disabled.
*
* @see ecore_con_client_timeout_set()
*/
EAPI double ecore_con_client_timeout_get(Ecore_Con_Client *cl); EAPI double ecore_con_client_timeout_get(Ecore_Con_Client *cl);
/**
* Set the time after which the client will be disconnected when inactive
*
* @param cl The client object
* @param timeout The timeout, in seconds, to disconnect after
*
* This function is used by the server to set the idle timeout on a specifi
c
* client. If the client becomes idle for a time higher than this value, it
will
* be disconnected. A value of < 1 disables the idle timeout.
*
* This timeout is not affected by the one set by
* ecore_con_server_timeout_set(). A client will be disconnected whenever t
he
* client or the server timeout is reached. That means, the lower timeout v
alue
* will be used for that client if ecore_con_server_timeout_set() is used o
n the
* server.
*
* @see ecore_con_client_timeout_get()
* @see ecore_con_server_timeout_set()
*/
EAPI void ecore_con_client_timeout_set(Ecore_Con_Client *cl, d ouble timeout); EAPI void ecore_con_client_timeout_set(Ecore_Con_Client *cl, d ouble timeout);
/**
* Returns whether the client is still connected
*
* @param cl The given client.
* @return #EINA_TRUE if connected, else EINA_FALSE
*/
EAPI Eina_Bool ecore_con_client_connected_get(Ecore_Con_Client *cl) ; EAPI Eina_Bool ecore_con_client_connected_get(Ecore_Con_Client *cl) ;
/**
* @brief Return the port that the client has connected to
*
* @param cl The client
* @return The port that @p cl has connected to, or -1 on error
* Use this function to return the port on which a given client has connect
ed.
*/
EAPI int ecore_con_client_port_get(Ecore_Con_Client *cl);
/** /**
* @} * @}
*/ */
/** /**
* @defgroup Ecore_Con_Url_Group Ecore URL Connection Functions * @defgroup Ecore_Con_Url_Group Ecore URL Connection Functions
* *
* Utility functions that set up, use and shut down the Ecore URL
* Connection library.
*
* These functions are a shortcut to make it easy to perform http requests
* (POST, GET, etc).
*
* Brief usage:
* 1. Create an Ecore_Con_Url object with ecore_con_url_new(url);
* 2. Register to receive the #ECORE_CON_EVENT_URL_COMPLETE event
* (and optionally the #ECORE_CON_EVENT_URL_DATA and
* #ECORE_CON_EVENT_URL_PROGRESS event to receive
* the response, e.g. for HTTP/FTP downloads)
* 3. Perform the operation with ecore_con_url_get(...);
*
* Note that it is good to reuse @ref Ecore_Con_Url objects wherever possib
le,
* but bear in mind that each one can only perform one operation at a time.
You
* need to wait for the #ECORE_CON_EVENT_URL_COMPLETE event before re-using
or
* destroying the object.
*
* If it's necessary to change the @ref Ecore_Con_Url object url, use
* ecore_con_url_url_set().
*
* Simple Usage 1 (HTTP GET):
* @code
* ecore_con_url_url_set(url_con, "http://www.google.com");
* ecore_con_url_get(url_con);
* @endcode
*
* Simple usage 2 (HTTP POST):
* @code
* ecore_con_url_url_set(url_con, "http://www.example.com/post_handler.cg
i");
* ecore_con_url_post(url_con, data, data_length, "multipart/form-data");
* @endcode
*
* Simple Usage 3 (FTP download):
* @code
* fd = creat(filename, 0644)
* ecore_con_url_url_set(url_con, "ftp://ftp.example.com/pub/myfile");
* ecore_con_url_fd_set(url_con, fd);
* ecore_con_url_get(url_con);
* @endcode
*
* Simple Usage 4 (FTP upload as ftp://ftp.example.com/file):
* @code
* ecore_con_url_url_set(url_con, "ftp://ftp.example.com");
* ecore_con_url_ftp_upload(url_con, "/tmp/file", "user", "pass", NULL);
* @endcode
*
* Simple Usage 5 (FTP upload as ftp://ftp.example.com/dir/file):
* @code
* ecore_con_url_url_set(url_con, "ftp://ftp.example.com");
* ecore_con_url_ftp_upload(url_con, "/tmp/file", "user", "pass","dir");
* @endcode
*
* These are complete examples for the API:
* @li @ref ecore_con_url_download_example.c "Downloading a file"
* @li @ref ecore_con_url_headers_example.c "Setting many options for the
* connection"
*
* @{ * @{
*/ */
/** /**
* @typedef Ecore_Con_Url_Time * @typedef Ecore_Con_Url_Time
* @enum _Ecore_Con_Url_Time * @enum _Ecore_Con_Url_Time
* The type of condition to use when making an HTTP request dependent on ti me, * The type of condition to use when making an HTTP request dependent on ti me,
* so that headers such as "If-Modified-Since" are used. * so that headers such as "If-Modified-Since" are used.
*/ */
typedef enum _Ecore_Con_Url_Time typedef enum _Ecore_Con_Url_Time
skipping to change at line 486 skipping to change at line 1280
*/ */
ECORE_CON_URL_TIME_IFMODSINCE, ECORE_CON_URL_TIME_IFMODSINCE,
/** /**
* Add the "If-Unmodified-Since" HTTP header, so that the request is * Add the "If-Unmodified-Since" HTTP header, so that the request is
* performed by the server only if the target has NOT been modified sinc e * performed by the server only if the target has NOT been modified sinc e
* the time value passed to it in the request. * the time value passed to it in the request.
*/ */
ECORE_CON_URL_TIME_IFUNMODSINCE ECORE_CON_URL_TIME_IFUNMODSINCE
} Ecore_Con_Url_Time; } Ecore_Con_Url_Time;
/**
* Initialises the Ecore_Con_Url library.
* @return Number of times the library has been initialised without being
* shut down.
*
* @note This function doesn't call ecore_con_init(). You still need to cal
l it
* explicitly before calling this one.
*/
EAPI int ecore_con_url_init(void); EAPI int ecore_con_url_init(void);
/**
* Shuts down the Ecore_Con_Url library.
* @return Number of calls that still uses Ecore_Con_Url
*
* @note This function doesn't call ecore_con_shutdown(). You still need to
call
* it explicitly after calling this one.
*/
EAPI int ecore_con_url_shutdown(void); EAPI int ecore_con_url_shutdown(void);
/**
* Enable or disable HTTP 1.1 pipelining.
* @param enable EINA_TRUE will turn it on, EINA_FALSE will disable it.
*
* Pipelining allows to send one request after another one, without having
to
* wait for the reply of the first request. The respective replies are rece
ived
* in the order that the requests were sent.
*
* Enabling this feature will be valid for all requests done using @c
* ecore_con_url.
*
* See http://en.wikipedia.org/wiki/HTTP_pipelining for more info.
*
* @see ecore_con_url_pipeline_get()
*/
EAPI void ecore_con_url_pipeline_set(Eina_Bool enable);
/**
* Is HTTP 1.1 pipelining enable ?
* @return EINA_TRUE if it is enable.
*
* @see ecore_con_url_pipeline_set()
*/
EAPI Eina_Bool ecore_con_url_pipeline_get(void);
/**
* Creates and initializes a new Ecore_Con_Url connection object.
*
* @param url URL that will receive requests. Can be changed using
* ecore_con_url_url_set.
*
* @return NULL on error, a new Ecore_Con_Url on success.
*
* Creates and initializes a new Ecore_Con_Url connection object that can b
e
* used for sending requests.
*
* @see ecore_con_url_custom_new()
* @see ecore_con_url_url_set()
*/
EAPI Ecore_Con_Url * ecore_con_url_new(const char *url); EAPI Ecore_Con_Url * ecore_con_url_new(const char *url);
/**
* Creates a custom connection object.
*
* @param url URL that will receive requests
* @param custom_request Custom request (e.g. GET, POST, HEAD, PUT, etc)
*
* @return NULL on error, a new Ecore_Con_Url on success.
*
* Creates and initializes a new Ecore_Con_Url for a custom request (e.g. H
EAD,
* SUBSCRIBE and other obscure HTTP requests). This object should be used l
ike
* one created with ecore_con_url_new().
*
* @see ecore_con_url_new()
* @see ecore_con_url_url_set()
*/
EAPI Ecore_Con_Url * ecore_con_url_custom_new(const char *url, EAPI Ecore_Con_Url * ecore_con_url_custom_new(const char *url,
const char *custom_request) ; const char *custom_request) ;
/**
* Destroys a Ecore_Con_Url connection object.
*
* @param url_con Connection object to free.
*
* @see ecore_con_url_new()
*/
EAPI void ecore_con_url_free(Ecore_Con_Url *url_con); EAPI void ecore_con_url_free(Ecore_Con_Url *url_con);
/**
* Sets the URL to send the request to.
*
* @param url_con Connection object through which the request will be sent.
* @param url URL that will receive the request
*
* @return EINA_TRUE on success, EINA_FALSE on error.
*
*/
EAPI Eina_Bool ecore_con_url_url_set(Ecore_Con_Url *url_con, EAPI Eina_Bool ecore_con_url_url_set(Ecore_Con_Url *url_con,
const char *url); const char *url);
/**
* Gets the URL to send the request to.
*
* @param url_con Connection object through which the request will be sent.
* @return URL that will receive the request, NULL on failure. URL is strin
gshared.
* @since 1.1
*/
EAPI const char *ecore_con_url_url_get(Ecore_Con_Url *url_con);
/**
* Associates data with a connection object.
*
* @param url_con Connection object to associate data.
* @param data Data to be set.
*
* Associates data with a connection object, which can be retrieved later w
ith
* ecore_con_url_data_get()).
*
* @see ecore_con_url_data_get()
*/
EAPI void ecore_con_url_data_set(Ecore_Con_Url *url_con, EAPI void ecore_con_url_data_set(Ecore_Con_Url *url_con,
void *data); void *data);
/**
* Retrieves data associated with a Ecore_Con_Url connection object.
*
* @param url_con Connection object to retrieve data from.
*
* @return Data associated with the given object.
*
* Retrieves data associated with a Ecore_Con_Url connection object (previo
usly
* set with ecore_con_url_data_set()).
*
* @see ecore_con_url_data_set()
*/
EAPI void * ecore_con_url_data_get(Ecore_Con_Url *url_con); EAPI void * ecore_con_url_data_get(Ecore_Con_Url *url_con);
/**
* Adds an additional header to the request connection object.
*
* @param url_con Connection object
* @param key Header key
* @param value Header value
*
* Adds an additional header (User-Agent, Content-Type, etc.) to the reques
t
* connection object. This addition will be valid for only one
* ecore_con_url_get() or ecore_con_url_post() call.
*
* Some functions like ecore_con_url_time() also add headers to the request
.
*
* @see ecore_con_url_get()
* @see ecore_con_url_post()
* @see ecore_con_url_additional_headers_clear()
*/
EAPI void ecore_con_url_additional_header_add(Ecore_Con_Url *u rl_con, EAPI void ecore_con_url_additional_header_add(Ecore_Con_Url *u rl_con,
const char *key, const char *key,
const char *valu e); const char *valu e);
/**
* Cleans additional headers.
*
* @param url_con Connection object to clean additional headers.
*
* Cleans additional headers associated with a connection object (previousl
y
* added with ecore_con_url_additional_header_add()).
*
* @see ecore_con_url_additional_header_add()
* @see ecore_con_url_get()
* @see ecore_con_url_post()
*/
EAPI void ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_con); EAPI void ecore_con_url_additional_headers_clear(Ecore_Con_Url *url_con);
/**
* Retrieves headers from last request sent.
*
* @param url_con Connection object to retrieve response headers from.
*
* Retrieves a list containing the response headers. This function should b
e
* used after an ECORE_CON_EVENT_URL_COMPLETE event (headers should normall
y be
* ready at that time).
*
* @return List of response headers. This list must not be modified by the
user.
*/
EAPI const Eina_List * ecore_con_url_response_headers_get(Ecore_Con_Url *ur l_con); EAPI const Eina_List * ecore_con_url_response_headers_get(Ecore_Con_Url *ur l_con);
/**
* Setup a file for receiving response data.
*
* @param url_con Connection object to set file
* @param fd File descriptor associated with the file. A negative value wil
l
* unset any previously set fd.
*
* Sets up a file to have response data written into. Note that
* ECORE_CON_EVENT_URL_DATA events will not be emitted if a file has been s
et to
* receive the response data.
*
* This call can be used to easily setup a file where the downloaded data w
ill
* be saved.
*/
EAPI void ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd) ; EAPI void ecore_con_url_fd_set(Ecore_Con_Url *url_con, int fd) ;
/**
* Retrieves the number of bytes received.
*
* Retrieves the number of bytes received on the last request of the given
* connection object.
*
* @param url_con Connection object which the request was sent on.
*
* @return Number of bytes received on request.
*
* @see ecore_con_url_get()
* @see ecore_con_url_post()
*/
EAPI int ecore_con_url_received_bytes_get(Ecore_Con_Url *url_ con); EAPI int ecore_con_url_received_bytes_get(Ecore_Con_Url *url_ con);
/**
* Sets url_con to use http auth, with given username and password, "safely
" or not.
*
* @param url_con Connection object to perform a request on, previously cre
ated
* with ecore_con_url_new() or ecore_con_url_custom_new().
* @param username Username to use in authentication
* @param password Password to use in authentication
* @param safe Whether to use "safer" methods (eg, NOT http basic auth)
*
* @return #EINA_TRUE on success, #EINA_FALSE on error.
*
* ATTENTION: requires libcurl >= 7.19.1 to work, otherwise will always ret
urn 0.
*/
EAPI Eina_Bool ecore_con_url_httpauth_set(Ecore_Con_Url *url_con, EAPI Eina_Bool ecore_con_url_httpauth_set(Ecore_Con_Url *url_con,
const char *username, const char *username,
const char *password, const char *password,
Eina_Bool safe); Eina_Bool safe);
/**
* Sends a request.
*
* @param url_con Connection object to perform a request on, previously cre
ated
* with ecore_con_url_new() or ecore_con_url_custom_new().
* @param data Payload (data sent on the request)
* @param length Payload length. If @c -1, rely on automatic length
* calculation via @c strlen() on @p data.
* @param content_type Content type of the payload (e.g. text/xml)
*
* @return #EINA_TRUE on success, #EINA_FALSE on error.
*
* @see ecore_con_url_custom_new()
* @see ecore_con_url_additional_headers_clear()
* @see ecore_con_url_additional_header_add()
* @see ecore_con_url_data_set()
* @see ecore_con_url_data_get()
* @see ecore_con_url_response_headers_get()
* @see ecore_con_url_time()
* @see ecore_con_url_get()
* @see ecore_con_url_post()
*
* @deprecated Use ecore_con_url_post() instead of this.
*/
EINA_DEPRECATED EAPI Eina_Bool ecore_con_url_send(Ecore_Con_Url *ur l_con, EINA_DEPRECATED EAPI Eina_Bool ecore_con_url_send(Ecore_Con_Url *ur l_con,
const void *data, long length, const void *data, long length,
const char *conte nt_type); const char *conte nt_type);
/**
* Sends a get request.
*
* @param url_con Connection object to perform a request on, previously cre
ated
*
* @return #EINA_TRUE on success, #EINA_FALSE on error.
*
* The request is performed immediately, but you need to setup event handle
rs
* for #ECORE_CON_EVENT_URL_DATA, #ECORE_CON_EVENT_URL_COMPLETE or
* #ECORE_CON_EVENT_URL_PROGRESS to get more information about its result.
*
* @see ecore_con_url_custom_new()
* @see ecore_con_url_additional_headers_clear()
* @see ecore_con_url_additional_header_add()
* @see ecore_con_url_data_set()
* @see ecore_con_url_data_get()
* @see ecore_con_url_response_headers_get()
* @see ecore_con_url_time()
* @see ecore_con_url_post()
*/
EAPI Eina_Bool ecore_con_url_get(Ecore_Con_Url *url_con); EAPI Eina_Bool ecore_con_url_get(Ecore_Con_Url *url_con);
/**
* Sends a post request.
*
* @param url_con Connection object to perform a request on, previously cre
ated
* with ecore_con_url_new() or ecore_con_url_custom_new().
* @param data Payload (data sent on the request). Can be @c NULL.
* @param length Payload length. If @c -1, rely on automatic length
* calculation via @c strlen() on @p data.
* @param content_type Content type of the payload (e.g. text/xml). Can be
@c
* NULL.
*
* @return #EINA_TRUE on success, #EINA_FALSE on error.
*
* The request starts immediately, but you need to setup event handlers
* for #ECORE_CON_EVENT_URL_DATA, #ECORE_CON_EVENT_URL_COMPLETE or
* #ECORE_CON_EVENT_URL_PROGRESS to get more information about its result.
*
* This call won't block your main loop.
*
* @see ecore_con_url_custom_new()
* @see ecore_con_url_additional_headers_clear()
* @see ecore_con_url_additional_header_add()
* @see ecore_con_url_data_set()
* @see ecore_con_url_data_get()
* @see ecore_con_url_response_headers_get()
* @see ecore_con_url_time()
* @see ecore_con_url_get()
*/
EAPI Eina_Bool ecore_con_url_post(Ecore_Con_Url *url_con, EAPI Eina_Bool ecore_con_url_post(Ecore_Con_Url *url_con,
const void *data, long length, const void *data, long length,
const char *content_type); const char *content_type);
/**
* Sets whether HTTP requests should be conditional, dependent on
* modification time.
*
* @param url_con Ecore_Con_Url to act upon.
* @param condition Condition to use for HTTP requests.
* @param timestamp Time since 1 Jan 1970 to use in the condition.
*
* This function may set the header "If-Modified-Since" or
* "If-Unmodified-Since", depending on the value of @p time_condition, with
the
* value @p timestamp.
*
* @sa ecore_con_url_get()
* @sa ecore_con_url_post()
*/
EAPI void ecore_con_url_time(Ecore_Con_Url *url_con, EAPI void ecore_con_url_time(Ecore_Con_Url *url_con,
Ecore_Con_Url_Time time_condition , Ecore_Con_Url_Time time_condition ,
double timestamp); double timestamp);
/**
* @brief Uploads a file to an ftp site.
* @param url_con The Ecore_Con_Url object to send with
* @param filename The path to the file to send
* @param user The username to log in with
* @param pass The password to log in with
* @param upload_dir The directory to which the file should be uploaded
* @return #EINA_TRUE on success, else #EINA_FALSE.
* Upload @p filename to an ftp server set in @p url_con using @p user
* and @p pass to directory @p upload_dir
*/
EAPI Eina_Bool ecore_con_url_ftp_upload(Ecore_Con_Url *url_con, EAPI Eina_Bool ecore_con_url_ftp_upload(Ecore_Con_Url *url_con,
const char *filename, const char *filename,
const char *user, const char *user,
const char *pass, const char *pass,
const char *upload_dir); const char *upload_dir);
/**
* Toggle libcurl's verbose output.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
* @param verbose Whether or not to enable libcurl's verbose output.
*
* If @p verbose is @c EINA_TRUE, libcurl will output a lot of verbose
* information about its operations, which is useful for
* debugging. The verbose information will be sent to stderr.
*/
EAPI void ecore_con_url_verbose_set(Ecore_Con_Url *url_con, EAPI void ecore_con_url_verbose_set(Ecore_Con_Url *url_con,
Eina_Bool verbose); Eina_Bool verbose);
/**
* Enable or disable EPSV extension
* @return FIXME: To be more documented.
*/
EAPI void ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_co n, EAPI void ecore_con_url_ftp_use_epsv_set(Ecore_Con_Url *url_co n,
Eina_Bool use_epsv); Eina_Bool use_epsv);
/**
* Enables the cookie engine for subsequent HTTP requests.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
*
* After this function is called, cookies set by the server in HTTP respons
es
* will be parsed and stored, as well as sent back to the server in new HTT
P
* requests.
*
* @note Even though this function is called @c ecore_con_url_cookies_init(
),
* there is no symmetrical shutdown operation.
*/
EAPI void ecore_con_url_cookies_init(Ecore_Con_Url *url_con); EAPI void ecore_con_url_cookies_init(Ecore_Con_Url *url_con);
/**
* Controls whether session cookies from previous sessions shall be loaded.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
* @param ignore If @c EINA_TRUE, ignore session cookies when loading cook
ies
* from files. If @c EINA_FALSE, all cookies will be loaded.
*
* Session cookies are cookies with no expire date set, which usually means
* they are removed after the current session is closed.
*
* By default, when Ecore_Con_Url loads cookies from a file, all cookies ar
e
* loaded, including session cookies, which, most of the time, were suppose
d
* to be loaded and valid only for that session.
*
* If @p ignore is set to @c EINA_TRUE, when Ecore_Con_Url loads cookies fr
om
* the files passed to @c ecore_con_url_cookies_file_add(), session cookies
* will not be loaded.
*
* @see ecore_con_url_cookies_file_add()
*/
EAPI void ecore_con_url_cookies_ignore_old_session_set(Ecore_C on_Url *url_con, EAPI void ecore_con_url_cookies_ignore_old_session_set(Ecore_C on_Url *url_con,
Eina_Bo ol ignore); Eina_Bo ol ignore);
/**
* Clears currently loaded cookies.
* @param url_con Ecore_Con_Url instance which will be acted upon.
*
* The cleared cookies are removed and will not be sent in subsequent HTTP
* requests, nor will they be written to the cookiejar file set via
* @c ecore_con_url_cookies_jar_file_set().
*
* @note This function will initialize the cookie engine if it has not been
* initialized yet.
* @note The cookie files set by ecore_con_url_cookies_file_add() aren't lo
aded
* immediately, just when the request is started. Thus, if you ask to
* clear the cookies, but has a file already set by that function, th
e
* cookies will then be loaded and you will have old cookies set. In
order
* to don't have any old cookie set, you need to don't call
* ecore_con_url_cookies_file_add() ever on the @p url_con handler, a
nd
* call this function to clear any cookie set by a previous request o
n
* this handler.
*
* @see ecore_con_url_cookies_session_clear()
* @see ecore_con_url_cookies_ignore_old_session_set()
*/
EAPI void ecore_con_url_cookies_clear(Ecore_Con_Url *url_con); EAPI void ecore_con_url_cookies_clear(Ecore_Con_Url *url_con);
/**
* Clears currently loaded session cookies.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
*
* Session cookies are cookies with no expire date set, which usually means
* they are removed after the current session is closed.
*
* The cleared cookies are removed and will not be sent in subsequent HTTP
* requests, nor will they be written to the cookiejar file set via
* @c ecore_con_url_cookies_jar_file_set().
*
* @note This function will initialize the cookie engine if it has not been
* initialized yet.
* @note The cookie files set by ecore_con_url_cookies_file_add() aren't lo
aded
* immediately, just when the request is started. Thus, if you ask to
* clear the session cookies, but has a file already set by that func
tion,
* the session cookies will then be loaded and you will have old cook
ies
* set. In order to don't have any old session cookie set, you need
to
* don't call ecore_con_url_cookies_file_add() ever on the @p url_con
* handler, and call this function to clear any session cookie set by
a
* previous request on this handler. An easier way to don't use old
* session cookies is by using the function
* ecore_con_url_cookies_ignore_old_session_set().
*
* @see ecore_con_url_cookies_clear()
* @see ecore_con_url_cookies_ignore_old_session_set()
*/
EAPI void ecore_con_url_cookies_session_clear(Ecore_Con_Url *u rl_con); EAPI void ecore_con_url_cookies_session_clear(Ecore_Con_Url *u rl_con);
/**
* Adds a file to the list of files from which to load cookies.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
* @param file_name Name of the file that will be added to the list.
*
* Files must contain cookies defined according to two possible formats:
*
* @li HTTP-style header ("Set-Cookie: ...").
* @li <a href="http://www.cookiecentral.com/faq/#3.5">Netscape/Mozilla coo
kie data format.</a>
*
* Cookies will only be @b read from this file. If you want to save cookies
to a
* file, use ecore_con_url_cookies_jar_file_set(). Also notice that this
* function supports the both types of cookie file cited above, while
* ecore_con_url_cookies_jar_file_set() will save only in the Netscape/Mozi
lla's
* format.
*
* Please notice that the file will not be read immediately, but rather add
ed
* to a list of files that will be loaded and parsed at a later time.
*
* @note This function will initialize the cookie engine if it has not been
* initialized yet.
*
* @see ecore_con_url_cookies_ignore_old_session_set()
* @see ecore_con_url_cookies_jar_file_set()
*/
EAPI void ecore_con_url_cookies_file_add(Ecore_Con_Url *url_co n, EAPI void ecore_con_url_cookies_file_add(Ecore_Con_Url *url_co n,
const char * const fi le_name); const char * const fi le_name);
/**
* Sets the name of the file to which all current cookies will be written w
hen
* either cookies are flushed or Ecore_Con is shut down.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
* @param cookiejar_file File to which the cookies will be written.
*
* @return @c EINA_TRUE is the file name has been set successfully,
* @c EINA_FALSE otherwise.
*
* Cookies are written following Netscape/Mozilla's data format, also known
as
* cookie-jar.
*
* Cookies will only be @b saved to this file. If you need to read cookies
from
* a file, use ecore_con_url_cookies_file_add() instead.
*
* @note This function will initialize the cookie engine if it has not been
* initialized yet.
*
* @see ecore_con_url_cookies_jar_write()
*/
EAPI Eina_Bool ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *ur l_con, EAPI Eina_Bool ecore_con_url_cookies_jar_file_set(Ecore_Con_Url *ur l_con,
const char * cons t cookiejar_file); const char * cons t cookiejar_file);
/**
* Writes all current cookies to the cookie jar immediately.
*
* @param url_con Ecore_Con_Url instance which will be acted upon.
*
* A cookie-jar file must have been previously set by
* @c ecore_con_url_jar_file_set, otherwise nothing will be done.
*
* @note This function will initialize the cookie engine if it has not been
* initialized yet.
*
* @see ecore_con_url_cookies_jar_file_set()
*/
EAPI void ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_c on); EAPI void ecore_con_url_cookies_jar_write(Ecore_Con_Url *url_c on);
EAPI void ecore_con_url_ssl_verify_peer_set(Ecore_Con_Url *url
_con,
Eina_Bool verify);
EAPI int ecore_con_url_ssl_ca_set(Ecore_Con_Url *url_con,
const char *ca_path);
/** /**
* @} * @}
*/ */
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif #endif
 End of changes. 91 change blocks. 
17 lines changed or deleted 1402 lines changed or added


 Ecore_Fb.h   Ecore_Fb.h 
skipping to change at line 68 skipping to change at line 68
ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE = 0x00000002, ECORE_FB_INPUT_DEVICE_CAP_ABSOLUTE = 0x00000002,
ECORE_FB_INPUT_DEVICE_CAP_KEYS_OR_BUTTONS = 0x00000004 ECORE_FB_INPUT_DEVICE_CAP_KEYS_OR_BUTTONS = 0x00000004
}; };
/** /**
* @typedef Ecore_Fb_Input_Device_Cap * @typedef Ecore_Fb_Input_Device_Cap
* Device capabilities. * Device capabilities.
*/ */
typedef enum _Ecore_Fb_Input_Device_Cap Ecore_Fb_Input_Device_Cap; typedef enum _Ecore_Fb_Input_Device_Cap Ecore_Fb_Input_Device_Cap;
EAPI extern int ECORE_FB_EVENT_KEY_DOWN; /**< FB Key Down event */
EAPI extern int ECORE_FB_EVENT_KEY_UP; /**< FB Key Up event */
EAPI extern int ECORE_FB_EVENT_MOUSE_BUTTON_DOWN; /**< FB Mouse Down event
*/
EAPI extern int ECORE_FB_EVENT_MOUSE_BUTTON_UP; /**< FB Mouse Up event */
EAPI extern int ECORE_FB_EVENT_MOUSE_MOVE; /**< FB Mouse Move event */
EAPI extern int ECORE_FB_EVENT_MOUSE_WHEEL; /**< FB Mouse Wheel event */
typedef struct _Ecore_Fb_Event_Key_Down Ecore_Fb_Event_Key_Down; /
**< FB Key Down event */
typedef struct _Ecore_Fb_Event_Key_Up Ecore_Fb_Event_Key_Up; /**
< FB Key Up event */
typedef struct _Ecore_Fb_Event_Mouse_Button_Down Ecore_Fb_Event_Mouse_Butto
n_Down; /**< FB Mouse Down event */
typedef struct _Ecore_Fb_Event_Mouse_Button_Up Ecore_Fb_Event_Mouse_Butto
n_Up; /**< FB Mouse Up event */
typedef struct _Ecore_Fb_Event_Mouse_Move Ecore_Fb_Event_Mouse_Move;
/**< FB Mouse Move event */
typedef struct _Ecore_Fb_Event_Mouse_Wheel Ecore_Fb_Event_Mouse_Wheel
; /**< FB Mouse Wheel event */
/**
* @struct _Ecore_Fb_Event_Key_Down
* Framebuffer Key Down event.
*/
struct _Ecore_Fb_Event_Key_Down
{
Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
char *keyname; /**< The name of the key that was pressed */
char *keysymbol; /**< The logical symbol of the key that was pressed *
/
char *key_compose; /**< The UTF-8 string conversion if any */
};
/**
* @struct _Ecore_Fb_Event_Key_Up
* Framebuffer Key Up event.
*/
struct _Ecore_Fb_Event_Key_Up
{
Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
char *keyname; /**< The name of the key that was released */
char *keysymbol; /**< The logical symbol of the key that was pressed *
/
char *key_compose; /**< The UTF-8 string conversion if any */
};
/**
* @struct _Ecore_Fb_Event_Mouse_Button_Down
* Framebuffer Mouse Down event.
*/
struct _Ecore_Fb_Event_Mouse_Button_Down
{
Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
int button; /**< Mouse button that was pressed (1 - 32) */
int x; /**< Mouse co-ordinates when mouse button was pressed */
int y; /**< Mouse co-ordinates when mouse button was pressed */
int double_click : 1; /**< Set if click was a double click */
int triple_click : 1; /**< Set if click was a triple click */
};
/**
* @struct _Ecore_Fb_Event_Mouse_Button_Up
* Framebuffer Mouse Up event.
*/
struct _Ecore_Fb_Event_Mouse_Button_Up
{
Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
int button; /**< Mouse button that was released (1 - 32) */
int x; /**< Mouse co-ordinates when mouse button was raised */
int y; /**< Mouse co-ordinates when mouse button was raised */
int double_click : 1; /**< Set if click was a double click */
int triple_click : 1; /**< Set if click was a triple click */
};
/**
* @struct _Ecore_Fb_Event_Mouse_Move
* Framebuffer Mouse Move event.
*/
struct _Ecore_Fb_Event_Mouse_Move
{
Ecore_Fb_Input_Device *dev; /**< The device associated with the event */
int x; /**< Mouse co-ordinates where the mouse cursor moved to */
int y; /**< Mouse co-ordinates where the mouse cursor moved to */
};
/**
* @struct _Ecore_Fb_Event_Mouse_Wheel
* Framebuffer Mouse Wheel event.
*/
struct _Ecore_Fb_Event_Mouse_Wheel
{
Ecore_Fb_Input_Device *dev;
int x,y;
int direction; /* 0 = vertical, 1 = horizontal */
int wheel; /* value 1 (left/up), -1 (right/down) */
};
/* ecore_fb_vt.c */ /* ecore_fb_vt.c */
EAPI void ecore_fb_callback_gain_set(void (*func) (voi d *data), void *data); EAPI void ecore_fb_callback_gain_set(void (*func) (voi d *data), void *data);
EAPI void ecore_fb_callback_lose_set(void (*func) (voi d *data), void *data); EAPI void ecore_fb_callback_lose_set(void (*func) (voi d *data), void *data);
/* ecore_fb_li.c */ /* ecore_fb_li.c */
EAPI Ecore_Fb_Input_Device *ecore_fb_input_device_open(const char *dev); EAPI Ecore_Fb_Input_Device *ecore_fb_input_device_open(const char *dev);
EAPI void ecore_fb_input_device_close(Ecore_Fb_Input_D evice *dev); EAPI void ecore_fb_input_device_close(Ecore_Fb_Input_D evice *dev);
EAPI void ecore_fb_input_device_listen(Ecore_Fb_Input_ Device *dev, Eina_Bool listen); EAPI void ecore_fb_input_device_listen(Ecore_Fb_Input_ Device *dev, Eina_Bool listen);
EAPI const char *ecore_fb_input_device_name_get(Ecore_Fb_Inpu t_Device *dev); EAPI const char *ecore_fb_input_device_name_get(Ecore_Fb_Inpu t_Device *dev);
EAPI Ecore_Fb_Input_Device_Cap ecore_fb_input_device_cap_get(Ecore_Fb_Input _Device *dev); EAPI Ecore_Fb_Input_Device_Cap ecore_fb_input_device_cap_get(Ecore_Fb_Input _Device *dev);
EAPI void ecore_fb_input_device_axis_size_set(Ecore_Fb _Input_Device *dev, int w, int h); EAPI void ecore_fb_input_device_axis_size_set(Ecore_Fb _Input_Device *dev, int w, int h);
EAPI void ecore_fb_input_threshold_click_set(Ecore_Fb_ Input_Device *dev, double threshold); EAPI void ecore_fb_input_threshold_click_set(Ecore_Fb_ Input_Device *dev, double threshold);
EAPI double ecore_fb_input_threshold_click_get(Ecore_Fb_ Input_Device *dev); EAPI double ecore_fb_input_threshold_click_get(Ecore_Fb_ Input_Device *dev);
EAPI void ecore_fb_input_device_window_set(Ecore_Fb_In put_Device *dev, void *window);
/* ecore_fb.c */ /* ecore_fb.c */
EAPI int ecore_fb_init(const char *name); EAPI int ecore_fb_init(const char *name);
EAPI int ecore_fb_shutdown(void); EAPI int ecore_fb_shutdown(void);
EAPI void ecore_fb_size_get(int *w, int *h); EAPI void ecore_fb_size_get(int *w, int *h);
EAPI void ecore_fb_touch_screen_calibrate_set(int xsca le, int xtrans, int yscale, int ytrans, int xyswap); EAPI void ecore_fb_touch_screen_calibrate_set(int xsca le, int xtrans, int yscale, int ytrans, int xyswap);
EAPI void ecore_fb_touch_screen_calibrate_get(int *xsc ale, int *xtrans, int *yscale, int *ytrans, int *xyswap); EAPI void ecore_fb_touch_screen_calibrate_get(int *xsc ale, int *xtrans, int *yscale, int *ytrans, int *xyswap);
 End of changes. 2 change blocks. 
98 lines changed or deleted 1 lines changed or added


 Ecore_File.h   Ecore_File.h 
skipping to change at line 170 skipping to change at line 170
EAPI Eina_List *ecore_file_app_list(void); EAPI Eina_List *ecore_file_app_list(void);
/* Download */ /* Download */
EAPI Eina_Bool ecore_file_download(const char *url, EAPI Eina_Bool ecore_file_download(const char *url,
const char *dst, const char *dst,
Ecore_File_Download_Completion_Cb comple tion_cb, Ecore_File_Download_Completion_Cb comple tion_cb,
Ecore_File_Download_Progress_Cb progress _cb, Ecore_File_Download_Progress_Cb progress _cb,
void *data, void *data,
Ecore_File_Download_Job **job_ret); Ecore_File_Download_Job **job_ret);
EAPI Eina_Bool ecore_file_download_full(const char *url,
const char *dst,
Ecore_File_Download_Completion_Cb c
ompletion_cb,
Ecore_File_Download_Progress_Cb pro
gress_cb,
void *data,
Ecore_File_Download_Job **job_ret,
Eina_Hash *headers);
EAPI void ecore_file_download_abort_all(void); EAPI void ecore_file_download_abort_all(void);
EAPI void ecore_file_download_abort(Ecore_File_Download_Job *job); EAPI void ecore_file_download_abort(Ecore_File_Download_Job *job);
EAPI Eina_Bool ecore_file_download_protocol_available(const char *protocol) ; EAPI Eina_Bool ecore_file_download_protocol_available(const char *protocol) ;
/** /**
* @} * @}
*/ */
#ifdef __cplusplus #ifdef __cplusplus
} }
 End of changes. 1 change blocks. 
0 lines changed or deleted 10 lines changed or added


 Ecore_Getopt.h   Ecore_Getopt.h 
skipping to change at line 55 skipping to change at line 55
* *
* Values will be stored elsewhere indicated by an array of pointers * Values will be stored elsewhere indicated by an array of pointers
* to values, it is given in separate to parser description so you can * to values, it is given in separate to parser description so you can
* use multiple values with the same parser. * use multiple values with the same parser.
*/ */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
typedef enum { typedef enum {
ECORE_GETOPT_ACTION_STORE, ECORE_GETOPT_ACTION_STORE,
ECORE_GETOPT_ACTION_STORE_CONST, ECORE_GETOPT_ACTION_STORE_CONST,
ECORE_GETOPT_ACTION_STORE_TRUE, ECORE_GETOPT_ACTION_STORE_TRUE,
ECORE_GETOPT_ACTION_STORE_FALSE, ECORE_GETOPT_ACTION_STORE_FALSE,
ECORE_GETOPT_ACTION_CHOICE, ECORE_GETOPT_ACTION_CHOICE,
ECORE_GETOPT_ACTION_APPEND, ECORE_GETOPT_ACTION_APPEND,
ECORE_GETOPT_ACTION_COUNT, ECORE_GETOPT_ACTION_COUNT,
ECORE_GETOPT_ACTION_CALLBACK, ECORE_GETOPT_ACTION_CALLBACK,
ECORE_GETOPT_ACTION_HELP, ECORE_GETOPT_ACTION_HELP,
ECORE_GETOPT_ACTION_VERSION, ECORE_GETOPT_ACTION_VERSION,
ECORE_GETOPT_ACTION_COPYRIGHT, ECORE_GETOPT_ACTION_COPYRIGHT,
ECORE_GETOPT_ACTION_LICENSE ECORE_GETOPT_ACTION_LICENSE
} Ecore_Getopt_Action; } Ecore_Getopt_Action;
typedef enum { typedef enum {
ECORE_GETOPT_TYPE_STR, ECORE_GETOPT_TYPE_STR,
ECORE_GETOPT_TYPE_BOOL, ECORE_GETOPT_TYPE_BOOL,
ECORE_GETOPT_TYPE_SHORT, ECORE_GETOPT_TYPE_SHORT,
ECORE_GETOPT_TYPE_INT, ECORE_GETOPT_TYPE_INT,
ECORE_GETOPT_TYPE_LONG, ECORE_GETOPT_TYPE_LONG,
ECORE_GETOPT_TYPE_USHORT, ECORE_GETOPT_TYPE_USHORT,
ECORE_GETOPT_TYPE_UINT, ECORE_GETOPT_TYPE_UINT,
ECORE_GETOPT_TYPE_ULONG, ECORE_GETOPT_TYPE_ULONG,
ECORE_GETOPT_TYPE_DOUBLE ECORE_GETOPT_TYPE_DOUBLE
} Ecore_Getopt_Type; } Ecore_Getopt_Type;
typedef enum { typedef enum {
ECORE_GETOPT_DESC_ARG_REQUIREMENT_NO = 0, ECORE_GETOPT_DESC_ARG_REQUIREMENT_NO = 0,
ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES = 1, ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES = 1,
ECORE_GETOPT_DESC_ARG_REQUIREMENT_OPTIONAL = 3 ECORE_GETOPT_DESC_ARG_REQUIREMENT_OPTIONAL = 3
} Ecore_Getopt_Desc_Arg_Requirement; } Ecore_Getopt_Desc_Arg_Requirement;
typedef union _Ecore_Getopt_Value Ecore_Getopt_Value; typedef union _Ecore_Getopt_Value Ecore_Getopt_Value;
typedef struct _Ecore_Getopt_Desc_Store Ecore_Getopt_Desc_Store; typedef struct _Ecore_Getopt_Desc_Store Ecore_Getopt_Desc_Store;
typedef struct _Ecore_Getopt_Desc_Callback Ecore_Getopt_Desc_Callback; typedef struct _Ecore_Getopt_Desc_Callback Ecore_Getopt_Desc_Callback;
typedef struct _Ecore_Getopt_Desc Ecore_Getopt_Desc; typedef struct _Ecore_Getopt_Desc Ecore_Getopt_Desc;
typedef struct _Ecore_Getopt Ecore_Getopt; typedef struct _Ecore_Getopt Ecore_Getopt;
union _Ecore_Getopt_Value union _Ecore_Getopt_Value
{ {
char **strp; char **strp;
unsigned char *boolp; unsigned char *boolp;
short *shortp; short *shortp;
int *intp; int *intp;
long *longp; long *longp;
unsigned short *ushortp; unsigned short *ushortp;
unsigned int *uintp; unsigned int *uintp;
unsigned long *ulongp; unsigned long *ulongp;
double *doublep; double *doublep;
Eina_List **listp; Eina_List **listp;
void **ptrp; void **ptrp;
}; };
struct _Ecore_Getopt_Desc_Store struct _Ecore_Getopt_Desc_Store
{ {
Ecore_Getopt_Type type; /**< type of data being handled */ Ecore_Getopt_Type type; /**< type of data being handled
Ecore_Getopt_Desc_Arg_Requirement arg_req; */
union Ecore_Getopt_Desc_Arg_Requirement arg_req;
{ union
const char *strv; {
Eina_Bool boolv; const char *strv;
short shortv; Eina_Bool boolv;
int intv; short shortv;
long longv; int intv;
unsigned short ushortv; long longv;
unsigned int uintv; unsigned short ushortv;
unsigned long ulongv; unsigned int uintv;
double doublev; unsigned long ulongv;
} def; double doublev;
}; } def;
};
struct _Ecore_Getopt_Desc_Callback
{ struct _Ecore_Getopt_Desc_Callback
Eina_Bool (*func)(const Ecore_Getopt *parser, const Ecore_Getopt_Desc {
*desc, const char *str, void *data, Ecore_Getopt_Value *storage); Eina_Bool (*func)(const Ecore_Getopt *parser,
const void *data; const Ecore_Getopt_Desc *desc,
Ecore_Getopt_Desc_Arg_Requirement arg_req; const char *str,
const char *def; void *data,
}; Ecore_Getopt_Value *storage);
const void *data;
struct _Ecore_Getopt_Desc Ecore_Getopt_Desc_Arg_Requirement arg_req;
{ const char *def;
char shortname; /**< used with a single dash */ };
const char *longname; /**< used with double dashes */
const char *help; /**< used by --help/ecore_getopt_help() */ struct _Ecore_Getopt_Desc
const char *metavar; /**< used by ecore_getopt_help() with nargs > 0 {
*/ char shortname; /**< used with a single dash */
const char *longname; /**< used with double dashes */
Ecore_Getopt_Action action; /**< define how to handle it */ const char *help; /**< used by --help/ecore_getopt_help() */
union const char *metavar; /**< used by ecore_getopt_help() with nargs
{ > 0 */
const Ecore_Getopt_Desc_Store store;
const void *store_const; Ecore_Getopt_Action action; /**< define how to handle it */
const char *const *choices; /* NULL terminated. */ union
const Ecore_Getopt_Type append_type; {
const Ecore_Getopt_Desc_Callback callback; const Ecore_Getopt_Desc_Store store;
const void *dummy; const void *store_const;
} action_param; const char *const *choices; /* NULL terminated. */
}; const Ecore_Getopt_Type append_type;
const Ecore_Getopt_Desc_Callback callback;
struct _Ecore_Getopt const void *dummy;
{ } action_param;
const char *prog; /**< to be used when ecore_app_args_get() fails */ };
const char *usage; /**< usage example, %prog is replaced */
const char *version; /**< if exists, --version will work */ struct _Ecore_Getopt
const char *copyright; /**< if exists, --copyright will work */ {
const char *license; /**< if exists, --license will work */ const char *prog; /**< to be used when ecore_app_args_get()
const char *description; /**< long description, possible multiline */ fails */
Eina_Bool strict : 1; /**< fail on errors */ const char *usage; /**< usage example, %prog is replaced */
const Ecore_Getopt_Desc descs[]; /* NULL terminated. */ const char *version; /**< if exists, --version will work */
}; const char *copyright; /**< if exists, --copyright will work
*/
const char *license; /**< if exists, --license will work */
const char *description; /**< long description, possible mul
tiline */
Eina_Bool strict : 1; /**< fail on errors */
const Ecore_Getopt_Desc descs[]; /* NULL terminated. */
};
#define ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, type, a rg_requirement, default_value) \ #define ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, type, a rg_requirement, default_value) \
{shortname, longname, help, metavar, ECORE_GETOPT_ACTION_STORE, \ {shortname, longname, help, metavar, ECORE_GETOPT_ACTION_STORE,
{.store = {type, arg_requirement, default_value}}} \
{.store = {type, arg_requirement, default_value}}}
#define ECORE_GETOPT_STORE(shortname, longname, help, type) \ #define ECORE_GETOPT_STORE(shortname, longname, help, type) \
ECORE_GETOPT_STORE_FULL(shortname, longname, help, NULL, type, \ ECORE_GETOPT_STORE_FULL(shortname, longname, help, NULL, type, \
ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES, {}) ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES, {})
#define ECORE_GETOPT_STORE_STR(shortname, longname, help) \ #define ECORE_GETOPT_STORE_STR(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_STR) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_STR)
#define ECORE_GETOPT_STORE_BOOL(shortname, longname, help) \ #define ECORE_GETOPT_STORE_BOOL(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_BOOL) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_BOOL)
#define ECORE_GETOPT_STORE_SHORT(shortname, longname, help) \ #define ECORE_GETOPT_STORE_SHORT(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_SHORT) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_SHORT)
#define ECORE_GETOPT_STORE_INT(shortname, longname, help) \ #define ECORE_GETOPT_STORE_INT(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_INT) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_INT)
#define ECORE_GETOPT_STORE_LONG(shortname, longname, help) \ #define ECORE_GETOPT_STORE_LONG(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_LONG) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_LONG)
#define ECORE_GETOPT_STORE_USHORT(shortname, longname, help) \ #define ECORE_GETOPT_STORE_USHORT(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_USHORT) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_USHORT)
#define ECORE_GETOPT_STORE_UINT(shortname, longname, help) \ #define ECORE_GETOPT_STORE_UINT(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_UINT) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_UINT)
#define ECORE_GETOPT_STORE_ULONG(shortname, longname, help) \ #define ECORE_GETOPT_STORE_ULONG(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_ULONG) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_ULONG)
#define ECORE_GETOPT_STORE_DOUBLE(shortname, longname, help) \ #define ECORE_GETOPT_STORE_DOUBLE(shortname, longname, help) \
ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_DOUBLE) ECORE_GETOPT_STORE(shortname, longname, help, ECORE_GETOPT_TYPE_DOUBLE)
#define ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, type ) \ #define ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, type ) \
ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, type, \ ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, type, \
ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES, {}) ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES, {})
#define ECORE_GETOPT_STORE_METAVAR_STR(shortname, longname, help, metavar) \ #define ECORE_GETOPT_STORE_METAVAR_STR(shortname, longname, help, metavar) \
ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_STR) ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_STR)
#define ECORE_GETOPT_STORE_METAVAR_BOOL(shortname, longname, help, metavar) \ #define ECORE_GETOPT_STORE_METAVAR_BOOL(shortname, longname, help, metavar) \
ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_BOOL) ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_BOOL)
#define ECORE_GETOPT_STORE_METAVAR_SHORT(shortname, longname, help, metavar ) \ #define ECORE_GETOPT_STORE_METAVAR_SHORT(shortname, longname, help, metavar ) \
ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_SHORT) ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_SHORT)
#define ECORE_GETOPT_STORE_METAVAR_INT(shortname, longname, help, metavar) \ #define ECORE_GETOPT_STORE_METAVAR_INT(shortname, longname, help, metavar) \
ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_INT) ECORE_GETOPT_STORE_METAVAR(shortname, longname, help, metavar, ECORE_GETO PT_TYPE_INT)
skipping to change at line 262 skipping to change at line 266
ECORE_GETOPT_TYPE_ULONG, \ ECORE_GETOPT_TYPE_ULONG, \
{.ulongv = default_value}) {.ulongv = default_value})
#define ECORE_GETOPT_STORE_DEF_DOUBLE(shortname, longname, help, default_va lue) \ #define ECORE_GETOPT_STORE_DEF_DOUBLE(shortname, longname, help, default_va lue) \
ECORE_GETOPT_STORE_DEF(shortname, longname, help, \ ECORE_GETOPT_STORE_DEF(shortname, longname, help, \
ECORE_GETOPT_TYPE_DOUBLE, \ ECORE_GETOPT_TYPE_DOUBLE, \
{.doublev = default_value}) {.doublev = default_value})
#define ECORE_GETOPT_STORE_FULL_STR(shortname, longname, help, metavar, arg _requirement, default_value) \ #define ECORE_GETOPT_STORE_FULL_STR(shortname, longname, help, metavar, arg _requirement, default_value) \
ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \ ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \
ECORE_GETOPT_TYPE_STR, \ ECORE_GETOPT_TYPE_STR, \
arg_requirement, \ arg_requirement, \
{.strv = default_value}) {.strv = default_value})
#define ECORE_GETOPT_STORE_FULL_BOOL(shortname, longname, help, metavar, ar g_requirement, default_value) \ #define ECORE_GETOPT_STORE_FULL_BOOL(shortname, longname, help, metavar, ar g_requirement, default_value) \
ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \ ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \
ECORE_GETOPT_TYPE_BOOL, \ ECORE_GETOPT_TYPE_BOOL, \
arg_requirement, \ arg_requirement, \
{.boolv = default_value}) {.boolv = default_value})
#define ECORE_GETOPT_STORE_FULL_SHORT(shortname, longname, help, metavar, a rg_requirement, default_value) \ #define ECORE_GETOPT_STORE_FULL_SHORT(shortname, longname, help, metavar, a rg_requirement, default_value) \
ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \ ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \
ECORE_GETOPT_TYPE_SHORT, \ ECORE_GETOPT_TYPE_SHORT, \
arg_requirement, \ arg_requirement, \
skipping to change at line 307 skipping to change at line 311
arg_requirement, \ arg_requirement, \
{.ulongv = default_value}) {.ulongv = default_value})
#define ECORE_GETOPT_STORE_FULL_DOUBLE(shortname, longname, help, metavar, arg_requirement, default_value) \ #define ECORE_GETOPT_STORE_FULL_DOUBLE(shortname, longname, help, metavar, arg_requirement, default_value) \
ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \ ECORE_GETOPT_STORE_FULL(shortname, longname, help, metavar, \
ECORE_GETOPT_TYPE_DOUBLE, \ ECORE_GETOPT_TYPE_DOUBLE, \
arg_requirement, \ arg_requirement, \
{.doublev = default_value}) {.doublev = default_value})
#define ECORE_GETOPT_STORE_CONST(shortname, longname, help, value) \ #define ECORE_GETOPT_STORE_CONST(shortname, longname, help, value) \
{shortname, longname, help, NULL, ECORE_GETOPT_ACTION_STORE_CONST, \ {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_STORE_CONST, \
{.store_const = value}} {.store_const = value}}
#define ECORE_GETOPT_STORE_TRUE(shortname, longname, help) \ #define ECORE_GETOPT_STORE_TRUE(shortname, longname, help) \
{shortname, longname, help, NULL, ECORE_GETOPT_ACTION_STORE_TRUE, \ {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_STORE_TRUE, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_STORE_FALSE(shortname, longname, help) \ #define ECORE_GETOPT_STORE_FALSE(shortname, longname, help) \
{shortname, longname, help, NULL, ECORE_GETOPT_ACTION_STORE_FALSE, \ {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_STORE_FALSE, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_CHOICE(shortname, longname, help, choices_array) \ #define ECORE_GETOPT_CHOICE(shortname, longname, help, choices_array) \
{shortname, longname, help, NULL, ECORE_GETOPT_ACTION_CHOICE, \ {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_CHOICE, \
{.choices = choices_array}} {.choices = choices_array}}
#define ECORE_GETOPT_CHOICE_METAVAR(shortname, longname, help, metavar, cho ices_array) \ #define ECORE_GETOPT_CHOICE_METAVAR(shortname, longname, help, metavar, cho ices_array) \
{shortname, longname, help, metavar, ECORE_GETOPT_ACTION_CHOICE, \ {shortname, longname, help, metavar, ECORE_GETOPT_ACTION_CHOICE, \
{.choices = choices_array}} {.choices = choices_array}}
#define ECORE_GETOPT_APPEND(shortname, longname, help, sub_type) \ #define ECORE_GETOPT_APPEND(shortname, longname, help, sub_type) \
{shortname, longname, help, NULL, ECORE_GETOPT_ACTION_APPEND, \ {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_APPEND, \
{.append_type = sub_type}} {.append_type = sub_type}}
#define ECORE_GETOPT_APPEND_METAVAR(shortname, longname, help, metavar, typ e) \ #define ECORE_GETOPT_APPEND_METAVAR(shortname, longname, help, metavar, typ e) \
{shortname, longname, help, metavar, ECORE_GETOPT_ACTION_APPEND, \ {shortname, longname, help, metavar, ECORE_GETOPT_ACTION_APPEND, \
{.append_type = type}} {.append_type = type}}
#define ECORE_GETOPT_COUNT(shortname, longname, help) \ #define ECORE_GETOPT_COUNT(shortname, longname, help) \
{shortname, longname, help, NULL, ECORE_GETOPT_ACTION_COUNT, \ {shortname, longname, help, NULL, ECORE_GETOPT_ACTION_COUNT, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, metavar, call back_func, callback_data, argument_requirement, default_value) \ #define ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, metavar, call back_func, callback_data, argument_requirement, default_value) \
{shortname, longname, help, metavar, ECORE_GETOPT_ACTION_CALLBACK, \ {shortname, longname, help, metavar, ECORE_GETOPT_ACTION_CALLBACK, \
{.callback = {callback_func, callback_data, {.callback = {callback_func, callback_data,
\ \
argument_requirement, default_value}}} argument_requirement, default_value}}}
#define ECORE_GETOPT_CALLBACK_NOARGS(shortname, longname, help, callback_fu nc, callback_data) \ #define ECORE_GETOPT_CALLBACK_NOARGS(shortname, longname, help, callback_fu nc, callback_data) \
ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, NULL, \ ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, NULL, \
callback_func, callback_data, \ callback_func, callback_data, \
ECORE_GETOPT_DESC_ARG_REQUIREMENT_NO, \ ECORE_GETOPT_DESC_ARG_REQUIREMENT_NO, \
NULL) NULL)
#define ECORE_GETOPT_CALLBACK_ARGS(shortname, longname, help, metavar, call back_func, callback_data) \ #define ECORE_GETOPT_CALLBACK_ARGS(shortname, longname, help, metavar, call back_func, callback_data) \
ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, metavar, \ ECORE_GETOPT_CALLBACK_FULL(shortname, longname, help, metavar, \
callback_func, callback_data, \ callback_func, callback_data, \
ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES, \ ECORE_GETOPT_DESC_ARG_REQUIREMENT_YES, \
NULL) NULL)
#define ECORE_GETOPT_HELP(shortname, longname) \ #define ECORE_GETOPT_HELP(shortname, longname) \
{shortname, longname, "show this message.", NULL, \ {shortname, longname, "show this message.", NULL, \
ECORE_GETOPT_ACTION_HELP, \ ECORE_GETOPT_ACTION_HELP, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_VERSION(shortname, longname) \ #define ECORE_GETOPT_VERSION(shortname, longname) \
{shortname, longname, "show program version.", NULL, \ {shortname, longname, "show program version.", NULL, \
ECORE_GETOPT_ACTION_VERSION, \ ECORE_GETOPT_ACTION_VERSION, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_COPYRIGHT(shortname, longname) \ #define ECORE_GETOPT_COPYRIGHT(shortname, longname) \
{shortname, longname, "show copyright.", NULL, \ {shortname, longname, "show copyright.", NULL, \
ECORE_GETOPT_ACTION_COPYRIGHT, \ ECORE_GETOPT_ACTION_COPYRIGHT, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_LICENSE(shortname, longname) \ #define ECORE_GETOPT_LICENSE(shortname, longname) \
{shortname, longname, "show license.", NULL, \ {shortname, longname, "show license.", NULL, \
ECORE_GETOPT_ACTION_LICENSE, \ ECORE_GETOPT_ACTION_LICENSE, \
{.dummy = NULL}} {.dummy = NULL}}
#define ECORE_GETOPT_SENTINEL {0, NULL, NULL, NULL, 0, {.dummy = NULL}} #define ECORE_GETOPT_SENTINEL {0, NULL, NULL, NULL, 0, {.dummy = NULL}}
#define ECORE_GETOPT_VALUE_STR(val) {.strp = &(val)} #define ECORE_GETOPT_VALUE_STR(val) {.strp = &(val)}
#define ECORE_GETOPT_VALUE_BOOL(val) {.boolp = &(val)} #define ECORE_GETOPT_VALUE_BOOL(val) {.boolp = &(val)}
#define ECORE_GETOPT_VALUE_SHORT(val) {.shortp = &(val)} #define ECORE_GETOPT_VALUE_SHORT(val) {.shortp = &(val)}
#define ECORE_GETOPT_VALUE_INT(val) {.intp = &(val)} #define ECORE_GETOPT_VALUE_INT(val) {.intp = &(val)}
#define ECORE_GETOPT_VALUE_LONG(val) {.longp = &(val)} #define ECORE_GETOPT_VALUE_LONG(val) {.longp = &(val)}
#define ECORE_GETOPT_VALUE_USHORT(val) {.ushortp = &(val)} #define ECORE_GETOPT_VALUE_USHORT(val) {.ushortp = &(val)}
#define ECORE_GETOPT_VALUE_UINT(val) {.uintp = &(val)} #define ECORE_GETOPT_VALUE_UINT(val) {.uintp = &(val)}
#define ECORE_GETOPT_VALUE_ULONG(val) {.ulongp = &(val)} #define ECORE_GETOPT_VALUE_ULONG(val) {.ulongp = &(val)}
#define ECORE_GETOPT_VALUE_DOUBLE(val) {.doublep = &(val)} #define ECORE_GETOPT_VALUE_DOUBLE(val) {.doublep = &(val)}
#define ECORE_GETOPT_VALUE_PTR(val) {.ptrp = &(val)} #define ECORE_GETOPT_VALUE_PTR(val) {.ptrp = &(val)}
#define ECORE_GETOPT_VALUE_PTR_CAST(val) {.ptrp = (void **)&(val)} #define ECORE_GETOPT_VALUE_PTR_CAST(val) {.ptrp = (void **)&(val)}
#define ECORE_GETOPT_VALUE_LIST(val) {.listp = &(val)} #define ECORE_GETOPT_VALUE_LIST(val) {.listp = &(val)}
#define ECORE_GETOPT_VALUE_NONE {.ptrp = NULL} #define ECORE_GETOPT_VALUE_NONE {.ptrp = NULL}
EAPI void ecore_getopt_help(FILE *fp, const Ecore_Getopt *info);
EAPI Eina_Bool ecore_getopt_parser_has_duplicates(const Ecore_Getopt *par
ser);
EAPI int ecore_getopt_parse(const Ecore_Getopt *parser, Ecore_Getopt_Valu
e *values, int argc, char **argv);
EAPI Eina_List *ecore_getopt_list_free(Eina_List *list);
/* helper functions to be used with ECORE_GETOPT_CALLBACK_*() */ EAPI void
EAPI Eina_Bool ecore_getopt_callback_geometry_parse(const Ecore_Getopt *p ecore_getopt_help(FILE *fp,
arser, const Ecore_Getopt_Desc *desc, const char *str, void *data, Ecore_Ge const Ecore_Getopt *info);
topt_Value *storage);
EAPI Eina_Bool ecore_getopt_callback_size_parse(const Ecore_Getopt *parse EAPI Eina_Bool
r, const Ecore_Getopt_Desc *desc, const char *str, void *data, Ecore_Getopt ecore_getopt_parser_has_duplicates(const Ecore_Getopt *parser);
_Value *storage); EAPI int
ecore_getopt_parse(const Ecore_Getopt *parser,
Ecore_Getopt_Value *values,
int argc,
char **argv);
EAPI Eina_List *ecore_getopt_list_free(Eina_List *list);
/* helper functions to be used with ECORE_GETOPT_CALLBACK_*() */
EAPI Eina_Bool
ecore_getopt_callback_geometry_parse(const Ecore_Getopt *parser,
const Ecore_Getopt_Desc *desc,
const char *str,
void *data,
Ecore_Getopt_Value *storage);
EAPI Eina_Bool
ecore_getopt_callback_size_parse(const Ecore_Getopt *parser,
const Ecore_Getopt_Desc *desc,
const char *str,
void *data,
Ecore_Getopt_Value *storage);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
#endif /* _ECORE_GETOPT_H */ #endif /* _ECORE_GETOPT_H */
 End of changes. 29 change blocks. 
164 lines changed or deleted 183 lines changed or added


 Ecore_IMF.h   Ecore_IMF.h 
skipping to change at line 58 skipping to change at line 58
typedef struct _Ecore_IMF_Event_Mouse_Move Ecore_IMF_Event_Mouse_Mo ve; typedef struct _Ecore_IMF_Event_Mouse_Move Ecore_IMF_Event_Mouse_Mo ve;
typedef struct _Ecore_IMF_Event_Mouse_Wheel Ecore_IMF_Event_Mouse_Wh eel; typedef struct _Ecore_IMF_Event_Mouse_Wheel Ecore_IMF_Event_Mouse_Wh eel;
typedef struct _Ecore_IMF_Event_Key_Down Ecore_IMF_Event_Key_Down ; typedef struct _Ecore_IMF_Event_Key_Down Ecore_IMF_Event_Key_Down ;
typedef struct _Ecore_IMF_Event_Key_Up Ecore_IMF_Event_Key_Up; typedef struct _Ecore_IMF_Event_Key_Up Ecore_IMF_Event_Key_Up;
typedef union _Ecore_IMF_Event Ecore_IMF_Event; typedef union _Ecore_IMF_Event Ecore_IMF_Event;
typedef struct _Ecore_IMF_Context Ecore_IMF_Context; /**< An Input Method Context */ typedef struct _Ecore_IMF_Context Ecore_IMF_Context; /**< An Input Method Context */
typedef struct _Ecore_IMF_Context_Class Ecore_IMF_Context_Class; /**< An Input Method Context class */ typedef struct _Ecore_IMF_Context_Class Ecore_IMF_Context_Class; /**< An Input Method Context class */
typedef struct _Ecore_IMF_Context_Info Ecore_IMF_Context_Info; /**< An Input Method Context info */ typedef struct _Ecore_IMF_Context_Info Ecore_IMF_Context_Info; /**< An Input Method Context info */
/* Preedit attribute info */
typedef struct _Ecore_IMF_Preedit_Attr Ecore_IMF_Preedit_Attr;
EAPI extern int ECORE_IMF_EVENT_PREEDIT_START; EAPI extern int ECORE_IMF_EVENT_PREEDIT_START;
EAPI extern int ECORE_IMF_EVENT_PREEDIT_END; EAPI extern int ECORE_IMF_EVENT_PREEDIT_END;
EAPI extern int ECORE_IMF_EVENT_PREEDIT_CHANGED; EAPI extern int ECORE_IMF_EVENT_PREEDIT_CHANGED;
EAPI extern int ECORE_IMF_EVENT_COMMIT; EAPI extern int ECORE_IMF_EVENT_COMMIT;
EAPI extern int ECORE_IMF_EVENT_DELETE_SURROUNDING; EAPI extern int ECORE_IMF_EVENT_DELETE_SURROUNDING;
typedef enum typedef enum
{ {
ECORE_IMF_EVENT_MOUSE_DOWN, ECORE_IMF_EVENT_MOUSE_DOWN,
ECORE_IMF_EVENT_MOUSE_UP, ECORE_IMF_EVENT_MOUSE_UP,
skipping to change at line 112 skipping to change at line 115
ECORE_IMF_INPUT_MODE_ALPHA = 1 << 0, ECORE_IMF_INPUT_MODE_ALPHA = 1 << 0,
ECORE_IMF_INPUT_MODE_NUMERIC = 1 << 1, ECORE_IMF_INPUT_MODE_NUMERIC = 1 << 1,
ECORE_IMF_INPUT_MODE_SPECIAL = 1 << 2, ECORE_IMF_INPUT_MODE_SPECIAL = 1 << 2,
ECORE_IMF_INPUT_MODE_HEXA = 1 << 3, ECORE_IMF_INPUT_MODE_HEXA = 1 << 3,
ECORE_IMF_INPUT_MODE_TELE = 1 << 4, ECORE_IMF_INPUT_MODE_TELE = 1 << 4,
ECORE_IMF_INPUT_MODE_FULL = (ECORE_IMF_INPUT_MODE_ALPHA | ECORE_ IMF_INPUT_MODE_NUMERIC | ECORE_IMF_INPUT_MODE_SPECIAL), ECORE_IMF_INPUT_MODE_FULL = (ECORE_IMF_INPUT_MODE_ALPHA | ECORE_ IMF_INPUT_MODE_NUMERIC | ECORE_IMF_INPUT_MODE_SPECIAL),
ECORE_IMF_INPUT_MODE_INVISIBLE = 1 << 29, ECORE_IMF_INPUT_MODE_INVISIBLE = 1 << 29,
ECORE_IMF_INPUT_MODE_AUTOCAP = 1 << 30 ECORE_IMF_INPUT_MODE_AUTOCAP = 1 << 30
} Ecore_IMF_Input_Mode; } Ecore_IMF_Input_Mode;
typedef enum
{
ECORE_IMF_PREEDIT_TYPE_NONE,
ECORE_IMF_PREEDIT_TYPE_SUB1,
ECORE_IMF_PREEDIT_TYPE_SUB2,
ECORE_IMF_PREEDIT_TYPE_SUB3
} Ecore_IMF_Preedit_Type;
typedef enum
{
ECORE_IMF_AUTOCAPITAL_TYPE_NONE,
ECORE_IMF_AUTOCAPITAL_TYPE_WORD,
ECORE_IMF_AUTOCAPITAL_TYPE_SENTENCE,
ECORE_IMF_AUTOCAPITAL_TYPE_ALLCHARACTER
} Ecore_IMF_Autocapital_Type;
typedef enum
{
ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_URL, /**< URL layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout *
/
ECORE_IMF_INPUT_PANEL_LAYOUT_IP, /**< IP layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */
ECORE_IMF_INPUT_PANEL_LAYOUT_INVALID
} Ecore_IMF_Input_Panel_Layout;
typedef enum
{
ECORE_IMF_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic */
ECORE_IMF_INPUT_PANEL_LANG_ALPHABET /**< Alphabet */
} Ecore_IMF_Input_Panel_Lang;
struct _Ecore_IMF_Event_Preedit_Start struct _Ecore_IMF_Event_Preedit_Start
{ {
Ecore_IMF_Context *ctx; Ecore_IMF_Context *ctx;
}; };
struct _Ecore_IMF_Event_Preedit_End struct _Ecore_IMF_Event_Preedit_End
{ {
Ecore_IMF_Context *ctx; Ecore_IMF_Context *ctx;
}; };
skipping to change at line 263 skipping to change at line 301
Ecore_IMF_Event_Mouse_Down mouse_down; Ecore_IMF_Event_Mouse_Down mouse_down;
Ecore_IMF_Event_Mouse_Up mouse_up; Ecore_IMF_Event_Mouse_Up mouse_up;
Ecore_IMF_Event_Mouse_In mouse_in; Ecore_IMF_Event_Mouse_In mouse_in;
Ecore_IMF_Event_Mouse_Out mouse_out; Ecore_IMF_Event_Mouse_Out mouse_out;
Ecore_IMF_Event_Mouse_Move mouse_move; Ecore_IMF_Event_Mouse_Move mouse_move;
Ecore_IMF_Event_Mouse_Wheel mouse_wheel; Ecore_IMF_Event_Mouse_Wheel mouse_wheel;
Ecore_IMF_Event_Key_Down key_down; Ecore_IMF_Event_Key_Down key_down;
Ecore_IMF_Event_Key_Up key_up; Ecore_IMF_Event_Key_Up key_up;
}; };
struct _Ecore_IMF_Preedit_Attr
{
Ecore_IMF_Preedit_Type preedit_type;
unsigned int start_index;
unsigned int end_index;
};
struct _Ecore_IMF_Context_Class struct _Ecore_IMF_Context_Class
{ {
void (*add) (Ecore_IMF_Context *ctx); void (*add) (Ecore_IMF_Context *ctx);
void (*del) (Ecore_IMF_Context *ctx); void (*del) (Ecore_IMF_Context *ctx);
void (*client_window_set) (Ecore_IMF_Context *ctx, void *window); void (*client_window_set) (Ecore_IMF_Context *ctx, void *window);
void (*client_canvas_set) (Ecore_IMF_Context *ctx, void *canvas); void (*client_canvas_set) (Ecore_IMF_Context *ctx, void *canvas);
void (*show) (Ecore_IMF_Context *ctx); void (*show) (Ecore_IMF_Context *ctx);
void (*hide) (Ecore_IMF_Context *ctx); void (*hide) (Ecore_IMF_Context *ctx);
void (*preedit_string_get) (Ecore_IMF_Context *ctx, char **str, int *cu rsor_pos); void (*preedit_string_get) (Ecore_IMF_Context *ctx, char **str, int *cu rsor_pos);
void (*focus_in) (Ecore_IMF_Context *ctx); void (*focus_in) (Ecore_IMF_Context *ctx);
void (*focus_out) (Ecore_IMF_Context *ctx); void (*focus_out) (Ecore_IMF_Context *ctx);
void (*reset) (Ecore_IMF_Context *ctx); void (*reset) (Ecore_IMF_Context *ctx);
void (*cursor_position_set) (Ecore_IMF_Context *ctx, int cursor_pos); void (*cursor_position_set) (Ecore_IMF_Context *ctx, int cursor_pos);
void (*use_preedit_set) (Ecore_IMF_Context *ctx, Eina_Bool use_preed it); void (*use_preedit_set) (Ecore_IMF_Context *ctx, Eina_Bool use_preed it);
void (*input_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mod e input_mode); void (*input_mode_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_Mod e input_mode);
Eina_Bool (*filter_event) (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Typ e type, Ecore_IMF_Event *event); Eina_Bool (*filter_event) (Ecore_IMF_Context *ctx, Ecore_IMF_Event_Typ e type, Ecore_IMF_Event *event);
void (*preedit_string_with_attributes_get) (Ecore_IMF_Context *ctx, char
**str, Eina_List **attrs, int *cursor_pos);
void (*prediction_allow_set)(Ecore_IMF_Context *ctx, Eina_Bool predictio
n);
void (*autocapital_type_set)(Ecore_IMF_Context *ctx, Ecore_IMF_Autocapit
al_Type autocapital_type);
void (*control_panel_show) (Ecore_IMF_Context *ctx);
void (*control_panel_hide) (Ecore_IMF_Context *ctx);
void (*input_panel_layout_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Input_
Panel_Layout layout);
Ecore_IMF_Input_Panel_Layout (*input_panel_layout_get) (Ecore_IMF_Contex
t *ctx);
void (*input_panel_language_set) (Ecore_IMF_Context *ctx, Ecore_IMF_Inpu
t_Panel_Lang lang);
Ecore_IMF_Input_Panel_Lang (*input_panel_language_get) (Ecore_IMF_Contex
t *ctx);
void (*cursor_location_set) (Ecore_IMF_Context *ctx, int x, int y, int w
, int h);
}; };
struct _Ecore_IMF_Context_Info struct _Ecore_IMF_Context_Info
{ {
const char *id; /* ID */ const char *id; /* ID */
const char *description; /* Human readable description */ const char *description; /* Human readable description */
const char *default_locales; /* Languages for which this context is the default, separated by : */ const char *default_locales; /* Languages for which this context is the default, separated by : */
const char *canvas_type; /* The canvas type used by the input method . Eg.: evas */ const char *canvas_type; /* The canvas type used by the input method . Eg.: evas */
int canvas_required; /* Whether the canvas usage is required for this input method */ int canvas_required; /* Whether the canvas usage is required for this input method */
}; };
skipping to change at line 305 skipping to change at line 360
EAPI Eina_List *ecore_imf_context_available_ids_get(void ); EAPI Eina_List *ecore_imf_context_available_ids_get(void );
EAPI Eina_List *ecore_imf_context_available_ids_by_canva s_type_get(const char *canvas_type); EAPI Eina_List *ecore_imf_context_available_ids_by_canva s_type_get(const char *canvas_type);
EAPI const char *ecore_imf_context_default_id_get(void); EAPI const char *ecore_imf_context_default_id_get(void);
EAPI const char *ecore_imf_context_default_id_by_canvas_t ype_get(const char *canvas_type); EAPI const char *ecore_imf_context_default_id_by_canvas_t ype_get(const char *canvas_type);
EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_by_id_get(const c har *id); EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_by_id_get(const c har *id);
EAPI Ecore_IMF_Context *ecore_imf_context_add(const char *id); EAPI Ecore_IMF_Context *ecore_imf_context_add(const char *id);
EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_get(Ecore_IMF_Con text *ctx); EAPI const Ecore_IMF_Context_Info *ecore_imf_context_info_get(Ecore_IMF_Con text *ctx);
EAPI void ecore_imf_context_del(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_del(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_client_window_set(Ecor e_IMF_Context *ctx, void *window); EAPI void ecore_imf_context_client_window_set(Ecor e_IMF_Context *ctx, void *window);
EAPI void *ecore_imf_context_client_window_get(Ecor e_IMF_Context *ctx);
EAPI void ecore_imf_context_client_canvas_set(Ecor e_IMF_Context *ctx, void *canvas); EAPI void ecore_imf_context_client_canvas_set(Ecor e_IMF_Context *ctx, void *canvas);
EAPI void *ecore_imf_context_client_canvas_get(Ecor e_IMF_Context *ctx);
EAPI void ecore_imf_context_show(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_show(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_hide(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_hide(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_preedit_string_get(Eco re_IMF_Context *ctx, char **str, int *cursor_pos); EAPI void ecore_imf_context_preedit_string_get(Eco re_IMF_Context *ctx, char **str, int *cursor_pos);
EAPI void ecore_imf_context_preedit_string_with_at tributes_get(Ecore_IMF_Context *ctx, char **str, Eina_List **attrs, int *cu rsor_pos);
EAPI void ecore_imf_context_focus_in(Ecore_IMF_Con text *ctx); EAPI void ecore_imf_context_focus_in(Ecore_IMF_Con text *ctx);
EAPI void ecore_imf_context_focus_out(Ecore_IMF_Co ntext *ctx); EAPI void ecore_imf_context_focus_out(Ecore_IMF_Co ntext *ctx);
EAPI void ecore_imf_context_reset(Ecore_IMF_Contex t *ctx); EAPI void ecore_imf_context_reset(Ecore_IMF_Contex t *ctx);
EAPI void ecore_imf_context_cursor_position_set(Ec ore_IMF_Context *ctx, int cursor_pos); EAPI void ecore_imf_context_cursor_position_set(Ec ore_IMF_Context *ctx, int cursor_pos);
EAPI void ecore_imf_context_cursor_location_set(Ec ore_IMF_Context *ctx, int x, int y, int w, int h);
EAPI void ecore_imf_context_use_preedit_set(Ecore_ IMF_Context *ctx, Eina_Bool use_preedit); EAPI void ecore_imf_context_use_preedit_set(Ecore_ IMF_Context *ctx, Eina_Bool use_preedit);
EAPI void ecore_imf_context_retrieve_surrounding_c allback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF _Context *ctx, char **text, int *cursor_pos), const void *data); EAPI void ecore_imf_context_retrieve_surrounding_c allback_set(Ecore_IMF_Context *ctx, Eina_Bool (*func)(void *data, Ecore_IMF _Context *ctx, char **text, int *cursor_pos), const void *data);
EAPI void ecore_imf_context_input_mode_set(Ecore_I MF_Context *ctx, Ecore_IMF_Input_Mode input_mode); EAPI void ecore_imf_context_input_mode_set(Ecore_I MF_Context *ctx, Ecore_IMF_Input_Mode input_mode);
EAPI Ecore_IMF_Input_Mode ecore_imf_context_input_mode_get(Ecore_I MF_Context *ctx); EAPI Ecore_IMF_Input_Mode ecore_imf_context_input_mode_get(Ecore_I MF_Context *ctx);
EAPI Eina_Bool ecore_imf_context_filter_event(Ecore_IMF _Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event); EAPI Eina_Bool ecore_imf_context_filter_event(Ecore_IMF _Context *ctx, Ecore_IMF_Event_Type type, Ecore_IMF_Event *event);
/* plugin specific functions */ /* plugin specific functions */
EAPI Ecore_IMF_Context *ecore_imf_context_new(const Ecore_IMF_Co ntext_Class *ctxc); EAPI Ecore_IMF_Context *ecore_imf_context_new(const Ecore_IMF_Co ntext_Class *ctxc);
EAPI void ecore_imf_context_data_set(Ecore_IMF_Con text *ctx, void *data); EAPI void ecore_imf_context_data_set(Ecore_IMF_Con text *ctx, void *data);
EAPI void *ecore_imf_context_data_get(Ecore_IMF_Con text *ctx); EAPI void *ecore_imf_context_data_get(Ecore_IMF_Con text *ctx);
EAPI Eina_Bool ecore_imf_context_surrounding_get(Ecore_ IMF_Context *ctx, char **text, int *cursor_pos); EAPI Eina_Bool ecore_imf_context_surrounding_get(Ecore_ IMF_Context *ctx, char **text, int *cursor_pos);
EAPI void ecore_imf_context_preedit_start_event_ad d(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_preedit_start_event_ad d(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_preedit_end_event_add( Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_preedit_end_event_add( Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_preedit_changed_event_ add(Ecore_IMF_Context *ctx); EAPI void ecore_imf_context_preedit_changed_event_ add(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_commit_event_add(Ecore _IMF_Context *ctx, const char *str); EAPI void ecore_imf_context_commit_event_add(Ecore _IMF_Context *ctx, const char *str);
EAPI void ecore_imf_context_delete_surrounding_eve nt_add(Ecore_IMF_Context *ctx, int offset, int n_chars); EAPI void ecore_imf_context_delete_surrounding_eve nt_add(Ecore_IMF_Context *ctx, int offset, int n_chars);
EAPI void ecore_imf_context_prediction_allow_set(E
core_IMF_Context *ctx, Eina_Bool prediction);
EAPI Eina_Bool ecore_imf_context_prediction_allow_get(E
core_IMF_Context *ctx);
EAPI void ecore_imf_context_autocapital_type_set(E
core_IMF_Context *ctx, Ecore_IMF_Autocapital_Type autocapital_type);
EAPI Ecore_IMF_Autocapital_Type ecore_imf_context_autocapital_type_get(E
core_IMF_Context *ctx);
EAPI void ecore_imf_context_control_panel_show(Eco
re_IMF_Context *ctx);
EAPI void ecore_imf_context_control_panel_hide(Eco
re_IMF_Context *ctx);
EAPI void ecore_imf_context_input_panel_show(Ecore
_IMF_Context *ctx);
EAPI void ecore_imf_context_input_panel_hide(Ecore
_IMF_Context *ctx);
EAPI void ecore_imf_context_input_panel_layout_set
(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Layout layout);
EAPI Ecore_IMF_Input_Panel_Layout ecore_imf_context_input_panel_layout_get
(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_input_panel_language_s
et(Ecore_IMF_Context *ctx, Ecore_IMF_Input_Panel_Lang lang);
EAPI Ecore_IMF_Input_Panel_Lang ecore_imf_context_input_panel_language_g
et(Ecore_IMF_Context *ctx);
EAPI void ecore_imf_context_input_panel_enabled_se
t(Ecore_IMF_Context *ctx, Eina_Bool enable);
EAPI Eina_Bool ecore_imf_context_input_panel_enabled_ge
t(Ecore_IMF_Context *ctx);
/* The following entry points must be exported by each input method module /* The following entry points must be exported by each input method module
*/ */
/* /*
* int imf_module_init (const Ecore_IMF_Context_Info **inf o); * int imf_module_init (const Ecore_IMF_Context_Info **inf o);
* void imf_module_exit (void); * void imf_module_exit (void);
* Ecore_IMF_Context *imf_module_create (void); * Ecore_IMF_Context *imf_module_create (void);
*/ */
 End of changes. 9 change blocks. 
0 lines changed or deleted 98 lines changed or added


 Ecore_Input.h   Ecore_Input.h 
skipping to change at line 59 skipping to change at line 59
#define ECORE_EVENT_MODIFIER_SHIFT 0x0001 #define ECORE_EVENT_MODIFIER_SHIFT 0x0001
#define ECORE_EVENT_MODIFIER_CTRL 0x0002 #define ECORE_EVENT_MODIFIER_CTRL 0x0002
#define ECORE_EVENT_MODIFIER_ALT 0x0004 #define ECORE_EVENT_MODIFIER_ALT 0x0004
#define ECORE_EVENT_MODIFIER_WIN 0x0008 #define ECORE_EVENT_MODIFIER_WIN 0x0008
#define ECORE_EVENT_MODIFIER_SCROLL 0x0010 #define ECORE_EVENT_MODIFIER_SCROLL 0x0010
#define ECORE_EVENT_MODIFIER_NUM 0x0020 #define ECORE_EVENT_MODIFIER_NUM 0x0020
#define ECORE_EVENT_MODIFIER_CAPS 0x0040 #define ECORE_EVENT_MODIFIER_CAPS 0x0040
#define ECORE_EVENT_LOCK_SCROLL 0x0080 #define ECORE_EVENT_LOCK_SCROLL 0x0080
#define ECORE_EVENT_LOCK_NUM 0x0100 #define ECORE_EVENT_LOCK_NUM 0x0100
#define ECORE_EVENT_LOCK_CAPS 0x0200 #define ECORE_EVENT_LOCK_CAPS 0x0200
#define ECORE_EVENT_LOCK_SHIFT 0x0300
typedef uintptr_t Ecore_Window; typedef uintptr_t Ecore_Window;
typedef struct _Ecore_Event_Key Ecore_Event_Key; typedef struct _Ecore_Event_Key Ecore_Event_Key;
typedef struct _Ecore_Event_Mouse_Button Ecore_Event_Mouse_Button; typedef struct _Ecore_Event_Mouse_Button Ecore_Event_Mouse_Button;
typedef struct _Ecore_Event_Mouse_Wheel Ecore_Event_Mouse_Wheel; typedef struct _Ecore_Event_Mouse_Wheel Ecore_Event_Mouse_Wheel;
typedef struct _Ecore_Event_Mouse_Move Ecore_Event_Mouse_Move; typedef struct _Ecore_Event_Mouse_Move Ecore_Event_Mouse_Move;
typedef struct _Ecore_Event_Mouse_IO Ecore_Event_Mouse_IO; typedef struct _Ecore_Event_Mouse_IO Ecore_Event_Mouse_IO;
typedef struct _Ecore_Event_Modifiers Ecore_Event_Modifiers; typedef struct _Ecore_Event_Modifiers Ecore_Event_Modifiers;
typedef enum _Ecore_Event_Modifier typedef enum _Ecore_Event_Modifier
 End of changes. 1 change blocks. 
0 lines changed or deleted 1 lines changed or added


 Ecore_Ipc.h   Ecore_Ipc.h 
#ifndef _ECORE_IPC_H #ifndef _ECORE_IPC_H
#define _ECORE_IPC_H #define _ECORE_IPC_H
#include <Eina.h>
#ifdef EAPI #ifdef EAPI
# undef EAPI # undef EAPI
#endif #endif
#ifdef _MSC_VER #ifdef _WIN32
# ifdef BUILDING_DLL # ifdef EFL_ECORE_IPC_BUILD
# define EAPI __declspec(dllexport) # ifdef DLL_EXPORT
# define EAPI __declspec(dllexport)
# else
# define EAPI
# endif
# else # else
# define EAPI __declspec(dllimport) # define EAPI __declspec(dllimport)
# endif # endif
#else #else
# ifdef __GNUC__ # ifdef __GNUC__
# if __GNUC__ >= 4 # if __GNUC__ >= 4
# define EAPI __attribute__ ((visibility("default"))) # define EAPI __attribute__ ((visibility("default")))
# else # else
# define EAPI # define EAPI
# endif # endif
skipping to change at line 37 skipping to change at line 39
/** /**
* @file Ecore_Ipc.h * @file Ecore_Ipc.h
* @brief Ecore inter-process communication functions. * @brief Ecore inter-process communication functions.
*/ */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#ifndef _ECORE_IPC_PRIVATE_H typedef struct _Ecore_Ipc_Server Ecore_Ipc_Server; /**< An IPC connection h
typedef void Ecore_Ipc_Server; /**< An IPC connection handle */ andle */
typedef void Ecore_Ipc_Client; /**< An IPC connection handle */ typedef struct _Ecore_Ipc_Client Ecore_Ipc_Client; /**< An IPC connection h
#endif andle */
/**
* Macros used for generic data packing
*/
EAPI unsigned short _ecore_ipc_swap_16(unsigned short v); EAPI unsigned short _ecore_ipc_swap_16(unsigned short v);
EAPI unsigned int _ecore_ipc_swap_32(unsigned int v); EAPI unsigned int _ecore_ipc_swap_32(unsigned int v);
EAPI unsigned long long _ecore_ipc_swap_64(unsigned long long v); EAPI unsigned long long _ecore_ipc_swap_64(unsigned long long v);
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
#define ECORE_IPC_SWAP2NET64(x) _ecore_ipc_swap_64(x) #define ECORE_IPC_SWAP2NET64(x) _ecore_ipc_swap_64(x)
#define ECORE_IPC_SWAP2CPU64(x) _ecore_ipc_swap_64(x) #define ECORE_IPC_SWAP2CPU64(x) _ecore_ipc_swap_64(x)
#define ECORE_IPC_SWAP2NET32(x) _ecore_ipc_swap_32(x) #define ECORE_IPC_SWAP2NET32(x) _ecore_ipc_swap_32(x)
#define ECORE_IPC_SWAP2CPU32(x) _ecore_ipc_swap_32(x) #define ECORE_IPC_SWAP2CPU32(x) _ecore_ipc_swap_32(x)
#define ECORE_IPC_SWAP2NET16(x) _ecore_ipc_swap_16(x) #define ECORE_IPC_SWAP2NET16(x) _ecore_ipc_swap_16(x)
 End of changes. 4 change blocks. 
12 lines changed or deleted 11 lines changed or added


 Ecore_X.h   Ecore_X.h 
skipping to change at line 42 skipping to change at line 42
* @brief Ecore functions for dealing with the X Windows System * @brief Ecore functions for dealing with the X Windows System
* *
* Ecore_X provides a wrapper and convenience functions for using the * Ecore_X provides a wrapper and convenience functions for using the
* X Windows System. Function groups for this part of the library * X Windows System. Function groups for this part of the library
* include the following: * include the following:
* @li @ref Ecore_X_Init_Group * @li @ref Ecore_X_Init_Group
* @li @ref Ecore_X_Display_Attr_Group * @li @ref Ecore_X_Display_Attr_Group
* @li @ref Ecore_X_Flush_Group * @li @ref Ecore_X_Flush_Group
*/ */
typedef unsigned int Ecore_X_ID; typedef unsigned int Ecore_X_ID;
#ifndef _ECORE_X_WINDOW_PREDEF #ifndef _ECORE_X_WINDOW_PREDEF
typedef Ecore_X_ID Ecore_X_Window; typedef Ecore_X_ID Ecore_X_Window;
#endif // ifndef _ECORE_X_WINDOW_PREDEF #endif // ifndef _ECORE_X_WINDOW_PREDEF
typedef void *Ecore_X_Visual;
typedef Ecore_X_ID Ecore_X_Pixmap;
typedef Ecore_X_ID Ecore_X_Drawable;
#ifdef HAVE_ECORE_X_XCB #ifdef HAVE_ECORE_X_XCB
typedef Ecore_X_ID Ecore_X_Visual; typedef Ecore_X_ID Ecore_X_GC;
#else // ifdef HAVE_ECORE_X_XCB #else // ifdef HAVE_ECORE_X_XCB
typedef void * Ecore_X_Visual; typedef void *Ecore_X_GC;
#endif /* HAVE_ECORE_X_XCB */ #endif /* HAVE_ECORE_X_XCB */
typedef Ecore_X_ID Ecore_X_Pixmap; typedef Ecore_X_ID Ecore_X_Atom;
typedef Ecore_X_ID Ecore_X_Drawable; typedef Ecore_X_ID Ecore_X_Colormap;
#ifdef HAVE_ECORE_X_XCB typedef Ecore_X_ID Ecore_X_Time;
typedef Ecore_X_ID Ecore_X_GC; typedef Ecore_X_ID Ecore_X_Cursor;
#else // ifdef HAVE_ECORE_X_XCB typedef void Ecore_X_Display;
typedef void * Ecore_X_GC; typedef void Ecore_X_Connection;
#endif /* HAVE_ECORE_X_XCB */ typedef void Ecore_X_Screen;
typedef Ecore_X_ID Ecore_X_Atom; typedef Ecore_X_ID Ecore_X_Sync_Counter;
typedef Ecore_X_ID Ecore_X_Colormap; typedef Ecore_X_ID Ecore_X_Sync_Alarm;
typedef Ecore_X_ID Ecore_X_Time; typedef void Ecore_X_XRegion;
typedef Ecore_X_ID Ecore_X_Cursor;
typedef void Ecore_X_Display; typedef Ecore_X_ID Ecore_X_Randr_Output;
typedef void Ecore_X_Connection; typedef Ecore_X_ID Ecore_X_Randr_Crtc;
typedef void Ecore_X_Screen; typedef Ecore_X_ID Ecore_X_Randr_Mode;
typedef Ecore_X_ID Ecore_X_Sync_Counter; typedef unsigned short Ecore_X_Randr_Size_ID;
typedef Ecore_X_ID Ecore_X_Sync_Alarm; typedef int Ecore_X_Randr_Screen;
typedef void Ecore_X_XRegion;
typedef Ecore_X_ID Ecore_X_Randr_Output;
typedef Ecore_X_ID Ecore_X_Randr_Crtc;
typedef Ecore_X_ID Ecore_X_Randr_Mode;
typedef unsigned short Ecore_X_Randr_Size_ID;
typedef int Ecore_X_Randr_Screen;
typedef Ecore_X_ID Ecore_X_Device; typedef Ecore_X_ID Ecore_X_Device;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif // ifdef __cplusplus #endif // ifdef __cplusplus
typedef struct _Ecore_X_Rectangle typedef struct _Ecore_X_Rectangle
{ {
int x, y; int x, y;
unsigned int width, height; unsigned int width, height;
} Ecore_X_Rectangle; } Ecore_X_Rectangle;
typedef struct _Ecore_X_Icon typedef struct _Ecore_X_Icon
{ {
unsigned int width, height; unsigned int width, height;
unsigned int *data; unsigned int *data;
} Ecore_X_Icon; } Ecore_X_Icon;
typedef enum _Ecore_X_GC_Value_Mask { typedef enum _Ecore_X_GC_Value_Mask
{
ECORE_X_GC_VALUE_MASK_FUNCTION = (1L << 0), ECORE_X_GC_VALUE_MASK_FUNCTION = (1L << 0),
ECORE_X_GC_VALUE_MASK_PLANE_MASK = (1L << 1), ECORE_X_GC_VALUE_MASK_PLANE_MASK = (1L << 1),
ECORE_X_GC_VALUE_MASK_FOREGROUND = (1L << 2), ECORE_X_GC_VALUE_MASK_FOREGROUND = (1L << 2),
ECORE_X_GC_VALUE_MASK_BACKGROUND = (1L << 3), ECORE_X_GC_VALUE_MASK_BACKGROUND = (1L << 3),
ECORE_X_GC_VALUE_MASK_LINE_WIDTH = (1L << 4), ECORE_X_GC_VALUE_MASK_LINE_WIDTH = (1L << 4),
ECORE_X_GC_VALUE_MASK_LINE_STYLE = (1L << 5), ECORE_X_GC_VALUE_MASK_LINE_STYLE = (1L << 5),
ECORE_X_GC_VALUE_MASK_CAP_STYLE = (1L << 6), ECORE_X_GC_VALUE_MASK_CAP_STYLE = (1L << 6),
ECORE_X_GC_VALUE_MASK_JOIN_STYLE = (1L << 7), ECORE_X_GC_VALUE_MASK_JOIN_STYLE = (1L << 7),
ECORE_X_GC_VALUE_MASK_FILL_STYLE = (1L << 8), ECORE_X_GC_VALUE_MASK_FILL_STYLE = (1L << 8),
ECORE_X_GC_VALUE_MASK_FILL_RULE = (1L << 9), ECORE_X_GC_VALUE_MASK_FILL_RULE = (1L << 9),
skipping to change at line 119 skipping to change at line 116
ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE = (1L << 15), ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE = (1L << 15),
ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES = (1L << 16), ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES = (1L << 16),
ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X = (1L << 17), ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X = (1L << 17),
ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y = (1L << 18), ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y = (1L << 18),
ECORE_X_GC_VALUE_MASK_CLIP_MASK = (1L << 19), ECORE_X_GC_VALUE_MASK_CLIP_MASK = (1L << 19),
ECORE_X_GC_VALUE_MASK_DASH_OFFSET = (1L << 20), ECORE_X_GC_VALUE_MASK_DASH_OFFSET = (1L << 20),
ECORE_X_GC_VALUE_MASK_DASH_LIST = (1L << 21), ECORE_X_GC_VALUE_MASK_DASH_LIST = (1L << 21),
ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22) ECORE_X_GC_VALUE_MASK_ARC_MODE = (1L << 22)
} Ecore_X_GC_Value_Mask; } Ecore_X_GC_Value_Mask;
typedef enum _Ecore_X_Composite_Update_Type { typedef enum _Ecore_X_Composite_Update_Type
{
ECORE_X_COMPOSITE_UPDATE_AUTOMATIC, ECORE_X_COMPOSITE_UPDATE_AUTOMATIC,
ECORE_X_COMPOSITE_UPDATE_MANUAL ECORE_X_COMPOSITE_UPDATE_MANUAL
} Ecore_X_Composite_Update_Type; } Ecore_X_Composite_Update_Type;
typedef enum _Ecore_X_Window_State { typedef enum _Ecore_X_Window_State
{
/* Unknown state */ /* Unknown state */
ECORE_X_WINDOW_STATE_UNKNOWN = 0, ECORE_X_WINDOW_STATE_UNKNOWN = 0,
/** The window is iconified. */ /** The window is iconified. */
ECORE_X_WINDOW_STATE_ICONIFIED, ECORE_X_WINDOW_STATE_ICONIFIED,
/** The window is a modal dialog box. */ /** The window is a modal dialog box. */
ECORE_X_WINDOW_STATE_MODAL, ECORE_X_WINDOW_STATE_MODAL,
/** The window manager should keep the window's position fixed /** The window manager should keep the window's position fixed
* even if the virtual desktop scrolls. */ * even if the virtual desktop scrolls. */
ECORE_X_WINDOW_STATE_STICKY, ECORE_X_WINDOW_STATE_STICKY,
/** The window has the maximum vertical size. */ /** The window has the maximum vertical size. */
ECORE_X_WINDOW_STATE_MAXIMIZED_VERT, ECORE_X_WINDOW_STATE_MAXIMIZED_VERT,
/** The window has the maximum horizontal size. */ /** The window has the maximum horizontal size. */
ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ, ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ,
/** The window is shaded. */ /** The window is shaded. */
ECORE_X_WINDOW_STATE_SHADED, ECORE_X_WINDOW_STATE_SHADED,
/** The window should not be included in the taskbar. */ /** The window should not be included in the taskbar. */
ECORE_X_WINDOW_STATE_SKIP_TASKBAR, ECORE_X_WINDOW_STATE_SKIP_TASKBAR,
/** The window should not be included in the pager. */ /** The window should not be included in the pager. */
ECORE_X_WINDOW_STATE_SKIP_PAGER, ECORE_X_WINDOW_STATE_SKIP_PAGER,
/** The window is invisible (i.e. minimized/iconified) */ /** The window is invisible (i.e. minimized/iconified) */
ECORE_X_WINDOW_STATE_HIDDEN, ECORE_X_WINDOW_STATE_HIDDEN,
/** The window should fill the entire screen and have no /** The window should fill the entire screen and have no
* window border/decorations */ * window border/decorations */
ECORE_X_WINDOW_STATE_FULLSCREEN, ECORE_X_WINDOW_STATE_FULLSCREEN,
/* The following are not documented because they are not /* The following are not documented because they are not
* intended for use in applications. */ * intended for use in applications. */
ECORE_X_WINDOW_STATE_ABOVE, ECORE_X_WINDOW_STATE_ABOVE,
ECORE_X_WINDOW_STATE_BELOW, ECORE_X_WINDOW_STATE_BELOW,
/* FIXME: Documentation */ /* FIXME: Documentation */
ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION
} Ecore_X_Window_State; } Ecore_X_Window_State;
typedef enum _Ecore_X_Window_State_Action { typedef enum _Ecore_X_Window_State_Action
{
ECORE_X_WINDOW_STATE_ACTION_REMOVE, ECORE_X_WINDOW_STATE_ACTION_REMOVE,
ECORE_X_WINDOW_STATE_ACTION_ADD, ECORE_X_WINDOW_STATE_ACTION_ADD,
ECORE_X_WINDOW_STATE_ACTION_TOGGLE ECORE_X_WINDOW_STATE_ACTION_TOGGLE
} Ecore_X_Window_State_Action; } Ecore_X_Window_State_Action;
typedef enum _Ecore_X_Window_Stack_Mode { typedef enum _Ecore_X_Window_Stack_Mode
{
ECORE_X_WINDOW_STACK_ABOVE = 0, ECORE_X_WINDOW_STACK_ABOVE = 0,
ECORE_X_WINDOW_STACK_BELOW = 1, ECORE_X_WINDOW_STACK_BELOW = 1,
ECORE_X_WINDOW_STACK_TOP_IF = 2, ECORE_X_WINDOW_STACK_TOP_IF = 2,
ECORE_X_WINDOW_STACK_BOTTOM_IF = 3, ECORE_X_WINDOW_STACK_BOTTOM_IF = 3,
ECORE_X_WINDOW_STACK_OPPOSITE = 4 ECORE_X_WINDOW_STACK_OPPOSITE = 4
} Ecore_X_Window_Stack_Mode; } Ecore_X_Window_Stack_Mode;
typedef enum _Ecore_X_Randr_Orientation { typedef enum _Ecore_X_Randr_Orientation
{
ECORE_X_RANDR_ORIENTATION_ROT_0 = (1 << 0), ECORE_X_RANDR_ORIENTATION_ROT_0 = (1 << 0),
ECORE_X_RANDR_ORIENTATION_ROT_90 = (1 << 1), ECORE_X_RANDR_ORIENTATION_ROT_90 = (1 << 1),
ECORE_X_RANDR_ORIENTATION_ROT_180 = (1 << 2), ECORE_X_RANDR_ORIENTATION_ROT_180 = (1 << 2),
ECORE_X_RANDR_ORIENTATION_ROT_270 = (1 << 3), ECORE_X_RANDR_ORIENTATION_ROT_270 = (1 << 3),
ECORE_X_RANDR_ORIENTATION_FLIP_X = (1 << 4), ECORE_X_RANDR_ORIENTATION_FLIP_X = (1 << 4),
ECORE_X_RANDR_ORIENTATION_FLIP_Y = (1 << 5) ECORE_X_RANDR_ORIENTATION_FLIP_Y = (1 << 5)
} Ecore_X_Randr_Orientation; } Ecore_X_Randr_Orientation;
typedef enum _Ecore_X_Randr_Connection_Status { typedef enum _Ecore_X_Randr_Connection_Status
{
ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED = 0, ECORE_X_RANDR_CONNECTION_STATUS_CONNECTED = 0,
ECORE_X_RANDR_CONNECTION_STATUS_DISCONNECTED = 1, ECORE_X_RANDR_CONNECTION_STATUS_DISCONNECTED = 1,
ECORE_X_RANDR_CONNECTION_STATUS_UNKNOWN = 2 ECORE_X_RANDR_CONNECTION_STATUS_UNKNOWN = 2
} Ecore_X_Randr_Connection_Status; } Ecore_X_Randr_Connection_Status;
typedef enum _Ecore_X_Randr_Output_Policy { typedef enum _Ecore_X_Randr_Output_Policy
{
ECORE_X_RANDR_OUTPUT_POLICY_ABOVE = 1, ECORE_X_RANDR_OUTPUT_POLICY_ABOVE = 1,
ECORE_X_RANDR_OUTPUT_POLICY_RIGHT = 2, ECORE_X_RANDR_OUTPUT_POLICY_RIGHT = 2,
ECORE_X_RANDR_OUTPUT_POLICY_BELOW = 3, ECORE_X_RANDR_OUTPUT_POLICY_BELOW = 3,
ECORE_X_RANDR_OUTPUT_POLICY_LEFT = 4, ECORE_X_RANDR_OUTPUT_POLICY_LEFT = 4,
ECORE_X_RANDR_OUTPUT_POLICY_CLONE = 5, ECORE_X_RANDR_OUTPUT_POLICY_CLONE = 5,
ECORE_X_RANDR_OUTPUT_POLICY_NONE = 6 ECORE_X_RANDR_OUTPUT_POLICY_NONE = 6
} Ecore_X_Randr_Output_Policy; } Ecore_X_Randr_Output_Policy;
typedef enum _Ecore_X_Randr_Relative_Alignment { typedef enum _Ecore_X_Randr_Relative_Alignment
{
ECORE_X_RANDR_RELATIVE_ALIGNMENT_NONE = 0, ECORE_X_RANDR_RELATIVE_ALIGNMENT_NONE = 0,
ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_REL = 1, ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_REL = 1,
ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_SCR = 2 ECORE_X_RANDR_RELATIVE_ALIGNMENT_CENTER_SCR = 2
} Ecore_X_Randr_Relative_Alignment; } Ecore_X_Randr_Relative_Alignment;
typedef enum _Ecore_X_Render_Subpixel_Order { typedef enum _Ecore_X_Render_Subpixel_Order
{
ECORE_X_RENDER_SUBPIXEL_ORDER_UNKNOWN = 0, ECORE_X_RENDER_SUBPIXEL_ORDER_UNKNOWN = 0,
ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_RGB = 1, ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_RGB = 1,
ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_BGR = 2, ECORE_X_RENDER_SUBPIXEL_ORDER_HORIZONTAL_BGR = 2,
ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_RGB = 3, ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_RGB = 3,
ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_BGR = 4, ECORE_X_RENDER_SUBPIXEL_ORDER_VERTICAL_BGR = 4,
ECORE_X_RENDER_SUBPIXEL_ORDER_NONE = 5 ECORE_X_RENDER_SUBPIXEL_ORDER_NONE = 5
} Ecore_X_Render_Subpixel_Order; } Ecore_X_Render_Subpixel_Order;
typedef enum _Ecore_X_Randr_Edid_Display_Interface_Type
{
ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_UNDEFINED,
ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DVI,
ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_HDMI_A,
ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_HDMI_B,
ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_MDDI,
ECORE_X_RANDR_EDID_DISPLAY_INTERFACE_DISPLAY_PORT
} Ecore_X_Randr_Edid_Display_Interface_Type;
typedef enum _Ecore_X_Randr_Edid_Display_Colorscheme
{
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_MONOCHROME_GRAYSCALE = 0x00,
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB = 0x08,
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_NON_RGB = 0x10,
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_UNDEFINED = 0x18,
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_4_4_4 = 0x444000,
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_YCRCB_4_4_4 = 0x444,
ECORE_X_RANDR_EDID_DISPLAY_COLORSCHEME_COLOR_RGB_YCRCB_4_2_2 = 0x422
} Ecore_X_Randr_Edid_Display_Colorscheme;
typedef enum _Ecore_X_Randr_Edid_Aspect_Ratio
{
ECORE_X_RANDR_EDID_ASPECT_RATIO_4_3 = 0x0,
ECORE_X_RANDR_EDID_ASPECT_RATIO_16_9 = 0x1,
ECORE_X_RANDR_EDID_ASPECT_RATIO_16_10 = 0x2,
ECORE_X_RANDR_EDID_ASPECT_RATIO_5_4 = 0x4,
ECORE_X_RANDR_EDID_ASPECT_RATIO_15_9 = 0x8
} Ecore_X_Randr_Edid_Aspect_Ratio;
#define ECORE_X_RANDR_EDID_UNKNOWN_VALUE -1
#define ECORE_X_SELECTION_TARGET_TARGETS "TARGETS" #define ECORE_X_SELECTION_TARGET_TARGETS "TARGETS"
#define ECORE_X_SELECTION_TARGET_TEXT "TEXT" #define ECORE_X_SELECTION_TARGET_TEXT "TEXT"
#define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT" #define ECORE_X_SELECTION_TARGET_COMPOUND_TEXT "COMPOUND_TEXT"
#define ECORE_X_SELECTION_TARGET_STRING "STRING" #define ECORE_X_SELECTION_TARGET_STRING "STRING"
#define ECORE_X_SELECTION_TARGET_UTF8_STRING "UTF8_STRING" #define ECORE_X_SELECTION_TARGET_UTF8_STRING "UTF8_STRING"
#define ECORE_X_SELECTION_TARGET_FILENAME "FILENAME" #define ECORE_X_SELECTION_TARGET_FILENAME "FILENAME"
#define ECORE_X_DND_VERSION 5 #define ECORE_X_DND_VERSION 5
EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_COPY; typedef enum _Ecore_X_Selection
EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_MOVE; {
EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_LINK;
EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_ASK;
EAPI extern Ecore_X_Atom ECORE_X_DND_ACTION_PRIVATE;
typedef enum _Ecore_X_Selection {
ECORE_X_SELECTION_PRIMARY, ECORE_X_SELECTION_PRIMARY,
ECORE_X_SELECTION_SECONDARY, ECORE_X_SELECTION_SECONDARY,
ECORE_X_SELECTION_XDND, ECORE_X_SELECTION_XDND,
ECORE_X_SELECTION_CLIPBOARD, ECORE_X_SELECTION_CLIPBOARD,
ECORE_X_SELECTION_OTHER ECORE_X_SELECTION_OTHER
} Ecore_X_Selection; } Ecore_X_Selection;
typedef enum _Ecore_X_Event_Mode typedef enum _Ecore_X_Event_Mode
{ {
ECORE_X_EVENT_MODE_NORMAL, ECORE_X_EVENT_MODE_NORMAL,
skipping to change at line 315 skipping to change at line 348
ECORE_X_MAPPING_KEYBOARD, ECORE_X_MAPPING_KEYBOARD,
ECORE_X_MAPPING_MOUSE ECORE_X_MAPPING_MOUSE
} Ecore_X_Mapping_Type; } Ecore_X_Mapping_Type;
typedef enum _Ecore_X_Randr_Property_Change typedef enum _Ecore_X_Randr_Property_Change
{ {
ECORE_X_RANDR_PROPERTY_CHANGE_ADD, ECORE_X_RANDR_PROPERTY_CHANGE_ADD,
ECORE_X_RANDR_PROPERTY_CHANGE_DEL ECORE_X_RANDR_PROPERTY_CHANGE_DEL
} Ecore_X_Randr_Property_Change; } Ecore_X_Randr_Property_Change;
typedef struct _Ecore_X_Event_Mouse_In Ecore_X_Event_Mouse_In; typedef struct _Ecore_X_Event_Mouse_In Ecore_X_Event_Mo
typedef struct _Ecore_X_Event_Mouse_Out Ecore_X_Event_Mouse_Out; use_In;
typedef struct _Ecore_X_Event_Window_Focus_In Ecore_X_Event_Window_Focu typedef struct _Ecore_X_Event_Mouse_Out Ecore_X_Event_Mo
s_In; use_Out;
typedef struct _Ecore_X_Event_Window_Focus_Out Ecore_X_Event_Window_Focu typedef struct _Ecore_X_Event_Window_Focus_In Ecore_X_Event_Wi
s_Out; ndow_Focus_In;
typedef struct _Ecore_X_Event_Window_Keymap Ecore_X_Event_Window_Keym typedef struct _Ecore_X_Event_Window_Focus_Out Ecore_X_Event_Wi
ap; ndow_Focus_Out;
typedef struct _Ecore_X_Event_Window_Damage Ecore_X_Event_Window_Dama typedef struct _Ecore_X_Event_Window_Keymap Ecore_X_Event_Wi
ge; ndow_Keymap;
typedef struct _Ecore_X_Event_Window_Visibility_Change Ecore_X_Event_Window typedef struct _Ecore_X_Event_Window_Damage Ecore_X_Event_Wi
_Visibility_Change; ndow_Damage;
typedef struct _Ecore_X_Event_Window_Create Ecore_X_Event_Window_Crea typedef struct _Ecore_X_Event_Window_Visibility_Change Ecore_X_Event_Wi
te; ndow_Visibility_Change;
typedef struct _Ecore_X_Event_Window_Destroy Ecore_X_Event_Window_Dest typedef struct _Ecore_X_Event_Window_Create Ecore_X_Event_Wi
roy; ndow_Create;
typedef struct _Ecore_X_Event_Window_Hide Ecore_X_Event_Window_Hide typedef struct _Ecore_X_Event_Window_Destroy Ecore_X_Event_Wi
; ndow_Destroy;
typedef struct _Ecore_X_Event_Window_Show Ecore_X_Event_Window_Show typedef struct _Ecore_X_Event_Window_Hide Ecore_X_Event_Wi
; ndow_Hide;
typedef struct _Ecore_X_Event_Window_Show_Request Ecore_X_Event_Window_Show typedef struct _Ecore_X_Event_Window_Show Ecore_X_Event_Wi
_Request; ndow_Show;
typedef struct _Ecore_X_Event_Window_Reparent Ecore_X_Event_Window_Repa typedef struct _Ecore_X_Event_Window_Show_Request Ecore_X_Event_Wi
rent; ndow_Show_Request;
typedef struct _Ecore_X_Event_Window_Configure Ecore_X_Event_Window_Conf typedef struct _Ecore_X_Event_Window_Reparent Ecore_X_Event_Wi
igure; ndow_Reparent;
typedef struct _Ecore_X_Event_Window_Configure_Request Ecore_X_Event_Window typedef struct _Ecore_X_Event_Window_Configure Ecore_X_Event_Wi
_Configure_Request; ndow_Configure;
typedef struct _Ecore_X_Event_Window_Gravity Ecore_X_Event_Window_Grav typedef struct _Ecore_X_Event_Window_Configure_Request Ecore_X_Event_Wi
ity; ndow_Configure_Request;
typedef struct _Ecore_X_Event_Window_Resize_Request Ecore_X_Event_Window_Re typedef struct _Ecore_X_Event_Window_Gravity Ecore_X_Event_Wi
size_Request; ndow_Gravity;
typedef struct _Ecore_X_Event_Window_Stack Ecore_X_Event_Window_Stac typedef struct _Ecore_X_Event_Window_Resize_Request Ecore_X_Event_Wi
k; ndow_Resize_Request;
typedef struct _Ecore_X_Event_Window_Stack_Request Ecore_X_Event_Window_Sta typedef struct _Ecore_X_Event_Window_Stack Ecore_X_Event_Wi
ck_Request; ndow_Stack;
typedef struct _Ecore_X_Event_Window_Property Ecore_X_Event_Window_Prop typedef struct _Ecore_X_Event_Window_Stack_Request Ecore_X_Event_Wi
erty; ndow_Stack_Request;
typedef struct _Ecore_X_Event_Window_Colormap Ecore_X_Event_Window_Colo typedef struct _Ecore_X_Event_Window_Property Ecore_X_Event_Wi
rmap; ndow_Property;
typedef struct _Ecore_X_Event_Mapping_Change Ecore_X_Event_Mapping_Cha typedef struct _Ecore_X_Event_Window_Colormap Ecore_X_Event_Wi
nge; ndow_Colormap;
typedef struct _Ecore_X_Event_Window_Mapping Ecore_X_Event_Window_Mapp typedef struct _Ecore_X_Event_Mapping_Change Ecore_X_Event_Ma
ing; pping_Change;
typedef struct _Ecore_X_Event_Selection_Clear Ecore_X_Event_Selection_C typedef struct _Ecore_X_Event_Window_Mapping Ecore_X_Event_Wi
lear; ndow_Mapping;
typedef struct _Ecore_X_Event_Selection_Request Ecore_X_Event_Selection_R typedef struct _Ecore_X_Event_Selection_Clear Ecore_X_Event_Se
equest; lection_Clear;
typedef struct _Ecore_X_Event_Selection_Notify Ecore_X_Event_Selection_N typedef struct _Ecore_X_Event_Selection_Request Ecore_X_Event_Se
otify; lection_Request;
typedef struct _Ecore_X_Selection_Data Ecore_X_Selection_Data; typedef struct _Ecore_X_Event_Selection_Notify Ecore_X_Event_Se
typedef struct _Ecore_X_Selection_Data_Files Ecore_X_Selection_Data_Fi lection_Notify;
les; typedef struct _Ecore_X_Event_Fixes_Selection_Notify Ecore_X_Event_Fi
typedef struct _Ecore_X_Selection_Data_Text Ecore_X_Selection_Data_Te xes_Selection_Notify;
xt; typedef struct _Ecore_X_Selection_Data Ecore_X_Selectio
typedef struct _Ecore_X_Selection_Data_Targets Ecore_X_Selection_Data_Ta n_Data;
rgets; typedef struct _Ecore_X_Selection_Data_Files Ecore_X_Selectio
typedef struct _Ecore_X_Event_Xdnd_Enter Ecore_X_Event_Xdnd_Enter; n_Data_Files;
typedef struct _Ecore_X_Event_Xdnd_Position Ecore_X_Event_Xdnd_Positi typedef struct _Ecore_X_Selection_Data_Text Ecore_X_Selectio
on; n_Data_Text;
typedef struct _Ecore_X_Event_Xdnd_Status Ecore_X_Event_Xdnd_Status typedef struct _Ecore_X_Selection_Data_Targets Ecore_X_Selectio
; n_Data_Targets;
typedef struct _Ecore_X_Event_Xdnd_Leave Ecore_X_Event_Xdnd_Leave; typedef struct _Ecore_X_Event_Xdnd_Enter Ecore_X_Event_Xd
typedef struct _Ecore_X_Event_Xdnd_Drop Ecore_X_Event_Xdnd_Drop; nd_Enter;
typedef struct _Ecore_X_Event_Xdnd_Finished Ecore_X_Event_Xdnd_Finish typedef struct _Ecore_X_Event_Xdnd_Position Ecore_X_Event_Xd
ed; nd_Position;
typedef struct _Ecore_X_Event_Client_Message Ecore_X_Event_Client_Mess typedef struct _Ecore_X_Event_Xdnd_Status Ecore_X_Event_Xd
age; nd_Status;
typedef struct _Ecore_X_Event_Window_Shape Ecore_X_Event_Window_Shap typedef struct _Ecore_X_Event_Xdnd_Leave Ecore_X_Event_Xd
e; nd_Leave;
typedef struct _Ecore_X_Event_Screensaver_Notify Ecore_X_Event_Screensaver typedef struct _Ecore_X_Event_Xdnd_Drop Ecore_X_Event_Xd
_Notify; nd_Drop;
typedef struct _Ecore_X_Event_Sync_Counter Ecore_X_Event_Sync_Counte typedef struct _Ecore_X_Event_Xdnd_Finished Ecore_X_Event_Xd
r; nd_Finished;
typedef struct _Ecore_X_Event_Sync_Alarm Ecore_X_Event_Sync_Alarm; typedef struct _Ecore_X_Event_Client_Message Ecore_X_Event_Cl
typedef struct _Ecore_X_Event_Screen_Change Ecore_X_Event_Screen_Chan ient_Message;
ge; typedef struct _Ecore_X_Event_Window_Shape Ecore_X_Event_Wi
typedef struct _Ecore_X_Event_Randr_Crtc_Change Ecore_X_Event_Randr_Crtc_ ndow_Shape;
Change; typedef struct _Ecore_X_Event_Screensaver_Notify Ecore_X_Event_Sc
typedef struct _Ecore_X_Event_Randr_Output_Change Ecore_X_Event_Randr_Outpu reensaver_Notify;
t_Change; typedef struct _Ecore_X_Event_Gesture_Notify_Flick Ecore_X_Event_Ge
sture_Notify_Flick;
typedef struct _Ecore_X_Event_Gesture_Notify_Pan Ecore_X_Event_Ge
sture_Notify_Pan;
typedef struct _Ecore_X_Event_Gesture_Notify_PinchRotation Ecore_X_Event_Ge
sture_Notify_PinchRotation;
typedef struct _Ecore_X_Event_Gesture_Notify_Tap Ecore_X_Event_Ge
sture_Notify_Tap;
typedef struct _Ecore_X_Event_Gesture_Notify_TapNHold Ecore_X_Event_Ge
sture_Notify_TapNHold;
typedef struct _Ecore_X_Event_Gesture_Notify_Hold Ecore_X_Event_Ge
sture_Notify_Hold;
typedef struct _Ecore_X_Event_Gesture_Notify_Group Ecore_X_Event_Ge
sture_Notify_Group;
typedef struct _Ecore_X_Event_Sync_Counter Ecore_X_Event_Sy
nc_Counter;
typedef struct _Ecore_X_Event_Sync_Alarm Ecore_X_Event_Sy
nc_Alarm;
typedef struct _Ecore_X_Event_Screen_Change Ecore_X_Event_Sc
reen_Change;
typedef struct _Ecore_X_Event_Randr_Crtc_Change Ecore_X_Event_Ra
ndr_Crtc_Change;
typedef struct _Ecore_X_Event_Randr_Output_Change Ecore_X_Event_Ra
ndr_Output_Change;
typedef struct _Ecore_X_Event_Randr_Output_Property_Notify Ecore_X_Event_Ra ndr_Output_Property_Notify; typedef struct _Ecore_X_Event_Randr_Output_Property_Notify Ecore_X_Event_Ra ndr_Output_Property_Notify;
typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Wind typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Wi
ow_Delete_Request; ndow_Delete_Request;
typedef struct _Ecore_X_Event_Window_Move_Resize_Request Ecore_X_Event_Wind typedef struct _Ecore_X_Event_Window_Move_Resize_Request Ecore_X_Event_Wi
ow_Move_Resize_Request; ndow_Move_Resize_Request;
typedef struct _Ecore_X_Event_Window_State_Request Ecore_X_Event_Wind typedef struct _Ecore_X_Event_Window_State_Request Ecore_X_Event_Wi
ow_State_Request; ndow_State_Request;
typedef struct _Ecore_X_Event_Frame_Extents_Request Ecore_X_Event_Fram typedef struct _Ecore_X_Event_Frame_Extents_Request Ecore_X_Event_Fr
e_Extents_Request; ame_Extents_Request;
typedef struct _Ecore_X_Event_Ping Ecore_X_Event_Ping typedef struct _Ecore_X_Event_Ping Ecore_X_Event_Pi
; ng;
typedef struct _Ecore_X_Event_Desktop_Change Ecore_X_Event_Desk typedef struct _Ecore_X_Event_Desktop_Change Ecore_X_Event_De
top_Change; sktop_Change;
typedef struct _Ecore_X_Event_Startup_Sequence Ecore_X_Event_Startup_Sequ ence; typedef struct _Ecore_X_Event_Startup_Sequence Ecore_X_Event_St artup_Sequence;
typedef struct _Ecore_X_Event_Generic Ecore_X_Event_Generic; typedef struct _Ecore_X_Event_Generic Ecore_X_Event_Ge neric;
typedef struct _Ecore_X_Randr_Screen_Size Ecore_X_Randr_Screen_Size; typedef struct _Ecore_X_Randr_Screen_Size Ecore_X_Randr_Sc
typedef struct _Ecore_X_Randr_Screen_Size_MM Ecore_X_Randr_Screen_Size_ reen_Size;
MM; typedef struct _Ecore_X_Randr_Screen_Size_MM Ecore_X_Randr_Sc
reen_Size_MM;
typedef struct _Ecore_X_Xdnd_Position Ecore_X_Xdnd_Position; typedef struct _Ecore_X_Xdnd_Position Ecore_X_Xdnd_Pos ition;
struct _Ecore_X_Event_Mouse_In struct _Ecore_X_Event_Mouse_In
{ {
int modifiers; int modifiers;
int x, y; int x, y;
Eina_Bool same_screen : 1; Eina_Bool same_screen : 1;
struct { struct
int x, y; {
int x, y;
} root; } root;
Ecore_X_Window win; Ecore_X_Window win;
Ecore_X_Window event_win; Ecore_X_Window event_win;
Ecore_X_Window root_win; Ecore_X_Window root_win;
Ecore_X_Event_Mode mode; Ecore_X_Event_Mode mode;
Ecore_X_Event_Detail detail; Ecore_X_Event_Detail detail;
Ecore_X_Time time; Ecore_X_Time time;
}; };
struct _Ecore_X_Event_Mouse_Out struct _Ecore_X_Event_Mouse_Out
{ {
int modifiers; int modifiers;
int x, y; int x, y;
int same_screen; int same_screen;
struct { struct
int x, y; {
int x, y;
} root; } root;
Ecore_X_Window win; Ecore_X_Window win;
Ecore_X_Window event_win; Ecore_X_Window event_win;
Ecore_X_Window root_win; Ecore_X_Window root_win;
Ecore_X_Event_Mode mode; Ecore_X_Event_Mode mode;
Ecore_X_Event_Detail detail; Ecore_X_Event_Detail detail;
Ecore_X_Time time; Ecore_X_Time time;
}; };
struct _Ecore_X_Event_Window_Focus_In struct _Ecore_X_Event_Window_Focus_In
skipping to change at line 585 skipping to change at line 628
struct _Ecore_X_Event_Selection_Request struct _Ecore_X_Event_Selection_Request
{ {
Ecore_X_Window owner; Ecore_X_Window owner;
Ecore_X_Window requestor; Ecore_X_Window requestor;
Ecore_X_Time time; Ecore_X_Time time;
Ecore_X_Atom selection; Ecore_X_Atom selection;
Ecore_X_Atom target; Ecore_X_Atom target;
Ecore_X_Atom property; Ecore_X_Atom property;
}; };
typedef enum
{
ECORE_X_OWNER_CHANGE_REASON_NEW_OWNER,
ECORE_X_OWNER_CHANGE_REASON_DESTROY,
ECORE_X_OWNER_CHANGE_REASON_CLOSE
} Ecore_X_Owner_Change_Reason;
struct _Ecore_X_Event_Fixes_Selection_Notify
{
Ecore_X_Window win;
Ecore_X_Window owner;
Ecore_X_Time time;
Ecore_X_Time selection_time;
Ecore_X_Selection selection;
Ecore_X_Atom atom;
Ecore_X_Owner_Change_Reason reason;
};
struct _Ecore_X_Event_Selection_Notify struct _Ecore_X_Event_Selection_Notify
{ {
Ecore_X_Window win; Ecore_X_Window win;
Ecore_X_Time time; Ecore_X_Time time;
Ecore_X_Selection selection; Ecore_X_Selection selection;
Ecore_X_Atom atom; Ecore_X_Atom atom;
char *target; char *target;
void *data; void *data;
}; };
struct _Ecore_X_Selection_Data struct _Ecore_X_Selection_Data
{ {
enum { enum
{
ECORE_X_SELECTION_CONTENT_NONE, ECORE_X_SELECTION_CONTENT_NONE,
ECORE_X_SELECTION_CONTENT_TEXT, ECORE_X_SELECTION_CONTENT_TEXT,
ECORE_X_SELECTION_CONTENT_FILES, ECORE_X_SELECTION_CONTENT_FILES,
ECORE_X_SELECTION_CONTENT_TARGETS, ECORE_X_SELECTION_CONTENT_TARGETS,
ECORE_X_SELECTION_CONTENT_CUSTOM ECORE_X_SELECTION_CONTENT_CUSTOM
} content; } content;
unsigned char *data; unsigned char *data;
int length; int length;
int format; int format;
int (*free)(void *data); int (*free)(void *data);
skipping to change at line 641 skipping to change at line 703
{ {
Ecore_X_Window win, source; Ecore_X_Window win, source;
char **types; char **types;
int num_types; int num_types;
}; };
struct _Ecore_X_Event_Xdnd_Position struct _Ecore_X_Event_Xdnd_Position
{ {
Ecore_X_Window win, source; Ecore_X_Window win, source;
struct { struct
int x, y; {
int x, y;
} position; } position;
Ecore_X_Atom action; Ecore_X_Atom action;
}; };
struct _Ecore_X_Xdnd_Position struct _Ecore_X_Xdnd_Position
{ {
Ecore_X_Window win, prev; Ecore_X_Window win, prev;
struct { struct
int x, y; {
int x, y;
} position; } position;
}; };
struct _Ecore_X_Event_Xdnd_Status struct _Ecore_X_Event_Xdnd_Status
{ {
Ecore_X_Window win, target; Ecore_X_Window win, target;
Eina_Bool will_accept : 1; Eina_Bool will_accept : 1;
Ecore_X_Rectangle rectangle; Ecore_X_Rectangle rectangle;
Ecore_X_Atom action; Ecore_X_Atom action;
}; };
struct _Ecore_X_Event_Xdnd_Leave struct _Ecore_X_Event_Xdnd_Leave
{ {
Ecore_X_Window win, source; Ecore_X_Window win, source;
}; };
struct _Ecore_X_Event_Xdnd_Drop struct _Ecore_X_Event_Xdnd_Drop
{ {
Ecore_X_Window win, source; Ecore_X_Window win, source;
Ecore_X_Atom action; Ecore_X_Atom action;
struct { struct
int x, y; {
int x, y;
} position; } position;
}; };
struct _Ecore_X_Event_Xdnd_Finished struct _Ecore_X_Event_Xdnd_Finished
{ {
Ecore_X_Window win, target; Ecore_X_Window win, target;
Eina_Bool completed : 1; Eina_Bool completed : 1;
Ecore_X_Atom action; Ecore_X_Atom action;
}; };
struct _Ecore_X_Event_Client_Message struct _Ecore_X_Event_Client_Message
{ {
Ecore_X_Window win; Ecore_X_Window win;
Ecore_X_Atom message_type; Ecore_X_Atom message_type;
int format; int format;
union { union
char b[20]; {
short s[10]; char b[20];
long l[5]; short s[10];
long l[5];
} data; } data;
Ecore_X_Time time; Ecore_X_Time time;
}; };
struct _Ecore_X_Event_Window_Shape struct _Ecore_X_Event_Window_Shape
{ {
Ecore_X_Window win; Ecore_X_Window win;
Ecore_X_Time time; Ecore_X_Time time;
Ecore_X_Shape_Type type; Ecore_X_Shape_Type type;
int x, y, w, h; int x, y, w, h;
skipping to change at line 861 skipping to change at line 927
EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST; EAPI extern int ECORE_X_EVENT_WINDOW_RESIZE_REQUEST;
EAPI extern int ECORE_X_EVENT_WINDOW_STACK; EAPI extern int ECORE_X_EVENT_WINDOW_STACK;
EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST; EAPI extern int ECORE_X_EVENT_WINDOW_STACK_REQUEST;
EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY; EAPI extern int ECORE_X_EVENT_WINDOW_PROPERTY;
EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP; EAPI extern int ECORE_X_EVENT_WINDOW_COLORMAP;
EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING; EAPI extern int ECORE_X_EVENT_WINDOW_MAPPING;
EAPI extern int ECORE_X_EVENT_MAPPING_CHANGE; EAPI extern int ECORE_X_EVENT_MAPPING_CHANGE;
EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR; EAPI extern int ECORE_X_EVENT_SELECTION_CLEAR;
EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST; EAPI extern int ECORE_X_EVENT_SELECTION_REQUEST;
EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY; EAPI extern int ECORE_X_EVENT_SELECTION_NOTIFY;
EAPI extern int ECORE_X_EVENT_FIXES_SELECTION_NOTIFY;
EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE; EAPI extern int ECORE_X_EVENT_CLIENT_MESSAGE;
EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE; EAPI extern int ECORE_X_EVENT_WINDOW_SHAPE;
EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY; EAPI extern int ECORE_X_EVENT_SCREENSAVER_NOTIFY;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_FLICK;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_PAN;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_PINCHROTATION;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_TAP;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_TAPNHOLD;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_HOLD;
EAPI extern int ECORE_X_EVENT_GESTURE_NOTIFY_GROUP;
EAPI extern int ECORE_X_EVENT_SYNC_COUNTER; EAPI extern int ECORE_X_EVENT_SYNC_COUNTER;
EAPI extern int ECORE_X_EVENT_SYNC_ALARM; EAPI extern int ECORE_X_EVENT_SYNC_ALARM;
EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE; EAPI extern int ECORE_X_EVENT_SCREEN_CHANGE;
EAPI extern int ECORE_X_EVENT_RANDR_CRTC_CHANGE; EAPI extern int ECORE_X_EVENT_RANDR_CRTC_CHANGE;
EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE; EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_CHANGE;
EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY; EAPI extern int ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY;
EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY; EAPI extern int ECORE_X_EVENT_DAMAGE_NOTIFY;
EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST; EAPI extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST;
skipping to change at line 896 skipping to change at line 970
EAPI extern int ECORE_X_EVENT_XDND_ENTER; EAPI extern int ECORE_X_EVENT_XDND_ENTER;
EAPI extern int ECORE_X_EVENT_XDND_POSITION; EAPI extern int ECORE_X_EVENT_XDND_POSITION;
EAPI extern int ECORE_X_EVENT_XDND_STATUS; EAPI extern int ECORE_X_EVENT_XDND_STATUS;
EAPI extern int ECORE_X_EVENT_XDND_LEAVE; EAPI extern int ECORE_X_EVENT_XDND_LEAVE;
EAPI extern int ECORE_X_EVENT_XDND_DROP; EAPI extern int ECORE_X_EVENT_XDND_DROP;
EAPI extern int ECORE_X_EVENT_XDND_FINISHED; EAPI extern int ECORE_X_EVENT_XDND_FINISHED;
EAPI extern int ECORE_X_LOCK_SCROLL; EAPI extern int ECORE_X_LOCK_SCROLL;
EAPI extern int ECORE_X_LOCK_NUM; EAPI extern int ECORE_X_LOCK_NUM;
EAPI extern int ECORE_X_LOCK_CAPS; EAPI extern int ECORE_X_LOCK_CAPS;
EAPI extern int ECORE_X_LOCK_SHIFT;
typedef enum _Ecore_X_WM_Protocol typedef enum _Ecore_X_WM_Protocol
{ {
/* If enabled the window manager will be asked to send a /* If enabled the window manager will be asked to send a
* delete message instead of just closing (destroying) the window. */ * delete message instead of just closing (destroying) the window. */
ECORE_X_WM_PROTOCOL_DELETE_REQUEST, ECORE_X_WM_PROTOCOL_DELETE_REQUEST,
/* If enabled the window manager will be told that the window /* If enabled the window manager will be told that the window
* explicitly sets input focus. */ * explicitly sets input focus. */
ECORE_X_WM_PROTOCOL_TAKE_FOCUS, ECORE_X_WM_PROTOCOL_TAKE_FOCUS,
/* If enabled the window manager can ping the window to check /* If enabled the window manager can ping the window to check
* if it is alive. */ * if it is alive. */
ECORE_X_NET_WM_PROTOCOL_PING, ECORE_X_NET_WM_PROTOCOL_PING,
/* If enabled the window manager can sync updating with the /* If enabled the window manager can sync updating with the
* window (?) */ * window (?) */
ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST, ECORE_X_NET_WM_PROTOCOL_SYNC_REQUEST,
/* Number of defined items */ /* Number of defined items */
ECORE_X_WM_PROTOCOL_NUM ECORE_X_WM_PROTOCOL_NUM
} Ecore_X_WM_Protocol; } Ecore_X_WM_Protocol;
typedef enum _Ecore_X_Window_Input_Mode typedef enum _Ecore_X_Window_Input_Mode
{ {
/* The window can never be focused */ /* The window can never be focused */
ECORE_X_WINDOW_INPUT_MODE_NONE, ECORE_X_WINDOW_INPUT_MODE_NONE,
/* The window can be focused by the WM but doesn't focus itself */ /* The window can be focused by the WM but doesn't focus itself */
ECORE_X_WINDOW_INPUT_MODE_PASSIVE, ECORE_X_WINDOW_INPUT_MODE_PASSIVE,
/* The window sets the focus itself if one of its sub-windows /* The window sets the focus itself if one of its sub-windows
* already is focused */ * already is focused */
ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL, ECORE_X_WINDOW_INPUT_MODE_ACTIVE_LOCAL,
/* The window sets the focus itself even if another window /* The window sets the focus itself even if another window
* is currently focused */ * is currently focused */
ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL ECORE_X_WINDOW_INPUT_MODE_ACTIVE_GLOBAL
} Ecore_X_Window_Input_Mode; } Ecore_X_Window_Input_Mode;
typedef enum _Ecore_X_Window_State_Hint typedef enum _Ecore_X_Window_State_Hint
{ {
/** Do not provide any state hint to the window manager */ /** Do not provide any state hint to the window manager */
ECORE_X_WINDOW_STATE_HINT_NONE = -1, ECORE_X_WINDOW_STATE_HINT_NONE = -1,
/** The window wants to remain hidden and NOT iconified */ /** The window wants to remain hidden and NOT iconified */
ECORE_X_WINDOW_STATE_HINT_WITHDRAWN, ECORE_X_WINDOW_STATE_HINT_WITHDRAWN,
/** The window wants to be mapped normally */ /** The window wants to be mapped normally */
ECORE_X_WINDOW_STATE_HINT_NORMAL, ECORE_X_WINDOW_STATE_HINT_NORMAL,
/** The window wants to start in an iconified state */ /** The window wants to start in an iconified state */
ECORE_X_WINDOW_STATE_HINT_ICONIC ECORE_X_WINDOW_STATE_HINT_ICONIC
} Ecore_X_Window_State_Hint; } Ecore_X_Window_State_Hint;
typedef enum _Ecore_X_Window_Type typedef enum _Ecore_X_Window_Type
{ {
ECORE_X_WINDOW_TYPE_UNKNOWN = 0, ECORE_X_WINDOW_TYPE_UNKNOWN = 0,
ECORE_X_WINDOW_TYPE_DESKTOP, ECORE_X_WINDOW_TYPE_DESKTOP,
ECORE_X_WINDOW_TYPE_DOCK, ECORE_X_WINDOW_TYPE_DOCK,
ECORE_X_WINDOW_TYPE_TOOLBAR, ECORE_X_WINDOW_TYPE_TOOLBAR,
ECORE_X_WINDOW_TYPE_MENU, ECORE_X_WINDOW_TYPE_MENU,
ECORE_X_WINDOW_TYPE_UTILITY, ECORE_X_WINDOW_TYPE_UTILITY,
skipping to change at line 1042 skipping to change at line 1117
/* Window layer constants */ /* Window layer constants */
#define ECORE_X_WINDOW_LAYER_BELOW 2 #define ECORE_X_WINDOW_LAYER_BELOW 2
#define ECORE_X_WINDOW_LAYER_NORMAL 4 #define ECORE_X_WINDOW_LAYER_NORMAL 4
#define ECORE_X_WINDOW_LAYER_ABOVE 6 #define ECORE_X_WINDOW_LAYER_ABOVE 6
/* Property list operations */ /* Property list operations */
#define ECORE_X_PROP_LIST_REMOVE 0 #define ECORE_X_PROP_LIST_REMOVE 0
#define ECORE_X_PROP_LIST_ADD 1 #define ECORE_X_PROP_LIST_ADD 1
#define ECORE_X_PROP_LIST_TOGGLE 2 #define ECORE_X_PROP_LIST_TOGGLE 2
EAPI int ecore_x_init(const char *name); EAPI int
EAPI int ecore_x_shutdown(void); ecore_x_init(const char *name);
EAPI int ecore_x_disconnect(void); EAPI int
EAPI Ecore_X_Display * ecore_x_display_get(void); ecore_x_shutdown(void);
EAPI Ecore_X_Connection * ecore_x_connection_get(void); EAPI int
EAPI int ecore_x_fd_get(void); ecore_x_disconnect(void);
EAPI Ecore_X_Screen * ecore_x_default_screen_get(void); EAPI Ecore_X_Display *
EAPI void ecore_x_double_click_time_set(double t); ecore_x_display_get(void);
EAPI double ecore_x_double_click_time_get(void); EAPI Ecore_X_Connection *
EAPI void ecore_x_flush(void); ecore_x_connection_get(void);
EAPI void ecore_x_sync(void); EAPI int
EAPI void ecore_x_killall(Ecore_X_Window root); ecore_x_fd_get(void);
EAPI void ecore_x_kill(Ecore_X_Window win); EAPI Ecore_X_Screen *
EAPI int ecore_x_dpi_get(void); ecore_x_default_screen_get(void);
EAPI Eina_Bool ecore_x_bell(int percent); EAPI void
ecore_x_screen_size_get(const Ecore_X_Screen *screen,
EAPI Ecore_X_Time ecore_x_current_time_get(void); int *w,
int *h);
EAPI void ecore_x_error_handler_set(void (*func)(void *d EAPI int
ata), const void *data); ecore_x_screen_count_get(void);
EAPI void ecore_x_io_error_handler_set(void (*func)( EAPI int
void *data), c ecore_x_screen_index_get(const Ecore_X_Screen *screen);
onst void *data); EAPI Ecore_X_Screen *
EAPI int ecore_x_error_request_get(void); ecore_x_screen_get(int index);
EAPI int ecore_x_error_code_get(void);
EAPI void
EAPI void ecore_x_event_mask_set(Ecore_X_Window w, ecore_x_double_click_time_set(double t);
Ecore_X_Event_Mask mask EAPI double
); ecore_x_double_click_time_get(void);
EAPI void ecore_x_event_mask_unset(Ecore_X_Window w, EAPI void
Ecore_X_Event_Mask ma ecore_x_flush(void);
sk); EAPI void
ecore_x_sync(void);
EAPI Eina_Bool ecore_x_selection_notify_send(Ecore_X_Window r EAPI void
equestor, ecore_x_killall(Ecore_X_Window root);
Ecore_X_Atom s EAPI void
election, ecore_x_kill(Ecore_X_Window win);
Ecore_X_Atom t EAPI int
arget, ecore_x_dpi_get(void);
Ecore_X_Atom p EAPI Eina_Bool
roperty, ecore_x_bell(int percent);
Ecore_X_Time t EAPI unsigned int
ime); ecore_x_visual_id_get(Ecore_X_Visual visual);
EAPI void ecore_x_selection_primary_prefetch(void);
EAPI void ecore_x_selection_primary_fetch(void); EAPI Ecore_X_Visual
EAPI Eina_Bool ecore_x_selection_primary_set(Ecore_X_Window w ecore_x_default_visual_get(Ecore_X_Display *disp,
, Ecore_X_Screen *screen);
const void *d EAPI Ecore_X_Colormap
ata, ecore_x_default_colormap_get(Ecore_X_Display *disp,
int s Ecore_X_Screen *screen);
ize); EAPI int
EAPI Eina_Bool ecore_x_selection_primary_clear(void); ecore_x_default_depth_get(Ecore_X_Display *disp,
EAPI void ecore_x_selection_secondary_prefetch(void); Ecore_X_Screen *screen);
EAPI void ecore_x_selection_secondary_fetch(void);
EAPI Eina_Bool ecore_x_selection_secondary_set(Ecore_X_Window EAPI Ecore_X_Time
w, ecore_x_current_time_get(void);
const void
*data, EAPI void
int ecore_x_error_handler_set(void (*func)(void *data),
size); const void *data);
EAPI Eina_Bool ecore_x_selection_secondary_clear(void); EAPI void
EAPI void ecore_x_selection_xdnd_prefetch(void); ecore_x_io_error_handler_set(void (*func)(void *data),
EAPI void ecore_x_selection_xdnd_fetch(void); const void *data);
EAPI Eina_Bool ecore_x_selection_xdnd_set(Ecore_X_Window w, EAPI int
const void *data ecore_x_error_request_get(void);
, EAPI int
int size ecore_x_error_code_get(void);
);
EAPI Eina_Bool ecore_x_selection_xdnd_clear(void); EAPI void
EAPI void ecore_x_selection_clipboard_prefetch(void); ecore_x_event_mask_set(Ecore_X_Window w,
EAPI void ecore_x_selection_clipboard_fetch(void); Ecore_X_Event_Mask mask);
EAPI Eina_Bool ecore_x_selection_clipboard_set(Ecore_X_Window EAPI void
w, ecore_x_event_mask_unset(Ecore_X_Window w,
const void Ecore_X_Event_Mask mask);
*data,
int EAPI Eina_Bool
size); ecore_x_selection_notify_send(Ecore_X_Window requestor,
EAPI Eina_Bool ecore_x_selection_clipboard_clear(void); Ecore_X_Atom selection,
EAPI void ecore_x_selection_primary_request(Ecore_X_Wind Ecore_X_Atom target,
ow w, Ecore_X_Atom property,
const char Ecore_X_Time time);
*target); EAPI Eina_Bool
EAPI void ecore_x_selection_secondary_request(Ecore_X_Wi ecore_x_selection_primary_set(Ecore_X_Window w,
ndow w, const void *data,
const char int size);
*target); EAPI Eina_Bool
EAPI void ecore_x_selection_xdnd_request(Ecore_X_Window ecore_x_selection_primary_clear(void);
w, EAPI Eina_Bool
const char * ecore_x_selection_secondary_set(Ecore_X_Window w,
target); const void *data,
EAPI void ecore_x_selection_clipboard_request(Ecore_X_Wi int size);
ndow w, EAPI Eina_Bool
const char ecore_x_selection_secondary_clear(void);
*target); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_selection_convert(Ecore_X_Atom select ecore_x_selection_xdnd_set(Ecore_X_Window w,
ion, const void *data,
Ecore_X_Atom target int size);
, EAPI Eina_Bool
void **data_r ecore_x_selection_xdnd_clear(void);
et, EAPI Eina_Bool
int *len, ecore_x_selection_clipboard_set(Ecore_X_Window w,
Ecore_X_Atom *targpr const void *data,
op, int size);
int *targsi EAPI Eina_Bool
ze); ecore_x_selection_clipboard_clear(void);
EAPI void ecore_x_selection_converter_add(char *target, EAPI void
Eina_Bool (*func)( ecore_x_selection_primary_request(Ecore_X_Window w,
char *targ const char *target);
et, EAPI void
void *data ecore_x_selection_secondary_request(Ecore_X_Window w,
, const char *target);
int size EAPI void
, ecore_x_selection_xdnd_request(Ecore_X_Window w,
void **data const char *target);
_ret, EAPI void
int *size ecore_x_selection_clipboard_request(Ecore_X_Window w,
_ret, const char *target);
Ecore_X_Ato EAPI Eina_Bool
m *, ecore_x_selection_convert(Ecore_X_Atom selection,
int *)); Ecore_X_Atom target,
EAPI void ecore_x_selection_converter_atom_add(Ecore_X_Atom target, Ei void **data_ret,
na_Bool (*func)( int *len,
char *target Ecore_X_Atom *targprop,
, int *targsize);
void *data, EAPI void
int size, ecore_x_selection_converter_add(char *target,
void **data_r Eina_Bool (*func)(char *target,
et, void *data,
int *size_r int size,
et, void **data_ret,
int *size_ret,
Ecore_X_Atom *,
int *));
EAPI void
ecore_x_selection_converter_atom_add(Ecore_X_Atom target,
Eina_Bool (*func)(char *target,
void *data,
int size,
void **data_ret,
int *size_ret,
Ecore_X_Atom *tprop, Ecore_X_Atom *tprop,
int *tsize) int *tsize));
); EAPI void
EAPI void ecore_x_selection_converter_del(char *target); ecore_x_selection_converter_del(char *target);
EAPI void ecore_x_selection_converter_atom_del( EAPI void
Ecore_X_Atom target); ecore_x_selection_converter_atom_del(Ecore_X_Atom target);
EAPI void ecore_x_selection_parser_add(const char *target, EAPI void
void *(*func)(const c ecore_x_selection_parser_add(const char *target,
har *target, void *(*func)(const char *target, void *data,
void *d int size, int format));
ata, int size, EAPI void
int for ecore_x_selection_parser_del(const char *target);
mat)); EAPI void
EAPI void ecore_x_selection_parser_del(const char *target); ecore_x_selection_owner_set(Ecore_X_Window win,
Ecore_X_Atom atom,
EAPI void ecore_x_dnd_aware_set(Ecore_X_Window win, Eina_Boo Ecore_X_Time tm);
l on); EAPI Ecore_X_Window
EAPI void ecore_x_dnd_version_get_prefetch(Ecore_X_Window wi ecore_x_selection_owner_get(Ecore_X_Atom atom);
ndow);
EAPI void ecore_x_dnd_version_get_fetch(void); EAPI void
EAPI int ecore_x_dnd_version_get(Ecore_X_Window win); ecore_x_dnd_aware_set(Ecore_X_Window win,
EAPI void ecore_x_dnd_type_get_prefetch(Ecore_X_Window windo Eina_Bool on);
w); EAPI int
EAPI void ecore_x_dnd_type_get_fetch(void); ecore_x_dnd_version_get(Ecore_X_Window win);
EAPI Eina_Bool ecore_x_dnd_type_isset(Ecore_X_Window win, EAPI Eina_Bool
const char *type); ecore_x_dnd_type_isset(Ecore_X_Window win,
EAPI void ecore_x_dnd_type_set(Ecore_X_Window win, const char *type);
const char *type, EAPI void
Eina_Bool on); ecore_x_dnd_type_set(Ecore_X_Window win,
EAPI void ecore_x_dnd_types_set(Ecore_X_Window win, const char *type,
const char **types, Eina_Bool on);
unsigned int num_types); EAPI void
EAPI void ecore_x_dnd_actions_set(Ecore_X_Window win, ecore_x_dnd_types_set(Ecore_X_Window win,
Ecore_X_Atom *actions, const char **types,
unsigned int num_actions unsigned int num_types);
); EAPI void
EAPI void ecore_x_dnd_begin_prefetch(Ecore_X_Window source); ecore_x_dnd_actions_set(Ecore_X_Window win,
EAPI void ecore_x_dnd_begin_fetch(void); Ecore_X_Atom *actions,
EAPI Eina_Bool ecore_x_dnd_begin(Ecore_X_Window source, unsigned int num_actions);
unsigned char *data, EAPI Eina_Bool
int size); ecore_x_dnd_begin(Ecore_X_Window source,
EAPI Eina_Bool ecore_x_dnd_drop(void); unsigned char *data,
EAPI void ecore_x_dnd_send_status(Eina_Bool will_acc int size);
ept, EAPI Eina_Bool
Eina_Bool suppress ecore_x_dnd_drop(void);
, EAPI void
Ecore_X_Rectangle rectangl ecore_x_dnd_send_status(Eina_Bool will_accept,
e, Eina_Bool suppress,
Ecore_X_Atom action); Ecore_X_Rectangle rectangle,
EAPI void ecore_x_dnd_send_finished(void); Ecore_X_Atom action);
EAPI void ecore_x_dnd_source_action_set(Ecore_X_Atom action) EAPI void
; ecore_x_dnd_send_finished(void);
EAPI Ecore_X_Atom ecore_x_dnd_source_action_get(void); EAPI void
EAPI void ecore_x_dnd_callback_pos_update_set(void (*cb)(voi ecore_x_dnd_source_action_set(Ecore_X_Atom action);
d *, Ecore_X_Xdnd_Position *data), EAPI Ecore_X_Atom
const void *dat ecore_x_dnd_source_action_get(void);
a); EAPI void
ecore_x_dnd_callback_pos_update_set(void (*cb)(void *,
EAPI Ecore_X_Window ecore_x_window_new(Ecore_X_Window parent, Ecore_X_Xdnd_Position *data)
int x, ,
int y, const void *data);
int w,
int h); EAPI Ecore_X_Window
EAPI Ecore_X_Window ecore_x_window_override_new(Ecore_X_Window parent, ecore_x_window_new(Ecore_X_Window parent,
int x, int x,
int y, int y,
int w, int w,
int h); int h);
EAPI int ecore_x_window_argb_get(Ecore_X_Window win); EAPI Ecore_X_Window
EAPI Ecore_X_Window ecore_x_window_manager_argb_new(Ecore_X_Window par ecore_x_window_override_new(Ecore_X_Window parent,
ent, int x,
int x, int y,
int y, int w,
int w, int h);
int h); EAPI int
EAPI Ecore_X_Window ecore_x_window_argb_new(Ecore_X_Window parent, ecore_x_window_argb_get(Ecore_X_Window win);
int x, EAPI Ecore_X_Window
int y, ecore_x_window_manager_argb_new(Ecore_X_Window parent,
int w, int x,
int h); int y,
EAPI Ecore_X_Window ecore_x_window_override_argb_new(Ecore_X_Window pa int w,
rent, int h);
int x, EAPI Ecore_X_Window
int y, ecore_x_window_argb_new(Ecore_X_Window parent,
int w, int x,
int h) int y,
; int w,
EAPI Ecore_X_Window ecore_x_window_input_new(Ecore_X_Window parent, int h);
int x, EAPI Ecore_X_Window
int y, ecore_x_window_override_argb_new(Ecore_X_Window parent,
int w, int x,
int h); int y,
EAPI void ecore_x_window_configure( int w,
Ecore_X_Window win, int h);
Ecore_X_Window_Configure_Mask EAPI Ecore_X_Window
mask, ecore_x_window_input_new(Ecore_X_Window parent,
int x, int x,
int y, int y,
int w, int w,
int h, int h);
int border_width, EAPI void
Ecore_X_Window sibling, ecore_x_window_configure(Ecore_X_Window win,
int stack_mode); Ecore_X_Window_Configure_Mask mask,
EAPI void ecore_x_window_cursor_set(Ecore_X_Window win, int x,
Ecore_X_Cursor c); int y,
EAPI void ecore_x_window_free(Ecore_X_Window win); int w,
EAPI void ecore_x_window_ignore_set(Ecore_X_Window win, int h,
int ignore); int border_width,
EAPI Ecore_X_Window * ecore_x_window_ignore_list(int *num); Ecore_X_Window sibling,
int stack_mode);
EAPI void ecore_x_window_delete_request_send( EAPI void
Ecore_X_Window win); ecore_x_window_cursor_set(Ecore_X_Window win,
EAPI void ecore_x_window_show(Ecore_X_Window win); Ecore_X_Cursor c);
EAPI void ecore_x_window_hide(Ecore_X_Window win); EAPI void
EAPI void ecore_x_window_move(Ecore_X_Window win, ecore_x_window_free(Ecore_X_Window win);
int x, EAPI void
int y); ecore_x_window_ignore_set(Ecore_X_Window win,
EAPI void ecore_x_window_resize(Ecore_X_Window win, int ignore);
int w, EAPI Ecore_X_Window *
int h); ecore_x_window_ignore_list(int *num);
EAPI void ecore_x_window_move_resize(Ecore_X_Window win,
int x, EAPI void
int y, ecore_x_window_delete_request_send(Ecore_X_Window win);
int w, EAPI void
int h); ecore_x_window_show(Ecore_X_Window win);
EAPI void ecore_x_window_focus(Ecore_X_Window win); EAPI void
EAPI void ecore_x_window_focus_at_time(Ecore_X_Window win, ecore_x_window_hide(Ecore_X_Window win);
Ecore_X_Time t); EAPI void
EAPI void ecore_x_get_input_focus_prefetch(void); ecore_x_window_move(Ecore_X_Window win,
EAPI void ecore_x_get_input_focus_fetch(void); int x,
EAPI Ecore_X_Window ecore_x_window_focus_get(void); int y);
EAPI void ecore_x_window_raise(Ecore_X_Window win); EAPI void
EAPI void ecore_x_window_lower(Ecore_X_Window win); ecore_x_window_resize(Ecore_X_Window win,
EAPI void ecore_x_window_reparent(Ecore_X_Window win, int w,
Ecore_X_Window new_parent, int h);
int x, EAPI void
int y); ecore_x_window_move_resize(Ecore_X_Window win,
EAPI void ecore_x_window_size_get(Ecore_X_Window win, int x,
int *w, int y,
int *h); int w,
EAPI void ecore_x_window_geometry_get(Ecore_X_Window win, int h);
int *x, EAPI void
int *y, ecore_x_window_focus(Ecore_X_Window win);
int *w, EAPI void
int *h); ecore_x_window_focus_at_time(Ecore_X_Window win,
EAPI int ecore_x_window_border_width_get( Ecore_X_Time t);
Ecore_X_Window win); EAPI Ecore_X_Window
EAPI void ecore_x_window_border_width_set( ecore_x_window_focus_get(void);
Ecore_X_Window win, EAPI void
int width); ecore_x_window_raise(Ecore_X_Window win);
EAPI int ecore_x_window_depth_get(Ecore_X_Window win); EAPI void
EAPI void ecore_x_window_cursor_show(Ecore_X_Window win, ecore_x_window_lower(Ecore_X_Window win);
Eina_Bool show); EAPI void
EAPI void ecore_x_window_defaults_set(Ecore_X_Window win); ecore_x_window_reparent(Ecore_X_Window win,
EAPI int ecore_x_window_visible_get(Ecore_X_Window win); Ecore_X_Window new_parent,
EAPI Ecore_X_Window ecore_x_window_shadow_tree_at_xy_with_skip_get( int x,
Ecore_X_Window base, int y);
int x, EAPI void
int y, ecore_x_window_size_get(Ecore_X_Window win,
Ecore_X_Window *skip, int *w,
int skip_num); int *h);
EAPI Ecore_X_Window ecore_x_window_shadow_parent_get( EAPI void
Ecore_X_Window root, ecore_x_window_geometry_get(Ecore_X_Window win,
Ecore_X_Window win); int *x,
EAPI void ecore_x_window_shadow_tree_flush(void); int *y,
EAPI Ecore_X_Window ecore_x_window_root_get(Ecore_X_Window win); int *w,
EAPI Ecore_X_Window ecore_x_window_at_xy_get(int x, int y); int *h);
EAPI Ecore_X_Window ecore_x_window_at_xy_with_skip_get(int EAPI int
x, ecore_x_window_border_width_get(Ecore_X_Window win);
int EAPI void
y, ecore_x_window_border_width_set(Ecore_X_Window win,
Ecore_X_Window int width);
*skip, EAPI int
int ecore_x_window_depth_get(Ecore_X_Window win);
skip_num); EAPI void
EAPI Ecore_X_Window ecore_x_window_at_xy_begin_get( ecore_x_window_cursor_show(Ecore_X_Window win,
Ecore_X_Window begin, Eina_Bool show);
int x, EAPI void
int y); ecore_x_window_defaults_set(Ecore_X_Window win);
EAPI void ecore_x_query_tree_prefetch( EAPI int
Ecore_X_Window window); ecore_x_window_visible_get(Ecore_X_Window win);
EAPI void ecore_x_query_tree_fetch(void); EAPI Ecore_X_Window
EAPI Ecore_X_Window ecore_x_window_parent_get(Ecore_X_Window win); ecore_x_window_shadow_tree_at_xy_with_skip_get(Ecore_X_Window base,
int x,
EAPI void ecore_x_window_background_color_set( int y,
Ecore_X_Window win, Ecore_X_Window *skip,
unsigned int skip_num);
short r, EAPI Ecore_X_Window
unsigned ecore_x_window_shadow_parent_get(Ecore_X_Window root,
short g, Ecore_X_Window win);
unsigned EAPI void
short b); ecore_x_window_shadow_tree_flush(void);
EAPI void ecore_x_window_gravity_set(Ecore_X_Window win, EAPI Ecore_X_Window
Ecore_X_Gravity grav); ecore_x_window_root_get(Ecore_X_Window win);
EAPI void ecore_x_window_pixel_gravity_set( EAPI Ecore_X_Window
Ecore_X_Window win, ecore_x_window_at_xy_get(int x,
Ecore_X_Gravity int y);
grav); EAPI Ecore_X_Window
EAPI void ecore_x_window_pixmap_set(Ecore_X_Window win, ecore_x_window_at_xy_with_skip_get(int x,
Ecore_X_Pixmap pmap); int y,
EAPI void ecore_x_window_area_clear(Ecore_X_Window win, Ecore_X_Window *skip,
int x, int skip_num);
int y, EAPI Ecore_X_Window
int w, ecore_x_window_at_xy_begin_get(Ecore_X_Window begin,
int h); int x,
EAPI void ecore_x_window_area_expose(Ecore_X_Window win, int y);
int x, EAPI Ecore_X_Window
int y, ecore_x_window_parent_get(Ecore_X_Window win);
int w,
int h); EAPI void
EAPI void ecore_x_window_override_set(Ecore_X_Window win, ecore_x_window_background_color_set(Ecore_X_Window win,
Eina_Bool override); unsigned short r,
unsigned short g,
EAPI void ecore_x_window_prop_card32_set( unsigned short b);
Ecore_X_Window win, EAPI void
Ecore_X_Atom atom, ecore_x_window_gravity_set(Ecore_X_Window win,
unsigned int *val, Ecore_X_Gravity grav);
unsigned int num); EAPI void
EAPI void ecore_x_window_prop_card32_get_prefetch( ecore_x_window_pixel_gravity_set(Ecore_X_Window win,
Ecore_X_Window window, Ecore_X_Gravity grav);
Ecore_X_Atom EAPI void
atom); ecore_x_window_pixmap_set(Ecore_X_Window win,
EAPI void ecore_x_window_prop_card32_get_fetch(void); Ecore_X_Pixmap pmap);
EAPI int ecore_x_window_prop_card32_get( EAPI void
Ecore_X_Window win, ecore_x_window_area_clear(Ecore_X_Window win,
Ecore_X_Atom atom, int x,
unsigned int *val, int y,
unsigned int len); int w,
EAPI int ecore_x_window_prop_card32_list_get( int h);
Ecore_X_Window win, EAPI void
Ecore_X_Atom ecore_x_window_area_expose(Ecore_X_Window win,
atom, int x,
unsigned int int y,
**plst); int w,
int h);
EAPI void ecore_x_window_prop_xid_set(Ecore_X_Window win, EAPI void
Ecore_X_Atom atom, ecore_x_window_override_set(Ecore_X_Window win,
Ecore_X_Atom type, Eina_Bool override);
Ecore_X_ID *lst,
unsigned int num); EAPI void
EAPI void ecore_x_window_prop_xid_get_prefetch( ecore_x_window_prop_card32_set(Ecore_X_Window win,
Ecore_X_Window window, Ecore_X_Atom atom,
Ecore_X_Atom unsigned int *val,
atom, unsigned int num);
Ecore_X_Atom EAPI int
type); ecore_x_window_prop_card32_get(Ecore_X_Window win,
EAPI void ecore_x_window_prop_xid_get_fetch(void); Ecore_X_Atom atom,
EAPI int ecore_x_window_prop_xid_get(Ecore_X_Window win, unsigned int *val,
Ecore_X_Atom atom, unsigned int len);
Ecore_X_Atom type, EAPI int
Ecore_X_ID *lst, ecore_x_window_prop_card32_list_get(Ecore_X_Window win,
unsigned int len); Ecore_X_Atom atom,
EAPI int ecore_x_window_prop_xid_list_get( unsigned int **plst);
Ecore_X_Window win,
Ecore_X_Atom EAPI void
atom, ecore_x_window_prop_xid_set(Ecore_X_Window win,
Ecore_X_Atom Ecore_X_Atom atom,
type, Ecore_X_Atom type,
Ecore_X_ID ** Ecore_X_ID *lst,
plst); unsigned int num);
EAPI void ecore_x_window_prop_xid_list_change( EAPI int
Ecore_X_Window win, ecore_x_window_prop_xid_get(Ecore_X_Window win,
Ecore_X_Atom Ecore_X_Atom atom,
atom, Ecore_X_Atom type,
Ecore_X_Atom Ecore_X_ID *lst,
type, unsigned int len);
Ecore_X_ID EAPI int
item, ecore_x_window_prop_xid_list_get(Ecore_X_Window win,
int op); Ecore_X_Atom atom,
EAPI void ecore_x_window_prop_atom_set(Ecore_X_Window win, Ecore_X_Atom type,
Ecore_X_Atom atom, Ecore_X_ID **plst);
Ecore_X_Atom *val, EAPI void
unsigned int num); ecore_x_window_prop_xid_list_change(Ecore_X_Window win,
EAPI void ecore_x_window_prop_atom_get_prefetch( Ecore_X_Atom atom,
Ecore_X_Window window, Ecore_X_Atom type,
Ecore_X_Atom Ecore_X_ID item,
atom); int op);
EAPI void ecore_x_window_prop_atom_get_fetch(void); EAPI void
EAPI int ecore_x_window_prop_atom_get(Ecore_X_Window win, ecore_x_window_prop_atom_set(Ecore_X_Window win,
Ecore_X_Atom atom, Ecore_X_Atom atom,
Ecore_X_Atom *val, Ecore_X_Atom *val,
unsigned int len); unsigned int num);
EAPI int ecore_x_window_prop_atom_list_get( EAPI int
Ecore_X_Window win, ecore_x_window_prop_atom_get(Ecore_X_Window win,
Ecore_X_Atom Ecore_X_Atom atom,
atom, Ecore_X_Atom *val,
Ecore_X_Atom * unsigned int len);
*plst); EAPI int
EAPI void ecore_x_window_prop_atom_list_change( ecore_x_window_prop_atom_list_get(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_Atom atom,
Ecore_X_Atom Ecore_X_Atom **plst);
atom, EAPI void
Ecore_X_Atom ecore_x_window_prop_atom_list_change(Ecore_X_Window win,
item, Ecore_X_Atom atom,
int op); Ecore_X_Atom item,
EAPI void ecore_x_window_prop_window_set( int op);
Ecore_X_Window win, EAPI void
Ecore_X_Atom atom, ecore_x_window_prop_window_set(Ecore_X_Window win,
Ecore_X_Window * Ecore_X_Atom atom,
val, Ecore_X_Window *val,
unsigned int num); unsigned int num);
EAPI void ecore_x_window_prop_window_get_prefetch( EAPI int
Ecore_X_Window window, ecore_x_window_prop_window_get(Ecore_X_Window win,
Ecore_X_Atom Ecore_X_Atom atom,
atom); Ecore_X_Window *val,
EAPI void ecore_x_window_prop_window_get_fetch(void); unsigned int len);
EAPI int ecore_x_window_prop_window_get( EAPI int
Ecore_X_Window win, ecore_x_window_prop_window_list_get(Ecore_X_Window win,
Ecore_X_Atom atom, Ecore_X_Atom atom,
Ecore_X_Window * Ecore_X_Window **plst);
val,
unsigned int len); EAPI Ecore_X_Atom
EAPI int ecore_x_window_prop_window_list_get( ecore_x_window_prop_any_type(void);
Ecore_X_Window win, EAPI void
Ecore_X_Atom ecore_x_window_prop_property_set(Ecore_X_Window win,
atom, Ecore_X_Atom type,
Ecore_X_Window Ecore_X_Atom format,
**plst); int size,
void *data,
EAPI Ecore_X_Atom ecore_x_window_prop_any_type(void); int number);
EAPI void ecore_x_window_prop_property_set( EAPI int
Ecore_X_Window win, ecore_x_window_prop_property_get(Ecore_X_Window win,
Ecore_X_Atom type, Ecore_X_Atom property,
Ecore_X_Atom format, Ecore_X_Atom type,
int size, int size,
void *data, unsigned char **data,
int number); int *num);
EAPI void ecore_x_window_prop_property_get_prefetch( EAPI void
Ecore_X_Window window, ecore_x_window_prop_property_del(Ecore_X_Window win,
Ecore_X_Atom Ecore_X_Atom property);
property, EAPI Ecore_X_Atom *
Ecore_X_Atom ecore_x_window_prop_list(Ecore_X_Window win,
type); int *num_ret);
EAPI void ecore_x_window_prop_property_get_fetch(void); EAPI void
EAPI int ecore_x_window_prop_property_get( ecore_x_window_prop_string_set(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_Atom type,
Ecore_X_Atom property, const char *str);
Ecore_X_Atom type, EAPI char *
int size, ecore_x_window_prop_string_get(Ecore_X_Window win,
unsigned char **data, Ecore_X_Atom type);
int *num); EAPI Eina_Bool
EAPI void ecore_x_window_prop_property_del( ecore_x_window_prop_protocol_isset(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_WM_Protocol protocol);
Ecore_X_Atom property); EAPI Ecore_X_WM_Protocol *
EAPI void ecore_x_window_prop_list_prefetch( ecore_x_window_prop_protocol_list_get(Ecore_X_Window win,
Ecore_X_Window window); int *num_ret);
EAPI void ecore_x_window_prop_list_fetch(void);
EAPI Ecore_X_Atom * ecore_x_window_prop_list(Ecore_X_Window win, EAPI void
int *num_r ecore_x_window_shape_mask_set(Ecore_X_Window win,
et); Ecore_X_Pixmap mask);
EAPI void ecore_x_window_prop_string_set( EAPI void
Ecore_X_Window win, ecore_x_window_shape_window_set(Ecore_X_Window win,
Ecore_X_Atom type, Ecore_X_Window shape_win);
const char *str); EAPI void
EAPI void ecore_x_window_prop_string_get_prefetch( ecore_x_window_shape_window_set_xy(Ecore_X_Window win,
Ecore_X_Window window, Ecore_X_Window shape_win,
Ecore_X_Atom int x,
type); int y);
EAPI void ecore_x_window_prop_string_get_fetch(void); EAPI void
EAPI char * ecore_x_window_prop_string_get( ecore_x_window_shape_rectangle_set(Ecore_X_Window win,
Ecore_X_Window win, int x,
Ecore_X_Atom type); int y,
EAPI Eina_Bool ecore_x_window_prop_protocol_isset( int w,
Ecore_X_Window win, int h);
Ecore_X_WM_Protocol protocol); EAPI void
EAPI Ecore_X_WM_Protocol * ecore_x_window_prop_protocol_list_get( ecore_x_window_shape_rectangles_set(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_Rectangle *rects,
int *num_ret); int num);
EAPI void
EAPI void ecore_x_window_shape_mask_set(Ecore_X_Window ecore_x_window_shape_input_rectangle_set(Ecore_X_Window win,
win, int x,
Ecore_X_Pixmap int y,
mask); int w,
EAPI void ecore_x_window_shape_window_set( int h);
Ecore_X_Window win, EAPI void
Ecore_X_Window shape_win); ecore_x_window_shape_input_rectangles_set(Ecore_X_Window win,
EAPI void ecore_x_window_shape_window_set_xy( Ecore_X_Rectangle *rects,
Ecore_X_Window win, int num);
Ecore_X_Window shape_win, EAPI void
int x, ecore_x_window_shape_input_rectangle_add(Ecore_X_Window win,
int y); int x,
EAPI void ecore_x_window_shape_rectangle_set( int y,
Ecore_X_Window win, int w,
int x, int h);
int y, EAPI void
int w, ecore_x_window_shape_rectangle_subtract(Ecore_X_Window win,
int h); int x,
EAPI void ecore_x_window_shape_rectangles_set( int y,
Ecore_X_Window win, int w,
Ecore_X_Rectangle *rects, int h);
int num); EAPI void
EAPI void ecore_x_window_shape_window_add( ecore_x_window_shape_input_rectangle_subtract(Ecore_X_Window win,
Ecore_X_Window win, int x,
Ecore_X_Window shape_win); int y,
EAPI void ecore_x_window_shape_window_add_xy( int w,
Ecore_X_Window win, int h);
Ecore_X_Window shape_win, EAPI void
int x, ecore_x_window_shape_input_window_set_xy(Ecore_X_Window win,
int y); Ecore_X_Window shape_win,
EAPI void ecore_x_window_shape_rectangle_add( int x,
Ecore_X_Window win, int y);
int x, EAPI void
int y, ecore_x_window_shape_input_window_set(Ecore_X_Window win,
int w, Ecore_X_Window shape_win);
int h); EAPI void
EAPI void ecore_x_window_shape_rectangle_clip( ecore_x_window_shape_window_add(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_Window shape_win);
int x, EAPI void
int y, ecore_x_window_shape_window_add_xy(Ecore_X_Window win,
int w, Ecore_X_Window shape_win,
int h); int x,
EAPI void ecore_x_window_shape_rectangles_add( int y);
Ecore_X_Window win, EAPI void
Ecore_X_Rectangle *rects, ecore_x_window_shape_input_window_add_xy(Ecore_X_Window win,
int num); Ecore_X_Window shape_win,
EAPI void ecore_x_window_shape_rectangles_get_prefetch( int x,
Ecore_X_Window window); int y);
EAPI void ecore_x_window_shape_rectangles_get_fetch(voi EAPI void
d); ecore_x_window_shape_rectangle_add(Ecore_X_Window win,
EAPI Ecore_X_Rectangle * ecore_x_window_shape_rectangles_get( int x,
Ecore_X_Window win, int y,
int *num_ret); int w,
EAPI void ecore_x_window_shape_events_select( int h);
Ecore_X_Window win, EAPI void
Eina_Bool on); ecore_x_window_shape_rectangle_clip(Ecore_X_Window win,
EAPI void ecore_x_window_shape_input_mask_set( int x,
Ecore_X_Window win, int y,
Ecore_X_Pixmap mask); int w,
int h);
EAPI Ecore_X_Pixmap ecore_x_pixmap_new(Ecore_X_Window win, EAPI void
int w, ecore_x_window_shape_input_rectangle_clip(Ecore_X_Window win,
int h, int x,
int dep); int y,
EAPI void ecore_x_pixmap_free(Ecore_X_Pixmap pmap); int w,
EAPI void ecore_x_pixmap_paste(Ecore_X_Pixmap pmap, int h);
Ecore_X_Drawable dest, EAPI void
Ecore_X_GC gc, ecore_x_window_shape_rectangles_add(Ecore_X_Window win,
int sx, Ecore_X_Rectangle *rects,
int sy, int num);
int w, EAPI void
int h, ecore_x_window_shape_input_rectangles_add(Ecore_X_Window win,
int dx, Ecore_X_Rectangle *rects,
int dy); int num);
EAPI void ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap, EAPI Ecore_X_Rectangle *
int *x, ecore_x_window_shape_rectangles_get(Ecore_X_Window win,
int *y, int *num_ret);
int *w, EAPI Ecore_X_Rectangle *
int *h); ecore_x_window_shape_input_rectangles_get(Ecore_X_Window win,
EAPI int ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap); int *num_ret);
EAPI void
EAPI Ecore_X_GC ecore_x_gc_new(Ecore_X_Drawable draw, ecore_x_window_shape_events_select(Ecore_X_Window win,
Ecore_X_GC_Value_Mask value_mask, Eina_Bool on);
const unsigned int *value_list); EAPI void
EAPI void ecore_x_gc_free(Ecore_X_GC gc); ecore_x_window_shape_input_mask_set(Ecore_X_Window win,
Ecore_X_Pixmap mask);
EAPI Eina_Bool ecore_x_client_message32_send(Ecore_X_Window win,
Ecore_X_Atom type, EAPI Ecore_X_Pixmap
Ecore_X_Event_Mask mask, ecore_x_pixmap_new(Ecore_X_Window win,
long d0, int w,
long d1, int h,
long d2, int dep);
long d3, EAPI void
long d4); ecore_x_pixmap_free(Ecore_X_Pixmap pmap);
EAPI Eina_Bool ecore_x_client_message8_send(Ecore_X_Window win, EAPI void
Ecore_X_Atom type, ecore_x_pixmap_paste(Ecore_X_Pixmap pmap,
const void *data, Ecore_X_Drawable dest,
int len); Ecore_X_GC gc,
EAPI Eina_Bool ecore_x_mouse_move_send(Ecore_X_Window win, int sx,
int x, int sy,
int y); int w,
EAPI Eina_Bool ecore_x_mouse_down_send(Ecore_X_Window win, int h,
int x, int dx,
int y, int dy);
int b); EAPI void
EAPI Eina_Bool ecore_x_mouse_up_send(Ecore_X_Window win, ecore_x_pixmap_geometry_get(Ecore_X_Pixmap pmap,
int x, int *x,
int y, int *y,
int b); int *w,
int *h);
EAPI void ecore_x_drawable_geometry_get_prefetch( EAPI int
Ecore_X_Drawable drawable); ecore_x_pixmap_depth_get(Ecore_X_Pixmap pmap);
EAPI void ecore_x_drawable_geometry_get_fetch(void);
EAPI void ecore_x_drawable_geometry_get(Ecore_X_Drawable d, EAPI Ecore_X_GC
int *x, ecore_x_gc_new(Ecore_X_Drawable draw,
int *y, Ecore_X_GC_Value_Mask value_mask,
int *w, const unsigned int *value_list);
int *h); EAPI void
EAPI int ecore_x_drawable_border_width_get( ecore_x_gc_free(Ecore_X_GC gc);
Ecore_X_Drawable d); EAPI void
EAPI int ecore_x_drawable_depth_get(Ecore_X_Drawable d); ecore_x_gc_foreground_set(Ecore_X_GC gc,
EAPI void ecore_x_drawable_rectangle_fill( unsigned long foreground);
Ecore_X_Drawable d, EAPI void
Ecore_X_GC gc, ecore_x_gc_background_set(Ecore_X_GC gc,
int x, unsigned long background);
int y,
int width, EAPI Eina_Bool
int height); ecore_x_client_message32_send(Ecore_X_Window win,
Ecore_X_Atom type,
EAPI Eina_Bool ecore_x_cursor_color_supported_get(void Ecore_X_Event_Mask mask,
); long d0,
EAPI Ecore_X_Cursor ecore_x_cursor_new(Ecore_X_Window win, long d1,
int *pixel long d2,
s, long d3,
int w, long d4);
int h, EAPI Eina_Bool
int hot_x ecore_x_client_message8_send(Ecore_X_Window win,
, Ecore_X_Atom type,
int hot_y const void *data,
); int len);
EAPI void ecore_x_cursor_free(Ecore_X_Cursor c); EAPI Eina_Bool
EAPI Ecore_X_Cursor ecore_x_cursor_shape_get(int shape); ecore_x_mouse_move_send(Ecore_X_Window win,
EAPI void ecore_x_cursor_size_set(int size); int x,
EAPI int ecore_x_cursor_size_get(void); int y);
EAPI Eina_Bool
ecore_x_mouse_down_send(Ecore_X_Window win,
int x,
int y,
int b);
EAPI Eina_Bool
ecore_x_mouse_up_send(Ecore_X_Window win,
int x,
int y,
int b);
EAPI void
ecore_x_drawable_geometry_get(Ecore_X_Drawable d,
int *x,
int *y,
int *w,
int *h);
EAPI int
ecore_x_drawable_border_width_get(Ecore_X_Drawable d);
EAPI int
ecore_x_drawable_depth_get(Ecore_X_Drawable d);
EAPI void
ecore_x_drawable_rectangle_fill(Ecore_X_Drawable d,
Ecore_X_GC gc,
int x,
int y,
int width,
int height);
EAPI Eina_Bool
ecore_x_cursor_color_supported_get(void);
EAPI Ecore_X_Cursor
ecore_x_cursor_new(Ecore_X_Window win,
int *pixels,
int w,
int h,
int hot_x,
int hot_y);
EAPI void
ecore_x_cursor_free(Ecore_X_Cursor c);
EAPI Ecore_X_Cursor
ecore_x_cursor_shape_get(int shape);
EAPI void
ecore_x_cursor_size_set(int size);
EAPI int
ecore_x_cursor_size_get(void);
/* FIXME: these funcs need categorising */ /* FIXME: these funcs need categorising */
EAPI Ecore_X_Window * ecore_x_window_root_list(int *num_ret); EAPI Ecore_X_Window *
EAPI Ecore_X_Window ecore_x_window_root_first_get(void); ecore_x_window_root_list(int *num_ret);
EAPI Eina_Bool ecore_x_window_manage(Ecore_X_Window wi EAPI Ecore_X_Window
n); ecore_x_window_root_first_get(void);
EAPI void ecore_x_window_container_manage( EAPI Eina_Bool
Ecore_X_Window win); ecore_x_window_manage(Ecore_X_Window win);
EAPI void ecore_x_window_client_manage(Ecore_X_Wi EAPI void
ndow win); ecore_x_window_container_manage(Ecore_X_Window win);
EAPI void ecore_x_window_sniff(Ecore_X_Window win EAPI void
); ecore_x_window_client_manage(Ecore_X_Window win);
EAPI void ecore_x_window_client_sniff(Ecore_X_Win EAPI void
dow win); ecore_x_window_sniff(Ecore_X_Window win);
EAPI void ecore_x_atom_get_prefetch(const char *n EAPI void
ame); ecore_x_window_client_sniff(Ecore_X_Window win);
EAPI void ecore_x_atom_get_fetch(void);
EAPI Ecore_X_Atom ecore_x_atom_get(const char *name); EAPI Ecore_X_Atom
EAPI void ecore_x_atoms_get(const char **names, ecore_x_atom_get(const char *name);
int num, EAPI void
Ecore_X_Atom *atoms); ecore_x_atoms_get(const char **names,
EAPI void ecore_x_get_atom_name_prefetch(Ecore_X_ int num,
Atom atom); Ecore_X_Atom *atoms);
EAPI void ecore_x_get_atom_name_fetch(void); EAPI char *
EAPI char * ecore_x_atom_name_get(Ecore_X_Atom atom ecore_x_atom_name_get(Ecore_X_Atom atom);
);
EAPI void
EAPI void ecore_x_icccm_init(void); ecore_x_icccm_init(void);
EAPI void ecore_x_icccm_state_set( EAPI void
Ecore_X_Window win, ecore_x_icccm_state_set(Ecore_X_Window win,
Ecore_X_Window_State_Hint Ecore_X_Window_State_Hint state);
state); EAPI Ecore_X_Window_State_Hint
EAPI Ecore_X_Window_State_Hint ecore_x_icccm_state_get(Ecore_X_Window ecore_x_icccm_state_get(Ecore_X_Window win);
win); EAPI void
EAPI void ecore_x_icccm_delete_window_send( ecore_x_icccm_delete_window_send(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_Time t);
Ecore_X_Time t); EAPI void
EAPI void ecore_x_icccm_take_focus_send(Ecore_X_W ecore_x_icccm_take_focus_send(Ecore_X_Window win,
indow win, Ecore_X_Time t);
Ecore_X_T EAPI void
ime t); ecore_x_icccm_save_yourself_send(Ecore_X_Window win,
EAPI void ecore_x_icccm_save_yourself_send( Ecore_X_Time t);
Ecore_X_Window win, EAPI void
Ecore_X_Time t); ecore_x_icccm_move_resize_send(Ecore_X_Window win,
EAPI void ecore_x_icccm_move_resize_send( int x,
Ecore_X_Window win, int y,
int x, int w,
int y, int h);
int w, EAPI void
int h); ecore_x_icccm_hints_set(Ecore_X_Window win,
EAPI void ecore_x_icccm_hints_set( Eina_Bool accepts_focus,
Ecore_X_Window win, Ecore_X_Window_State_Hint initial_state,
Eina_Bool accepts_focus, Ecore_X_Pixmap icon_pixmap,
Ecore_X_Window_State_Hint Ecore_X_Pixmap icon_mask,
initial_state, Ecore_X_Window icon_window,
Ecore_X_Pixmap Ecore_X_Window window_group,
icon_pixmap, Eina_Bool is_urgent);
Ecore_X_Pixmap icon_mask, EAPI Eina_Bool
Ecore_X_Window ecore_x_icccm_hints_get(Ecore_X_Window win,
icon_window, Eina_Bool *accepts_focus,
Ecore_X_Window Ecore_X_Window_State_Hint *initial_state,
window_group, Ecore_X_Pixmap *icon_pixmap,
Eina_Bool is_urgent); Ecore_X_Pixmap *icon_mask,
EAPI Eina_Bool ecore_x_icccm_hints_get(Ecore_X_Window win, Ecore_X_Window *icon_window,
Eina_Bool *accepts_fo Ecore_X_Window *window_group,
cus, Eina_Bool *is_urgent);
Ecore_X_Window_State_Hint *initial_st EAPI void
ate, ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win,
Ecore_X_Pixmap *icon_pixma Eina_Bool request_pos,
p, Ecore_X_Gravity gravity,
Ecore_X_Pixmap *icon_mask, int min_w,
Ecore_X_Window *icon_windo int min_h,
w, int max_w,
Ecore_X_Window *window_gro int max_h,
up, int base_w,
Eina_Bool *is_urgent) int base_h,
; int step_x,
EAPI void ecore_x_icccm_size_pos_hints_set(Ecore_X_Window win, int step_y,
Eina_Bool request_pos, double min_aspect,
Ecore_X_Gravity gravity, double max_aspect);
int min_w, int min_h, EAPI Eina_Bool
int max_w, int max_h, ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win,
int base_w, int base_h, Eina_Bool *request_pos,
int step_x, int step_y, Ecore_X_Gravity *gravity,
double min_aspect, int *min_w,
double max_aspect); int *min_h,
EAPI Eina_Bool ecore_x_icccm_size_pos_hints_get(Ecore_X_Window win, int *max_w,
Eina_Bool *request_pos, int *max_h,
Ecore_X_Gravity *gravity, int *base_w,
int *min_w, int *min_h, int *base_h,
int *max_w, int *max_h, int *step_x,
int *base_w, int *base_h, int *step_y,
int *step_x, int *step_y, double *min_aspect,
double *min_aspect, double *max_aspect);
double *max_aspect); EAPI void
EAPI void ecore_x_icccm_title_set(Ecore_X_Window win, const ecore_x_icccm_title_set(Ecore_X_Window win,
char *t); const char *t);
EAPI char * ecore_x_icccm_title_get(Ecore_X_Window win); EAPI char *
EAPI void ecore_x_icccm_protocol_atoms_set(Ecore_X_Window wi ecore_x_icccm_title_get(Ecore_X_Window win);
n, EAPI void
Ecore_X_Atom *pr ecore_x_icccm_protocol_atoms_set(Ecore_X_Window win,
otos, Ecore_X_Atom *protos,
int nu int num);
m); EAPI void
EAPI void ecore_x_icccm_protocol_set(Ecore_X_Window win ecore_x_icccm_protocol_set(Ecore_X_Window win,
, Ecore_X_WM_Protocol protocol,
Ecore_X_WM_Protocol pro Eina_Bool on);
tocol, EAPI Eina_Bool
Eina_Bool on) ecore_x_icccm_protocol_isset(Ecore_X_Window win,
; Ecore_X_WM_Protocol protocol);
EAPI Eina_Bool ecore_x_icccm_protocol_isset(Ecore_X_Window w EAPI void
in, ecore_x_icccm_name_class_set(Ecore_X_Window win,
Ecore_X_WM_Protocol p const char *n,
rotocol); const char *c);
EAPI void ecore_x_icccm_name_class_set(Ecore_X_Window win, EAPI void
const char *n, ecore_x_icccm_name_class_get(Ecore_X_Window win,
const char *c); char **n,
EAPI void ecore_x_icccm_name_class_get(Ecore_X_Window win, char **c);
char **n, EAPI char *
char **c); ecore_x_icccm_client_machine_get(Ecore_X_Window win);
EAPI char * ecore_x_icccm_client_machine_get(Ecore_X_Window wi EAPI void
n); ecore_x_icccm_command_set(Ecore_X_Window win,
EAPI void ecore_x_icccm_command_set(Ecore_X_Window win, int argc,
int argc, char **argv);
char **argv); EAPI void
EAPI void ecore_x_icccm_command_get(Ecore_X_Window win, ecore_x_icccm_command_get(Ecore_X_Window win,
int *argc, int *argc,
char ***argv); char ***argv);
EAPI char * ecore_x_icccm_icon_name_get(Ecore_X_Window win); EAPI char *
EAPI void ecore_x_icccm_icon_name_set(Ecore_X_Window win, ecore_x_icccm_icon_name_get(Ecore_X_Window win);
const char *t); EAPI void
EAPI void ecore_x_icccm_colormap_window_set(Ecore_X_Window w ecore_x_icccm_icon_name_set(Ecore_X_Window win,
in, const char *t);
Ecore_X_Window s EAPI void
ubwin); ecore_x_icccm_colormap_window_set(Ecore_X_Window win,
EAPI void ecore_x_icccm_colormap_window_unset(Ecore_X_Window Ecore_X_Window subwin);
win, EAPI void
Ecore_X_Window ecore_x_icccm_colormap_window_unset(Ecore_X_Window win,
subwin); Ecore_X_Window subwin);
EAPI void ecore_x_icccm_transient_for_set(Ecore_X_Window win EAPI void
, ecore_x_icccm_transient_for_set(Ecore_X_Window win,
Ecore_X_Window for Ecore_X_Window forwin);
win); EAPI void
EAPI void ecore_x_icccm_transient_for_unset(Ecore_X_Window w ecore_x_icccm_transient_for_unset(Ecore_X_Window win);
in); EAPI Ecore_X_Window
EAPI Ecore_X_Window ecore_x_icccm_transient_for_get(Ecore_X_Window win ecore_x_icccm_transient_for_get(Ecore_X_Window win);
); EAPI void
EAPI void ecore_x_icccm_window_role_set(Ecore_X_Window win, ecore_x_icccm_window_role_set(Ecore_X_Window win,
const char *role) const char *role);
; EAPI char *
EAPI char * ecore_x_icccm_window_role_get(Ecore_X_Window win); ecore_x_icccm_window_role_get(Ecore_X_Window win);
EAPI void ecore_x_icccm_client_leader_set(Ecore_X_Window win EAPI void
, ecore_x_icccm_client_leader_set(Ecore_X_Window win,
Ecore_X_Window l); Ecore_X_Window l);
EAPI Ecore_X_Window ecore_x_icccm_client_leader_get(Ecore_X_Window win EAPI Ecore_X_Window
); ecore_x_icccm_client_leader_get(Ecore_X_Window win);
EAPI void ecore_x_icccm_iconic_request_send(Ecore_X_Window w EAPI void
in, ecore_x_icccm_iconic_request_send(Ecore_X_Window win,
Ecore_X_Window r Ecore_X_Window root);
oot);
typedef enum _Ecore_X_MWM_Hint_Func typedef enum _Ecore_X_MWM_Hint_Func
{ {
ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0), ECORE_X_MWM_HINT_FUNC_ALL = (1 << 0),
ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1), ECORE_X_MWM_HINT_FUNC_RESIZE = (1 << 1),
ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2), ECORE_X_MWM_HINT_FUNC_MOVE = (1 << 2),
ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3), ECORE_X_MWM_HINT_FUNC_MINIMIZE = (1 << 3),
ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4), ECORE_X_MWM_HINT_FUNC_MAXIMIZE = (1 << 4),
ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5) ECORE_X_MWM_HINT_FUNC_CLOSE = (1 << 5)
} Ecore_X_MWM_Hint_Func; } Ecore_X_MWM_Hint_Func;
skipping to change at line 1763 skipping to change at line 2003
} Ecore_X_MWM_Hint_Decor; } Ecore_X_MWM_Hint_Decor;
typedef enum _Ecore_X_MWM_Hint_Input typedef enum _Ecore_X_MWM_Hint_Input
{ {
ECORE_X_MWM_HINT_INPUT_MODELESS = 0, ECORE_X_MWM_HINT_INPUT_MODELESS = 0,
ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1, ECORE_X_MWM_HINT_INPUT_PRIMARY_APPLICATION_MODAL = 1,
ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2, ECORE_X_MWM_HINT_INPUT_SYSTEM_MODAL = 2,
ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3 ECORE_X_MWM_HINT_INPUT_FULL_APPLICATION_MODAL = 3
} Ecore_X_MWM_Hint_Input; } Ecore_X_MWM_Hint_Input;
EAPI void ecore_x_mwm_hints_get_prefetch( EAPI Eina_Bool
Ecore_X_Window window); ecore_x_mwm_hints_get(Ecore_X_Window win,
EAPI void ecore_x_mwm_hints_get_fetch(void); Ecore_X_MWM_Hint_Func *fhint,
EAPI Eina_Bool ecore_x_mwm_hints_get( Ecore_X_MWM_Hint_Decor *dhint,
Ecore_X_Window win, Ecore_X_MWM_Hint_Input *ihint);
Ecore_X_MWM_Hint_Func EAPI void
*fhint, ecore_x_mwm_borderless_set(Ecore_X_Window win,
Ecore_X_MWM_Hint_Decor Eina_Bool borderless);
*dhint,
Ecore_X_MWM_Hint_Input
*ihint);
EAPI void ecore_x_mwm_borderless_set(
Ecore_X_Window win,
Eina_Bool borderless);
/* netwm */ /* netwm */
EAPI void ecore_x_netwm_init(void); EAPI void
EAPI void ecore_x_netwm_shutdown(void); ecore_x_netwm_init(void);
EAPI void ecore_x_netwm_wm_identify( EAPI void
Ecore_X_Window root, ecore_x_netwm_shutdown(void);
Ecore_X_Window check, EAPI void
const char *wm_name); ecore_x_netwm_wm_identify(Ecore_X_Window root,
EAPI void ecore_x_netwm_supported_set( Ecore_X_Window check,
Ecore_X_Window root, const char *wm_name);
Ecore_X_Atom *supported, EAPI void
int num); ecore_x_netwm_supported_set(Ecore_X_Window root,
EAPI void ecore_x_netwm_supported_get_prefetch( Ecore_X_Atom *supported,
Ecore_X_Window root); int num);
EAPI void ecore_x_netwm_supported_get_fetch(void); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_netwm_supported_get( ecore_x_netwm_supported_get(Ecore_X_Window root,
Ecore_X_Window root, Ecore_X_Atom **supported,
Ecore_X_Atom **supported, int *num);
int *num); EAPI void
EAPI void ecore_x_netwm_desk_count_set( ecore_x_netwm_desk_count_set(Ecore_X_Window root,
Ecore_X_Window root, unsigned int n_desks);
unsigned int n_desks); EAPI void
EAPI void ecore_x_netwm_desk_roots_set( ecore_x_netwm_desk_roots_set(Ecore_X_Window root,
Ecore_X_Window root, Ecore_X_Window *vroots,
Ecore_X_Window *vroots, unsigned int n_desks);
unsigned int n_desks); EAPI void
EAPI void ecore_x_netwm_desk_names_set( ecore_x_netwm_desk_names_set(Ecore_X_Window root,
Ecore_X_Window root, const char **names,
const char **names, unsigned int n_desks);
unsigned int n_desks); EAPI void
EAPI void ecore_x_netwm_desk_size_set( ecore_x_netwm_desk_size_set(Ecore_X_Window root,
Ecore_X_Window root, unsigned int width,
unsigned int width, unsigned int height);
unsigned int height); EAPI void
EAPI void ecore_x_netwm_desk_workareas_set( ecore_x_netwm_desk_workareas_set(Ecore_X_Window root,
Ecore_X_Window root, unsigned int *areas,
unsigned int *areas, unsigned int n_desks);
unsigned int n_desks); EAPI unsigned int *
EAPI void ecore_x_netwm_desk_current_set( ecore_x_netwm_desk_workareas_get(Ecore_X_Window root,
Ecore_X_Window root, unsigned int *n_desks);
unsigned int desk); EAPI void
EAPI void ecore_x_netwm_desk_viewports_set( ecore_x_netwm_desk_current_set(Ecore_X_Window root,
Ecore_X_Window root, unsigned int desk);
unsigned int *origins, EAPI void
unsigned int n_desks); ecore_x_netwm_desk_viewports_set(Ecore_X_Window root,
EAPI void ecore_x_netwm_desk_layout_set( unsigned int *origins,
Ecore_X_Window root, unsigned int n_desks);
int orientation, EAPI void
int columns, ecore_x_netwm_desk_layout_set(Ecore_X_Window root,
int rows, int orientation,
int starting_corner); int columns,
EAPI void ecore_x_netwm_showing_desktop_set( int rows,
Ecore_X_Window root, int starting_corner);
Eina_Bool on); EAPI void
EAPI void ecore_x_netwm_client_list_set( ecore_x_netwm_showing_desktop_set(Ecore_X_Window root,
Ecore_X_Window root, Eina_Bool on);
Ecore_X_Window *p_clients, EAPI void
unsigned int n_clients); ecore_x_netwm_client_list_set(Ecore_X_Window root,
EAPI void ecore_x_netwm_client_list_stacking_set( Ecore_X_Window *p_clients,
Ecore_X_Window root, unsigned int n_clients);
Ecore_X_Window *p_clients, EAPI void
unsigned int n_clients); ecore_x_netwm_client_list_stacking_set(Ecore_X_Window root,
EAPI void ecore_x_netwm_client_active_set( Ecore_X_Window *p_clients,
Ecore_X_Window root, unsigned int n_clients);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_netwm_client_active_request( ecore_x_netwm_client_active_set(Ecore_X_Window root,
Ecore_X_Window root, Ecore_X_Window win);
Ecore_X_Window win, EAPI void
int type, ecore_x_netwm_client_active_request(Ecore_X_Window root,
Ecore_X_Window current_win); Ecore_X_Window win,
EAPI void ecore_x_netwm_name_set(Ecore_X_Window win, int type,
const char *name); Ecore_X_Window current_win);
EAPI void ecore_x_netwm_name_get_prefetch( EAPI void
Ecore_X_Window window); ecore_x_netwm_name_set(Ecore_X_Window win,
EAPI void ecore_x_netwm_name_get_fetch(void); const char *name);
EAPI int ecore_x_netwm_name_get(Ecore_X_Window win, EAPI int
char **name); ecore_x_netwm_name_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_startup_id_set( char **name);
Ecore_X_Window win, EAPI void
const char *id); ecore_x_netwm_startup_id_set(Ecore_X_Window win,
EAPI void ecore_x_netwm_startup_id_get_prefetch( const char *id);
Ecore_X_Window window); EAPI int
EAPI void ecore_x_netwm_startup_id_get_fetch(void); ecore_x_netwm_startup_id_get(Ecore_X_Window win,
EAPI int ecore_x_netwm_startup_id_get( char **id);
Ecore_X_Window win, EAPI void
char **id); ecore_x_netwm_visible_name_set(Ecore_X_Window win,
EAPI void ecore_x_netwm_visible_name_set( const char *name);
Ecore_X_Window win, EAPI int
const char *name); ecore_x_netwm_visible_name_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_visible_name_get_prefetch( char **name);
Ecore_X_Window window); EAPI void
EAPI void ecore_x_netwm_visible_name_get_fetch(void); ecore_x_netwm_icon_name_set(Ecore_X_Window win,
EAPI int ecore_x_netwm_visible_name_get( const char *name);
Ecore_X_Window win, EAPI int
char **name); ecore_x_netwm_icon_name_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_icon_name_set( char **name);
Ecore_X_Window win, EAPI void
const char *name); ecore_x_netwm_visible_icon_name_set(Ecore_X_Window win,
EAPI void ecore_x_netwm_icon_name_get_prefetch( const char *name);
Ecore_X_Window window); EAPI int
EAPI void ecore_x_netwm_icon_name_get_fetch(void); ecore_x_netwm_visible_icon_name_get(Ecore_X_Window win,
EAPI int ecore_x_netwm_icon_name_get( char **name);
Ecore_X_Window win, EAPI void
char **name); ecore_x_netwm_desktop_set(Ecore_X_Window win,
EAPI void ecore_x_netwm_visible_icon_name_set( unsigned int desk);
Ecore_X_Window win, EAPI Eina_Bool
const char *name); ecore_x_netwm_desktop_get(Ecore_X_Window win,
EAPI void unsigned int *desk);
ecore_x_netwm_visible_icon_name_get_prefetch(Ecore_X_Window EAPI void
window); ecore_x_netwm_strut_set(Ecore_X_Window win,
EAPI void ecore_x_netwm_visible_icon_name_get_fetch( int left,
void); int right,
EAPI int ecore_x_netwm_visible_icon_name_get( int top,
Ecore_X_Window win, int bottom);
char **name); EAPI Eina_Bool
EAPI void ecore_x_netwm_desktop_set( ecore_x_netwm_strut_get(Ecore_X_Window win,
Ecore_X_Window win, int *left,
unsigned int desk); int *right,
EAPI void ecore_x_netwm_desktop_get_prefetch( int *top,
Ecore_X_Window window); int *bottom);
EAPI void ecore_x_netwm_desktop_get_fetch(void); EAPI void
EAPI Eina_Bool ecore_x_netwm_desktop_get( ecore_x_netwm_strut_partial_set(Ecore_X_Window win,
Ecore_X_Window win, int left,
unsigned int *desk); int right,
EAPI void ecore_x_netwm_strut_set(Ecore_X_Window win, int top,
int left, int bottom,
int right, int left_start_y,
int top, int left_end_y,
int bottom); int right_start_y,
EAPI void ecore_x_netwm_strut_get_prefetch( int right_end_y,
Ecore_X_Window window); int top_start_x,
EAPI void ecore_x_netwm_strut_get_fetch(void); int top_end_x,
EAPI Eina_Bool ecore_x_netwm_strut_get(Ecore_X_Window win, int bottom_start_x,
int *left, int bottom_end_x);
int *right, EAPI Eina_Bool
int *top, ecore_x_netwm_strut_partial_get(Ecore_X_Window win,
int *bottom); int *left,
EAPI void ecore_x_netwm_strut_partial_set( int *right,
Ecore_X_Window win, int *top,
int left, int *bottom,
int right, int *left_start_y,
int top, int *left_end_y,
int bottom, int *right_start_y,
int left_start_y, int *right_end_y,
int left_end_y, int *top_start_x,
int right_start_y, int *top_end_x,
int right_end_y, int *bottom_start_x,
int top_start_x, int *bottom_end_x);
int top_end_x,
int bottom_start_x, EAPI Eina_Bool
int bottom_end_x); ecore_x_netwm_icons_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_strut_partial_get_prefetch( Ecore_X_Icon **icon,
Ecore_X_Window window); int *num);
EAPI void ecore_x_netwm_strut_partial_get_fetch(void); EAPI void
EAPI Eina_Bool ecore_x_netwm_strut_partial_get( ecore_x_netwm_icon_geometry_set(Ecore_X_Window win,
Ecore_X_Window win, int x,
int *left, int y,
int *right, int width,
int *top, int height);
int *bottom, EAPI Eina_Bool
int *left_start_y, ecore_x_netwm_icon_geometry_get(Ecore_X_Window win,
int *left_end_y, int *x,
int *right_start_y, int *y,
int *right_end_y, int *width,
int *top_start_x, int *height);
int *top_end_x, EAPI void
int *bottom_start_x, ecore_x_netwm_pid_set(Ecore_X_Window win,
int *bottom_end_x); int pid);
EAPI void ecore_x_netwm_icons_get_prefetch( EAPI Eina_Bool
Ecore_X_Window window); ecore_x_netwm_pid_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_icons_get_fetch(voi int *pid);
d); EAPI void
EAPI Eina_Bool ecore_x_netwm_icons_get(Ecore_X_W ecore_x_netwm_handled_icons_set(Ecore_X_Window win);
indow win, EAPI Eina_Bool
Eco ecore_x_netwm_handled_icons_get(Ecore_X_Window win);
re_X_Icon **icon, EAPI void
int ecore_x_netwm_user_time_set(Ecore_X_Window win,
*num); unsigned int time);
EAPI void ecore_x_netwm_icon_geometry_set( EAPI Eina_Bool
Ecore_X_Window win, ecore_x_netwm_user_time_get(Ecore_X_Window win,
int x, unsigned int *time);
int y, EAPI void
int width, ecore_x_netwm_window_state_set(Ecore_X_Window win,
int height); Ecore_X_Window_State *state,
EAPI void ecore_x_netwm_icon_geometry_get_p unsigned int num);
refetch( EAPI Eina_Bool
Ecore_X_Window window); ecore_x_netwm_window_state_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_icon_geometry_get_f Ecore_X_Window_State **state,
etch(void); unsigned int *num);
EAPI Eina_Bool ecore_x_netwm_icon_geometry_get( EAPI void
Ecore_X_Window win, ecore_x_netwm_window_type_set(Ecore_X_Window win,
int *x, Ecore_X_Window_Type type);
int *y, EAPI Eina_Bool
int *width, ecore_x_netwm_window_type_get(Ecore_X_Window win,
int *height); Ecore_X_Window_Type *type);
EAPI void ecore_x_netwm_pid_set(Ecore_X_Win EAPI int
dow win, ecore_x_netwm_window_types_get(Ecore_X_Window win,
int Ecore_X_Window_Type **types);
pid); EAPI Eina_Bool
EAPI void ecore_x_netwm_pid_get_prefetch( ecore_x_netwm_allowed_action_isset(Ecore_X_Window win,
Ecore_X_Window window); Ecore_X_Action action);
EAPI void ecore_x_netwm_pid_get_fetch(void) EAPI void
; ecore_x_netwm_allowed_action_set(Ecore_X_Window win,
EAPI Eina_Bool ecore_x_netwm_pid_get(Ecore_X_Win Ecore_X_Action *action,
dow win, unsigned int num);
int EAPI Eina_Bool
*pid); ecore_x_netwm_allowed_action_get(Ecore_X_Window win,
EAPI void ecore_x_netwm_handled_icons_set( Ecore_X_Action **action,
Ecore_X_Window win); unsigned int *num);
EAPI void ecore_x_netwm_handled_icons_get_p EAPI void
refetch( ecore_x_netwm_opacity_set(Ecore_X_Window win,
Ecore_X_Window window); unsigned int opacity);
EAPI void ecore_x_netwm_handled_icons_get_f EAPI Eina_Bool
etch(void); ecore_x_netwm_opacity_get(Ecore_X_Window win,
EAPI Eina_Bool ecore_x_netwm_handled_icons_get( unsigned int *opacity);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_netwm_user_time_set( ecore_x_netwm_frame_size_set(Ecore_X_Window win,
Ecore_X_Window win, int fl,
unsigned int time); int fr,
EAPI void ecore_x_netwm_user_time_get_prefe int ft,
tch( int fb);
Ecore_X_Window window); EAPI Eina_Bool
EAPI void ecore_x_netwm_user_time_get_fetch ecore_x_netwm_frame_size_get(Ecore_X_Window win,
(void); int *fl,
EAPI Eina_Bool ecore_x_netwm_user_time_get( int *fr,
Ecore_X_Window win, int *ft,
unsigned int *time); int *fb);
EAPI void ecore_x_netwm_window_state_set( EAPI Eina_Bool
Ecore_X_Window win, ecore_x_netwm_sync_counter_get(Ecore_X_Window win,
Ecore_X_Window_State *state, Ecore_X_Sync_Counter *counter);
unsigned int num); EAPI void
EAPI void ecore_x_netwm_window_state_get_pr ecore_x_netwm_ping_send(Ecore_X_Window win);
efetch( EAPI void
Ecore_X_Window window); ecore_x_netwm_sync_request_send(Ecore_X_Window win,
EAPI void ecore_x_netwm_window_state_get_fe unsigned int serial);
tch(void); EAPI void
EAPI Eina_Bool ecore_x_netwm_window_state_get( ecore_x_netwm_state_request_send(Ecore_X_Window win,
Ecore_X_Window win, Ecore_X_Window root,
Ecore_X_Window_State **state, Ecore_X_Window_State s1,
unsigned int *num); Ecore_X_Window_State s2,
EAPI void ecore_x_netwm_window_type_set( Eina_Bool set);
Ecore_X_Window win, EAPI void
Ecore_X_Window_Type type); ecore_x_netwm_desktop_request_send(Ecore_X_Window win,
EAPI void ecore_x_netwm_window_type_get_pre Ecore_X_Window root,
fetch( unsigned int desktop);
Ecore_X_Window window);
EAPI void ecore_x_netwm_window_type_get_fet EAPI void
ch(void); ecore_x_e_init(void);
EAPI Eina_Bool ecore_x_netwm_window_type_get( EAPI void
Ecore_X_Window win, ecore_x_e_frame_size_set(Ecore_X_Window win,
Ecore_X_Window_Type *type); int fl,
EAPI int ecore_x_netwm_window_types_get( int fr,
Ecore_X_Window win, int ft,
Ecore_X_Window_Type **types); int fb);
EAPI Eina_Bool ecore_x_netwm_allowed_action_isse EAPI void
t( ecore_x_e_virtual_keyboard_set(Ecore_X_Window win,
Ecore_X_Window win, unsigned int is_keyboard);
Ecore_X_Action action); EAPI Eina_Bool
EAPI void ecore_x_netwm_allowed_action_set( ecore_x_e_virtual_keyboard_get(Ecore_X_Window win);
Ecore_X_Window win, EAPI void
Ecore_X_Action *action, ecore_x_e_virtual_keyboard_state_set(Ecore_X_Window win,
unsigned int num); Ecore_X_Virtual_Keyboard_State state);
EAPI void ecore_x_netwm_allowed_action_get_ EAPI Ecore_X_Virtual_Keyboard_State
prefetch( ecore_x_e_virtual_keyboard_state_get(Ecore_X_Window win);
Ecore_X_Window window); EAPI void
EAPI void ecore_x_netwm_allowed_action_get_ ecore_x_e_virtual_keyboard_state_send(Ecore_X_Window win,
fetch( Ecore_X_Virtual_Keyboard_State state)
void); ;
EAPI Eina_Bool ecore_x_netwm_allowed_action_get(
Ecore_X_Window win,
Ecore_X_Action **action,
unsigned int *num);
EAPI void ecore_x_netwm_opacity_set(
Ecore_X_Window win,
unsigned int opacity);
EAPI void ecore_x_netwm_opacity_get_prefetc
h(
Ecore_X_Window window);
EAPI void ecore_x_netwm_opacity_get_fetch(v
oid);
EAPI Eina_Bool ecore_x_netwm_opacity_get(
Ecore_X_Window win,
unsigned int *opacity);
EAPI void ecore_x_netwm_frame_size_set(
Ecore_X_Window win,
int fl,
int fr,
int ft,
int fb);
EAPI void ecore_x_netwm_frame_size_get_pref
etch(
Ecore_X_Window window);
EAPI void ecore_x_netwm_frame_size_get_fetc
h(void);
EAPI Eina_Bool ecore_x_netwm_frame_size_get(
Ecore_X_Window win,
int *fl,
int *fr,
int *ft,
int *fb);
EAPI void ecore_x_netwm_sync_counter_get_pr
efetch(
Ecore_X_Window window);
EAPI void ecore_x_netwm_sync_counter_get_fe
tch(void);
EAPI Eina_Bool ecore_x_netwm_sync_counter_get(
Ecore_X_Window win,
Ecore_X_Sync_Counter *counter);
EAPI void ecore_x_netwm_ping_send(Ecore_X_W
indow win);
EAPI void ecore_x_netwm_sync_request_send(
Ecore_X_Window win,
unsigned int serial);
EAPI void ecore_x_netwm_state_request_send(
Ecore_X_Window win,
Ecore_X_Window root,
Ecore_X_Window_State s1,
Ecore_X_Window_State s2,
Eina_Bool set);
EAPI void ecore_x_netwm_desktop_request_sen
d(
Ecore_X_Window win,
Ecore_X_Window root,
unsigned int desktop);
EAPI void ecore_x_e_init(void);
EAPI void ecore_x_e_frame_size_set(
Ecore_X_Window win,
int fl,
int fr,
int ft,
int fb);
EAPI void ecore_x_e_virtual_keyboard_set(
Ecore_X_Window win,
unsigned int is_keyboard);
EAPI Eina_Bool ecore_x_e_virtual_keyboard_get(
Ecore_X_Window win);
EAPI void ecore_x_e_virtual_keyboard_state_
set(
Ecore_X_Window win,
Ecore_X_Virtual_Keyboard_State state);
EAPI Ecore_X_Virtual_Keyboard_State ecore_x_e_virtual_keyboard_state_
get(
Ecore_X_Window win);
EAPI void ecore_x_e_virtual_keyboard_state_
send(
Ecore_X_Window win,
Ecore_X_Virtual_Keyboard_State state);
/* Illume functions */ /* Illume functions */
EAPI void ecore_x_e_illume_zone_set( EAPI void
Ecore_X_Window win, ecore_x_e_illume_zone_set(Ecore_X_Window win,
Ecore_X_Window zone); Ecore_X_Window zone);
EAPI Ecore_X_Window ecore_x_e_illume_zone_get( EAPI Ecore_X_Window
Ecore_X_Window win); ecore_x_e_illume_zone_get(Ecore_X_Window win);
EAPI void ecore_x_e_illume_zone_list_set( EAPI void
Ecore_X_Window win, ecore_x_e_illume_zone_list_set(Ecore_X_Window win,
Ecore_X_Window *zones, Ecore_X_Window *zones,
unsigned int n_zones); unsigned int n_zones);
EAPI void ecore_x_e_illume_conformant_set( EAPI void
Ecore_X_Window win, ecore_x_e_illume_conformant_set(Ecore_X_Window win,
unsigned int is_conformant); unsigned int is_conformant);
EAPI Eina_Bool ecore_x_e_illume_conformant_get( EAPI Eina_Bool
Ecore_X_Window win); ecore_x_e_illume_conformant_get(Ecore_X_Window win);
EAPI void ecore_x_e_illume_mode_set( EAPI void
Ecore_X_Window win, ecore_x_e_illume_mode_set(Ecore_X_Window win,
Ecore_X_Illume_Mode mode); Ecore_X_Illume_Mode mode);
EAPI Ecore_X_Illume_Mode ecore_x_e_illume_mode_get( EAPI Ecore_X_Illume_Mode
Ecore_X_Window win); ecore_x_e_illume_mode_get(Ecore_X_Window win);
EAPI void ecore_x_e_illume_mode_send( EAPI void
Ecore_X_Window win, ecore_x_e_illume_mode_send(Ecore_X_Window win,
Ecore_X_Illume_Mode mode); Ecore_X_Illume_Mode mode);
EAPI void ecore_x_e_illume_focus_back_send( EAPI void
Ecore_X_Window win); ecore_x_e_illume_focus_back_send(Ecore_X_Window win);
EAPI void ecore_x_e_illume_focus_forward_se EAPI void
nd( ecore_x_e_illume_focus_forward_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_focus_home_send( ecore_x_e_illume_focus_home_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_close_send( ecore_x_e_illume_close_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_home_new_send( ecore_x_e_illume_home_new_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_home_del_send( ecore_x_e_illume_home_del_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_drag_set( ecore_x_e_illume_drag_set(Ecore_X_Window win,
Ecore_X_Window win, unsigned int drag);
unsigned int drag); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_e_illume_drag_get( ecore_x_e_illume_drag_get(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_drag_locked_set( ecore_x_e_illume_drag_locked_set(Ecore_X_Window win,
Ecore_X_Window win, unsigned int is_locked);
unsigned int is_locked); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_e_illume_drag_locked_get( ecore_x_e_illume_drag_locked_get(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_drag_start_send( ecore_x_e_illume_drag_start_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_drag_end_send( ecore_x_e_illume_drag_end_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_indicator_geomet ecore_x_e_illume_indicator_geometry_set(Ecore_X_Window win,
ry_set( int x,
Ecore_X_Window win, int y,
int x, int w,
int y, int h);
int w, EAPI Eina_Bool
int h); ecore_x_e_illume_indicator_geometry_get(Ecore_X_Window win,
EAPI Eina_Bool ecore_x_e_illume_indicator_geomet int *x,
ry_get( int *y,
Ecore_X_Window win, int *w,
int *x, int *h);
int *y, EAPI void
int *w, ecore_x_e_illume_softkey_geometry_set(Ecore_X_Window win,
int *h); int x,
EAPI void ecore_x_e_illume_softkey_geometry int y,
_set( int w,
Ecore_X_Window win, int h);
int x, EAPI Eina_Bool
int y, ecore_x_e_illume_softkey_geometry_get(Ecore_X_Window win,
int w, int *x,
int h); int *y,
EAPI Eina_Bool ecore_x_e_illume_softkey_geometry int *w,
_get( int *h);
Ecore_X_Window win, EAPI void
int *x, ecore_x_e_illume_keyboard_geometry_set(Ecore_X_Window win,
int *y, int x,
int *w, int y,
int *h); int w,
EAPI void ecore_x_e_illume_keyboard_geometr int h);
y_set( EAPI Eina_Bool
Ecore_X_Window win, ecore_x_e_illume_keyboard_geometry_get(Ecore_X_Window win,
int x, int *x,
int y, int *y,
int w, int *w,
int h); int *h);
EAPI Eina_Bool ecore_x_e_illume_keyboard_geometr EAPI void
y_get( ecore_x_e_illume_quickpanel_set(Ecore_X_Window win,
Ecore_X_Window win, unsigned int is_quickpanel);
int *x, EAPI Eina_Bool
int *y, ecore_x_e_illume_quickpanel_get(Ecore_X_Window win);
int *w, EAPI void
int *h); ecore_x_e_illume_quickpanel_state_set(Ecore_X_Window win,
EAPI void ecore_x_e_illume_quickpanel_set( Ecore_X_Illume_Quickpanel_State state
Ecore_X_Window win, );
unsigned int is_quickpanel); EAPI Ecore_X_Illume_Quickpanel_State
EAPI Eina_Bool ecore_x_e_illume_quickpanel_get( ecore_x_e_illume_quickpanel_state_get(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_quickpanel_state ecore_x_e_illume_quickpanel_state_send(Ecore_X_Window win,
_set( Ecore_X_Illume_Quickpanel_State stat
Ecore_X_Window win, e);
Ecore_X_Illume_Quickpanel_State state); EAPI void
EAPI Ecore_X_Illume_Quickpanel_State ecore_x_e_illume_quickpanel_state ecore_x_e_illume_quickpanel_state_toggle(Ecore_X_Window win);
_get( EAPI void
Ecore_X_Window win); ecore_x_e_illume_quickpanel_priority_major_set(Ecore_X_Window win,
EAPI void ecore_x_e_illume_quickpanel_state unsigned int priority);
_send( EAPI int
Ecore_X_Window win, ecore_x_e_illume_quickpanel_priority_major_get(Ecore_X_Window win);
Ecore_X_Illume_Quickpanel_State state); EAPI void
EAPI void ecore_x_e_illume_quickpanel_state ecore_x_e_illume_quickpanel_priority_minor_set(Ecore_X_Window win,
_toggle( unsigned int priority);
Ecore_X_Window win); EAPI int
EAPI void ecore_x_e_illume_quickpanel_prior ecore_x_e_illume_quickpanel_priority_minor_get(Ecore_X_Window win);
ity_major_set( EAPI void
Ecore_X_Window win, ecore_x_e_illume_quickpanel_zone_set(Ecore_X_Window win,
unsigned int priority); unsigned int zone);
EAPI int ecore_x_e_illume_quickpanel_prior EAPI int
ity_major_get( ecore_x_e_illume_quickpanel_zone_get(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_illume_quickpanel_prior ecore_x_e_illume_quickpanel_zone_request_send(Ecore_X_Window win);
ity_minor_set( EAPI void
Ecore_X_Window win, ecore_x_e_illume_quickpanel_position_update_send(Ecore_X_Window win);
unsigned int priority);
EAPI int ecore_x_e_illume_quickpanel_prior EAPI void
ity_minor_get( ecore_x_e_comp_sync_counter_set(Ecore_X_Window win,
Ecore_X_Window win); Ecore_X_Sync_Counter counter);
EAPI void ecore_x_e_illume_quickpanel_zone_ EAPI Ecore_X_Sync_Counter
set( ecore_x_e_comp_sync_counter_get(Ecore_X_Window win);
Ecore_X_Window win, EAPI void
unsigned int zone); ecore_x_e_comp_sync_draw_done_send(Ecore_X_Window root,
EAPI int ecore_x_e_illume_quickpanel_zone_ Ecore_X_Window win);
get( EAPI void
Ecore_X_Window win); ecore_x_e_comp_sync_draw_size_done_send(Ecore_X_Window root,
EAPI void Ecore_X_Window win,
ecore_x_e_illume_quickpanel_zone_ int w,
request_send( int h);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_comp_sync_supported_set(Ecore_X_Window root,
ecore_x_e_illume_quickpanel_posit Eina_Bool enabled);
ion_update_send( EAPI Eina_Bool
Ecore_X_Window win); ecore_x_e_comp_sync_supported_get(Ecore_X_Window root);
EAPI void
EAPI void ecore_x_e_comp_sync_counter_set( ecore_x_e_comp_sync_begin_send(Ecore_X_Window win);
Ecore_X_Window win, EAPI void
Ecore_X_Sync_Counter counter); ecore_x_e_comp_sync_end_send(Ecore_X_Window win);
EAPI Ecore_X_Sync_Counter ecore_x_e_comp_sync_counter_get( EAPI void
Ecore_X_Window win); ecore_x_e_comp_sync_cancel_send(Ecore_X_Window win);
EAPI void ecore_x_e_comp_sync_draw_done_sen
d( EAPI void
Ecore_X_Window root, ecore_x_e_comp_flush_send(Ecore_X_Window win);
Ecore_X_Window win); EAPI void
EAPI void ecore_x_e_comp_sync_supported_set ecore_x_e_comp_dump_send(Ecore_X_Window win);
( EAPI void
Ecore_X_Window root, ecore_x_e_comp_pixmap_set(Ecore_X_Window win,
Eina_Bool enabled); Ecore_X_Pixmap pixmap);
EAPI Eina_Bool ecore_x_e_comp_sync_supported_get EAPI Ecore_X_Pixmap
( ecore_x_e_comp_pixmap_get(Ecore_X_Window win);
Ecore_X_Window root);
EAPI void ecore_x_e_comp_sync_begin_send( EAPI Ecore_X_Sync_Alarm
Ecore_X_Window win); ecore_x_sync_alarm_new(Ecore_X_Sync_Counter counter);
EAPI void ecore_x_e_comp_sync_end_send( EAPI Eina_Bool
Ecore_X_Window win); ecore_x_sync_alarm_free(Ecore_X_Sync_Alarm alarm);
EAPI void ecore_x_e_comp_sync_cancel_send( EAPI Eina_Bool
Ecore_X_Window win); ecore_x_sync_counter_query(Ecore_X_Sync_Counter counter,
unsigned int *val);
EAPI void ecore_x_e_comp_flush_send( EAPI Ecore_X_Sync_Counter
Ecore_X_Window win); ecore_x_sync_counter_new(int val);
EAPI void ecore_x_e_comp_dump_send( EAPI void
Ecore_X_Window win); ecore_x_sync_counter_free(Ecore_X_Sync_Counter counter);
EAPI void ecore_x_e_comp_pixmap_set( EAPI void
Ecore_X_Window win, ecore_x_sync_counter_inc(Ecore_X_Sync_Counter counter,
Ecore_X_Pixmap pixmap); int by);
EAPI Ecore_X_Pixmap ecore_x_e_comp_pixmap_get( EAPI void
Ecore_X_Window win); ecore_x_sync_counter_val_wait(Ecore_X_Sync_Counter counter,
int val);
EAPI Ecore_X_Sync_Alarm ecore_x_sync_alarm_new(
Ecore_X_Sync_Counter counter); EAPI void
EAPI Eina_Bool ecore_x_sync_alarm_free( ecore_x_sync_counter_set(Ecore_X_Sync_Counter counter,
Ecore_X_Sync_Alarm alarm); int val);
EAPI Eina_Bool ecore_x_sync_counter_query( EAPI void
Ecore_X_Sync_Counter counter, ecore_x_sync_counter_2_set(Ecore_X_Sync_Counter counter,
unsigned int *val); int val_hi,
EAPI Ecore_X_Sync_Counter ecore_x_sync_counter_new(int val) unsigned int val_lo);
; EAPI Eina_Bool
EAPI void ecore_x_sync_counter_free( ecore_x_sync_counter_2_query(Ecore_X_Sync_Counter counter,
Ecore_X_Sync_Counter counter); int *val_hi,
EAPI void ecore_x_sync_counter_inc( unsigned int *val_lo);
Ecore_X_Sync_Counter counter,
int by); EAPI int
EAPI void ecore_x_sync_counter_val_wait( ecore_x_xinerama_screen_count_get(void);
Ecore_X_Sync_Counter counter, EAPI Eina_Bool
int val); ecore_x_xinerama_screen_geometry_get(int screen,
int *x,
EAPI void ecore_x_xinerama_query_screens_pr int *y,
efetch( int *w,
void); int *h);
EAPI void ecore_x_xinerama_query_screens_fe
tch(void); EAPI Eina_Bool
EAPI int ecore_x_xinerama_screen_count_get ecore_x_screensaver_event_available_get(void);
(void); EAPI int
EAPI Eina_Bool ecore_x_xinerama_screen_geometry_ ecore_x_screensaver_idle_time_get(void);
get( EAPI void
int screen, ecore_x_screensaver_set(int timeout,
int *x, int interval,
int *y, int prefer_blanking,
int *w, int allow_exposures);
int *h); EAPI void
ecore_x_screensaver_timeout_set(int timeout);
EAPI Eina_Bool ecore_x_screensaver_event_available_get( EAPI int
void); ecore_x_screensaver_timeout_get(void);
EAPI void ecore_x_screensaver_idle_time_prefetch( EAPI void
void); ecore_x_screensaver_blank_set(int timeout);
EAPI void ecore_x_screensaver_idle_time_fetch(void); EAPI int
EAPI int ecore_x_screensaver_idle_time_get(void); ecore_x_screensaver_blank_get(void);
EAPI void ecore_x_get_screensaver_prefetch(void); EAPI void
EAPI void ecore_x_get_screensaver_fetch(void); ecore_x_screensaver_expose_set(int timeout);
EAPI void ecore_x_screensaver_set(int timeout, EAPI int
int interval, ecore_x_screensaver_expose_get(void);
int prefer_blanking, EAPI void
int allow_exposures); ecore_x_screensaver_interval_set(int timeout);
EAPI void ecore_x_screensaver_timeout_set( EAPI int
int timeout); ecore_x_screensaver_interval_get(void);
EAPI int ecore_x_screensaver_timeout_get(void); EAPI void
EAPI void ecore_x_screensaver_blank_set(int timeout); ecore_x_screensaver_event_listen_set(Eina_Bool on);
EAPI int ecore_x_screensaver_blank_get(void);
EAPI void ecore_x_screensaver_expose_set(int timeout);
EAPI int ecore_x_screensaver_expose_get(void);
EAPI void ecore_x_screensaver_interval_set(
int timeout);
EAPI int ecore_x_screensaver_interval_get(void);
EAPI void ecore_x_screensaver_event_listen_set(
Eina_Bool on);
/* FIXME: these funcs need categorising */ /* FIXME: these funcs need categorising */
typedef struct _Ecore_X_Window_Attributes typedef struct _Ecore_X_Window_Attributes
{ {
Ecore_X_Window root; Ecore_X_Window root;
int x, y, w, h; int x, y, w, h;
int border; int border;
int depth; int depth;
unsigned char visible : 1; Eina_Bool visible : 1;
unsigned char viewable : 1; Eina_Bool viewable : 1;
unsigned char override : 1; Eina_Bool override : 1;
unsigned char input_only : 1; Eina_Bool input_only : 1;
unsigned char save_under : 1; Eina_Bool save_under : 1;
struct struct
{ {
Ecore_X_Event_Mask mine; Ecore_X_Event_Mask mine;
Ecore_X_Event_Mask all; Ecore_X_Event_Mask all;
Ecore_X_Event_Mask no_propagate; Ecore_X_Event_Mask no_propagate;
} event_mask; } event_mask;
Ecore_X_Gravity window_gravity; Ecore_X_Gravity window_gravity;
Ecore_X_Gravity pixel_gravity; Ecore_X_Gravity pixel_gravity;
Ecore_X_Colormap colormap; Ecore_X_Colormap colormap;
Ecore_X_Visual visual; Ecore_X_Visual visual;
/* FIXME: missing /* FIXME: missing
* int map_installed; * int map_installed;
* Screen *screen; * Screen *screen;
*/ */
} Ecore_X_Window_Attributes; } Ecore_X_Window_Attributes;
EAPI void ecore_x_get_window_attributes_prefetch( EAPI Eina_Bool
Ecore_X_Window window); ecore_x_window_attributes_get(Ecore_X_Window win,
EAPI void ecore_x_get_window_attributes_fetch(void); Ecore_X_Window_Attributes *att_ret);
EAPI Eina_Bool ecore_x_window_attributes_get( EAPI void
Ecore_X_Window win, ecore_x_window_save_set_add(Ecore_X_Window win);
Ecore_X_Window_Attributes * EAPI void
att_ret); ecore_x_window_save_set_del(Ecore_X_Window win);
EAPI void ecore_x_window_save_set_add(Ecore_X_Window win); EAPI Ecore_X_Window *
EAPI void ecore_x_window_save_set_del(Ecore_X_Window win); ecore_x_window_children_get(Ecore_X_Window win,
EAPI Ecore_X_Window * ecore_x_window_children_get(Ecore_X_Window win, i int *num);
nt *num);
EAPI Eina_Bool
EAPI Eina_Bool ecore_x_pointer_control_set(int accel_num, ecore_x_pointer_control_set(int accel_num,
int accel_denom, int accel_denom,
int threshold); int threshold);
EAPI void ecore_x_pointer_control_get_prefetch(void); EAPI Eina_Bool
EAPI void ecore_x_pointer_control_get_fetch(void); ecore_x_pointer_control_get(int *accel_num,
EAPI Eina_Bool ecore_x_pointer_control_get(int *accel_num, int *accel_denom,
int *accel_denom, int *threshold);
int *threshold); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_pointer_mapping_set(unsigned char *map, i ecore_x_pointer_mapping_set(unsigned char *map,
nt nmap); int nmap);
EAPI void ecore_x_pointer_mapping_get_prefetch(void); EAPI Eina_Bool
EAPI void ecore_x_pointer_mapping_get_fetch(void); ecore_x_pointer_mapping_get(unsigned char *map,
EAPI Eina_Bool ecore_x_pointer_mapping_get(unsigned char *map, i int nmap);
nt nmap); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_pointer_grab(Ecore_X_Window win); ecore_x_pointer_grab(Ecore_X_Window win);
EAPI Eina_Bool ecore_x_pointer_confine_grab(Ecore_X_Window win); EAPI Eina_Bool
EAPI void ecore_x_pointer_ungrab(void); ecore_x_pointer_confine_grab(Ecore_X_Window win);
EAPI Eina_Bool ecore_x_pointer_warp(Ecore_X_Window win, int x, i EAPI void
nt y); ecore_x_pointer_ungrab(void);
EAPI Eina_Bool ecore_x_keyboard_grab(Ecore_X_Window win); EAPI Eina_Bool
EAPI void ecore_x_keyboard_ungrab(void); ecore_x_pointer_warp(Ecore_X_Window win,
EAPI void ecore_x_grab(void); int x,
EAPI void ecore_x_ungrab(void); int y);
EAPI void ecore_x_passive_grab_replay_func_set(Eina_Bool EAPI Eina_Bool
(*func)(void *data, ecore_x_keyboard_grab(Ecore_X_Window win);
EAPI void
int event_type, ecore_x_keyboard_ungrab(void);
EAPI void
void *event), ecore_x_grab(void);
void EAPI void
*data); ecore_x_ungrab(void);
EAPI void ecore_x_window_button_grab(Ecore_X_Window win, in EAPI void
t button, ecore_x_passive_grab_replay_func_set(Eina_Bool (*func)(void *data,
Ecore_X_Event_Mask eve int event_type,
nt_mask, void *event),
int mod, int any_mod); void *data);
EAPI void ecore_x_window_button_ungrab(Ecore_X_Window win, EAPI void
int butto ecore_x_window_button_grab(Ecore_X_Window win,
n, int button,
int mod, Ecore_X_Event_Mask event_mask,
int any_m int mod,
od); int any_mod);
EAPI void ecore_x_window_key_grab(Ecore_X_Window win, EAPI void
const char *key, ecore_x_window_button_ungrab(Ecore_X_Window win,
int mod, int button,
int any_mod); int mod,
EAPI void ecore_x_window_key_ungrab(Ecore_X_Window win, int any_mod);
const char *key, EAPI void
int mod, ecore_x_window_key_grab(Ecore_X_Window win,
int any_mod) const char *key,
; int mod,
int any_mod);
EAPI void ecore_x_focus_reset(void); EAPI void
EAPI void ecore_x_events_allow_all(void); ecore_x_window_key_ungrab(Ecore_X_Window win,
EAPI void ecore_x_pointer_last_xy_get(int *x, int *y); const char *key,
EAPI void ecore_x_pointer_xy_get_prefetch(Ecore_X_Window wi int mod,
ndow); int any_mod);
EAPI void ecore_x_pointer_xy_get_fetch(void);
EAPI void ecore_x_pointer_xy_get(Ecore_X_Window win, int *x EAPI void
, int *y); ecore_x_focus_reset(void);
EAPI void
ecore_x_events_allow_all(void);
EAPI void
ecore_x_pointer_last_xy_get(int *x,
int *y);
EAPI void
ecore_x_pointer_xy_get(Ecore_X_Window win,
int *x,
int *y);
/* ecore_x_region.c */ /* ecore_x_region.c */
EAPI Ecore_X_XRegion * ecore_x_xregion_new(void); EAPI Ecore_X_XRegion *
EAPI void ecore_x_xregion_free(Ecore_X_XRegion *region); ecore_x_xregion_new(void);
EAPI Eina_Bool ecore_x_xregion_set(Ecore_X_XRegion *region, EAPI void
Ecore_X_GC gc); ecore_x_xregion_free(Ecore_X_XRegion *region);
EAPI void ecore_x_xregion_translate(Ecore_X_XRegion *region EAPI Eina_Bool
, ecore_x_xregion_set(Ecore_X_XRegion *region,
int x, Ecore_X_GC gc);
int y); EAPI void
EAPI Eina_Bool ecore_x_xregion_intersect(Ecore_X_XRegion *dst, ecore_x_xregion_translate(Ecore_X_XRegion *region,
Ecore_X_XRegion *r1, int x,
Ecore_X_XRegion *r2); int y);
EAPI Eina_Bool ecore_x_xregion_union(Ecore_X_XRegion *dst, EAPI Eina_Bool
Ecore_X_XRegion *r1, ecore_x_xregion_intersect(Ecore_X_XRegion *dst,
Ecore_X_XRegion *r2); Ecore_X_XRegion *r1,
EAPI Eina_Bool ecore_x_xregion_union_rect(Ecore_X_XRegion *dst Ecore_X_XRegion *r2);
, EAPI Eina_Bool
Ecore_X_XRegion *src ecore_x_xregion_union(Ecore_X_XRegion *dst,
, Ecore_X_XRegion *r1,
Ecore_X_Rectangle *rec Ecore_X_XRegion *r2);
t); EAPI Eina_Bool
EAPI Eina_Bool ecore_x_xregion_subtract(Ecore_X_XRegion *dst, ecore_x_xregion_union_rect(Ecore_X_XRegion *dst,
Ecore_X_XRegion *r1, Ecore_X_XRegion *src,
Ecore_X_XRegion *r2); Ecore_X_Rectangle *rect);
EAPI Eina_Bool ecore_x_xregion_is_empty(Ecore_X_XRegion *region) EAPI Eina_Bool
; ecore_x_xregion_subtract(Ecore_X_XRegion *dst,
EAPI Eina_Bool ecore_x_xregion_is_equal(Ecore_X_XRegion *r1, Ecore_X_XRegion *r1,
Ecore_X_XRegion *r2); Ecore_X_XRegion *r2);
EAPI Eina_Bool ecore_x_xregion_point_contain(Ecore_X_XRegion *re EAPI Eina_Bool
gion, ecore_x_xregion_is_empty(Ecore_X_XRegion *region);
int x, EAPI Eina_Bool
int y) ecore_x_xregion_is_equal(Ecore_X_XRegion *r1,
; Ecore_X_XRegion *r2);
EAPI Eina_Bool ecore_x_xregion_rect_contain(Ecore_X_XRegion *r EAPI Eina_Bool
egion, ecore_x_xregion_point_contain(Ecore_X_XRegion *region,
Ecore_X_Rectangle *r int x,
ect); int y);
EAPI Eina_Bool
ecore_x_xregion_rect_contain(Ecore_X_XRegion *region,
Ecore_X_Rectangle *rect);
/* ecore_x_randr.c */ /* ecore_x_randr.c */
/* The usage of 'Ecore_X_Randr_None' or 'Ecore_X_Randr_Unset' /* The usage of 'Ecore_X_Randr_None' or 'Ecore_X_Randr_Unset'
* depends on the context. In most cases 'Ecore_X_Randr_Unset' * depends on the context. In most cases 'Ecore_X_Randr_Unset'
* can be used, but in some cases -1 is a special value to * can be used, but in some cases -1 is a special value to
* functions, thus 'Ecore_X_Randr_None' (=0) musst be used. * functions, thus 'Ecore_X_Randr_None' (=0) musst be used.
*/ */
typedef short Ecore_X_Randr_Refresh_Rate; typedef short Ecore_X_Randr_Refresh_Rate;
typedef int Ecore_X_Randr_Crtc_Gamma; typedef int Ecore_X_Randr_Crtc_Gamma;
typedef int Ecore_X_Randr_Signal_Format; typedef int Ecore_X_Randr_Signal_Format;
typedef int Ecore_X_Randr_Signal_Property; typedef int Ecore_X_Randr_Signal_Property;
typedef int Ecore_X_Randr_Connector_Type; typedef int Ecore_X_Randr_Connector_Type;
typedef struct _Ecore_X_Randr_Mode_Info typedef struct _Ecore_X_Randr_Mode_Info
{ {
Ecore_X_ID xid; Ecore_X_ID xid;
unsigned int width; unsigned int width;
unsigned int height; unsigned int height;
unsigned long dotClock; unsigned long dotClock;
unsigned int hSyncStart; unsigned int hSyncStart;
unsigned int hSyncEnd; unsigned int hSyncEnd;
unsigned int hTotal; unsigned int hTotal;
unsigned int hSkew; unsigned int hSkew;
unsigned int vSyncStart; unsigned int vSyncStart;
unsigned int vSyncEnd; unsigned int vSyncEnd;
unsigned int vTotal; unsigned int vTotal;
char *name; char *name;
unsigned int nameLength; unsigned int nameLength;
unsigned long modeFlags; unsigned long modeFlags;
} Ecore_X_Randr_Mode_Info; } Ecore_X_Randr_Mode_Info;
EAPI int ecore_x_randr_version_get( EAPI int
void); ecore_x_randr_version_get(void);
EAPI Eina_Bool ecore_x_randr_query(void); EAPI Eina_Bool
ecore_x_randr_query(void);
/* ecore_x_randr_11.c */ /* ecore_x_randr_11.c */
EAPI Ecore_X_Randr_Orientation EAPI Ecore_X_Randr_Orientation
ecore_x_randr_screen_primary_output_orientations_get( ecore_x_randr_screen_primary_output_orientations_get(Ecore_X_Window root);
Ecore_X_Window root);
EAPI Ecore_X_Randr_Orientation EAPI Ecore_X_Randr_Orientation
ecore_x_randr_screen_primary_output_orientation_get( ecore_x_randr_screen_primary_output_orientation_get(Ecore_X_Window root);
Ecore_X_Window root);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_screen_primary_output_orientation_set( ecore_x_randr_screen_primary_output_orientation_set(Ecore_X_Window root,
Ecore_X_Window root, Ecore_X_Randr_Orientati
Ecore_X_Randr_Orientation on orientation);
orientation);
EAPI Ecore_X_Randr_Screen_Size_MM * EAPI Ecore_X_Randr_Screen_Size_MM *
ecore_x_randr_screen_primary_output_sizes_get( ecore_x_randr_screen_primary_output_sizes_get(Ecore_X_Window root,
Ecore_X_Window root, int *num);
int *num); EAPI void
EAPI void ecore_x_randr_screen_primary_output_current_size_get(Ecore_X_Window root,
ecore_x_randr_screen_primary_output_current_size_get( int *w,
Ecore_X_Window root, int *h,
int *w, int *w_mm,
int *h, int *h_mm,
int *w_mm, int *size_index);
int *h_mm,
int *size_index);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_screen_primary_output_size_set(Ecore_X_Window root, ecore_x_randr_screen_primary_output_size_set(Ecore_X_Window root,
int size_index); int size_index);
EAPI Ecore_X_Randr_Refresh_Rate EAPI Ecore_X_Randr_Refresh_Rate
ecore_x_randr_screen_primary_output_current_refresh_rate_get( ecore_x_randr_screen_primary_output_current_refresh_rate_get(Ecore_X_Windo
Ecore_X_Window root); w root);
EAPI Ecore_X_Randr_Refresh_Rate * EAPI Ecore_X_Randr_Refresh_Rate *
ecore_x_randr_screen_primary_output_refresh_rates_get(Ecore_X_Window root, ecore_x_randr_screen_primary_output_refresh_rates_get(Ecore_X_Window root,
int size_index, int size_index,
int *num); int *num);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_screen_primary_output_refresh_rate_set( ecore_x_randr_screen_primary_output_refresh_rate_set(Ecore_X_Window root,
Ecore_X_Window root, int size_index,
int size_index, Ecore_X_Randr_Refresh_
Ecore_X_Randr_Refresh_Rate Rate rate);
rate);
/* ecore_x_randr_12.c */ /* ecore_x_randr_12.c */
EAPI void EAPI void
ecore_x_randr_events_select(Ecore_X_Window win, ecore_x_randr_events_select(Ecore_X_Window win,
Eina_Bool on); Eina_Bool on);
EAPI void EAPI void
ecore_x_randr_screen_current_size_get(Ecore_X_Window root, ecore_x_randr_screen_current_size_get(Ecore_X_Window root,
int *w, int *w,
int *h, int *h,
int *w_mm, int *w_mm,
int *h_mm); int *h_mm);
EAPI void EAPI void
ecore_x_randr_screen_size_range_get(Ecore_X_Window root, ecore_x_randr_screen_size_range_get(Ecore_X_Window root,
int *wmin, int *wmin,
int *hmin, int *hmin,
int *wmax, int *wmax,
int *hmax); int *hmax);
EAPI void ecore_x_randr_screen_reset( EAPI void
Ecore_X_Window root); ecore_x_randr_screen_reset(Ecore_X_Window root);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_screen_current_size_set(Ecore_X_Window root, ecore_x_randr_screen_current_size_set(Ecore_X_Window root,
int w, int w,
int h, int h,
int w_mm, int w_mm,
int h_mm); int h_mm);
EAPI Ecore_X_Randr_Mode_Info ** EAPI Ecore_X_Randr_Mode_Info **
ecore_x_randr_modes_info_get(Ecore_X_Window root , ecore_x_randr_modes_info_get(Ecore_X_Window root,
int *num); int *num);
EAPI Ecore_X_Randr_Mode_Info * EAPI Ecore_X_Randr_Mode_Info *
ecore_x_randr_mode_info_get(Ecore_X_Window root, ecore_x_randr_mode_info_get(Ecore_X_Window root,
Ecore_X_Randr_Mode mode); Ecore_X_Randr_Mode mode);
EAPI void EAPI void
ecore_x_randr_mode_info_free( ecore_x_randr_mode_info_free(Ecore_X_Randr_Mode_
Ecore_X_Randr_Mode_Info *mode_info); Info *mode_info);
EAPI Ecore_X_Randr_Crtc * ecore_x_randr_crtcs_get( EAPI Ecore_X_Randr_Crtc *
Ecore_X_Window root, ecore_x_randr_crtcs_get(Ecore_X_Window root,
int *num); int *num);
EAPI Ecore_X_Randr_Output *ecore_x_randr_outputs_get( EAPI Ecore_X_Randr_Output *ecore_x_randr_outputs_get(Ecore_X_Window root,
Ecore_X_Window root, int *num);
int *num);
EAPI Ecore_X_Randr_Output * EAPI Ecore_X_Randr_Output *
ecore_x_randr_current_output_get( ecore_x_randr_window_outputs_get(Ecore_X_Window window,
Ecore_X_Window window, int *num);
int *num); EINA_DEPRECATED EAPI Ecore_X_Randr_Output *
ecore_x_randr_current_output_get(Ecore_X_Window window,
int *num);
EAPI Ecore_X_Randr_Crtc * EAPI Ecore_X_Randr_Crtc *
ecore_x_randr_current_crtc_get(Ecore_X_Window wi ndow, ecore_x_randr_current_crtc_get(Ecore_X_Window window,
int *num); int *num);
EAPI Ecore_X_Randr_Output * EAPI Ecore_X_Randr_Output *
ecore_x_randr_crtc_outputs_get(Ecore_X_Window ro ot, ecore_x_randr_crtc_outputs_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int *num); int *num);
EAPI Ecore_X_Randr_Output * EAPI Ecore_X_Randr_Output *
ecore_x_randr_crtc_possible_outputs_get( ecore_x_randr_crtc_possible_outputs_get(Ecore_X_Window root,
Ecore_X_Window root, Ecore_X_Randr_Crtc crtc,
Ecore_X_Randr_Crtc crtc, int *num);
int *num);
EAPI void EAPI void
ecore_x_randr_crtc_geometry_get(Ecore_X_Window r oot, ecore_x_randr_crtc_geometry_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int *x, int *x,
int *y, int *y,
int *w, int *w,
int *h); int *h);
EAPI void EAPI void
ecore_x_randr_crtc_pos_get(Ecore_X_Window root, ecore_x_randr_crtc_pos_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int *x, int *x,
int *y); int *y);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_pos_set(Ecore_X_Window root, ecore_x_randr_crtc_pos_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int x, int x,
int y); int y);
EAPI Ecore_X_Randr_Mode EAPI Ecore_X_Randr_Mode
ecore_x_randr_crtc_mode_get(Ecore_X_Window root, Ecore_X_Randr_Crtc crtc); ecore_x_randr_crtc_mode_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_mode_set(Ecore_X_Window root, ecore_x_randr_crtc_mode_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
Ecore_X_Randr_Output *outputs, Ecore_X_Randr_Output *outputs,
int noutputs, int noutputs,
Ecore_X_Randr_Mode mode); Ecore_X_Randr_Mode mode);
EAPI void EAPI void
ecore_x_randr_crtc_size_get(Ecore_X_Window root, ecore_x_randr_crtc_size_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int *w, int *w,
int *h); int *h);
EAPI Ecore_X_Randr_Refresh_Rate EAPI Ecore_X_Randr_Refresh_Rate
ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root, ecore_x_randr_crtc_refresh_rate_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
Ecore_X_Randr_Mode mode); Ecore_X_Randr_Mode mode);
EAPI Ecore_X_Randr_Orientation EAPI Ecore_X_Randr_Orientation
ecore_x_randr_crtc_orientations_get(Ecore_X_Window root, ecore_x_randr_crtc_orientations_get(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc); Ecore_X_Randr_Crtc crtc);
EAPI Ecore_X_Randr_Orientation EAPI Ecore_X_Randr_Orientation
ecore_x_randr_crtc_orientation_get(Ecore_X_Window root, Ecore_X_Randr_Crtc ecore_x_randr_crtc_orientation_get(Ecore_X_Window root,
crtc); Ecore_X_Randr_Crtc crtc);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_orientation_set(Ecore_X_Window root, ecore_x_randr_crtc_orientation_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
const Ecore_X_Randr_Orientation orientat ion); const Ecore_X_Randr_Orientation orientat ion);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_clone_set(Ecore_X_Window root, ecore_x_randr_crtc_clone_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc original, Ecore_X_Randr_Crtc original,
Ecore_X_Randr_Crtc clone); Ecore_X_Randr_Crtc clone);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_settings_set(Ecore_X_Window root, ecore_x_randr_crtc_settings_set(Ecore_X_Window root,
skipping to change at line 2609 skipping to change at line 2842
int y, int y,
Ecore_X_Randr_Mode mode, Ecore_X_Randr_Mode mode,
Ecore_X_Randr_Orientation orientation); Ecore_X_Randr_Orientation orientation);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_pos_relative_set(Ecore_X_Window root, ecore_x_randr_crtc_pos_relative_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc_r1, Ecore_X_Randr_Crtc crtc_r1,
Ecore_X_Randr_Crtc crtc_r2, Ecore_X_Randr_Crtc crtc_r2,
Ecore_X_Randr_Output_Policy policy, Ecore_X_Randr_Output_Policy policy,
Ecore_X_Randr_Relative_Alignment alignm ent); Ecore_X_Randr_Relative_Alignment alignm ent);
EAPI Ecore_X_Randr_Mode * EAPI Ecore_X_Randr_Mode *
ecore_x_randr_output_modes_get(Ecore_X_Window root, ecore_x_randr_output_modes_get(Ecore_X_Window root,
Ecore_X_Randr_Output output, Ecore_X_Randr_Output output,
int *num, int *num,
int *npreferred); int *npreferred);
EAPI Ecore_X_Randr_Output * ecore_x_randr_output_clones_get(Ecore_X_Window EAPI Ecore_X_Randr_Output *ecore_x_randr_output_clones_get(Ecore_X_Window r
root, Ecore_X_Randr_Output output, int *num); oot,
EAPI Ecore_X_Randr_Crtc * ecore_x_randr_output_possible_crtcs_get(Ecore_X_W Ecore_X_Randr_Ou
indow root, Ecore_X_Randr_Output output, int *num); tput output,
int *num);
EAPI Ecore_X_Randr_Crtc *ecore_x_randr_output_possible_crtcs_get(Ecore_X_Wi
ndow root,
Ecore_X_Ra
ndr_Output output,
int *num);
EAPI Ecore_X_Randr_Crtc EAPI Ecore_X_Randr_Crtc
ecore_x_randr_output_crtc_get(Ecore_X_Window root, ecore_x_randr_output_crtc_get(Ecore_X_Window root,
Ecore_X_Randr_Output output); Ecore_X_Randr_Output output);
EAPI char * EAPI char *
ecore_x_randr_output_name_get(Ecore_X_Window root, ecore_x_randr_output_name_get(Ecore_X_Window root,
Ecore_X_Randr_Output output, Ecore_X_Randr_Output output,
int *len); int *len);
EAPI int EAPI int
ecore_x_randr_crtc_gamma_ramp_size_get( ecore_x_randr_crtc_gamma_ramp_size_get(Ecore_X_Randr_Crtc crtc);
Ecore_X_Randr_Crtc crtc);
EAPI Ecore_X_Randr_Crtc_Gamma ** EAPI Ecore_X_Randr_Crtc_Gamma **
ecore_x_randr_crtc_gamma_ramps_get(Ecore_X_Randr_Crtc crtc); ecore_x_randr_crtc_gamma_ramps_get(Ecore_X_Randr_Crtc crtc);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_gamma_ramps_set(Ecore_X_Randr_Crtc crtc, ecore_x_randr_crtc_gamma_ramps_set(Ecore_X_Randr_Crtc crtc,
const Ecore_X_Randr_Crtc_Gamma *red, const Ecore_X_Randr_Crtc_Gamma *red,
const Ecore_X_Randr_Crtc_Gamma *green, const Ecore_X_Randr_Crtc_Gamma *green,
const Ecore_X_Randr_Crtc_Gamma *blue); const Ecore_X_Randr_Crtc_Gamma *blue);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root, ecore_x_randr_move_all_crtcs_but(Ecore_X_Window root,
const Ecore_X_Randr_Crtc *not_moved, const Ecore_X_Randr_Crtc *not_moved,
int nnot_moved, int nnot_moved,
int dx, int dx,
int dy); int dy);
EAPI Eina_Bool ecore_x_randr_move_crtcs( EAPI Eina_Bool
Ecore_X_Window root, ecore_x_randr_move_crtcs(Ecore_X_Window root,
const Ecore_X_Randr_Crtc *crtcs, const Ecore_X_Randr_Crtc *crtcs,
int ncrtc, int ncrtc,
int dx, int dx,
int dy); int dy);
EAPI void EAPI void
ecore_x_randr_mode_size_get(Ecore_X_Window root, ecore_x_randr_mode_size_get(Ecore_X_Window root,
Ecore_X_Randr_Mode mode, Ecore_X_Randr_Mode mode,
int *w, int *w,
int *h); int *h);
EAPI Ecore_X_Randr_Connection_Status EAPI Ecore_X_Randr_Connection_Status
ecore_x_randr_output_connection_status_get(Ecore_X_Window root, ecore_x_randr_output_connection_status_get(Ecore_X_Window root,
Ecore_X_Randr_Output output); Ecore_X_Randr_Output output);
EAPI void EAPI void
ecore_x_randr_output_size_mm_get(Ecore_X_Window root, ecore_x_randr_output_size_mm_get(Ecore_X_Window root,
Ecore_X_Randr_Output output, Ecore_X_Randr_Output output,
int *w, int *w,
int *h); int *h);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_output_crtc_set(Ecore_X_Window root, ecore_x_randr_output_crtc_set(Ecore_X_Window root,
Ecore_X_Randr_Output output, Ecore_X_Randr_Output output,
const Ecore_X_Randr_Crtc crtc); const Ecore_X_Randr_Crtc crtc);
/* ecore_x_randr_12_edid.c */
/*
* @brief Validates the header from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if the header is valid. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_has_valid_header(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Checks whether a display's EDID has a valid checksum.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if the checksum is valid. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_info_has_valid_checksum(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the encoded version from raw EDID data.
*
* The return value has the minor version in the lowest 8 bits, and the maj
or
* version in all the rest of the bits. i.e.
*
* minor = (version & 0x000000ff);
* major = (version & 0xffffff00) >> 8;
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded major and minor version encasuplated an int.
*/
EAPI int
ecore_x_randr_edid_version_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the encoded manufacturer from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded manufacturer identifier.
*/
EAPI char *
ecore_x_randr_edid_manufacturer_name_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the encoded name from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded manufacturer identifier.
*/
EAPI char *
ecore_x_randr_edid_display_name_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the encoded ASCII from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded ASCII display identifier.
*/
EAPI char *
ecore_x_randr_edid_display_ascii_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the encoded serial identifier from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded serial identifier.
*/
EAPI char *
ecore_x_randr_edid_display_serial_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the encoded model number from raw EDID data.
*
* The manufacturer ID table is necessary for a useful description.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded model number.
*/
EAPI int
ecore_x_randr_edid_model_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the manufacturer serial number from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The encoded serial manufacturer serial number.
*/
EAPI int
ecore_x_randr_edid_manufacturer_serial_number_get(unsigned char *edid,
unsigned long edid_length
);
/*
* @brief Get the manufacturer model number from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The manufacturer's model number.
*/
EAPI int
ecore_x_randr_edid_manufacturer_model_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Looks up the DPMS support from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if DPMS is supported in some way. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_dpms_available_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Looks up the DPMS Standby support from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if DPMS Standby is supported. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_dpms_standby_available_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Looks up the DPMS Suspend support from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if DPMS Suspend is supported. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_dpms_suspend_available_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Looks up the DPMS Off support from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if DPMS Off is supported. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_dpms_off_available_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the preferred aspect ratio from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The preferred aspect ratio.
*/
EAPI Ecore_X_Randr_Edid_Aspect_Ratio
ecore_x_randr_edid_display_aspect_ratio_preferred_get(unsigned char *edid,
unsigned long edid_le
ngth);
/*
* @brief Get the supported aspect ratios from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The supported aspect ratios.
*/
EAPI Ecore_X_Randr_Edid_Aspect_Ratio
ecore_x_randr_edid_display_aspect_ratios_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the supported colorschemes from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The supported colorschemes.
*/
EAPI Ecore_X_Randr_Edid_Display_Colorscheme
ecore_x_randr_edid_display_colorscheme_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the display type from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return EINA_TRUE, if the display is a digital one. Else EINA_FALSE.
*/
EAPI Eina_Bool
ecore_x_randr_edid_display_type_digital_get(unsigned char *edid,
unsigned long edid_length);
/*
* @brief Get the display interface type from raw EDID data.
*
* @param edid the edid structure
* @param edid_length length of the edid structure
* @return The interface type.
*/
EAPI Ecore_X_Randr_Edid_Display_Interface_Type
ecore_x_randr_edid_display_interface_type_get(unsigned char *edid,
unsigned long edid_length);
/* ecore_x_randr_13.c */ /* ecore_x_randr_13.c */
EAPI void EAPI void
ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root, double level) ecore_x_randr_screen_backlight_level_set(Ecore_X_Window root,
; double level);
EAPI double EAPI double
ecore_x_randr_output_backlight_level_get(Ecore_X_Window root, ecore_x_randr_output_backlight_level_get(Ecore_X_Window root,
Ecore_X_Randr_Output output); Ecore_X_Randr_Output output);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_output_backlight_level_set(Ecore_X_Window root, ecore_x_randr_output_backlight_level_set(Ecore_X_Window root,
Ecore_X_Randr_Output output, Ecore_X_Randr_Output output,
double level); double level);
EAPI Ecore_X_Randr_Output EAPI Ecore_X_Randr_Output
ecore_x_randr_primary_output_get(Ecore_X_Window root); ecore_x_randr_primary_output_get(Ecore_X_Window root);
EAPI void EAPI void
ecore_x_randr_primary_output_set(Ecore_X_Window root, ecore_x_randr_primary_output_set(Ecore_X_Window root,
Ecore_X_Randr_Output output); Ecore_X_Randr_Output output);
EAPI Ecore_X_Render_Subpixel_Order EAPI Ecore_X_Render_Subpixel_Order
ecore_x_randr_output_subpixel_order_get(Ecore_X_Window root, ecore_x_randr_output_subpixel_order_get(Ecore_X_Window root,
Ecore_X_Randr_Output output); Ecore_X_Randr_Output output);
EAPI unsigned char * EAPI unsigned char *
ecore_x_randr_output_edid_get(Ecore_X_Window root, ecore_x_randr_output_edid_get(Ecore_X_Window root,
Ecore_X_Randr_Output output, Ecore_X_Randr_Output output,
unsigned long *length); unsigned long *length);
EAPI Ecore_X_Randr_Output * EAPI Ecore_X_Randr_Output *
ecore_x_randr_output_wired_clones_get(Ecore_X_Window root, ecore_x_randr_output_wired_clones_get(Ecore_X_Window root,
skipping to change at line 2739 skipping to change at line 3195
int *w, int *w,
int *h); int *h);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_tracking_area_set(Ecore_X_Window root, ecore_x_randr_crtc_tracking_area_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int x, int x,
const int y, const int y,
const int w, const int w,
const int h); const int h);
EAPI Eina_Rectangle * EAPI Eina_Rectangle *
ecore_x_randr_crtc_border_area_get(Ecore_X_Window root, Ecore_X_Randr_Crtc ecore_x_randr_crtc_border_area_get(Ecore_X_Window root,
crtc); Ecore_X_Randr_Crtc crtc);
EAPI Eina_Bool EAPI Eina_Bool
ecore_x_randr_crtc_border_area_set(Ecore_X_Window root, ecore_x_randr_crtc_border_area_set(Ecore_X_Window root,
Ecore_X_Randr_Crtc crtc, Ecore_X_Randr_Crtc crtc,
int left, int left,
const int top, const int top,
const int right, const int right,
const int bottom); const int bottom);
/* XRender Support (horrendously incomplete) */ /* XRender Support (horrendously incomplete) */
typedef Ecore_X_ID Ecore_X_Picture; typedef Ecore_X_ID Ecore_X_Picture;
/* XFixes Extension Support */ /* XFixes Extension Support */
typedef Ecore_X_ID Ecore_X_Region; typedef Ecore_X_ID Ecore_X_Region;
typedef enum _Ecore_X_Region_Type { typedef enum _Ecore_X_Region_Type
{
ECORE_X_REGION_BOUNDING, ECORE_X_REGION_BOUNDING,
ECORE_X_REGION_CLIP ECORE_X_REGION_CLIP
} Ecore_X_Region_Type; } Ecore_X_Region_Type;
EAPI Ecore_X_Region ecore_x_region_new(Ecore_X_Rectangle *rects, in EAPI Ecore_X_Region
t num); ecore_x_region_new(Ecore_X_Rectangle *rects,
EAPI Ecore_X_Region ecore_x_region_new_from_bitmap(Ecore_X_Pixmap b int num);
itmap); EAPI Ecore_X_Region
EAPI Ecore_X_Region ecore_x_region_new_from_window(Ecore_X_Window ecore_x_region_new_from_bitmap(Ecore_X_Pixmap bitmap);
win, EAPI Ecore_X_Region
Ecore_X_Region_T ecore_x_region_new_from_window(Ecore_X_Window win,
ype type); Ecore_X_Region_Type type);
EAPI Ecore_X_Region ecore_x_region_new_from_gc(Ecore_X_GC gc); EAPI Ecore_X_Region
EAPI Ecore_X_Region ecore_x_region_new_from_picture(Ecore_X_Picture ecore_x_region_new_from_gc(Ecore_X_GC gc);
picture); EAPI Ecore_X_Region
EAPI void ecore_x_region_free(Ecore_X_Region region); ecore_x_region_new_from_picture(Ecore_X_Picture picture);
EAPI void ecore_x_region_set(Ecore_X_Region region, EAPI void
Ecore_X_Rectangle *rects, ecore_x_region_free(Ecore_X_Region region);
int num); EAPI void
EAPI void ecore_x_region_copy(Ecore_X_Region dest, ecore_x_region_set(Ecore_X_Region region,
Ecore_X_Region source); Ecore_X_Rectangle *rects,
EAPI void ecore_x_region_combine(Ecore_X_Region dest, int num);
Ecore_X_Region source1, EAPI void
Ecore_X_Region source2); ecore_x_region_copy(Ecore_X_Region dest,
EAPI void ecore_x_region_intersect(Ecore_X_Region dest, Ecore_X_Region source);
Ecore_X_Region source1 EAPI void
, ecore_x_region_combine(Ecore_X_Region dest,
Ecore_X_Region source2 Ecore_X_Region source1,
); Ecore_X_Region source2);
EAPI void ecore_x_region_subtract(Ecore_X_Region dest, EAPI void
Ecore_X_Region source1, ecore_x_region_intersect(Ecore_X_Region dest,
Ecore_X_Region source2) Ecore_X_Region source1,
; Ecore_X_Region source2);
EAPI void ecore_x_region_invert(Ecore_X_Region dest, EAPI void
Ecore_X_Rectangle *bounds ecore_x_region_subtract(Ecore_X_Region dest,
, Ecore_X_Region source1,
Ecore_X_Region source Ecore_X_Region source2);
); EAPI void
EAPI void ecore_x_region_translate(Ecore_X_Region region, ecore_x_region_invert(Ecore_X_Region dest,
int dx, Ecore_X_Rectangle *bounds,
int dy); Ecore_X_Region source);
EAPI void ecore_x_region_extents(Ecore_X_Region dest, EAPI void
Ecore_X_Region source); ecore_x_region_translate(Ecore_X_Region region,
EAPI void ecore_x_region_fetch_prefetch(Ecore_X_Region re int dx,
gion); int dy);
EAPI void ecore_x_region_fetch_fetch(void); EAPI void
EAPI Ecore_X_Rectangle * ecore_x_region_fetch(Ecore_X_Region region, ecore_x_region_extents(Ecore_X_Region dest,
int *num, Ecore_X_Region source);
Ecore_X_Rectangle *bounds) EAPI Ecore_X_Rectangle *
; ecore_x_region_fetch(Ecore_X_Region region,
EAPI void ecore_x_region_expand(Ecore_X_Region dest, int *num,
Ecore_X_Region source, Ecore_X_Rectangle *bounds);
unsigned int left, EAPI void
unsigned int right, ecore_x_region_expand(Ecore_X_Region dest,
unsigned int top, Ecore_X_Region source,
unsigned int bottom); unsigned int left,
EAPI void ecore_x_region_gc_clip_set(Ecore_X_Region regio unsigned int right,
n, unsigned int top,
Ecore_X_GC gc, unsigned int bottom);
int x_ori EAPI void
gin, ecore_x_region_gc_clip_set(Ecore_X_Region region,
int y_ori Ecore_X_GC gc,
gin); int x_origin,
EAPI void ecore_x_region_window_shape_set(Ecore_X_Region int y_origin);
region, EAPI void
Ecore_X_Window ecore_x_region_window_shape_set(Ecore_X_Region region,
win, Ecore_X_Window win,
Ecore_X_Shape_T Ecore_X_Shape_Type type,
ype type, int x_offset,
int int y_offset);
x_offset, EAPI void
int ecore_x_region_picture_clip_set(Ecore_X_Region region,
y_offset); Ecore_X_Picture picture,
EAPI void ecore_x_region_picture_clip_set(Ecore_X_Region int x_origin,
region, int y_origin);
Ecore_X_Picture
picture, /**
int * xfixes selection notification request.
x_origin, *
int * This lets you choose which selections you want to get notifications for.
y_origin); * @param selection the selection atom.
* @return EINA_TRUE on success, EINA_FALSE otherwise.
* @since 1.1.0
*/
EAPI Eina_Bool
ecore_x_fixes_selection_notification_request(Ecore_X_Atom selection);
/* XComposite Extension Support */ /* XComposite Extension Support */
EAPI Eina_Bool ecore_x_composite_query(void); EAPI Eina_Bool
EAPI void ecore_x_composite_redirect_window(Ecore_X_Windo ecore_x_composite_query(void);
w win, EAPI void
Ecore_X_Compo ecore_x_composite_redirect_window(Ecore_X_Window win,
site_Update_Type type); Ecore_X_Composite_Update_Type type);
EAPI void ecore_x_composite_redirect_subwindows(Ecore_X_W EAPI void
indow win, ecore_x_composite_redirect_subwindows(Ecore_X_Window win,
Ecore_X_C Ecore_X_Composite_Update_Type type);
omposite_Update_Type type); EAPI void
EAPI void ecore_x_composite_unredirect_window(Ecore_X_Win ecore_x_composite_unredirect_window(Ecore_X_Window win,
dow win, Ecore_X_Composite_Update_Type type);
Ecore_X_Com EAPI void
posite_Update_Type type); ecore_x_composite_unredirect_subwindows(Ecore_X_Window win,
EAPI void ecore_x_composite_unredirect_subwindows(Ecore_X Ecore_X_Composite_Update_Type type)
_Window win, ;
Ecore_X EAPI Ecore_X_Pixmap
_Composite_Update_Type type); ecore_x_composite_name_window_pixmap_get(Ecore_X_Window win);
EAPI Ecore_X_Pixmap ecore_x_composite_name_window_pixmap_get(Ecore_ EAPI void
X_Window win); ecore_x_composite_window_events_disable(Ecore_X_Window win);
EAPI void ecore_x_composite_window_events_disable(Ecore_X EAPI void
_Window win); ecore_x_composite_window_events_enable(Ecore_X_Window win);
EAPI void ecore_x_composite_window_events_enable(Ecore_X_ EAPI Ecore_X_Window
Window win); ecore_x_composite_render_window_enable(Ecore_X_Window root);
EAPI Ecore_X_Window ecore_x_composite_render_window_enable(Ecore_X_ EAPI void
Window root); ecore_x_composite_render_window_disable(Ecore_X_Window root);
EAPI void ecore_x_composite_render_window_disable(Ecore_X
_Window root);
/* XDamage Extension Support */ /* XDamage Extension Support */
typedef Ecore_X_ID Ecore_X_Damage; typedef Ecore_X_ID Ecore_X_Damage;
typedef enum _Ecore_X_Damage_Report_Level { typedef enum _Ecore_X_Damage_Report_Level
{
ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES, ECORE_X_DAMAGE_REPORT_RAW_RECTANGLES,
ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES, ECORE_X_DAMAGE_REPORT_DELTA_RECTANGLES,
ECORE_X_DAMAGE_REPORT_BOUNDING_BOX, ECORE_X_DAMAGE_REPORT_BOUNDING_BOX,
ECORE_X_DAMAGE_REPORT_NON_EMPTY ECORE_X_DAMAGE_REPORT_NON_EMPTY
} Ecore_X_Damage_Report_Level; } Ecore_X_Damage_Report_Level;
struct _Ecore_X_Event_Damage struct _Ecore_X_Event_Damage
{ {
Ecore_X_Damage_Report_Level level; Ecore_X_Damage_Report_Level level;
Ecore_X_Drawable drawable; Ecore_X_Drawable drawable;
Ecore_X_Damage damage; Ecore_X_Damage damage;
int more; int more;
Ecore_X_Time time; Ecore_X_Time time;
Ecore_X_Rectangle area; Ecore_X_Rectangle area;
Ecore_X_Rectangle geometry; Ecore_X_Rectangle geometry;
}; };
typedef struct _Ecore_X_Event_Damage Ecore_X_Event_Damage; typedef struct _Ecore_X_Event_Damage Ecore_X_Event_Damage;
EAPI Eina_Bool ecore_x_damage_query(void); EAPI Eina_Bool
EAPI Ecore_X_Damage ecore_x_damage_new(Ecore_X_Drawable d, ecore_x_damage_query(void);
Ecore_X_Damage_Report_Level lev EAPI Ecore_X_Damage
el); ecore_x_damage_new(Ecore_X_Drawable d,
EAPI void ecore_x_damage_free(Ecore_X_Damage damage); Ecore_X_Damage_Report_Level level);
EAPI void ecore_x_damage_subtract(Ecore_X_Damage damage, EAPI void
Ecore_X_Region repair, ecore_x_damage_free(Ecore_X_Damage damage);
Ecore_X_Region parts); EAPI void
ecore_x_damage_subtract(Ecore_X_Damage damage,
EAPI Eina_Bool ecore_x_screen_is_composited(int screen); Ecore_X_Region repair,
EAPI void ecore_x_screen_is_composited_set(int sc Ecore_X_Region parts);
reen,
Ecore_X_Window wi
n);
EAPI Eina_Bool ecore_x_dpms_query(void);
EAPI void ecore_x_dpms_capable_get_prefetch(void);
EAPI void ecore_x_dpms_capable_get_fetch(void);
EAPI Eina_Bool ecore_x_dpms_capable_get(void);
EAPI void ecore_x_dpms_enable_get_prefetch(void);
EAPI void ecore_x_dpms_enable_get_fetch(void);
EAPI Eina_Bool ecore_x_dpms_enabled_get(void);
EAPI void ecore_x_dpms_enabled_set(int enabled);
EAPI void ecore_x_dpms_timeouts_get_prefetch(void);
EAPI void ecore_x_dpms_timeouts_get_fetch(void);
EAPI void ecore_x_dpms_timeouts_get(unsigned int *standby,
unsigned int *suspend,
unsigned int *off);
EAPI Eina_Bool ecore_x_dpms_timeouts_set(unsigned int standby,
unsigned int suspend,
unsigned int off);
EAPI unsigned int ecore_x_dpms_timeout_standby_get(void);
EAPI unsigned int ecore_x_dpms_timeout_suspend_get(void);
EAPI unsigned int ecore_x_dpms_timeout_off_get(void);
EAPI void ecore_x_dpms_timeout_standby_set(unsigned int new_
timeout);
EAPI void ecore_x_dpms_timeout_suspend_set(unsigned int new_
timeout);
EAPI void ecore_x_dpms_timeout_off_set(unsigned int new_time
out);
EAPI Eina_Bool ecore_x_test_fake_key_down(const char *key);
EAPI Eina_Bool ecore_x_test_fake_key_up(const char *key);
EAPI Eina_Bool ecore_x_test_fake_key_press(const char *key);
EAPI const char * ecore_x_keysym_string_get(int keysym);
typedef struct _Ecore_X_Image Ecore_X_Image;
EAPI Ecore_X_Image * ecore_x_image_new(int w,
int h,
Ecore_X_Visual vis,
int depth);
EAPI void ecore_x_image_free(Ecore_X_Image *im);
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);
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);
EAPI void * ecore_x_image_data_get(Ecore_X_Image *im,
int *bpl,
int *rows,
int *bpp);
EAPI Eina_Bool ecore_x_image_is_argb32_get(Ecore_X_Image *im);
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);
EAPI Eina_Bool ecore_x_input_multi_select(Ecore_X_Window win); EAPI Eina_Bool
ecore_x_screen_is_composited(int screen);
EAPI void
ecore_x_screen_is_composited_set(int screen,
Ecore_X_Window win);
EAPI Eina_Bool
ecore_x_dpms_query(void);
EAPI Eina_Bool
ecore_x_dpms_capable_get(void);
EAPI Eina_Bool
ecore_x_dpms_enabled_get(void);
EAPI void
ecore_x_dpms_enabled_set(int enabled);
EAPI void
ecore_x_dpms_timeouts_get(unsigned int *standby,
unsigned int *suspend,
unsigned int *off);
EAPI Eina_Bool
ecore_x_dpms_timeouts_set(unsigned int standby,
unsigned int suspend,
unsigned int off);
EAPI unsigned int
ecore_x_dpms_timeout_standby_get(void);
EAPI unsigned int
ecore_x_dpms_timeout_suspend_get(void);
EAPI unsigned int
ecore_x_dpms_timeout_off_get(void);
EAPI void
ecore_x_dpms_timeout_standby_set(unsigned int new_timeout);
EAPI void
ecore_x_dpms_timeout_suspend_set(unsigned int new_timeout);
EAPI void
ecore_x_dpms_timeout_off_set(unsigned int new_timeout);
EAPI Eina_Bool
ecore_x_test_fake_key_down(const char *key);
EAPI Eina_Bool
ecore_x_test_fake_key_up(const char *key);
EAPI Eina_Bool
ecore_x_test_fake_key_press(const char *key);
EAPI const char *
ecore_x_keysym_string_get(int keysym);
typedef struct _Ecore_X_Image Ecore_X_Image;
EAPI Ecore_X_Image *
ecore_x_image_new(int w,
int h,
Ecore_X_Visual vis,
int depth);
EAPI void
ecore_x_image_free(Ecore_X_Image *im);
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);
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);
EAPI void *
ecore_x_image_data_get(Ecore_X_Image *im,
int *bpl,
int *rows,
int *bpp);
EAPI Eina_Bool
ecore_x_image_is_argb32_get(Ecore_X_Image *im);
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);
EAPI Eina_Bool
ecore_x_input_multi_select(Ecore_X_Window win);
EAPI Eina_Bool
ecore_x_vsync_animator_tick_source_set(Ecore_X_Window win);
typedef enum _Ecore_X_Gesture_Event_Mask
{
ECORE_X_GESTURE_EVENT_MASK_NONE = 0L,
ECORE_X_GESTURE_EVENT_MASK_FLICK = (1L << 0),
ECORE_X_GESTURE_EVENT_MASK_PAN = (1L << 1),
ECORE_X_GESTURE_EVENT_MASK_PINCHROTATION = (1L << 2),
ECORE_X_GESTURE_EVENT_MASK_TAP = (1L << 3),
ECORE_X_GESTURE_EVENT_MASK_TAPNHOLD = (1L << 4),
ECORE_X_GESTURE_EVENT_MASK_HOLD = (1L << 5),
ECORE_X_GESTURE_EVENT_MASK_GROUP = (1L << 6)
} Ecore_X_Gesture_Event_Mask;
typedef enum _Ecore_X_Gesture_Event_Type
{
ECORE_X_GESTURE_EVENT_FLICK,
ECORE_X_GESTURE_EVENT_PAN,
ECORE_X_GESTURE_EVENT_PINCHROTATION,
ECORE_X_GESTURE_EVENT_TAP,
ECORE_X_GESTURE_EVENT_TAPNHOLD,
ECORE_X_GESTURE_EVENT_HOLD,
ECORE_X_GESTURE_EVENT_GROUP
} Ecore_X_Gesture_Event_Type;
typedef enum _Ecore_X_Gesture_Event_Subtype
{
ECORE_X_GESTURE_END,
ECORE_X_GESTURE_BEGIN,
ECORE_X_GESTURE_UPDATE,
ECORE_X_GESTURE_DONE
} Ecore_X_Gesture_Event_Subtype;
typedef enum _Ecore_X_Gesture_Group_Subtype
{
ECORE_X_GESTURE_GROUP_REMOVED,
ECORE_X_GESTURE_GROUP_ADDED,
ECORE_X_GESTURE_GROUP_CURRENT
} Ecore_X_Gesture_Group_Subtype;
typedef enum _Ecore_X_Gesture_Direction
{
ECORE_X_GESTURE_NORTHWARD,
ECORE_X_GESTURE_NORTHEASTWARD,
ECORE_X_GESTURE_EASTWARD,
ECORE_X_GESTURE_SOUTHEASTWARD,
ECORE_X_GESTURE_SOUTHWARD,
ECORE_X_GESTURE_SOUTHWESTWARD,
ECORE_X_GESTURE_WESTWARD,
ECORE_X_GESTURE_NORTHWESTWARD
} Ecore_X_Gesture_Direction;
struct _Ecore_X_Event_Gesture_Notify_Flick
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Event_Subtype subtype;
int num_fingers;
int distance;
Ecore_X_Time duration;
Ecore_X_Gesture_Direction direction;
double angle;
};
struct _Ecore_X_Event_Gesture_Notify_Pan
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Event_Subtype subtype;
int num_fingers;
int dx;
int dy;
int distance;
Ecore_X_Time duration;
Ecore_X_Gesture_Direction direction;
};
struct _Ecore_X_Event_Gesture_Notify_PinchRotation
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Event_Subtype subtype;
int num_fingers;
int distance;
int cx;
int cy;
double zoom;
double angle;
};
struct _Ecore_X_Event_Gesture_Notify_Tap
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Event_Subtype subtype;
int num_fingers;
int cx;
int cy;
int tap_repeat;
Ecore_X_Time interval;
};
struct _Ecore_X_Event_Gesture_Notify_TapNHold
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Event_Subtype subtype;
int num_fingers;
int cx;
int cy;
Ecore_X_Time interval;
Ecore_X_Time hold_time;
};
struct _Ecore_X_Event_Gesture_Notify_Hold
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Event_Subtype subtype;
int num_fingers;
int cx;
int cy;
Ecore_X_Time hold_time;
};
struct _Ecore_X_Event_Gesture_Notify_Group
{
Ecore_X_Window win;
Ecore_X_Time time;
Ecore_X_Gesture_Group_Subtype subtype;
int num_groups;
int group_id;
};
EAPI Eina_Bool
ecore_x_gesture_supported(void);
EAPI Eina_Bool
ecore_x_gesture_events_select(Ecore_X_Window win,
Ecore_X_Gesture_Event_Mask mask);
EAPI Ecore_X_Gesture_Event_Mask
ecore_x_gesture_events_selected_get(Ecore_X_Window win);
EAPI Eina_Bool
ecore_x_gesture_event_grab(Ecore_X_Window win,
Ecore_X_Gesture_Event_Type type,
int num_fingers);
EAPI Eina_Bool
ecore_x_gesture_event_ungrab(Ecore_X_Window win,
Ecore_X_Gesture_Event_Type type,
int num_fingers);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif // ifdef __cplusplus #endif // ifdef __cplusplus
#include <Ecore_X_Atoms.h> #include <Ecore_X_Atoms.h>
#include <Ecore_X_Cursor.h> #include <Ecore_X_Cursor.h>
#endif // ifndef _ECORE_X_H #endif // ifndef _ECORE_X_H
 End of changes. 104 change blocks. 
2017 lines changed or deleted 2486 lines changed or added


 Ecore_X_Atoms.h   Ecore_X_Atoms.h 
skipping to change at line 19 skipping to change at line 19
/* generic atoms */ /* generic atoms */
EAPI extern Ecore_X_Atom ECORE_X_ATOM_ATOM; EAPI extern Ecore_X_Atom ECORE_X_ATOM_ATOM;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_CARDINAL; EAPI extern Ecore_X_Atom ECORE_X_ATOM_CARDINAL;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT; EAPI extern Ecore_X_Atom ECORE_X_ATOM_COMPOUND_TEXT;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_FILE_NAME; EAPI extern Ecore_X_Atom ECORE_X_ATOM_FILE_NAME;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_STRING; EAPI extern Ecore_X_Atom ECORE_X_ATOM_STRING;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_TEXT; EAPI extern Ecore_X_Atom ECORE_X_ATOM_TEXT;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_UTF8_STRING; EAPI extern Ecore_X_Atom ECORE_X_ATOM_UTF8_STRING;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_WINDOW; EAPI extern Ecore_X_Atom ECORE_X_ATOM_WINDOW;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_PIXMAP; EAPI extern Ecore_X_Atom ECORE_X_ATOM_PIXMAP;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_VISUALID;
/* dnd atoms */ /* dnd atoms */
EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_XDND; EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_XDND;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_XDND; EAPI extern Ecore_X_Atom ECORE_X_ATOM_SELECTION_PROP_XDND;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_AWARE; EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_AWARE;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ENTER; EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ENTER;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_TYPE_LIST; EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_TYPE_LIST;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_POSITION; EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_POSITION;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_COPY; EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_COPY;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_MOVE; EAPI extern Ecore_X_Atom ECORE_X_ATOM_XDND_ACTION_MOVE;
skipping to change at line 251 skipping to change at line 252
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_COUNTER; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_COUNTER;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_BEGIN; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_BEGIN;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_END; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_END;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_CANCEL; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_CANCEL;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_FLUSH; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_FLUSH;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_DUMP; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_DUMP;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP; EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_PIXMAP;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_PARENT;
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_VIDEO_POSITION;
#endif /* _ECORE_X_ATOMS_H */ #endif /* _ECORE_X_ATOMS_H */
 End of changes. 2 change blocks. 
0 lines changed or deleted 4 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/