i've been leaning mem usage down... save 30% on all evas_objects now! :)

SVN revision: 6678
This commit is contained in:
Carsten Haitzler 2003-02-09 04:22:45 +00:00
parent 702156de93
commit 9854af242d
8 changed files with 189 additions and 161 deletions

View File

@ -44,45 +44,68 @@ static void
evas_object_event_callback_clear(Evas_Object *obj) evas_object_event_callback_clear(Evas_Object *obj)
{ {
Evas_Callback_Type t; Evas_Callback_Type t;
if (!obj->callbacks.deletions_waiting) return; if (!obj->callbacks) return;
obj->callbacks.deletions_waiting = 0; if (!obj->callbacks->deletions_waiting) return;
evas_object_event_callback_list_post_free(&(obj->callbacks.in)); obj->callbacks->deletions_waiting = 0;
evas_object_event_callback_list_post_free(&(obj->callbacks.out)); evas_object_event_callback_list_post_free(&(obj->callbacks->in));
evas_object_event_callback_list_post_free(&(obj->callbacks.down)); evas_object_event_callback_list_post_free(&(obj->callbacks->out));
evas_object_event_callback_list_post_free(&(obj->callbacks.up)); evas_object_event_callback_list_post_free(&(obj->callbacks->down));
evas_object_event_callback_list_post_free(&(obj->callbacks.move)); evas_object_event_callback_list_post_free(&(obj->callbacks->up));
evas_object_event_callback_list_post_free(&(obj->callbacks.free)); evas_object_event_callback_list_post_free(&(obj->callbacks->move));
evas_object_event_callback_list_post_free(&(obj->callbacks.key_down)); evas_object_event_callback_list_post_free(&(obj->callbacks->free));
evas_object_event_callback_list_post_free(&(obj->callbacks.key_up)); evas_object_event_callback_list_post_free(&(obj->callbacks->key_down));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_focus_in)); evas_object_event_callback_list_post_free(&(obj->callbacks->key_up));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_focus_out)); evas_object_event_callback_list_post_free(&(obj->callbacks->obj_focus_in));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_show)); evas_object_event_callback_list_post_free(&(obj->callbacks->obj_focus_out));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_hide)); evas_object_event_callback_list_post_free(&(obj->callbacks->obj_show));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_move)); evas_object_event_callback_list_post_free(&(obj->callbacks->obj_hide));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_resize)); evas_object_event_callback_list_post_free(&(obj->callbacks->obj_move));
evas_object_event_callback_list_post_free(&(obj->callbacks.obj_restack)); evas_object_event_callback_list_post_free(&(obj->callbacks->obj_resize));
evas_object_event_callback_list_post_free(&(obj->callbacks->obj_restack));
if ((!obj->callbacks->in) &&
(!obj->callbacks->out) &&
(!obj->callbacks->down) &&
(!obj->callbacks->up) &&
(!obj->callbacks->move) &&
(!obj->callbacks->free) &&
(!obj->callbacks->key_down) &&
(!obj->callbacks->key_up) &&
(!obj->callbacks->obj_focus_in) &&
(!obj->callbacks->obj_focus_out) &&
(!obj->callbacks->obj_show) &&
(!obj->callbacks->obj_hide) &&
(!obj->callbacks->obj_move) &&
(!obj->callbacks->obj_resize) &&
(!obj->callbacks->obj_restack))
{
free(obj->callbacks);
obj->callbacks = NULL;
}
} }
void void
evas_object_event_callback_cleanup(Evas_Object *obj) evas_object_event_callback_cleanup(Evas_Object *obj)
{ {
/* MEM OK */ /* MEM OK */
evas_object_event_callback_list_free(&(obj->callbacks.in)); if (!obj->callbacks) return;
evas_object_event_callback_list_free(&(obj->callbacks.out)); evas_object_event_callback_list_free(&(obj->callbacks->in));
evas_object_event_callback_list_free(&(obj->callbacks.down)); evas_object_event_callback_list_free(&(obj->callbacks->out));
evas_object_event_callback_list_free(&(obj->callbacks.up)); evas_object_event_callback_list_free(&(obj->callbacks->down));
evas_object_event_callback_list_free(&(obj->callbacks.move)); evas_object_event_callback_list_free(&(obj->callbacks->up));
evas_object_event_callback_list_free(&(obj->callbacks.free)); evas_object_event_callback_list_free(&(obj->callbacks->move));
evas_object_event_callback_list_free(&(obj->callbacks.key_down)); evas_object_event_callback_list_free(&(obj->callbacks->free));
evas_object_event_callback_list_free(&(obj->callbacks.key_up)); evas_object_event_callback_list_free(&(obj->callbacks->key_down));
evas_object_event_callback_list_free(&(obj->callbacks.obj_focus_in)); evas_object_event_callback_list_free(&(obj->callbacks->key_up));
evas_object_event_callback_list_free(&(obj->callbacks.obj_focus_out)); evas_object_event_callback_list_free(&(obj->callbacks->obj_focus_in));
evas_object_event_callback_list_free(&(obj->callbacks.obj_show)); evas_object_event_callback_list_free(&(obj->callbacks->obj_focus_out));
evas_object_event_callback_list_free(&(obj->callbacks.obj_hide)); evas_object_event_callback_list_free(&(obj->callbacks->obj_show));
evas_object_event_callback_list_free(&(obj->callbacks.obj_move)); evas_object_event_callback_list_free(&(obj->callbacks->obj_hide));
evas_object_event_callback_list_free(&(obj->callbacks.obj_resize)); evas_object_event_callback_list_free(&(obj->callbacks->obj_move));
evas_object_event_callback_list_free(&(obj->callbacks.obj_restack)); evas_object_event_callback_list_free(&(obj->callbacks->obj_resize));
evas_object_event_callback_list_free(&(obj->callbacks->obj_restack));
free(obj->callbacks);
obj->callbacks = NULL;
} }
void void
@ -91,58 +114,59 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
/* MEM OK */ /* MEM OK */
Evas_Object_List **l_mod, *l; Evas_Object_List **l_mod, *l;
if (!obj->callbacks) return;
switch (type) switch (type)
{ {
case EVAS_CALLBACK_MOUSE_IN: case EVAS_CALLBACK_MOUSE_IN:
l_mod = &(obj->callbacks.in); l_mod = &(obj->callbacks->in);
break; break;
case EVAS_CALLBACK_MOUSE_OUT: case EVAS_CALLBACK_MOUSE_OUT:
l_mod = &(obj->callbacks.out); l_mod = &(obj->callbacks->out);
break; break;
case EVAS_CALLBACK_MOUSE_DOWN: case EVAS_CALLBACK_MOUSE_DOWN:
l_mod = &(obj->callbacks.down); l_mod = &(obj->callbacks->down);
break; break;
case EVAS_CALLBACK_MOUSE_UP: case EVAS_CALLBACK_MOUSE_UP:
l_mod = &(obj->callbacks.up); l_mod = &(obj->callbacks->up);
break; break;
case EVAS_CALLBACK_MOUSE_MOVE: case EVAS_CALLBACK_MOUSE_MOVE:
l_mod = &(obj->callbacks.move); l_mod = &(obj->callbacks->move);
break; break;
case EVAS_CALLBACK_FREE: case EVAS_CALLBACK_FREE:
l_mod = &(obj->callbacks.free); l_mod = &(obj->callbacks->free);
break; break;
case EVAS_CALLBACK_KEY_DOWN: case EVAS_CALLBACK_KEY_DOWN:
l_mod = &(obj->callbacks.key_down); l_mod = &(obj->callbacks->key_down);
break; break;
case EVAS_CALLBACK_KEY_UP: case EVAS_CALLBACK_KEY_UP:
l_mod = &(obj->callbacks.key_up); l_mod = &(obj->callbacks->key_up);
break; break;
case EVAS_CALLBACK_FOCUS_IN: case EVAS_CALLBACK_FOCUS_IN:
l_mod = &(obj->callbacks.obj_focus_in); l_mod = &(obj->callbacks->obj_focus_in);
break; break;
case EVAS_CALLBACK_FOCUS_OUT: case EVAS_CALLBACK_FOCUS_OUT:
l_mod = &(obj->callbacks.obj_focus_out); l_mod = &(obj->callbacks->obj_focus_out);
break; break;
case EVAS_CALLBACK_SHOW: case EVAS_CALLBACK_SHOW:
l_mod = &(obj->callbacks.obj_show); l_mod = &(obj->callbacks->obj_show);
break; break;
case EVAS_CALLBACK_HIDE: case EVAS_CALLBACK_HIDE:
l_mod = &(obj->callbacks.obj_hide); l_mod = &(obj->callbacks->obj_hide);
break; break;
case EVAS_CALLBACK_MOVE: case EVAS_CALLBACK_MOVE:
l_mod = &(obj->callbacks.obj_move); l_mod = &(obj->callbacks->obj_move);
break; break;
case EVAS_CALLBACK_RESIZE: case EVAS_CALLBACK_RESIZE:
l_mod = &(obj->callbacks.obj_resize); l_mod = &(obj->callbacks->obj_resize);
break; break;
case EVAS_CALLBACK_RESTACK: case EVAS_CALLBACK_RESTACK:
l_mod = &(obj->callbacks.obj_restack); l_mod = &(obj->callbacks->obj_restack);
break; break;
default: default:
return; return;
break; break;
} }
obj->callbacks.walking_list++; obj->callbacks->walking_list++;
for (l = *l_mod; l; l = l->next) for (l = *l_mod; l; l = l->next)
{ {
Evas_Func_Node *fn; Evas_Func_Node *fn;
@ -152,8 +176,8 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
fn->func(fn->data, obj->layer->evas, obj, event_info); fn->func(fn->data, obj->layer->evas, obj, event_info);
if (obj->delete_me) break; if (obj->delete_me) break;
} }
obj->callbacks.walking_list--; obj->callbacks->walking_list--;
if (!obj->callbacks.walking_list) if (!obj->callbacks->walking_list)
evas_object_event_callback_clear(obj); evas_object_event_callback_clear(obj);
} }
@ -328,52 +352,59 @@ evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (
fn->func = func; fn->func = func;
fn->data = (void *)data; fn->data = (void *)data;
if (!obj->callbacks)
obj->callbacks = evas_mem_calloc(sizeof(Evas_Callbacks));
if (!obj->callbacks)
{
free(fn);
return;
}
switch (type) switch (type)
{ {
case EVAS_CALLBACK_MOUSE_IN: case EVAS_CALLBACK_MOUSE_IN:
l_mod = &(obj->callbacks.in); l_mod = &(obj->callbacks->in);
break; break;
case EVAS_CALLBACK_MOUSE_OUT: case EVAS_CALLBACK_MOUSE_OUT:
l_mod = &(obj->callbacks.out); l_mod = &(obj->callbacks->out);
break; break;
case EVAS_CALLBACK_MOUSE_DOWN: case EVAS_CALLBACK_MOUSE_DOWN:
l_mod = &(obj->callbacks.down); l_mod = &(obj->callbacks->down);
break; break;
case EVAS_CALLBACK_MOUSE_UP: case EVAS_CALLBACK_MOUSE_UP:
l_mod = &(obj->callbacks.up); l_mod = &(obj->callbacks->up);
break; break;
case EVAS_CALLBACK_MOUSE_MOVE: case EVAS_CALLBACK_MOUSE_MOVE:
l_mod = &(obj->callbacks.move); l_mod = &(obj->callbacks->move);
break; break;
case EVAS_CALLBACK_FREE: case EVAS_CALLBACK_FREE:
l_mod = &(obj->callbacks.free); l_mod = &(obj->callbacks->free);
break; break;
case EVAS_CALLBACK_KEY_DOWN: case EVAS_CALLBACK_KEY_DOWN:
l_mod = &(obj->callbacks.key_down); l_mod = &(obj->callbacks->key_down);
break; break;
case EVAS_CALLBACK_KEY_UP: case EVAS_CALLBACK_KEY_UP:
l_mod = &(obj->callbacks.key_up); l_mod = &(obj->callbacks->key_up);
break; break;
case EVAS_CALLBACK_FOCUS_IN: case EVAS_CALLBACK_FOCUS_IN:
l_mod = &(obj->callbacks.obj_focus_in); l_mod = &(obj->callbacks->obj_focus_in);
break; break;
case EVAS_CALLBACK_FOCUS_OUT: case EVAS_CALLBACK_FOCUS_OUT:
l_mod = &(obj->callbacks.obj_focus_out); l_mod = &(obj->callbacks->obj_focus_out);
break; break;
case EVAS_CALLBACK_SHOW: case EVAS_CALLBACK_SHOW:
l_mod = &(obj->callbacks.obj_show); l_mod = &(obj->callbacks->obj_show);
break; break;
case EVAS_CALLBACK_HIDE: case EVAS_CALLBACK_HIDE:
l_mod = &(obj->callbacks.obj_hide); l_mod = &(obj->callbacks->obj_hide);
break; break;
case EVAS_CALLBACK_MOVE: case EVAS_CALLBACK_MOVE:
l_mod = &(obj->callbacks.obj_move); l_mod = &(obj->callbacks->obj_move);
break; break;
case EVAS_CALLBACK_RESIZE: case EVAS_CALLBACK_RESIZE:
l_mod = &(obj->callbacks.obj_resize); l_mod = &(obj->callbacks->obj_resize);
break; break;
case EVAS_CALLBACK_RESTACK: case EVAS_CALLBACK_RESTACK:
l_mod = &(obj->callbacks.obj_restack); l_mod = &(obj->callbacks->obj_restack);
break; break;
default: default:
free(fn); free(fn);
@ -418,52 +449,54 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (
if (!func) return NULL; if (!func) return NULL;
if (!obj->callbacks) return NULL;
switch (type) switch (type)
{ {
case EVAS_CALLBACK_MOUSE_IN: case EVAS_CALLBACK_MOUSE_IN:
l_mod = &(obj->callbacks.in); l_mod = &(obj->callbacks->in);
break; break;
case EVAS_CALLBACK_MOUSE_OUT: case EVAS_CALLBACK_MOUSE_OUT:
l_mod = &(obj->callbacks.out); l_mod = &(obj->callbacks->out);
break; break;
case EVAS_CALLBACK_MOUSE_DOWN: case EVAS_CALLBACK_MOUSE_DOWN:
l_mod = &(obj->callbacks.down); l_mod = &(obj->callbacks->down);
break; break;
case EVAS_CALLBACK_MOUSE_UP: case EVAS_CALLBACK_MOUSE_UP:
l_mod = &(obj->callbacks.up); l_mod = &(obj->callbacks->up);
break; break;
case EVAS_CALLBACK_MOUSE_MOVE: case EVAS_CALLBACK_MOUSE_MOVE:
l_mod = &(obj->callbacks.move); l_mod = &(obj->callbacks->move);
break; break;
case EVAS_CALLBACK_FREE: case EVAS_CALLBACK_FREE:
l_mod = &(obj->callbacks.free); l_mod = &(obj->callbacks->free);
break; break;
case EVAS_CALLBACK_KEY_DOWN: case EVAS_CALLBACK_KEY_DOWN:
l_mod = &(obj->callbacks.key_down); l_mod = &(obj->callbacks->key_down);
break; break;
case EVAS_CALLBACK_KEY_UP: case EVAS_CALLBACK_KEY_UP:
l_mod = &(obj->callbacks.key_up); l_mod = &(obj->callbacks->key_up);
break; break;
case EVAS_CALLBACK_FOCUS_IN: case EVAS_CALLBACK_FOCUS_IN:
l_mod = &(obj->callbacks.obj_focus_in); l_mod = &(obj->callbacks->obj_focus_in);
break; break;
case EVAS_CALLBACK_FOCUS_OUT: case EVAS_CALLBACK_FOCUS_OUT:
l_mod = &(obj->callbacks.obj_focus_out); l_mod = &(obj->callbacks->obj_focus_out);
break; break;
case EVAS_CALLBACK_SHOW: case EVAS_CALLBACK_SHOW:
l_mod = &(obj->callbacks.obj_show); l_mod = &(obj->callbacks->obj_show);
break; break;
case EVAS_CALLBACK_HIDE: case EVAS_CALLBACK_HIDE:
l_mod = &(obj->callbacks.obj_hide); l_mod = &(obj->callbacks->obj_hide);
break; break;
case EVAS_CALLBACK_MOVE: case EVAS_CALLBACK_MOVE:
l_mod = &(obj->callbacks.obj_move); l_mod = &(obj->callbacks->obj_move);
break; break;
case EVAS_CALLBACK_RESIZE: case EVAS_CALLBACK_RESIZE:
l_mod = &(obj->callbacks.obj_resize); l_mod = &(obj->callbacks->obj_resize);
break; break;
case EVAS_CALLBACK_RESTACK: case EVAS_CALLBACK_RESTACK:
l_mod = &(obj->callbacks.obj_restack); l_mod = &(obj->callbacks->obj_restack);
break; break;
default: default:
return NULL; return NULL;
@ -480,8 +513,8 @@ evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (
data = fn->data; data = fn->data;
fn->delete_me = 1; fn->delete_me = 1;
obj->callbacks.deletions_waiting = 1; obj->callbacks->deletions_waiting = 1;
if (!obj->callbacks.walking_list) if (!obj->callbacks->walking_list)
evas_object_event_callback_clear(obj); evas_object_event_callback_clear(obj);
return data; return data;
} }

View File

@ -15,9 +15,9 @@ struct _Evas_Object_Gradient
struct { struct {
double angle; double angle;
} cur, prev; } cur, prev;
int changed : 1; char changed : 1;
int gradient_changed : 1; char gradient_changed : 1;
int gradient_opaque : 1; char gradient_opaque : 1;
void *engine_data; void *engine_data;
}; };

View File

@ -15,24 +15,22 @@ struct _Evas_Object_Image
struct { struct {
struct { struct {
double x, y, w, h; double x, y, w, h;
} fill; } fill;
struct { struct {
int w, h; short w, h;
} image; } image;
struct { struct {
int l, r, t, b; short l, r, t, b;
} border; } border;
char *file; char *file;
char *key; char *key;
int smooth_scale : 1; char smooth_scale : 1;
int has_alpha :1; char has_alpha :1;
} cur, prev; } cur, prev;
int changed : 1; char changed : 1;
int load_error; int load_error;
Evas_List *pixel_updates; Evas_List *pixel_updates;

View File

@ -20,7 +20,7 @@ struct _Evas_Object_Line
} cache; } cache;
double x1, y1, x2, y2; double x1, y1, x2, y2;
} cur, prev; } cur, prev;
int changed : 1; char changed : 1;
void *engine_data; void *engine_data;
}; };

View File

@ -12,9 +12,9 @@ typedef struct _Evas_Polygon_Point Evas_Polygon_Point;
struct _Evas_Object_Polygon struct _Evas_Object_Polygon
{ {
DATA32 magic; DATA32 magic;
int changed : 1; Evas_List *points;
Evas_List *points; char changed : 1;
void *engine_data; void *engine_data;
}; };

View File

@ -14,7 +14,7 @@ struct _Evas_Object_Smart
struct _Evas_Smart_Callback struct _Evas_Smart_Callback
{ {
char *event; char *event;
int delete_me : 1; char delete_me : 1;
void (*func) (void *data, Evas_Object *obj, void *event_info); void (*func) (void *data, Evas_Object *obj, void *event_info);
void *func_data; void *func_data;
}; };

View File

@ -17,10 +17,10 @@ struct _Evas_Object_Text
char *font; char *font;
double size; double size;
} cur, prev; } cur, prev;
int changed : 1; char changed : 1;
double ascent, descent; float ascent, descent;
double max_ascent, max_descent; float max_ascent, max_descent;
void *engine_data; void *engine_data;
}; };

View File

@ -53,6 +53,7 @@ typedef struct _Evas_Intercept_Func_SizePos Evas_Intercept_Func_SizePos;
typedef struct _Evas_Intercept_Func_Obj Evas_Intercept_Func_Obj; typedef struct _Evas_Intercept_Func_Obj Evas_Intercept_Func_Obj;
typedef struct _Evas_Intercept_Func_Int Evas_Intercept_Func_Int; typedef struct _Evas_Intercept_Func_Int Evas_Intercept_Func_Int;
typedef struct _Evas_Key_Grab Evas_Key_Grab; typedef struct _Evas_Key_Grab Evas_Key_Grab;
typedef struct _Evas_Callbacks Evas_Callbacks;
#define MAGIC_EVAS 0x70777770 #define MAGIC_EVAS 0x70777770
#define MAGIC_OBJ 0x71777770 #define MAGIC_OBJ 0x71777770
@ -128,7 +129,7 @@ struct _Evas_Key_Grab
Evas_Modifier_Mask modifiers; Evas_Modifier_Mask modifiers;
Evas_Modifier_Mask not_modifiers; Evas_Modifier_Mask not_modifiers;
Evas_Object *object; Evas_Object *object;
int exclusive : 1; char exclusive : 1;
}; };
struct _Evas_Intercept_Func struct _Evas_Intercept_Func
@ -152,7 +153,7 @@ struct _Evas_Smart
int usage; int usage;
void *data; void *data;
int delete_me : 1; char delete_me : 1;
void (*func_add) (Evas_Object *o); void (*func_add) (Evas_Object *o);
void (*func_del) (Evas_Object *o); void (*func_del) (Evas_Object *o);
@ -188,6 +189,27 @@ struct _Evas_Lock
Evas_Modifier_Mask mask; /* we have a max of 64 locks */ Evas_Modifier_Mask mask; /* we have a max of 64 locks */
}; };
struct _Evas_Callbacks
{
char deletions_waiting : 1;
int walking_list;
Evas_Object_List *down;
Evas_Object_List *up;
Evas_Object_List *move;
Evas_Object_List *in;
Evas_Object_List *out;
Evas_Object_List *key_down;
Evas_Object_List *key_up;
Evas_Object_List *free;
Evas_Object_List *obj_focus_in;
Evas_Object_List *obj_focus_out;
Evas_Object_List *obj_show;
Evas_Object_List *obj_hide;
Evas_Object_List *obj_move;
Evas_Object_List *obj_resize;
Evas_Object_List *obj_restack;
};
struct _Evas struct _Evas
{ {
Evas_Object_List _list_data; Evas_Object_List _list_data;
@ -195,8 +217,8 @@ struct _Evas
DATA32 magic; DATA32 magic;
struct { struct {
int inside : 1; char inside : 1;
int mouse_grabbed : 1; char mouse_grabbed : 1;
DATA32 button; DATA32 button;
int x, y; int x, y;
@ -210,13 +232,13 @@ struct _Evas
struct { struct {
double x, y, w, h; double x, y, w, h;
int changed : 1; char changed : 1;
} viewport; } viewport;
struct { struct {
int w, h; int w, h;
DATA32 render_method; DATA32 render_method;
int changed : 1; char changed : 1;
} output; } output;
int output_validity; int output_validity;
@ -228,7 +250,7 @@ struct _Evas
Evas_Hash *name_hash; Evas_Hash *name_hash;
int changed : 1; char changed : 1;
int events_frozen; int events_frozen;
@ -260,8 +282,6 @@ struct _Evas_Layer
int layer; int layer;
Evas_Object *objects; Evas_Object *objects;
int store : 1;
Evas *evas; Evas *evas;
void *engine_data; void *engine_data;
@ -273,8 +293,7 @@ struct _Evas_Object
DATA32 magic; DATA32 magic;
const char *type; const char *type;
Evas_Layer *layer; Evas_Layer *layer;
struct { struct {
@ -285,39 +304,22 @@ struct _Evas_Object
} geometry; } geometry;
struct { struct {
int x, y, w, h; int x, y, w, h;
int r, g, b, a; unsigned char r, g, b, a;
int visible; char visible : 1;
} clip; } clip;
} cache; } cache;
struct { struct {
double x, y, w, h; double x, y, w, h;
} geometry; } geometry;
struct { struct {
int r, g, b, a; unsigned char r, g, b, a;
} color; } color;
char visible : 1;
int visible : 1; int layer;
Evas_Object *clipper;
int layer;
Evas_Object *clipper;
} cur, prev; } cur, prev;
char *name; char *name;
int store : 1;
int pass_events : 1;
int repeat_events : 1;
int restack : 1;
int changed : 1;
int mouse_in : 1;
int mouse_grabbed : 1;
int pre_render_done : 1;
int intercepted : 1;
int focused : 1;
int delete_me;
Evas_Intercept_Func *interceptors; Evas_Intercept_Func *interceptors;
@ -326,26 +328,8 @@ struct _Evas_Object
} data; } data;
Evas_List *grabs; Evas_List *grabs;
struct { Evas_Callbacks *callbacks;
int deletions_waiting : 1;
int walking_list;
Evas_Object_List *in;
Evas_Object_List *out;
Evas_Object_List *down;
Evas_Object_List *up;
Evas_Object_List *move;
Evas_Object_List *free;
Evas_Object_List *key_down;
Evas_Object_List *key_up;
Evas_Object_List *obj_focus_in;
Evas_Object_List *obj_focus_out;
Evas_Object_List *obj_show;
Evas_Object_List *obj_hide;
Evas_Object_List *obj_move;
Evas_Object_List *obj_resize;
Evas_Object_List *obj_restack;
} callbacks;
struct { struct {
Evas_List *clipees; Evas_List *clipees;
@ -353,24 +337,37 @@ struct _Evas_Object
} clip; } clip;
Evas_Object_Func *func; Evas_Object_Func *func;
void *object_data;
struct { struct {
int walking_list; int walking_list;
int deletions_waiting : 1;
Evas_Smart *smart; Evas_Smart *smart;
void *data; void *data;
Evas_Object *parent; Evas_Object *parent;
Evas_List *contained; Evas_List *contained;
Evas_List *callbacks; Evas_List *callbacks;
char deletions_waiting : 1;
} smart; } smart;
void *object_data; short store : 1;
short pass_events : 1;
short repeat_events : 1;
short restack : 1;
short changed : 1;
short mouse_in : 1;
short mouse_grabbed : 1;
short pre_render_done : 1;
short intercepted : 1;
short focused : 1;
unsigned char delete_me;
}; };
struct _Evas_Func_Node struct _Evas_Func_Node
{ {
Evas_Object_List _list_data; Evas_Object_List _list_data;
int delete_me : 1; char delete_me : 1;
void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info); void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info);
void *data; void *data;
}; };