From 478de3ec7674b0bc5be2e0531a0ee9fea79069ba Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Tue, 8 Jan 2013 03:49:49 +0000 Subject: [PATCH] small change - not worth chglogging... make evas gl x11 header not need xlib.h anymore... :) SVN revision: 82378 --- src/lib/evas/canvas/evas_render.c | 24 +++++++++++ src/lib/evas/include/evas_private.h | 40 +++++++++++++++++++ .../ecore_evas/engines/x/ecore_evas_x.c | 2 +- .../evas/engines/gl_x11/Evas_Engine_GL_X11.h | 24 +++++------ 4 files changed, 76 insertions(+), 14 deletions(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index bed97c5b26..a5b5e8fdc9 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -58,6 +58,8 @@ struct _Render_Updates static Eina_Bool evas_render_updates_internal(Evas *eo_e, unsigned char make_updates, unsigned char do_draw, Evas_Render_Done_Cb done_func, void *done_data, Evas_Event_Cb updates_func, void *updates_data, Eina_Bool do_async); +static void +_evas_render_mode_eval(Evas_Public_Data *e); EAPI void evas_damage_rectangle_add(Evas *eo_e, int x, int y, int w, int h) @@ -1551,6 +1553,7 @@ evas_render_updates_internal(Evas *eo_e, { unsigned int offset = 0; + _evas_render_mode_eval(e); while ((surface = e->engine.func->output_redraws_next_update_get (e->engine.data.output, @@ -2120,4 +2123,25 @@ evas_render_object_recalc(Evas_Object *eo_obj) } } +static void +_evas_render_mode_eval(Evas_Public_Data *e) // eo +{ + Evas_Opset opset; + int i; + + if (!e->engine.func) return; + if (!e->engine.func->opset_eval) return; + + // XXX1: walk thru active objects - figure out render ops + for (i = 0; i < e->active_objects.count; ++i) + { + Evas_Object_Protected_Data *obj = eina_array_data_get(&e->active_objects, i); // eo + Evas_Object *eo_obj; // eo + + if (!obj) continue; + eo_obj = obj->object; // eo + } + e->engine.func->opset_eval(e->engine.data.output, &opset); +} + /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index 876401dc42..188feda60b 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -34,6 +34,7 @@ typedef struct _Evas_Font_Description Evas_Font_Description; typedef struct _Evas_Data_Node Evas_Data_Node; typedef struct _Evas_Func_Node Evas_Func_Node; typedef RGBA_Image_Loadopts Evas_Image_Load_Opts; +typedef struct _Evas_Opset Evas_Opset; typedef struct _Evas_Func Evas_Func; typedef struct _Evas_Image_Load_Func Evas_Image_Load_Func; typedef struct _Evas_Image_Save_Func Evas_Image_Save_Func; @@ -753,6 +754,42 @@ struct _Evas_Object_Func int (*get_opaque_rect) (Evas_Object *obj, Evas_Object_Protected_Data *pd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); int (*can_map) (Evas_Object *obj); + + int (*opset_get) (Evas_Object *obj); +}; + +typedef enum _Evas_Optype +{ + EVAS_OP_FILL_COLOR, + EVAS_OP_BLEND_COLOR, + EVAS_OP_COPY_PIXELS, + EVAS_OP_BLEND_PIXELS, + EVAS_OP_BLEND_ALPHA_MUL_PIXELS, + EVAS_OP_BLEND_COLOR_MUL_PIXELS, + EVAS_OP_SCALE_NEAREST_COPY_PIXELS, + EVAS_OP_BLEND_NEAREST_COPY_PIXELS, + EVAS_OP_SCALE_NEAREST_COPY_ALPHA_MUL_PIXELS, + EVAS_OP_BLEND_NEAREST_COPY_COLOR_MUL_PIXELS, + EVAS_OP_SCALE_SMOOTH_COPY_PIXELS, + EVAS_OP_BLEND_SMOOTH_COPY_PIXELS, + EVAS_OP_SCALE_SMOOTH_COPY_ALPHA_MUL_PIXELS, + EVAS_OP_BLEND_SMOOTH_COPY_COLOR_MUL_PIXELS, + EVAS_OP_BLEND_COLOR_ALPHA_MASK, + EVAS_OP_MAP_COPY_PIXELS, + EVAS_OP_MAP_BLEND_PIXELS, + EVAS_OP_MAP_COPY_ALPHA_MUL_PIXELS, + EVAS_OP_MAP_BLEND_COLOR_MUL_PIXELS, + EVAS_OP_MAP_90MUL_COPY_PIXELS, + EVAS_OP_MAP_90MUL_BLEND_PIXELS, + EVAS_OP_MAP_90MUL_COPY_ALPHA_MUL_PIXELS, + EVAS_OP_MAP_90MUL_BLEND_COLOR_MUL_PIXELS, + EVAS_OP_COUNT // marker for last one + // XXX: line? poly? or just made up of strips of the above? +} Evas_Optype; + +struct _Evas_Opset +{ + Eina_Bool ops[EVAS_OP_COUNT]; }; struct _Evas_Func @@ -899,6 +936,9 @@ struct _Evas_Func /* max size query */ void (*image_max_size_get) (void *data, int *maxw, int *maxh); + + /* pre-seed the engine with the kind of ops it will need */ + void (*opset_eval) (void *data, Evas_Opset *ops); }; struct _Evas_Image_Load_Func diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index 5c71b6cbde..bdb34f4127 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -3438,7 +3438,7 @@ ecore_evas_gl_x11_options_new_internal(const char *disp_name, Ecore_X_Window par evas_output_size_set(ee->evas, w, h); evas_output_viewport_set(ee->evas, 0, 0, w, h); - if (parent == 0) parent = DefaultRootWindow(ecore_x_display_get()); + if (parent == 0) parent = ecore_x_window_root_first_get(); edata->win_root = parent; if (edata->win_root != 0) diff --git a/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h b/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h index aceb2ff8ae..04e1c4c82d 100644 --- a/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h +++ b/src/modules/evas/engines/gl_x11/Evas_Engine_GL_X11.h @@ -1,8 +1,6 @@ #ifndef _EVAS_ENGINE_GL_X11_H #define _EVAS_ENGINE_GL_X11_H -#include - typedef struct _Evas_Engine_Info_GL_X11 Evas_Engine_Info_GL_X11; /* have this feature */ @@ -25,21 +23,21 @@ struct _Evas_Engine_Info_GL_X11 /* engine specific data & parameters it needs to set up */ struct { - Display *display; - Drawable drawable; - Visual *visual; - Colormap colormap; - int depth; - int screen; - int rotation; - unsigned int destination_alpha : 1; + void *display; + unsigned long drawable; + void *visual; + unsigned long colormap; + int depth; + int screen; + int rotation; + unsigned int destination_alpha : 1; } info; /* engine specific function calls to query stuff about the destination */ /* engine (what visual & colormap & depth to use, performance info etc. */ struct { - Visual * (*best_visual_get) (Evas_Engine_Info_GL_X11 *einfo); - Colormap (*best_colormap_get) (Evas_Engine_Info_GL_X11 *einfo); - int (*best_depth_get) (Evas_Engine_Info_GL_X11 *einfo); + void *(*best_visual_get) (Evas_Engine_Info_GL_X11 *einfo); + unsigned long (*best_colormap_get) (Evas_Engine_Info_GL_X11 *einfo); + int (*best_depth_get) (Evas_Engine_Info_GL_X11 *einfo); } func; struct {