Commit Graph

10902 Commits

Author SHA1 Message Date
Carsten Haitzler c1c7e901f5 CEEEEEEEEEDRICCCCCCCCCCCCCCCC!
borked e conf panel. unbork. disable aspect.



SVN revision: 52273
2010-09-14 22:32:34 +00:00
Bruno Dilly d0eb6e4054 Add missing bogosity X cursor
SVN revision: 52270
2010-09-14 21:43:44 +00:00
Vincent Torri 93f58106a6 ecore_win32 does not depend on Evas.
SVN revision: 52264
2010-09-14 21:25:31 +00:00
Vincent Torri 70622ee748 * src/lib/Makefile.am:
* src/lib/Evil.h:
* src/lib/evil_time.c:
* src/lib/evil_time.h:
add locatime_r() for calendar in Elementary.


SVN revision: 52263
2010-09-14 21:24:25 +00:00
Eduardo de Barros Lima 2216c53641 Eina_List: Avoid Segfault
Some inputs in which tmp - cur is greater than the number of previous nodes
in list, were causing ct to be null at end of loop.

Patch by Jonas M. Gastal <jgastal@profusion.mobi>



SVN revision: 52253
2010-09-14 18:29:30 +00:00
Vincent Torri 47b00392a7 useless define (already defined in command line)
SVN revision: 52247
2010-09-14 16:47:01 +00:00
Vincent Torri f7b1362905 add braces to remove ambiguous condition warning
SVN revision: 52246
2010-09-14 15:57:20 +00:00
Cedric BAIL 2e87895f67 * edje: remove use of flags as it was always set to FLAG_XY
in _edje_part_recalc_single.


SVN revision: 52245
2010-09-14 15:53:47 +00:00
Cedric BAIL d1203fc0ca * edje: fix edje use of aspect when constrained by min or max.
NOTE: If you have swallow or parts that where constrained by min and
	max, and you used aspect on them, expect change on your layout.


SVN revision: 52244
2010-09-14 15:36:16 +00:00
Tom Hacohen 78deeca6ba Evas textblock: Fixed the bug with disappearing text with many tabs and text.
I removed a function that caused the issue and made no sense at all, honestly, it didn't make any sense.
I did a lot of testing trying to see if there are any new bugs after the fix, and nothing, so I guess my instincts were correct.
Please if you can, check out the removed function (_layout_walk_back_to_item_word_redo) and see if it makes any sense to you, if it does, please let me know.

SVN revision: 52243
2010-09-14 13:57:26 +00:00
Carsten Haitzler f200c483b4 epoll - bad. disable default support. u have to --enable it. don't
--enable it if u want elm quicklaunch to work.



SVN revision: 52240
2010-09-14 10:38:28 +00:00
Carsten Haitzler 4081d86c6c better cleanup of poll fd's on shutdown
SVN revision: 52229
2010-09-14 00:53:57 +00:00
Carsten Haitzler 4f823dab67 fix first map bug handling to handle more than first window map.
SVN revision: 52200
2010-09-13 22:16:26 +00:00
Lucas De Marchi e46b64199f Don't check return value of alloca
alloca() doesn't return NULL on error, so do not check its return value.



SVN revision: 52199
2010-09-13 18:40:32 +00:00
Iván Briano 2bd045dd1f Pending patch from glima, who's on vacations.
Add two new canvas level callbacks: OBJECT_FOCUS_IN/OUT
As we already had callbacks for objects gaining or losing focus, then
two more for the Canvas, now we can have the entire Evas be notified when
any object changes its focused status. The object in question is passed
as the event_info for the callback.


SVN revision: 52196
2010-09-13 18:04:23 +00:00
Lucas De Marchi 9c091e1714 Assert cache->usage never becomes negative
Assert cache->usage never becomes negative as was occurring before the
fix in r52149.

Just in time, the fix in r52149 was made by Ulisses, not me.



SVN revision: 52190
2010-09-13 13:58:34 +00:00
Cedric BAIL d287f127fd * eio: callback are allowed to modify their own data.
Don't know how I wrote this non sense.


SVN revision: 52189
2010-09-13 13:44:24 +00:00
Carsten Haitzler 2303255182 dont get item anchors so often!
SVN revision: 52187
2010-09-13 12:08:19 +00:00
Brett Nash ee8881634b Add a semicolon. GCC: This ones for you.
SVN revision: 52184
2010-09-13 09:16:01 +00:00
Brett Nash 5ea066ec74 Deniggle and rename the exore_x_dndn_callback_pos_update_set call.
SVN revision: 52183
2010-09-13 09:15:57 +00:00
Brett Nash ba4ae189ea Use -1.
SVN revision: 52182
2010-09-13 09:15:53 +00:00
Brett Nash e36847a0ab Xdnd callback (API Addition): Rationale below.
Essentially the problem is this: For drag and drop Ecore currently handles the
position update calls.  But usually the application wants to display some user
feedback - a window to display the drag selection for instance.

Now the way e17 does it is grab the mouse cursor movements and track them
itself.  However ecore is already doing this, it's already walking window
trees, calculating real positions, _and_ sending them in an X client message.
So it seems rather silly to duplicate the code in the user app to get the same
info.

We could possibly have added a new event, but then we need to deal the fact
the position update may arrive _After_ the item has been dropped.  Hilarity
ensures[1].

This callback is meant for purely the selection owner of the drag to use, so
it is a callback set, not an add.

[1] Segfaults probably.  Nothing funnier.

SVN revision: 52181
2010-09-13 09:15:50 +00:00
Brett Nash 310ee61355 Always return an x rander version (unset in this case).
SVN revision: 52180
2010-09-13 09:15:45 +00:00
Mike Blumenkrantz 534bd43e9d initial doxy patch for rbtree from vtorri
CEDRIC WRITE DOCS FOR THIS!


SVN revision: 52172
2010-09-12 19:28:18 +00:00
Tom Hacohen 527a3f3579 Edje entry: Fixed a selection bug with IMF enabled and fix a couple of indentation issues, and a saftey check.
Patch by Jihoon Kim.

SVN revision: 52165
2010-09-12 08:15:35 +00:00
Mike Blumenkrantz 1970f8dd6c more doxy from vtorri
SVN revision: 52164
2010-09-12 08:03:21 +00:00
Mike Blumenkrantz eb775222a5 variable name changes for accessor functions
patch by vtorry
compile testing frowned upon by andredieb


SVN revision: 52163
2010-09-12 06:49:57 +00:00
Lucas De Marchi d32c0f99bd Fix accounting of memory usage in image cache
Memory usage was not accounted right because
cache->func.mem_size_get(ie) returns 0 when called after
cache->func.destructor(ie). Thus the total memory used, kept on
cache->usage, is never decremented in _evas_cache_image_remove_activ()

This implies that cache->usage will keep growing and eventually it will
overflow, becoming negative. So evas_cache_image_flush() will not do its
job because cache->limit (assumed to be positive) will not be less than
cache->usage anymore. So the total memory allocated will start to grow
and the limit won't be respected.

Strictly speaking, it's not a leak, since all the memory will be
eventually freed when evas shutdown is called, but the program might be
killed by over allocating memory. This is caught by valgrind with the
massif tool. The graphic below shows that in the end a huge memory amount
is allocated. This is the moment when cache->usage became negative.

MB
26.04^                                                                   #
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
|                                                                   #::::
| :::::::::::::::::@@:::::::::@:::@::::::@::::::::::::::::::::::::::#::::
| : ::: ::: ::: :::@ :: ::: : @:: @:: :::@: :: ::: : : :: :: : ::: :#::::
0 +----------------------------------------------------------------------->Gi
0                                                                   54.83

This patch is a one line fix, which swaps the calls to
_evas_cache_image_remove_activ() and cache->func.destructor() making
cache->limit to be respected.



SVN revision: 52149
2010-09-10 23:00:26 +00:00
Lucas De Marchi c4a0cef6e6 Fix typos in docs
* eina_thread_init doesn't exist. eina_threads_init it is;
* 'mutexes' is a more common spelling, not 'mutexs'



SVN revision: 52136
2010-09-10 12:01:52 +00:00
Lucas De Marchi 77d42e9cca Simplify code by removing unneeded auxiliary variable
SVN revision: 52135
2010-09-10 11:25:26 +00:00
Lucas De Marchi bd12ce52f7 Refactor function to return as early as possible
Instead of a looooooong 'if', return on the contrary.



SVN revision: 52134
2010-09-10 11:25:15 +00:00
Lucas De Marchi fa4e9c4f18 Formatting
SVN revision: 52133
2010-09-10 11:25:05 +00:00
Lucas De Marchi fe7cfb1e16 Refactor jumps
Instead of relying on the value of edf (and having to set it on all
places to NULL) jump to 'open' label on the only possible case of the
control flow.



SVN revision: 52132
2010-09-10 11:24:49 +00:00
Carsten Haitzler fae947f8ea do extra composite checks - need to do the lot to be useful.
SVN revision: 52121
2010-09-10 06:57:21 +00:00
Lucas De Marchi 31c1225bd7 Fix parameter order in help
Calling help in edje_player was showing the wrong order for sending a signal.
The right order is the same of the function edje_object_signal_emit()




SVN revision: 52105
2010-09-09 20:35:44 +00:00
Lucas De Marchi 19c1b1e899 Fix priority dropping
Lowering priority was wrong. Some bugs:

1) You don't lower the priority by setting the scheduler policy to some
   of the real-time ones (SCHED_RR or SCHER_FIFO). If you do so, you are
   actually increasing the priority of the workers and your main thread
   you be preempted and stalled until the workers complete their job.
   Fortunately this will only happen if your programming is running as
   root, as normal users (without CAP_SYS_NICE) are unable to set
   priority to real-time values.

2) setpriority() and getpriority() are not part of pthread and you can't
   use the id returned by pthread. Manpage explicitly says so on
   pthread_self(3):
   "The  thread ID returned by pthread_self() is not the same thing as the
       kernel thread ID returned by a call to gettid(2)."

   Since glibc does not have a gettid, here we are using
   syscall(SYS_gettid)

This patch was tested with the program below. Compile and run:
   $ gcc p_hello2.c -o p_hello2 -lpthread
   $ ./p_hello2 10

You'll see that the main thread remains with its priority and threads
created by the main thread change their own niceness.

 #include <errno.h>
 #include <pthread.h>
 #include <sched.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/resource.h>
 #include <sys/syscall.h>
 #include <sys/time.h>
 #include <sys/types.h>

/* Lower priority of current thread.
 *
 * It's used by worker threads so they use up "bg cpu" as it was really intended
 * to work. If current thread is running with real-time priority, we decrease
 * our priority by 5. This is done in a portable way.  Otherwise we are
 * running with SCHED_OTHER policy and there's no portable way to set the nice
 * level on current thread. In Linux, it does work and it's the only one that is
 * implemented.
 */
static void
_ecore_thread_pri_drop(void)
{
   struct sched_param param;
   int pol, prio, ret;
   pid_t tid;
   pthread_t pthread_id;

   pthread_id = pthread_self();
   ret = pthread_getschedparam(pthread_id, &pol, &param);
   if (ret)
     {
        fprintf(stderr, "Unable to query sched parameters\n");
        return;
     }

   if (pol == SCHED_RR || pol == SCHED_FIFO)
     {
        prio = sched_get_priority_max(pol);
        param.sched_priority += 5;
        if (prio > 0 && param.sched_priority > prio)
           param.sched_priority = prio;

        pthread_setschedparam(pthread_id, pol, &param);
     }
 #ifdef __linux__
   else
     {
        tid = syscall(SYS_gettid);
        errno = 0;
        prio = getpriority(PRIO_PROCESS, tid);
        if (errno == 0)
          {
             prio += 5;
             if (prio > 19)
                prio = 19;

             setpriority(PRIO_PROCESS, tid, prio);
          }
     }
 #endif
}

/*
 * p_hello.c -- a hello program (in pthread)
 */
 #define MAX_THREAD 1000

typedef struct {
    int id;
} parm;

void *hello(void *arg)
{
    parm *p=(parm *)arg;
    pid_t tid;
    int prio;
    tid =  syscall(SYS_gettid);
    printf("[%d] Hello from node %d\n", tid, p->id);
    pthread_yield();

    printf("[%d] HELLO!\n", tid);

    _ecore_thread_pri_drop();

    prio = getpriority(PRIO_PROCESS, tid);
    printf("[%d] New nice value: %d\n", tid, prio);
    return (NULL);
}

int main(int argc, char* argv[]) {
    int n,i;
    pthread_t *threads;
    pthread_attr_t pthread_custom_attr;
    parm *p;

    pid_t tid;
    int prio;

    if (argc != 2)
    {
        printf ("Usage: %s n\n  where n is no. of threads\n",argv[0]);
        exit(1);
    }

    n=atoi(argv[1]);

    if ((n < 1) || (n > MAX_THREAD)) {
        printf ("The no of thread should between 1 and %d.\n",MAX_THREAD);
        exit(1);
    }

    threads = (pthread_t *)malloc(n * sizeof(*threads));
    pthread_attr_init(&pthread_custom_attr);

    p = (parm *)malloc(n * sizeof(parm));
    /* Start up thread */

    tid = syscall(SYS_gettid);
    for (i=0; i<n; i++) {
        prio = getpriority(PRIO_PROCESS, tid);
        printf("[%d] root thread nice value: %d\n", tid, prio);

        p[i].id=i;
        pthread_create(&threads[i], &pthread_custom_attr, hello, (void *)(p+i));
    }

    /* Synchronize the completion of each thread. */

    for (i=0; i<n; i++) {
        pthread_join(threads[i],NULL);
    }
    free(p);

    return 0;
}



SVN revision: 52040
2010-09-09 12:45:39 +00:00
Lucas De Marchi 325e08065d Fix priority dropping
Lowering priority was wrong. Some bugs:

1) You don't lower the priority by setting the scheduler policy to some
   of the real-time ones (SCHED_RR or SCHER_FIFO). If you do so, you are
   actually increasing the priority of the workers and your main thread
   you be preempted and stalled until the workers complete their job.
   Fortunately this will only happen if your programming is running as
   root, as normal users (without CAP_SYS_NICE) are unable to set
   priority to real-time values.

2) setpriority() and getpriority() are not part of pthread and you can't
   use the id returned by pthread. Manpage explicitly says so on
   pthread_self(3):
   "The  thread ID returned by pthread_self() is not the same thing as the
       kernel thread ID returned by a call to gettid(2)."

   Since glibc does not have a gettid, here we are using
   syscall(SYS_gettid)

This patch was tested with the program below. Compile and run:
   $ gcc p_hello2.c -o p_hello2 -lpthread
   $ ./p_hello2 10

You'll see that the main thread remains with its priority and threads
created by the main thread change their own niceness.

#include <errno.h>
#include <pthread.h>
#include <sched.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/resource.h>
#include <sys/syscall.h>
#include <sys/time.h>
#include <sys/types.h>

/* Lower priority of current thread.
 *
 * It's used by worker threads so they use up "bg cpu" as it was really intended
 * to work. If current thread is running with real-time priority, we decrease
 * our priority by 5. This is done in a portable way.  Otherwise we are
 * running with SCHED_OTHER policy and there's no portable way to set the nice
 * level on current thread. In Linux, it does work and it's the only one that is
 * implemented.
 */
static void
_ecore_thread_pri_drop(void)
{
   struct sched_param param;
   int pol, prio, ret;
   pid_t tid;
   pthread_t pthread_id;

   pthread_id = pthread_self();
   ret = pthread_getschedparam(pthread_id, &pol, &param);
   if (ret)
     {
        fprintf(stderr, "Unable to query sched parameters\n");
        return;
     }

   if (pol == SCHED_RR || pol == SCHED_FIFO)
     {
        prio = sched_get_priority_max(pol);
        param.sched_priority += 5;
        if (prio > 0 && param.sched_priority > prio)
           param.sched_priority = prio;

        pthread_setschedparam(pthread_id, pol, &param);
     }
#ifdef __linux__
   else
     {
        tid = syscall(SYS_gettid);
        errno = 0;
        prio = getpriority(PRIO_PROCESS, tid);
        if (errno == 0)
          {
             prio += 5;
             if (prio > 19)
                prio = 19;

             setpriority(PRIO_PROCESS, tid, prio);
          }
     }
 #endif
}

/*
 * p_hello.c -- a hello program (in pthread)
 */
#define MAX_THREAD 1000

typedef struct {
    int id;
} parm;

void *hello(void *arg)
{
    parm *p=(parm *)arg;
    pid_t tid;
    int prio;
    tid =  syscall(SYS_gettid);
    printf("[%d] Hello from node %d\n", tid, p->id);
    pthread_yield();

    printf("[%d] tid=%lu\n", tid);

    _ecore_thread_pri_drop();

    prio = getpriority(PRIO_PROCESS, tid);
    printf("[%d] New nice value: %d\n", tid, prio);
    return (NULL);
}

void main(int argc, char* argv[]) {
    int n,i;
    pthread_t *threads;
    pthread_attr_t pthread_custom_attr;
    parm *p;

    pid_t tid;
    int prio;

    if (argc != 2)
    {
        printf ("Usage: %s n\n  where n is no. of threads\n",argv[0]);
        exit(1);
    }

    n=atoi(argv[1]);

    if ((n < 1) || (n > MAX_THREAD)) {
        printf ("The no of thread should between 1 and %d.\n",MAX_THREAD);
        exit(1);
    }

    threads = (pthread_t *)malloc(n * sizeof(*threads));
    pthread_attr_init(&pthread_custom_attr);

    p = (parm *)malloc(n * sizeof(parm));
    /* Start up thread */

    tid = syscall(SYS_gettid);
    for (i=0; i<n; i++) {
        prio = getpriority(PRIO_PROCESS, tid);
        printf("[%d] root thread nice value: %d\n", tid, prio);

        p[i].id=i;
        pthread_create(&threads[i], &pthread_custom_attr, hello, (void *)(p+i));
    }

    /* Synchronize the completion of each thread. */

    for (i=0; i<n; i++) {
        pthread_join(threads[i],NULL);
    }
    free(p);
}



SVN revision: 52039
2010-09-09 11:48:31 +00:00
Carsten Haitzler 9a4aa69e71 return NULL after if to avoid other lku
SVN revision: 52033
2010-09-09 07:27:56 +00:00
Carsten Haitzler 40e57dd2d7 that should have been an LKU
SVN revision: 52032
2010-09-09 07:23:55 +00:00
Carsten Haitzler 5f6add7b2f and some final fixes anc cleanups - tested.
SVN revision: 52031
2010-09-09 07:14:11 +00:00
Carsten Haitzler c4ee82f6a7 lots of cleanups... actually tested! :)
SVN revision: 52030
2010-09-09 07:08:10 +00:00
Carsten Haitzler 679d566fde actually revert that - not enough testing. need to work on it.
SVN revision: 52029
2010-09-09 06:36:01 +00:00
Carsten Haitzler 4975395633 major clean of the preload stuff. leaks. bugs. nastinessesssss...
SVN revision: 52028
2010-09-09 06:31:29 +00:00
Brett Nash c69628f5af Whitespace --;
SVN revision: 52024
2010-09-09 05:36:56 +00:00
Lucas De Marchi 935cd5b9e5 Fix common misspellings
Following misspellings were fixed:

occured->occurred
immediatly->immediately



SVN revision: 52018
2010-09-09 02:19:54 +00:00
Iván Briano 8374dea693 Evil patch from Evil vtorri. Some improvements to Eina docs.
Yup, docs.. truly evil.


SVN revision: 51993
2010-09-08 17:41:05 +00:00
Cedric BAIL 6e63db7303 * edje: cleanup collection early if the file is dangling.
SVN revision: 51991
2010-09-08 13:45:21 +00:00
Lucas De Marchi 3bec660090 Fix common misspellings
Following misspellings were fixed:

ammount->amount
arbitary->arbitrary
begining->beginning
carefull->careful
choosen->chosen
commited->committed
endig->ending
existance->existence
existant->existent
isnt->isn't
occured->occurred
postion->position
rougly->roughly
runing->running
shouldnt->shouldn't
soem->some
succesfully->successfully
succesful->successful
sucessful->successful
tranformed->transformed
usefull->useful
wehn->when
wich->which



SVN revision: 51988
2010-09-08 11:50:05 +00:00
Lucas De Marchi 67771ee617 Fix common misspellings
Following misspellings were fixed:

acheive->achieve
appart->apart
isnt->isn't
succesfully->successfully
taht->that



SVN revision: 51987
2010-09-08 11:27:59 +00:00
Lucas De Marchi be1b6d32ef Fix common misspellings
Following misspellings were fixed:

alledgedly->allegedly
cant->can't
carefull->careful
consistant->consistent
currenly->currently
dependancy->dependency
descripters->descriptors
doesnt->doesn't
dosen't->doesn't
existant->existent
exmaple->example
inbetween->between
independant->independent
isnt->isn't
mroe->more
neccessary->necessary
occured->occurred
occurence->occurrence
parrallel->parallel
particualr->particular
preceeding->preceding
recieved->received
recieves->receives
seperate->separate
substraction->subtraction
succesfully->successfully
successfull->successful
sucess->success
supress->suppress
usefull->useful
witht->with



SVN revision: 51986
2010-09-08 11:23:42 +00:00