[E-devel] R: Re: [PATCH] updated: three new edje embryo functions

2008-04-14 Thread Dave Andreoli

- "Peter Wehrfritz" <[EMAIL PROTECTED]> ha scritto:

> Gustavo Sverzut Barbieri schrieb:
> > Maybe it will not impact things. The problem with these calls is
> that
> > they would collide with Edje internal states, getting these
> > inconsistent. But since Edje does not handle any
> layer/stack-related
> > information in their states, maybe this is no problem, in this case
> > just add the call to edje C api (edje_object_part_{raise,lower}())
> and
> > expose it from embryo.
> >   
> I don't think it is a good idea to have those functions in the edje c
> 
> api. The application should change directly the theme. That's why
> there 
> isn't a edje_object_part_state_set() function.
> 
> Peter

You can also use edje_edit_part_restack_above(), but I totally agree with Peter.

Dave


> 
> -
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
> Don't miss this year's exciting event. There's still time to save
> $100. 
> Use priority code J8TL2D2. 
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> ___
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] [PATCH] edje: add get_mouse_buttons to embryo scripts

2008-04-14 Thread Lars Munch
Attached patch adds a get_mouse_buttons function to edje embryo scripts.
The function returns the button mask.

-- Lars Munch

Index: data/include/edje.inc
===
RCS file: /var/cvs/e/e17/libs/edje/data/include/edje.inc,v
retrieving revision 1.24
diff -u -r1.24 edje.inc
--- data/include/edje.inc	11 Apr 2008 23:36:35 -	1.24
+++ data/include/edje.inc	14 Apr 2008 19:17:25 -
@@ -104,6 +104,7 @@
 native   get_text_class   (class[], font[], &Float:size);
 native   get_geometry (part_id, &x, &y, &w, &h);
 native   get_mouse(&x, &y);
+native   get_mouse_buttons();
 native   stop_program (program_id);
 native   stop_programs_on (part_id);
 native   set_min_size (Float:w, Float:h);
Index: src/lib/edje_embryo.c
===
RCS file: /var/cvs/e/e17/libs/edje/src/lib/edje_embryo.c,v
retrieving revision 1.60
diff -u -r1.60 edje_embryo.c
--- src/lib/edje_embryo.c	11 Apr 2008 23:36:35 -	1.60
+++ src/lib/edje_embryo.c	14 Apr 2008 19:17:27 -
@@ -795,6 +795,17 @@
return 0;
 }
 
+/* get_mouse_buttons() */
+static Embryo_Cell
+_edje_embryo_fn_get_mouse_buttons(Embryo_Program *ep, Embryo_Cell *params)
+{
+   Edje *ed;
+
+   CHKPARAM(0);
+   ed = embryo_program_data_get(ep);
+   return evas_pointer_button_down_mask_get(ed->evas);
+}
+
 /* emit(sig[], src[]) */
 static Embryo_Cell
 _edje_embryo_fn_emit(Embryo_Program *ep, Embryo_Cell *params)
@@ -2229,6 +2240,7 @@
embryo_program_native_call_add(ep, "get_drag_page", _edje_embryo_fn_get_drag_page);
embryo_program_native_call_add(ep, "set_drag_page", _edje_embryo_fn_set_drag_page);
embryo_program_native_call_add(ep, "get_mouse", _edje_embryo_fn_get_mouse);
+   embryo_program_native_call_add(ep, "get_mouse_buttons", _edje_embryo_fn_get_mouse_buttons);
embryo_program_native_call_add(ep, "stop_program", _edje_embryo_fn_stop_program);
embryo_program_native_call_add(ep, "stop_programs_on", _edje_embryo_fn_stop_programs_on);
embryo_program_native_call_add(ep, "set_min_size", _edje_embryo_fn_set_min_size);
-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [PATCH] updated: three new edje embryo functions

2008-04-14 Thread Lars Munch
On Mon, Apr 14, 2008 at 02:29:06PM -0300, Gustavo Sverzut Barbieri wrote:
> On Sun, Apr 13, 2008 at 7:42 PM, Peter Wehrfritz <[EMAIL PROTECTED]> wrote:
> > Gustavo Sverzut Barbieri schrieb:
> >
> > > Maybe it will not impact things. The problem with these calls is that
> >  > they would collide with Edje internal states, getting these
> >  > inconsistent. But since Edje does not handle any layer/stack-related
> >  > information in their states, maybe this is no problem, in this case
> >  > just add the call to edje C api (edje_object_part_{raise,lower}()) and
> >  > expose it from embryo.
> >  >
> >  I don't think it is a good idea to have those functions in the edje c
> >  api. The application should change directly the theme. That's why there
> >  isn't a edje_object_part_state_set() function.
> 
> While I'm unsure whenever to have or not this function exported, this
> is different from what you said: part_state_set() can be done with
> signals, while there are no means to reorder the objects from edje,
> neither from states or code. Maybe the reason to not have this known
> by someone (raster?), maybe it was just left out due out-of-time, in
> that case we could add this to Edje states and use signals to trigger
> changes.
> 
> Lars: what's your motivation to use this? maybe this can give us some light.

I have a set of buttons with a small overlap, all made with edje. On
"mouse,in" event I want the active button to become the topmost part.

I first thought about just emitting a signal from edje on "mouse,in" to
an event handler in C that would use edje_object_part_object_get and
then evas_object_raise, but I really wanted the part raising in edje so
I only had to take care of the actual event handling in C (the actual
button click).

The part_lower was mostly added for completion :)

It would be very nice to have some way to reorder the objects from edje.

Regards
Lars Munch


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


[E-devel] evas_object_stack_above broken with clippers?

2008-04-14 Thread andres
http://bugs.enlightenment.org/show_bug.cgi?id=444

Steps to reproduce
===
1 Download the source attached source code.
2 Compile with "gcc -g -o example `pkg-config --cflags --libs evas ecore-evas
edje` main.c"
3 Execute ./example

Actual results
==
Two rectangles are drawn, a smaller red rectangle over a blue rectangle.

Expected results

Two rectangles are be drawn, the smaller red rectangle *under* a blue
rectangle.

Additional notes

Commenting the call to "evas_object_clip_set" solves the issue, the clipper
(white rectangle) stays on top.

I updated, recompiled and installed all the libraries involved right before I
submitted this bug.
#include 
#include 
#include 
#include 
#include 
#include 

//The pointer to a canvas wrapper
Ecore_Evas *ecore_evas = NULL;
//The pointer to an Evas canvas
Evas *evas = NULL;
//The pointer to a given Edje object
Evas_Object *edje = NULL;
//Width and height for resizing Evas/Edje objects
Evas_Coord width, height;
//Pointers to Ecore handlers
Ecore_Event_Handler* close = NULL;

int main() {

//Control that the libraries are properly initialized
if (!ecore_init()) return EXIT_FAILURE;
if (!ecore_evas_init()) return EXIT_FAILURE;
if (!edje_init()) return EXIT_FAILURE;
 
//Check the canvas wrapper (800x600 X11 window) is created correctly
ecore_evas = ecore_evas_software_x11_new(NULL, 0, 0, 0, 800, 600);
if (!ecore_evas) return EXIT_FAILURE;

//We set some window attributes and make the wrapper visible
ecore_evas_title_set(ecore_evas, "Example Application");
ecore_evas_name_class_set(ecore_evas, "testapp", "Testapp");
ecore_evas_show(ecore_evas);

//Get the pointer to the canvas and add tan object
evas = ecore_evas_get(ecore_evas);

Evas_Object *blue;
blue = evas_object_rectangle_add(evas);
evas_object_color_set(blue,0,0,255,255);
evas_object_resize(blue,500,500);
evas_object_move(blue,0,0);
evas_object_show(blue);

Evas_Object *red;
red = evas_object_rectangle_add(evas);
evas_object_color_set(red,255,0,0,255);
evas_object_resize(red,100,100);
evas_object_move(red,25,25);
evas_object_show(red);
evas_object_stack_above(red,blue);

Evas_Object *clipper;
clipper = evas_object_rectangle_add(evas);
evas_object_color_set(clipper,255,255,255,255);
evas_object_resize(clipper,250,250);
evas_object_move(clipper,50,50);
evas_object_show(clipper);

evas_object_clip_set(blue,clipper);
evas_object_stack_above(clipper,red); //does not work! red stays on top.

//Starting the main application loop
ecore_main_loop_begin();
} 
-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [RFC] Caching the result of evas_render_phase1_object_process

2008-04-14 Thread Gustavo Sverzut Barbieri
On Mon, Apr 14, 2008 at 12:38 PM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
> On Mon, Apr 14, 2008 at 11:55 AM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
>  > On Sun, Apr 13, 2008 at 9:52 PM, Gustavo Sverzut Barbieri
>  >  <[EMAIL PROTECTED]> wrote:
>  >  > On Sun, Apr 13, 2008 at 1:33 PM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
>  >  >  > On Fri, Apr 11, 2008 at 8:56 PM, Cedric BAIL <[EMAIL PROTECTED]> 
> wrote:
>
> >  >- evas_array seems very useful, make it available to evas as a
>  >  >  whole! Just have it to take "void *" and it will do just fine. Also,
>  >  >  I'd make the increase amount (16) configurable after the array is
>  >  >  created (or provide an alternative constructor).
>  >
>  >  Good idea, but as this are small functions and some are used a lot I
>  >  like the idea of seeing them inlined. As there are more of this kind
>  >  of function in Evas, small functions used a lot, I did move them after
>  >  some profiling inside src/lib/include/evas_inline.x. This give us a
>  >  little bit of speedup with only a small increase in library size. The
>  >  function that could be inlined are :
>  >  - evas_object_is_opaque
>  >  - evas_event_passes_through
>  >  - evas_object_is_visible
>  >  - evas_object_clippers_is_visible
>  >  - evas_object_is_in_output_rect
>  >  - evas_object_is_active
>  >  - evas_object_coords_recalc
>  >  - evas_object_clip_recalc
>  >
>  >  Are people interested by this kind of patch ? I would add
>  >  evas_object_array_push to this list also.
>
>  Because code is better than discussion, here is a patch that does
>  exactly that. Comment are welcome :-)

I like it. It could be dangerous for externally used calls, but for
those exported in evas_private.h, it makes sense.

I just think that some functions should be split in 2 parts: common
and corner, just the common part should be inline, while the corner,
usually bigger, should be regular function defined in evas_private.h.
This would avoid code growing too much while giving us the fast common
path. For example: evas_array_push will not have to realloc most of
times, so it should be in another function:

// defined in some evas_private.c
void
_evas_array_grow(Evas_Array *array)
{
   void *tmp;
   unsigned int total;

   total = array->total + 16;
   tmp = realloc(array->obj, sizeof(void*) * total);
   if (!tmp) return;

   array->obj = tmp;
   array->total = total;
}

// defined in some evas_private.h
static inline void
evas_array_append(Evas_Array *array, void *data)
{
  if (array->count == array->total)  // maybe use unlikely() here, see
gcc info, builtin_expect
 _evas_array_grow(array);

  array->obj[array->count++] = data;
}


Also, for _internal_ things I really dislike null-pointer checking: we
should never have one, if we do then we are buggy and must crash ASAP
to catch the error sooner. Just entry-point should do these checks to
make library robust.

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi
Embedded Systems
--
MSN: [EMAIL PROTECTED]
Skype: gsbarbieri
Mobile: +55 (81) 9927 0010

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [PATCH] updated: three new edje embryo functions

2008-04-14 Thread Gustavo Sverzut Barbieri
On Sun, Apr 13, 2008 at 7:42 PM, Peter Wehrfritz <[EMAIL PROTECTED]> wrote:
> Gustavo Sverzut Barbieri schrieb:
>
> > Maybe it will not impact things. The problem with these calls is that
>  > they would collide with Edje internal states, getting these
>  > inconsistent. But since Edje does not handle any layer/stack-related
>  > information in their states, maybe this is no problem, in this case
>  > just add the call to edje C api (edje_object_part_{raise,lower}()) and
>  > expose it from embryo.
>  >
>  I don't think it is a good idea to have those functions in the edje c
>  api. The application should change directly the theme. That's why there
>  isn't a edje_object_part_state_set() function.

While I'm unsure whenever to have or not this function exported, this
is different from what you said: part_state_set() can be done with
signals, while there are no means to reorder the objects from edje,
neither from states or code. Maybe the reason to not have this known
by someone (raster?), maybe it was just left out due out-of-time, in
that case we could add this to Edje states and use signals to trigger
changes.

Lars: what's your motivation to use this? maybe this can give us some light.

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi
Embedded Systems
--
MSN: [EMAIL PROTECTED]
Skype: gsbarbieri
Mobile: +55 (81) 9927 0010

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [RFC] Caching the result of evas_render_phase1_object_process

2008-04-14 Thread Cedric BAIL
On Mon, Apr 14, 2008 at 11:55 AM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
> On Sun, Apr 13, 2008 at 9:52 PM, Gustavo Sverzut Barbieri
>  <[EMAIL PROTECTED]> wrote:
>  > On Sun, Apr 13, 2008 at 1:33 PM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
>  >  > On Fri, Apr 11, 2008 at 8:56 PM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
>  >- evas_array seems very useful, make it available to evas as a
>  >  whole! Just have it to take "void *" and it will do just fine. Also,
>  >  I'd make the increase amount (16) configurable after the array is
>  >  created (or provide an alternative constructor).
>
>  Good idea, but as this are small functions and some are used a lot I
>  like the idea of seeing them inlined. As there are more of this kind
>  of function in Evas, small functions used a lot, I did move them after
>  some profiling inside src/lib/include/evas_inline.x. This give us a
>  little bit of speedup with only a small increase in library size. The
>  function that could be inlined are :
>  - evas_object_is_opaque
>  - evas_event_passes_through
>  - evas_object_is_visible
>  - evas_object_clippers_is_visible
>  - evas_object_is_in_output_rect
>  - evas_object_is_active
>  - evas_object_coords_recalc
>  - evas_object_clip_recalc
>
>  Are people interested by this kind of patch ? I would add
>  evas_object_array_push to this list also.

Because code is better than discussion, here is a patch that does
exactly that. Comment are welcome :-)

-- 
Cedric BAIL
diff --git a/src/lib/canvas/evas_clip.c b/src/lib/canvas/evas_clip.c
index bd7dd54..dfc3e4f 100644
--- a/src/lib/canvas/evas_clip.c
+++ b/src/lib/canvas/evas_clip.c
@@ -2,57 +2,6 @@
 #include "evas_private.h"
 
 void
-evas_object_clip_recalc(Evas_Object *obj)
-{
-   int cx, cy, cw, ch, cvis, cr, cg, cb, ca;
-   int nx, ny, nw, nh, nvis, nr, ng, nb, na;
-
-   if (obj->layer->evas->events_frozen > 0) return;
-//   if (!obj->cur.clipper->cur.cache.clip.dirty) return;
-   evas_object_coords_recalc(obj);
-   cx = obj->cur.geometry.x; cy = obj->cur.geometry.y;
-   cw = obj->cur.geometry.w; ch = obj->cur.geometry.h;
-   cx = obj->cur.cache.geometry.x; cy = obj->cur.cache.geometry.y;
-   cw = obj->cur.cache.geometry.w; ch = obj->cur.cache.geometry.h;
-   if (obj->cur.color.a == 0) cvis = 0;
-   else cvis = obj->cur.visible;
-   cr = obj->cur.color.r; cg = obj->cur.color.g;
-   cb = obj->cur.color.b; ca = obj->cur.color.a;
-   if (obj->cur.clipper)
- {
-// this causes problems... hmmm
-//	if (obj->cur.clipper->cur.cache.clip.dirty)
-	  evas_object_clip_recalc(obj->cur.clipper);
-	nx = obj->cur.clipper->cur.cache.clip.x;
-	ny = obj->cur.clipper->cur.cache.clip.y;
-	nw = obj->cur.clipper->cur.cache.clip.w;
-	nh = obj->cur.clipper->cur.cache.clip.h;
-	nvis = obj->cur.clipper->cur.cache.clip.visible;
-	nr = obj->cur.clipper->cur.cache.clip.r;
-	ng = obj->cur.clipper->cur.cache.clip.g;
-	nb = obj->cur.clipper->cur.cache.clip.b;
-	na = obj->cur.clipper->cur.cache.clip.a;
-	RECTS_CLIP_TO_RECT(cx, cy, cw, ch, nx, ny, nw, nh);
-	cvis = cvis * nvis;
-	cr = (cr * (nr + 1)) >> 8;
-	cg = (cg * (ng + 1)) >> 8;
-	cb = (cb * (nb + 1)) >> 8;
-	ca = (ca * (na + 1)) >> 8;
- }
-   if ((ca == 0) || (cw <= 0) || (ch <= 0)) cvis = 0;
-   obj->cur.cache.clip.x = cx;
-   obj->cur.cache.clip.y = cy;
-   obj->cur.cache.clip.w = cw;
-   obj->cur.cache.clip.h = ch;
-   obj->cur.cache.clip.visible = cvis;
-   obj->cur.cache.clip.r = cr;
-   obj->cur.cache.clip.g = cg;
-   obj->cur.cache.clip.b = cb;
-   obj->cur.cache.clip.a = ca;
-   obj->cur.cache.clip.dirty = 0;
-}
-
-void
 evas_object_clip_dirty(Evas_Object *obj)
 {
Evas_List *l;
@@ -76,18 +25,6 @@ evas_object_recalc_clippees(Evas_Object *obj)
 }
 
 int
-evas_object_clippers_is_visible(Evas_Object *obj)
-{
-   if (obj->cur.visible)
- {
-	if (obj->cur.clipper)
-	  return evas_object_clippers_is_visible(obj->cur.clipper);
-	return 1;
- }
-   return 0;
-}
-
-int
 evas_object_clippers_was_visible(Evas_Object *obj)
 {
if (obj->prev.visible)
diff --git a/src/lib/canvas/evas_events.c b/src/lib/canvas/evas_events.c
index c31ac15..3eb6346 100644
--- a/src/lib/canvas/evas_events.c
+++ b/src/lib/canvas/evas_events.c
@@ -1,24 +1,6 @@
 #include "evas_common.h"
 #include "evas_private.h"
 
-int
-evas_event_passes_through(Evas_Object *obj)
-{
-   if (obj->layer->evas->events_frozen > 0) return 1;
-   if (obj->pass_events) return 1;
-   if (obj->parent_cache_valid) return obj->parent_pass_events;
-   if (obj->smart.parent)
- {
-	int par_pass;
-	
-	par_pass = evas_event_passes_through(obj->smart.parent);
-	obj->parent_cache_valid = 1;
-	obj->parent_pass_events = par_pass;
-	return par_pass;
- }
-   return 0;
-}
-
 static Evas_List *
 _evas_event_object_list_in_get(Evas *e, Evas_List *in, Evas_Object_List *list, Evas_Object *stop, int x, int y, int *no_rep)
 {
diff --git a/src/lib/canvas/evas_object_main.c b/src/lib/canvas/evas_object_main.c
index e5e5fde..e19bebf 100644
--- a/src/lib/canvas/evas_object_main.c
+++ b/src/lib/c

[E-devel] Nightly build log for E17 on 2008-04-14 07:09:17 -0700

2008-04-14 Thread Nightly build system
Build log for Enlightenment DR 0.17 on 2008-04-14 07:09:17 -0700
Build logs are available at http://download.enlightenment.org/tests/logs

Packages that failed to build:
ecore_li  http://download.enlightenment.org/tests/logs/ecore_li.log
engage  http://download.enlightenment.org/tests/logs/engage.log
enna  http://download.enlightenment.org/tests/logs/enna.log
epdf  http://download.enlightenment.org/tests/logs/epdf.log

Packages with no supported build system:
entice, esmart_rsvg, exorcist, python-efl, 

Packages skipped:
camE, enotes, enscribe, epbb, eplay, erss, etk_server, etox, e_utils, 
Evas_Perl, 
evoak, gfx_routines, lvs-gui, med, nexus, notgame, ruby-efl, webcam, 

Packages that build OK:
alarm, bling, calendar, cpu, deskshow, echo, eclair, ecore, edata, edb, 
e_dbus, edje_editor, edje, edje_viewer, edvi, eet, eflame, eflpp, efm_nav, 
efm_path, efreet, elapse, elation, elicit, elitaire, e, embrace, embryo, 
emotion, emphasis, empower, emprint, emu, enesim, engrave, engycad, enhance, 
enity, enterminus, enthrall, entrance_edit_gui, entrance, entropy, envision, 
epeg, ephoto, e_phys, epsilon, epx, equate, esmart, estickies, etk_extra, 
etk, etk-perl, evas, evfs, evolve, ewl, examine, execwatch, exhibit, exml, 
expedite, express, exquisite, extrackt, feh, flame, forecasts, gevas2, iconbar, 
imlib2_loaders, imlib2, Imlib2_Perl, imlib2_tools, language, mail, mem, 
mixer, moon, mpdule, net, news, notification, penguins, pesh, photo, rage, 
rain, screenshot, scrot, slideshow, snow, taskbar, tclock, uptime, weather, 
winselector, wlan, 

Debian GNU/Linux 4.0 \n \l

Linux enlightenment2 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 
GNU/Linux


See http://download.enlightenment.org/tests/ for details.


-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [PATCH] more works and fixes for wallpaper fetcher

2008-04-14 Thread Massimiliano Calamelli
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On Sat, 12 Apr 2008 09:02:09 +1000
Carsten Haitzler (The Rasterman) <[EMAIL PROTECTED]> wrote:

> On Mon, 17 Mar 2008 14:34:03 +0100 Massimiliano Calamelli
> <[EMAIL PROTECTED]> babbled:
> 
> patch in cvs.
> 
> The Rasterman (Carsten Haitzler)[EMAIL PROTECTED]
> 

I'm very sorry, but my patch are older than actually cvs status, and
using it E crashes.
Honestly I didn't think that it could be applied, a long debate about
backend libraries, and honeslty again Flickr support isn't a must-have
feature, unluckly i find it only after finish works...
I'm very sad, but i think it's better to revert my patch.

Massimiliano
- -- 
Massimiliano Calamelli
http://mcalamelli.netsons.org
[EMAIL PROTECTED]
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.7 (MingW32)

iD8DBQFIAy/EleGEL56NNP4RAviAAJ9GQxthgWD6TAjQBBQDZrhORHDe/ACeKqXo
I4bB4i3ircUNtk1WuqDX99c=
=PQCJ
-END PGP SIGNATURE-

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
___
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


Re: [E-devel] [RFC] Caching the result of evas_render_phase1_object_process

2008-04-14 Thread Cedric BAIL
On Sun, Apr 13, 2008 at 9:52 PM, Gustavo Sverzut Barbieri
<[EMAIL PROTECTED]> wrote:
> On Sun, Apr 13, 2008 at 1:33 PM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
>  > On Fri, Apr 11, 2008 at 8:56 PM, Cedric BAIL <[EMAIL PROTECTED]> wrote:
>  > >Some of you already know, I am working on improving the speed of
>  >  >  evas_render_phase1_object_process. The idea is that the list of
>  >  >  active_object, and object to render will change much between to call
>  >  >  to evas_render.
>  >  >
>  >  >I started by removing the use of evas_list and use a growing array
>  >  >  of evas_object that is only freed on idle. This does bring only a
>  >  >  small speed improvement. Then I started to cache the result
>  >  >  evas_render_phase1_object_process and keep it alive except on layer
>  >  >  change, show, hide and some color set case. On move and resize I
>  >  >  wanted to just check if the state of stack of call to render_pre is
>  >  >  still valid and call them accordingly. It's almost working. Just the
>  >  >  resize is not. I don't understand why yet, but I can't make it work
>  >  >  the same way as the move. Perhaps someone can help me on understanding
>  >  >  this.
>  >  >
>  >  >So the code is attached for your fun, but don't commit it or it
>  >  >  will break for sure :-)
>  >
>  >  After some sleep I found where was the problem and here is an updated
>  >  patch that finally work. It improve speed when you don't call
>  >  evas_object_show/hide and don't use layer. Each time you call them,
>  >  the cache will be droped in other case it will work.
>  >
>  >  This improvement will complexify the task when we will one day enable
>  >  render_pre for smart object as it make the assumption that no
>  >  evas_object are modified during call to evas_render_updates_internal.
>  >
>  >  Please review this patch and test it with your application.

>  no time to test it now, but an overview is:
>- good, seems to break nothing (as you said);

Good :-)

>- my general remarks to your coding style: try to avoid aligning
>  variable declaration, it's not used in E and it causes patches to be
>  dirtier than they need to (changes that just change this). I also
>  dislike the "return ;" (with the space) ;-)
>- my general remarks about patches: try to avoid useless changes,
>  like changing tabs<->spaces and removing trailing white spaces, do it
>  in separate patch before (now you have commit access, just commit
>  these before you play!)

Right :-)

>- evas_array seems very useful, make it available to evas as a
>  whole! Just have it to take "void *" and it will do just fine. Also,
>  I'd make the increase amount (16) configurable after the array is
>  created (or provide an alternative constructor).

Good idea, but as this are small functions and some are used a lot I
like the idea of seeing them inlined. As there are more of this kind
of function in Evas, small functions used a lot, I did move them after
some profiling inside src/lib/include/evas_inline.x. This give us a
little bit of speedup with only a small increase in library size. The
function that could be inlined are :
- evas_object_is_opaque
- evas_event_passes_through
- evas_object_is_visible
- evas_object_clippers_is_visible
- evas_object_is_in_output_rect
- evas_object_is_active
- evas_object_coords_recalc
- evas_object_clip_recalc

Are people interested by this kind of patch ? I would add
evas_object_array_push to this list also.

>   - I'd remove the calls to really do things (ie:
>  e->engine.func->output_redraws_rect_del()) from
>  _evas_render_phase1_object_process(), just call
>  _evas_render_phase1_direct() after you built the array... I think this
>  separation will be good and will no cause any damage to performance).
>  OTH, if you want to have performance no matter what, then keep it as
>  is by carry the "should not cache" flag (clean_them), in that case
>  you'd not add to the array at all.

I will look at this option and see if it really impact performance.

>  as you can see, just minor things. It looks very great so far!
>
>  PS: do you have the improvements in numbers? Would rock to present it
>  as a chart, let's also make it public somewhere. (I regret for not
>  doing that for the optimizations I did)

Well as it's a cache mecanism, it doesn't really provide stable
improvement. With expedite as was seeing a score between 490 and 540
on my computer and now it's between 490 and 610. With valgrind
_evas_render_phase1_object_process only take 4% of my total time
compared to the previous use of near 20%. I also think it should
reduce the memory fragmentation of EFL based application, but I don't
have number nor graph for this one.

-- 
Cedric BAIL

-
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.n