Commit Graph

2906 Commits

Author SHA1 Message Date
Vincent Torri 7ca35fd0b7 ecore_job has gone too
SVN revision: 46991
2010-03-08 08:34:18 +00:00
Vincent Torri d921c4c993 and update doc
SVN revision: 46990
2010-03-08 08:21:25 +00:00
Vincent Torri dbc8d3b073 update debian files too
SVN revision: 46989
2010-03-08 08:19:51 +00:00
Vincent Torri 4c296165e3 ecore_job and ecore_txt has gone
SVN revision: 46988
2010-03-08 08:16:31 +00:00
Vincent Torri f447e95940 update to latest scb-util version (xcb icccm api changed)
SVN revision: 46987
2010-03-08 08:12:45 +00:00
Vincent Torri b8d9afdf21 update po
SVN revision: 46986
2010-03-08 08:11:27 +00:00
Vincent Torri 4c776308fb remove ecore_txt
SVN revision: 46985
2010-03-08 08:08:04 +00:00
Carsten Haitzler 44b2b3fb46 init values with null.
SVN revision: 46973
2010-03-08 01:14:12 +00:00
Vincent Torri c7af321f54 typo
SVN revision: 46948
2010-03-07 12:14:19 +00:00
Vincent Torri 1a757c37b4 when pthread is found, don't abort if spin lock is not found but not reqested
Patch by Albin Tonnerre


SVN revision: 46943
2010-03-07 12:07:08 +00:00
Vincent Torri 6280a731fb bug--
SVN revision: 46937
2010-03-07 11:47:11 +00:00
Vincent Torri 9328392a28 include Ecore.h before ecore_private.h
SVN revision: 46879
2010-03-04 21:39:21 +00:00
Vincent Torri f84d37e9f0 no need to set want_ecore_con to yes for darwin and generic OS
SVN revision: 46864
2010-03-04 08:21:21 +00:00
Vincent Torri 491389a7ee ecore_con not ready for Windows yet
SVN revision: 46863
2010-03-04 08:19:26 +00:00
Carsten Haitzler e5d2bea7ec oops! screen 0 not 1!
SVN revision: 46779
2010-03-02 08:06:37 +00:00
Carsten Haitzler 07a9e63cb4 missing call if gl enigne not built.
SVN revision: 46763
2010-03-02 01:43:45 +00:00
Carsten Haitzler 4d33962b8c set win to 0 - in case
SVN revision: 46684
2010-03-01 12:01:57 +00:00
Carsten Haitzler 2a70e8701c allow alpha ee windows.
SVN revision: 46678
2010-03-01 04:44:36 +00:00
Gustavo Sverzut Barbieri dba2a95572 warnings--
Ecore now goes clean on -Wall -Wextra :-)



SVN revision: 46672
2010-02-28 23:27:47 +00:00
Vincent Torri e9b5f89824 F_SETFL and O_NONBLOCK are supported by evil
SVN revision: 46658
2010-02-28 17:38:24 +00:00
Vincent Torri 9706b7206e abort when pthread is requested but not found
patch by Albin Tonnerre



SVN revision: 46656
2010-02-28 17:28:05 +00:00
Gustavo Sverzut Barbieri 336e1aac6c Revert EINA_(TRUE|FALSE) as requested by vincent.
windows have TRUE/FALSE and he wants it to be like that, if required
he will replace the efl-specific places later.



SVN revision: 46586
2010-02-27 16:45:20 +00:00
Carsten Haitzler 498dec5154 hmm fix resize before change alpha...
SVN revision: 46579
2010-02-27 14:40:10 +00:00
Carsten Haitzler da89f13454 yes yes yes!
SVN revision: 46578
2010-02-27 14:25:48 +00:00
Gustavo Sverzut Barbieri b2816b08e9 ecore_txt is also a thin and picky wrapper around eina_str_convert()
this remove explicit dependency on iconv, so no checks are required
anymore.



SVN revision: 46546
2010-02-27 01:10:26 +00:00
Gustavo Sverzut Barbieri 064cea0516 be picky about ecore_data even during runtime.
let's try to remove ecore_data from code asap, so we can remove it
from svn as well.

If you need help ask mail list or #edevelop.



SVN revision: 46545
2010-02-27 01:01:03 +00:00
Gustavo Sverzut Barbieri 1f03f022fb be picky even during runtime, let's try to spot and remove these ASAP.
SVN revision: 46544
2010-02-27 00:56:36 +00:00
Gustavo Sverzut Barbieri f838e162b3 ecore_data is deprecated, flag everything as such.
those functions with drop-in replacement are just calls to the eina version.



SVN revision: 46543
2010-02-27 00:53:58 +00:00
Gustavo Sverzut Barbieri 9436429a09 follow vtorri's advice and mark txt and config as deprecated in the summary
SVN revision: 46542
2010-02-27 00:33:19 +00:00
Gustavo Sverzut Barbieri e54bd066ec Convert everything to EINA_(TRUE|FALSE)
make it consistent.

By: Lucas de Marchi.



SVN revision: 46539
2010-02-27 00:01:10 +00:00
Christopher Michael 300d53a4f4 Patch from Brian Wang to fix the TRUE/FALSE --> EINA_TRUE/EINA_FALSE mess.
(NB: Win32/CE people may need to fix some TRUE/FALSE parts...couldn't test
those).

Thanks Brian :)



SVN revision: 46503
2010-02-26 05:56:49 +00:00
Gustavo Sverzut Barbieri a98924ce6d turn off build of ecore-txt and ecore-config by default.
These are deprecated and will be killed in short time, stop using them!

Recommendations:

 * ecore-txt: use eina_str_convert, drop in replacement, just sed.

 * ecore-config: convert your code to use eet + Eet_Data_Descriptors
   directly, it is simpler and faster, but requires you to change your
   code. Consider using eet_data_descriptor_file_new() and
   eet_eina_file_data_descriptor_class_set() or
   EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(). Then describe your type
   with EET_DATA_DESCRIPTOR_ADD_*().




SVN revision: 46494
2010-02-26 00:20:34 +00:00
Gustavo Sverzut Barbieri e758e125f9 fix help string.
SVN revision: 46488
2010-02-25 21:26:32 +00:00
Gustavo Sverzut Barbieri 36bb64b0d0 maximum log level option.
this will have compilers to completely compile out log statements
using levels greater than the given number.

this is defined in config.h, thus C files should include this before
including Eina.h, as should be the case for all files (IOW: if it does
not work for some file, that file already have a bug).




SVN revision: 46482
2010-02-25 20:28:15 +00:00
Gustavo Sverzut Barbieri 6cd7135e5d couple of simple positive tests.
This is far from real unit testing, just simple cases are covered, but
it's better than nothing.



SVN revision: 46477
2010-02-25 19:38:32 +00:00
Cedric BAIL 816974ff0b * ecore: Match what doc when disabling thread support in ecore.
SVN revision: 46467
2010-02-25 15:26:38 +00:00
Carsten Haitzler 02d8dc445f why do a round trip for local info like.. root window # 0...
SVN revision: 46460
2010-02-25 12:26:25 +00:00
Carsten Haitzler b0045cb9b7 add lots of logging functions - for trackign x overhead when u cant get
symbols... booo! - disabled of course.



SVN revision: 46458
2010-02-25 12:19:02 +00:00
Vincent Torri a02b17d2f5 add unit tests framework with some examples.
pass --enable-tests to configure to enable them,
then 'make check' to run the tests.


SVN revision: 46456
2010-02-25 08:05:56 +00:00
Ulisses Furquim f316516b1c Checking init count before actually freeing ecore evases.
SVN revision: 46447
2010-02-24 22:48:55 +00:00
Gustavo Sverzut Barbieri 2d60db1c2b Fix fd_handlers when using recursive main loops.
If an fd_handler created a recursive main loop (just called
ecore_main_loop_begin()), then this recursive main loop should
continue to process fd_handlers from there and on, thus
fd_handler_current (and win32_handler_current) was added. When going
back from recursion, the current iterator should be updated properly.

This patch also fixes the deletion of fd_handler from recursive main
loops by reference counting them. This way, the node will not be
free()d inside inner loop cleanups and then crash when going back to
outer loop.

PS: win32 code is untested (or even compiled).

The following test case used to crash but not anymore:

#include <Ecore.h>
#include <Eina.h>
#include <unistd.h>

static int _log_dom;
#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)
#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__)

static Ecore_Fd_Handler *handle;
static int a[2], b[2];

static int cb2(void *data, Ecore_Fd_Handler *h)
{
    INF("cb2 - delete cb1 handle");
    ecore_main_fd_handler_del(handle);
    ecore_main_loop_quit(); /* quits inner main loop */
    return 0;
}

static int cb1(void *data, Ecore_Fd_Handler *h)
{
    unsigned char ch = 222;

    INF("cb1: begin");
    INF("    add cb2");
    ecore_main_fd_handler_add(b[0], ECORE_FD_READ, cb2, NULL, NULL, NULL);
    INF("    wake up pipe b");
    if (write(b[1], &ch, 1) != 1)
        ERR("could not write to pipe b");
    INF("    inner main loop begin (recurse)");
    ecore_main_loop_begin(); /* will it crash due
                              * ecore_main_fd_handler_del(handle)
                              * inside cb2()? It used to!
                              */
    INF("cb1: end");

    ecore_main_loop_quit(); /* quits outer main loop */

    return 0;
}

int main(void)
{
    unsigned char ch = 111;

    ecore_init();

    _log_dom = eina_log_domain_register("test", EINA_COLOR_CYAN);
    pipe(a);
    pipe(b);

    /*
     * Creating a new main loop from inside an fd_handler callback,
     * and inside this new (inner) main loop deleting the caller
     * callback used to crash since the handle would be effectively
     * free()d, but when the recursion is over the pointer would be
     * used.
     */

    INF("main: begin");
    handle = ecore_main_fd_handler_add
        (a[0], ECORE_FD_READ, cb1, NULL, NULL, NULL);
    INF("main: wake up pipe a");
    if (write(a[1], &ch, 1) != 1)
        ERR("could not write to pipe a");
    ecore_main_loop_begin();
    INF("main: end");
    return 0;
}



SVN revision: 46443
2010-02-24 20:59:44 +00:00
Vincent Torri 89594ec456 fix declaration of struct addrinfo
SVN revision: 46434
2010-02-24 17:52:54 +00:00
Carsten Haitzler 6ddefd5b4f -n - not -z!
SVN revision: 46424
2010-02-24 07:35:32 +00:00
Carsten Haitzler eb650a7300 some roundtrips--
SVN revision: 46420
2010-02-24 04:36:22 +00:00
Gustavo Sverzut Barbieri 50d0af9d5e Fix events when using recursive main loops.
If an event handler/filter created a recursive main loop (just called
ecore_main_loop_begin()), then this recursive main loop should
continue to process events/handlers/filters from there and on, thus
event_current/event_filter_current/event_handler_current were
added. When going back from recursion, the current iterator should be
updated properly.

The following test case used to crash but not anymore:

#include <Ecore.h>
#include <Eina.h>

static int _log_dom;
#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)

static Ecore_Event_Handler *handle;

static int cb2(void *data, int type, void *event)
{
    INF("cb2 - delete cb1 handle");
    ecore_event_handler_del(handle);
    ecore_main_loop_quit(); /* quits inner main loop */
    return 0;
}

static int cb1(void *data, int type, void *event)
{
    Ecore_Event *e;

    INF("cb1: begin");
    INF("    add cb2");

    type = ecore_event_type_new();
    ecore_event_handler_add(type, cb2, NULL);
    e = ecore_event_add(type, NULL, NULL, NULL);
    INF("    add event to trigger cb2: event=%p", e);
    INF("    inner main loop begin (recurse)");
    ecore_main_loop_begin(); /* will it crash due
                              * ecore_event_handler_del(handle) inside
                              * cb2()? It used to!
                              */
    INF("cb1: end");

    ecore_main_loop_quit(); /* quits outer main loop */

    return 0;
}

int main(void)
{
    Ecore_Event *e;
    int type;

    ecore_init();

    _log_dom = eina_log_domain_register("test", EINA_COLOR_CYAN);

    /*
     * Creating a new main loop from inside an event callback, and inside
     * this new (inner) main loop deleting the caller callback used to
     * crash since the handle would be effectively free()d, but when the
     * recursion is over the pointer would be used.
     */

    type = ecore_event_type_new();

    INF("main: begin");
    handle = ecore_event_handler_add(type, cb1, NULL);
    e = ecore_event_add(type, NULL, NULL, NULL);
    INF("    add event to trigger cb1: event=%p", e);
    INF("    main loop begin");
    ecore_main_loop_begin();
    INF("main: end");
    return 0;
}




SVN revision: 46419
2010-02-24 02:30:27 +00:00
Gustavo Sverzut Barbieri b9c3b58561 events (also filters and handlers) now have reference counting.
Add reference counting to events, event filters and event handlers so
they can recurse main loops.

Note that the required "continuation" when entering main loops is not
there, thus recursion will restart and this will fail badly in lots of
cases. This should be fixed in future commits.



SVN revision: 46417
2010-02-24 01:16:00 +00:00
Gustavo Sverzut Barbieri 0bdbf9d147 rewrite ecore_timer internals to make it simpler and do better with
recursive main loops.

Unlike idlers, timers seems to work reasonably well with main loops, I
*think* they might fail since it used a boolean to flag running as
opposed to a reference count with incremental increments/decrements. I
could not write a test case to demonstrate so.

The now code should be simpler, particularly the
_ecore_timer_call(). It will also consider the previous position when
entering recursive main loops, preserving the order.

Deletion of timers are delegated to ecore_main.c, that was already
calling _ecore_timer_cleanup() after timers were executed.



SVN revision: 46416
2010-02-24 00:27:04 +00:00
Christopher Michael 34f6da920a Actually send the events wrt randr changes.
SVN revision: 46414
2010-02-23 23:32:30 +00:00
Gustavo Sverzut Barbieri 18b1bf46d7 move bitfield booleans to Eina_Bool.
using one bit with integers will just have room for 0 and -1, not 0 and 1.



SVN revision: 46412
2010-02-23 22:49:15 +00:00
Gustavo Sverzut Barbieri 0c24c76c5a Fix idle_exiters when using recursive main loops.
If an idle_exiter created a recursive main loop (just called
ecore_main_loop_begin()), then this recursive main loop should
continue to process idle_exiters from there and on, thus
idle_exiter_current was added. When going back from recursion, the
current iterator should be updated properly.

This patch also fixes the deletion of idle_exiters from recursive
main loops by reference counting them. This way, the node will not be
free()d inside inner loop cleanups and then crash when going back to
outer loop.

The following test case used to crash but not anymore:

#include <Ecore.h>
#include <Eina.h>

static int _log_dom;
#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__)

static Ecore_Idle_Exiter *handle;

static int idler(void *data)
{
    INF("idler");
    return 1;
}

static int timer(void *data)
{
    INF("timer (exited idle!)");
    return 0;
}

static int exit_idle(void *data)
{
    INF("add request (timer) to exit idle");
    ecore_timer_add(0.0, timer, NULL);
    return 0;
}

static int cb2(void *data)
{
    INF("cb2 - delete cb1 handle");
    ecore_idle_exiter_del(handle);
    ecore_main_loop_quit(); /* quits inner main loop */
    return 0;
}

static int cb1(void *data)
{
    INF("cb1: begin");
    INF("    add cb2");
    ecore_idle_exiter_add(cb2, NULL);
    INF("    add exit idler");
    ecore_idler_add(exit_idle, NULL);
    INF("    inner main loop begin (recurse)");
    ecore_main_loop_begin(); /* will it crash due ecore_idle_exiter_del(handle)
                              * inside cb2()? It used to!
                              */
    INF("cb1: end");

    ecore_main_loop_quit(); /* quits outer main loop */

    return 0;
}

int main(void)
{
    ecore_init();

    _log_dom = eina_log_domain_register("test", EINA_COLOR_CYAN);

    /*
     * Creating a new main loop from inside an idle_exiter callback,
     * and inside this new (inner) main loop deleting the caller
     * callback used to crash since the handle would be effectively
     * free()d, but when the recursion is over the pointer would be
     * used.
     */

    INF("main: begin");
    handle = ecore_idle_exiter_add(cb1, NULL);
    ecore_idler_add(idler, NULL);
    ecore_idler_add(exit_idle, NULL);
    ecore_main_loop_begin();
    INF("main: end");
    return 0;
}



SVN revision: 46410
2010-02-23 22:25:35 +00:00