aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib
diff options
context:
space:
mode:
authorDavid Walter Seikel2012-04-22 09:19:23 +1000
committerDavid Walter Seikel2012-04-22 09:19:23 +1000
commitc963d75dfdeec11f82e79e727062fbf89afa2c04 (patch)
tree895633dbf641110be46f117c29890c49b3ffc0bd /libraries/evas/src/lib
parentAdding the new extantz viewer and grid manager. (diff)
downloadSledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.zip
SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.gz
SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.bz2
SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.xz
Update EFL to latest beta.
Diffstat (limited to 'libraries/evas/src/lib')
-rw-r--r--libraries/evas/src/lib/Evas.h310
-rw-r--r--libraries/evas/src/lib/Evas_GL.h2
-rw-r--r--libraries/evas/src/lib/Makefile.am10
-rw-r--r--libraries/evas/src/lib/Makefile.in21
-rw-r--r--libraries/evas/src/lib/cache/Makefile.am1
-rw-r--r--libraries/evas/src/lib/cache/Makefile.in9
-rw-r--r--libraries/evas/src/lib/cache/evas_cache_image.c338
-rw-r--r--libraries/evas/src/lib/canvas/Makefile.am1
-rw-r--r--libraries/evas/src/lib/canvas/Makefile.in15
-rw-r--r--libraries/evas/src/lib/canvas/evas_callbacks.c9
-rw-r--r--libraries/evas/src/lib/canvas/evas_events.c17
-rw-r--r--libraries/evas/src/lib/canvas/evas_map.c34
-rw-r--r--libraries/evas/src/lib/canvas/evas_object_image.c40
-rw-r--r--libraries/evas/src/lib/canvas/evas_object_main.c19
-rw-r--r--libraries/evas/src/lib/canvas/evas_object_textblock.c180
-rw-r--r--libraries/evas/src/lib/canvas/evas_render.c63
-rw-r--r--libraries/evas/src/lib/cserve/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/Makefile.am2
-rw-r--r--libraries/evas/src/lib/engines/common/Makefile.in10
-rw-r--r--libraries/evas/src/lib/engines/common/evas_draw_main.c65
-rw-r--r--libraries/evas/src/lib/engines/common/evas_font_load.c8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_image_main.c77
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am6
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in13
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_polygon_main.c8
-rw-r--r--libraries/evas/src/lib/engines/common/evas_scale_sample.c3
-rw-r--r--libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx.c6
-rw-r--r--libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c6
-rw-r--r--libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downy.c6
-rw-r--r--libraries/evas/src/lib/engines/common/evas_tiler.c96
-rw-r--r--libraries/evas/src/lib/engines/common_16/Makefile.in8
-rw-r--r--libraries/evas/src/lib/engines/common_8/Makefile.in8
-rw-r--r--libraries/evas/src/lib/file/Makefile.am3
-rw-r--r--libraries/evas/src/lib/file/Makefile.in10
-rw-r--r--libraries/evas/src/lib/file/evas_module.c4
-rw-r--r--libraries/evas/src/lib/file/evas_path.c4
-rw-r--r--libraries/evas/src/lib/include/Makefile.in8
-rw-r--r--libraries/evas/src/lib/include/evas_blend_ops.h12
-rw-r--r--libraries/evas/src/lib/include/evas_common.h92
-rw-r--r--libraries/evas/src/lib/include/evas_private.h3
46 files changed, 1029 insertions, 554 deletions
diff --git a/libraries/evas/src/lib/Evas.h b/libraries/evas/src/lib/Evas.h
index b85bbeb..67d3018 100644
--- a/libraries/evas/src/lib/Evas.h
+++ b/libraries/evas/src/lib/Evas.h
@@ -2,9 +2,10 @@
2@mainpage Evas 2@mainpage Evas
3 3
4@version 1.1 4@version 1.1
5@date 2000-2011 5@date 2000-2012
6 6
7Please see the @ref authors page for contact details. 7Please see the @ref authors page for contact details.
8@link Evas.h Evas API @endlink
8 9
9@link Evas.h Evas API @endlink 10@link Evas.h Evas API @endlink
10 11
@@ -489,7 +490,7 @@ typedef enum _Evas_Event_Flags
489{ 490{
490 EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */ 491 EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */
491 EVAS_EVENT_FLAG_ON_HOLD = (1 << 0), /**< This event is being delivered but should be put "on hold" until the on hold flag is unset. the event should be used for informational purposes and maybe some indications visually, but not actually perform anything */ 492 EVAS_EVENT_FLAG_ON_HOLD = (1 << 0), /**< This event is being delivered but should be put "on hold" until the on hold flag is unset. the event should be used for informational purposes and maybe some indications visually, but not actually perform anything */
492 EVAS_EVENT_FLAG_ON_SCROLL = (1 << 1) /**< This event flag indicates the event occurs while scrolling; for exameple, DOWN event occurs during scrolling; the event should be used for informational purposes and maybe some indications visually, but not actually perform anything */ 493 EVAS_EVENT_FLAG_ON_SCROLL = (1 << 1) /**< This event flag indicates the event occurs while scrolling; for example, DOWN event occurs during scrolling; the event should be used for informational purposes and maybe some indications visually, but not actually perform anything */
493} Evas_Event_Flags; /**< Flags for Events */ 494} Evas_Event_Flags; /**< Flags for Events */
494 495
495/** 496/**
@@ -501,7 +502,7 @@ typedef enum _Evas_Touch_Point_State
501 EVAS_TOUCH_POINT_UP, /**< Touch point is released */ 502 EVAS_TOUCH_POINT_UP, /**< Touch point is released */
502 EVAS_TOUCH_POINT_MOVE, /**< Touch point is moved */ 503 EVAS_TOUCH_POINT_MOVE, /**< Touch point is moved */
503 EVAS_TOUCH_POINT_STILL, /**< Touch point is not moved after pressed */ 504 EVAS_TOUCH_POINT_STILL, /**< Touch point is not moved after pressed */
504 EVAS_TOUCH_POINT_CANCEL /**< Touch point is calcelled */ 505 EVAS_TOUCH_POINT_CANCEL /**< Touch point is cancelled */
505} Evas_Touch_Point_State; 506} Evas_Touch_Point_State;
506 507
507/** 508/**
@@ -527,7 +528,7 @@ typedef enum _Evas_Colorspace
527 EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */ 528 EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
528 EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */ 529 EVAS_COLORSPACE_RGB565_A5P, /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
529 EVAS_COLORSPACE_GRY8, /**< 8bit grayscale */ 530 EVAS_COLORSPACE_GRY8, /**< 8bit grayscale */
530 EVAS_COLORSPACE_YCBCR422601_PL, /**< YCbCr 4:2:2, ITU.BT-601 specifications. The data poitned to is just an array of row pointer, pointing to line of Y,Cb,Y,Cr bytes */ 531 EVAS_COLORSPACE_YCBCR422601_PL, /**< YCbCr 4:2:2, ITU.BT-601 specifications. The data pointed to is just an array of row pointer, pointing to line of Y,Cb,Y,Cr bytes */
531 EVAS_COLORSPACE_YCBCR420NV12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specification. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb,Cr rows. */ 532 EVAS_COLORSPACE_YCBCR420NV12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specification. The data pointed to is just an array of row pointer, pointing to the Y rows, then the Cb,Cr rows. */
532 EVAS_COLORSPACE_YCBCR420TM12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specification. The data pointed to is just an array of tiled row pointer, pointing to the Y rows, then the Cb,Cr rows. */ 533 EVAS_COLORSPACE_YCBCR420TM12601_PL, /**< YCbCr 4:2:0, ITU.BT-601 specification. The data pointed to is just an array of tiled row pointer, pointing to the Y rows, then the Cb,Cr rows. */
533} Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */ 534} Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */
@@ -536,7 +537,7 @@ typedef enum _Evas_Colorspace
536 * How to pack items into cells in a table. 537 * How to pack items into cells in a table.
537 * @ingroup Evas_Object_Table 538 * @ingroup Evas_Object_Table
538 * 539 *
539 * @see evas_object_table_homogeneous_set() for an explanation of the funcion of 540 * @see evas_object_table_homogeneous_set() for an explanation of the function of
540 * each one. 541 * each one.
541 */ 542 */
542typedef enum _Evas_Object_Table_Homogeneous_Mode 543typedef enum _Evas_Object_Table_Homogeneous_Mode
@@ -693,7 +694,7 @@ typedef enum _Evas_Load_Error
693 EVAS_LOAD_ERROR_NONE = 0, /**< No error on load */ 694 EVAS_LOAD_ERROR_NONE = 0, /**< No error on load */
694 EVAS_LOAD_ERROR_GENERIC = 1, /**< A non-specific error occurred */ 695 EVAS_LOAD_ERROR_GENERIC = 1, /**< A non-specific error occurred */
695 EVAS_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< File (or file path) does not exist */ 696 EVAS_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< File (or file path) does not exist */
696 EVAS_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission deinied to an existing file (or path) */ 697 EVAS_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission denied to an existing file (or path) */
697 EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Allocation of resources failure prevented load */ 698 EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Allocation of resources failure prevented load */
698 EVAS_LOAD_ERROR_CORRUPT_FILE = 5, /**< File corrupt (but was detected as a known format) */ 699 EVAS_LOAD_ERROR_CORRUPT_FILE = 5, /**< File corrupt (but was detected as a known format) */
699 EVAS_LOAD_ERROR_UNKNOWN_FORMAT = 6 /**< File is not a known format */ 700 EVAS_LOAD_ERROR_UNKNOWN_FORMAT = 6 /**< File is not a known format */
@@ -721,7 +722,7 @@ typedef enum _Evas_Pixel_Import_Pixel_Format
721{ 722{
722 EVAS_PIXEL_FORMAT_NONE = 0, /**< No pixel format */ 723 EVAS_PIXEL_FORMAT_NONE = 0, /**< No pixel format */
723 EVAS_PIXEL_FORMAT_ARGB32 = 1, /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */ 724 EVAS_PIXEL_FORMAT_ARGB32 = 1, /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */
724 EVAS_PIXEL_FORMAT_YUV420P_601 = 2 /**< YUV 420 Planar format with CCIR 601 color encoding wuth contiguous planes in the order Y, U and V */ 725 EVAS_PIXEL_FORMAT_YUV420P_601 = 2 /**< YUV 420 Planar format with CCIR 601 color encoding with contiguous planes in the order Y, U and V */
725} Evas_Pixel_Import_Pixel_Format; /**< Pixel format for import call. See evas_object_image_pixels_import() */ 726} Evas_Pixel_Import_Pixel_Format; /**< Pixel format for import call. See evas_object_image_pixels_import() */
726 727
727struct _Evas_Pixel_Import_Source 728struct _Evas_Pixel_Import_Source
@@ -809,10 +810,10 @@ typedef enum _Evas_Render_Op
809 EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */ 810 EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */
810 EVAS_RENDER_COPY = 2, /**< d = s */ 811 EVAS_RENDER_COPY = 2, /**< d = s */
811 EVAS_RENDER_COPY_REL = 3, /**< d = s*da */ 812 EVAS_RENDER_COPY_REL = 3, /**< d = s*da */
812 EVAS_RENDER_ADD = 4, /**< d = d + s */ 813 EVAS_RENDER_ADD = 4, /* d = d + s */
813 EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */ 814 EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */
814 EVAS_RENDER_SUB = 6, /**< d = d - s */ 815 EVAS_RENDER_SUB = 6, /**< d = d - s */
815 EVAS_RENDER_SUB_REL = 7, /**< d = d - s*da */ 816 EVAS_RENDER_SUB_REL = 7, /* d = d - s*da */
816 EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */ 817 EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */
817 EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */ 818 EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */
818 EVAS_RENDER_MASK = 10, /**< d = d*sa */ 819 EVAS_RENDER_MASK = 10, /**< d = d*sa */
@@ -1280,7 +1281,7 @@ EAPI Eina_Bool evas_async_events_put (const void *target, Ev
1280 * directly, too, and not yet with its @b objects. They are the 1281 * directly, too, and not yet with its @b objects. They are the
1281 * functions you need to use at a minimum to get a working canvas. 1282 * functions you need to use at a minimum to get a working canvas.
1282 * 1283 *
1283 * Some of the funcions in this group are exemplified @ref 1284 * Some of the functions in this group are exemplified @ref
1284 * Example_Evas_Events "here". 1285 * Example_Evas_Events "here".
1285 */ 1286 */
1286 1287
@@ -1422,13 +1423,13 @@ EAPI void evas_damage_rectangle_add (Evas *e, int x, int y,
1422 * was just after this function took place. 1423 * was just after this function took place.
1423 * 1424 *
1424 * We call it "obscured region" because the most common use case for 1425 * We call it "obscured region" because the most common use case for
1425 * this rendering (partial) freeze is something else (most problaby 1426 * this rendering (partial) freeze is something else (most probably
1426 * other canvas) being on top of the specified rectangular region, 1427 * other canvas) being on top of the specified rectangular region,
1427 * thus shading it completely from the user's final scene in a 1428 * thus shading it completely from the user's final scene in a
1428 * display. To avoid unnecessary processing, one should indicate to the 1429 * display. To avoid unnecessary processing, one should indicate to the
1429 * obscured canvas not to bother about the non-important area. 1430 * obscured canvas not to bother about the non-important area.
1430 * 1431 *
1431 * The majority of users won't have to worry about this funcion, as 1432 * The majority of users won't have to worry about this function, as
1432 * they'll be using just one canvas in their applications, with 1433 * they'll be using just one canvas in their applications, with
1433 * nothing inset or on top of it in any form. 1434 * nothing inset or on top of it in any form.
1434 * 1435 *
@@ -2077,7 +2078,7 @@ EAPI void evas_pointer_canvas_xy_get (const Evas *e, Evas_Co
2077 * Returns a bitmask with the mouse buttons currently pressed, set to 1 2078 * Returns a bitmask with the mouse buttons currently pressed, set to 1
2078 * 2079 *
2079 * @param e The pointer to the Evas Canvas 2080 * @param e The pointer to the Evas Canvas
2080 * @return A bitmask of the currently depressed buttons on the cavas 2081 * @return A bitmask of the currently depressed buttons on the canvas
2081 * @ingroup Evas_Pointer_Group 2082 * @ingroup Evas_Pointer_Group
2082 * 2083 *
2083 * Calling this function will return a 32-bit integer with the 2084 * Calling this function will return a 32-bit integer with the
@@ -2150,7 +2151,7 @@ EAPI Eina_Bool evas_pointer_inside_get (const Evas *e) EINA_WA
2150 * its internal states changing (an object got focused, the rendering 2151 * its internal states changing (an object got focused, the rendering
2151 * is updated, etc). 2152 * is updated, etc).
2152 * 2153 *
2153 * Some of the funcions in this group are exemplified @ref 2154 * Some of the functions in this group are exemplified @ref
2154 * Example_Evas_Events "here". 2155 * Example_Evas_Events "here".
2155 * 2156 *
2156 * @ingroup Evas_Canvas 2157 * @ingroup Evas_Canvas
@@ -2308,14 +2309,14 @@ EAPI void *evas_event_callback_del_full (Evas *e, Evas_Callb
2308 * @param data The data pointer to be passed to the callback 2309 * @param data The data pointer to be passed to the callback
2309 * 2310 *
2310 * Evas has a stack of callbacks that get called after all the callbacks for 2311 * Evas has a stack of callbacks that get called after all the callbacks for
2311 * an event have triggered (all the objects it triggers on and al the callbacks 2312 * an event have triggered (all the objects it triggers on and all the callbacks
2312 * in each object triggered). When all these have been called, the stack is 2313 * in each object triggered). When all these have been called, the stack is
2313 * unwond from most recently to least recently pushed item and removed from the 2314 * unwond from most recently to least recently pushed item and removed from the
2314 * stack calling the callback set for it. 2315 * stack calling the callback set for it.
2315 * 2316 *
2316 * This is intended for doing reverse logic-like processing, example - when a 2317 * This is intended for doing reverse logic-like processing, example - when a
2317 * child object that happens to get the event later is meant to be able to 2318 * child object that happens to get the event later is meant to be able to
2318 * "steal" functions from a parent and thus on unwind of this stack hav its 2319 * "steal" functions from a parent and thus on unwind of this stack have its
2319 * function called first, thus being able to set flags, or return 0 from the 2320 * function called first, thus being able to set flags, or return 0 from the
2320 * post-callback that stops all other post-callbacks in the current stack from 2321 * post-callback that stops all other post-callbacks in the current stack from
2321 * being called (thus basically allowing a child to take control, if the event 2322 * being called (thus basically allowing a child to take control, if the event
@@ -2359,7 +2360,7 @@ EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Objec
2359 * an Evas canvas. 2360 * an Evas canvas.
2360 * 2361 *
2361 * There might be scenarios during a graphical user interface 2362 * There might be scenarios during a graphical user interface
2362 * program's use when the developer whishes the users wouldn't be able 2363 * program's use when the developer wishes the users wouldn't be able
2363 * to deliver input events to this application. It may, for example, 2364 * to deliver input events to this application. It may, for example,
2364 * be the time for it to populate a view or to change some 2365 * be the time for it to populate a view or to change some
2365 * layout. Assuming proper behavior with user interaction during this 2366 * layout. Assuming proper behavior with user interaction during this
@@ -2367,7 +2368,14 @@ EAPI void evas_post_event_callback_remove_full (Evas *e, Evas_Objec
2367 * programmer can then tell the canvas to ignore input events, 2368 * programmer can then tell the canvas to ignore input events,
2368 * bringing it back to normal behavior when he/she wants. 2369 * bringing it back to normal behavior when he/she wants.
2369 * 2370 *
2370 * Some of the funcions in this group are exemplified @ref 2371 * Most of the time use of freezing events is done like this:
2372 * @code
2373 * evas_event_freeze(my_evas_canvas);
2374 * function_that_does_work_which_cant_be_interrupted_by_events();
2375 * evas_event_thaw(my_evas_canvas);
2376 * @endcode
2377 *
2378 * Some of the functions in this group are exemplified @ref
2371 * Example_Evas_Events "here". 2379 * Example_Evas_Events "here".
2372 * 2380 *
2373 * @ingroup Evas_Canvas_Events 2381 * @ingroup Evas_Canvas_Events
@@ -2416,7 +2424,7 @@ EAPI Evas_Event_Flags evas_event_default_flags_get (const Evas *e) EINA_AR
2416 * of this kind during the freeze will get @b discarded. Every freeze 2424 * of this kind during the freeze will get @b discarded. Every freeze
2417 * call must be matched by a thaw call in order to completely thaw out 2425 * call must be matched by a thaw call in order to completely thaw out
2418 * a canvas (i.e. these calls may be nested). The most common use is 2426 * a canvas (i.e. these calls may be nested). The most common use is
2419 * when you don't want the user to interect with your user interface 2427 * when you don't want the user to interact with your user interface
2420 * when you're populating a view or changing the layout. 2428 * when you're populating a view or changing the layout.
2421 * 2429 *
2422 * Example: 2430 * Example:
@@ -2494,13 +2502,18 @@ EAPI void evas_event_thaw_eval (Evas *e) EINA_ARG_NONN
2494 * Functions to tell Evas that input events happened and should be 2502 * Functions to tell Evas that input events happened and should be
2495 * processed. 2503 * processed.
2496 * 2504 *
2505 * @warning Most of the time these functions are @b not what you're looking for.
2506 * These functions should only be used if you're not working with ecore evas(or
2507 * another input handling system). If you're not using ecore evas please
2508 * consider using it, in most situation it will make life a lot easier.
2509 *
2497 * As explained in @ref intro_not_evas, Evas does not know how to poll 2510 * As explained in @ref intro_not_evas, Evas does not know how to poll
2498 * for input events, so the developer should do it and then feed such 2511 * for input events, so the developer should do it and then feed such
2499 * events to the canvas to be processed. This is only required if 2512 * events to the canvas to be processed. This is only required if
2500 * operating Evas directly. Modules such as Ecore_Evas do that for 2513 * operating Evas directly. Modules such as Ecore_Evas do that for
2501 * you. 2514 * you.
2502 * 2515 *
2503 * Some of the funcions in this group are exemplified @ref 2516 * Some of the functions in this group are exemplified @ref
2504 * Example_Evas_Events "here". 2517 * Example_Evas_Events "here".
2505 * 2518 *
2506 * @ingroup Evas_Canvas_Events 2519 * @ingroup Evas_Canvas_Events
@@ -2928,7 +2941,7 @@ EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WA
2928 * - textblock and 2941 * - textblock and
2929 * - image. 2942 * - image.
2930 * 2943 *
2931 * These functions apply to @b any Evas object, whichever type thay 2944 * These functions apply to @b any Evas object, whichever type that
2932 * may have. 2945 * may have.
2933 * 2946 *
2934 * @note The built-in types which are most used are rectangles, text 2947 * @note The built-in types which are most used are rectangles, text
@@ -2939,14 +2952,21 @@ EAPI const Eina_List *evas_font_path_list (const Evas *e) EINA_WA
2939/** 2952/**
2940 * @defgroup Evas_Object_Group_Basic Basic Object Manipulation 2953 * @defgroup Evas_Object_Group_Basic Basic Object Manipulation
2941 * 2954 *
2942 * Methods that are broadly used, like those that change the color, 2955 * Almost every evas object created will have some generic function used to
2943 * clippers and geometry of an Evas object. 2956 * manipulate it. That's because there are a number of basic actions to be done
2944 * 2957 * to objects that are irrespective of the object's type, things like:
2945 * An example on the most used functions in this group can be seen @ref 2958 * @li Showing/Hiding
2946 * Example_Evas_Object_Manipulation "here". 2959 * @li Setting(and getting) geometry
2947 * 2960 * @li Bring up or down a layer
2948 * For function dealing with stacking, the examples are gathered @ref 2961 * @li Color management
2949 * Example_Evas_Stacking "here". 2962 * @li Handling focus
2963 * @li Clipping
2964 * @li Reference counting
2965 *
2966 * All of this issues are handled through the functions here grouped. Examples
2967 * of these function can be seen in @ref Example_Evas_Object_Manipulation(which
2968 * deals with the most common ones) and in @ref Example_Evas_Stacking(which
2969 * deals with stacking functions).
2950 * 2970 *
2951 * @ingroup Evas_Object_Group 2971 * @ingroup Evas_Object_Group
2952 */ 2972 */
@@ -3444,7 +3464,7 @@ EAPI void evas_object_hide (Evas_Object *obj) EINA
3444 * @return @c EINA_TRUE if the object is visible, @c EINA_FALSE 3464 * @return @c EINA_TRUE if the object is visible, @c EINA_FALSE
3445 * otherwise. 3465 * otherwise.
3446 * 3466 *
3447 * This retrieves an object's visibily as the one enforced by 3467 * This retrieves an object's visibility as the one enforced by
3448 * evas_object_show() and evas_object_hide(). 3468 * evas_object_show() and evas_object_hide().
3449 * 3469 *
3450 * @note The value returned isn't, by any means, influenced by 3470 * @note The value returned isn't, by any means, influenced by
@@ -3492,7 +3512,7 @@ EAPI void evas_object_color_set (Evas_Object *obj, int
3492 * Retrieves the “main” color's RGB component (and alpha channel) 3512 * Retrieves the “main” color's RGB component (and alpha channel)
3493 * values, <b>which range from 0 to 255</b>. For the alpha channel, 3513 * values, <b>which range from 0 to 255</b>. For the alpha channel,
3494 * which defines the object's transparency level, 0 means totally 3514 * which defines the object's transparency level, 0 means totally
3495 * trasparent, while 255 means opaque. These color values are 3515 * transparent, while 255 means opaque. These color values are
3496 * premultiplied by the alpha value. 3516 * premultiplied by the alpha value.
3497 * 3517 *
3498 * Usually you’ll use this attribute for text and rectangle objects, 3518 * Usually you’ll use this attribute for text and rectangle objects,
@@ -4406,7 +4426,7 @@ EAPI Eina_Bool evas_object_freeze_events_get(const Evas_Object *obj) EIN
4406 * @image rtf map-uv-mapping-1.png 4426 * @image rtf map-uv-mapping-1.png
4407 * @image latex map-uv-mapping-1.eps 4427 * @image latex map-uv-mapping-1.eps
4408 * 4428 *
4409 * Images need some special handlign when mapped. Evas can easily take care 4429 * Images need some special handling when mapped. Evas can easily take care
4410 * of objects and do almost anything with them, but it's completely oblivious 4430 * of objects and do almost anything with them, but it's completely oblivious
4411 * to the content of images, so each point in the map needs to be told to what 4431 * to the content of images, so each point in the map needs to be told to what
4412 * pixel in the source image it belongs. Failing to do may sometimes result 4432 * pixel in the source image it belongs. Failing to do may sometimes result
@@ -4572,7 +4592,7 @@ EAPI void evas_object_map_set (Evas_Object *obj, cons
4572 * Get current object transformation map. 4592 * Get current object transformation map.
4573 * 4593 *
4574 * This returns the current internal map set on the indicated object. It is 4594 * This returns the current internal map set on the indicated object. It is
4575 * intended for read-only acces and is only valid as long as the object is 4595 * intended for read-only access and is only valid as long as the object is
4576 * not deleted or the map on the object is not changed. If you wish to modify 4596 * not deleted or the map on the object is not changed. If you wish to modify
4577 * the map and set it back do the following: 4597 * the map and set it back do the following:
4578 * 4598 *
@@ -4678,7 +4698,7 @@ EAPI void evas_map_util_points_color_set (Evas_Map *
4678 * 4698 *
4679 * This rotates the indicated map's coordinates around the center coordinate 4699 * This rotates the indicated map's coordinates around the center coordinate
4680 * given by @p cx and @p cy as the rotation center. The points will have their 4700 * given by @p cx and @p cy as the rotation center. The points will have their
4681 * X and Y coordinates rotated clockwise by @p degrees degress (360.0 is a 4701 * X and Y coordinates rotated clockwise by @p degrees degrees (360.0 is a
4682 * full rotation). Negative values for degrees will rotate counter-clockwise 4702 * full rotation). Negative values for degrees will rotate counter-clockwise
4683 * by that amount. All coordinates are canvas global coordinates. 4703 * by that amount. All coordinates are canvas global coordinates.
4684 * 4704 *
@@ -4698,7 +4718,7 @@ EAPI void evas_map_util_rotate (Evas_Map *
4698 * Like evas_map_util_rotate(), this zooms the points of the map from a center 4718 * Like evas_map_util_rotate(), this zooms the points of the map from a center
4699 * point. That center is defined by @p cx and @p cy. The @p zoomx and @p zoomy 4719 * point. That center is defined by @p cx and @p cy. The @p zoomx and @p zoomy
4700 * parameters specify how much to zoom in the X and Y direction respectively. 4720 * parameters specify how much to zoom in the X and Y direction respectively.
4701 * A value of 1.0 means "don't zoom". 2.0 means "dobule the size". 0.5 is 4721 * A value of 1.0 means "don't zoom". 2.0 means "double the size". 0.5 is
4702 * "half the size" etc. All coordinates are canvas global coordinates. 4722 * "half the size" etc. All coordinates are canvas global coordinates.
4703 * 4723 *
4704 * @param m map to change. 4724 * @param m map to change.
@@ -4723,9 +4743,9 @@ EAPI void evas_map_util_zoom (Evas_Map *
4723 * evas_map_util_rotate() you provide a center point to rotate around (in 3D). 4743 * evas_map_util_rotate() you provide a center point to rotate around (in 3D).
4724 * 4744 *
4725 * @param m map to change. 4745 * @param m map to change.
4726 * @param dx amount of degrees from 0.0 to 360.0 to rotate arount X axis. 4746 * @param dx amount of degrees from 0.0 to 360.0 to rotate around X axis.
4727 * @param dy amount of degrees from 0.0 to 360.0 to rotate arount Y axis. 4747 * @param dy amount of degrees from 0.0 to 360.0 to rotate around Y axis.
4728 * @param dz amount of degrees from 0.0 to 360.0 to rotate arount Z axis. 4748 * @param dz amount of degrees from 0.0 to 360.0 to rotate around Z axis.
4729 * @param cx rotation's center horizontal position. 4749 * @param cx rotation's center horizontal position.
4730 * @param cy rotation's center vertical position. 4750 * @param cy rotation's center vertical position.
4731 * @param cz rotation's center vertical position. 4751 * @param cz rotation's center vertical position.
@@ -4794,8 +4814,8 @@ EAPI void evas_map_util_3d_lighting (Evas_Map *
4794 * This applies a given perspective (3D) to the map coordinates. X, Y and Z 4814 * This applies a given perspective (3D) to the map coordinates. X, Y and Z
4795 * values are used. The px and py points specify the "infinite distance" point 4815 * values are used. The px and py points specify the "infinite distance" point
4796 * in the 3D conversion (where all lines converge to like when artists draw 4816 * in the 3D conversion (where all lines converge to like when artists draw
4797 * 3D by hand). The @p z0 value specifis the z value at which there is a 1:1 4817 * 3D by hand). The @p z0 value specifies the z value at which there is a 1:1
4798 * mapping between spatial coorinates and screen coordinates. Any points 4818 * mapping between spatial coordinates and screen coordinates. Any points
4799 * on this z value will not have their X and Y values modified in the transform. 4819 * on this z value will not have their X and Y values modified in the transform.
4800 * Those further away (Z value higher) will shrink into the distance, and 4820 * Those further away (Z value higher) will shrink into the distance, and
4801 * those less than this value will expand and become bigger. The @p foc value 4821 * those less than this value will expand and become bigger. The @p foc value
@@ -4805,8 +4825,8 @@ EAPI void evas_map_util_3d_lighting (Evas_Map *
4805 * control and @p foc must be greater than 0. 4825 * control and @p foc must be greater than 0.
4806 * 4826 *
4807 * @param m map to change. 4827 * @param m map to change.
4808 * @param px The pespective distance X coordinate 4828 * @param px The perspective distance X coordinate
4809 * @param py The pespective distance Y coordinate 4829 * @param py The perspective distance Y coordinate
4810 * @param z0 The "0" z plane value 4830 * @param z0 The "0" z plane value
4811 * @param foc The focal distance 4831 * @param foc The focal distance
4812 */ 4832 */
@@ -4885,7 +4905,7 @@ EAPI void evas_map_alpha_set (Evas_Map *m, Eina_Bool
4885/** 4905/**
4886 * get the alpha flag for map rendering 4906 * get the alpha flag for map rendering
4887 * 4907 *
4888 * This gets the alph flag for map rendering. 4908 * This gets the alpha flag for map rendering.
4889 * 4909 *
4890 * @param m map to get the alpha from. Must not be NULL. 4910 * @param m map to get the alpha from. Must not be NULL.
4891 */ 4911 */
@@ -4926,17 +4946,17 @@ EAPI int evas_map_count_get (const Evas_Map *m) EINA
4926 * 4946 *
4927 * This sets the fixed point's coordinate in the map. Note that points 4947 * This sets the fixed point's coordinate in the map. Note that points
4928 * describe the outline of a quadrangle and are ordered either clockwise 4948 * describe the outline of a quadrangle and are ordered either clockwise
4929 * or anit-clock-wise. It is suggested to keep your quadrangles concave and 4949 * or anti-clock-wise. It is suggested to keep your quadrangles concave and
4930 * non-complex, though these polygon modes may work, they may not render 4950 * non-complex, though these polygon modes may work, they may not render
4931 * a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2, 4951 * a desired set of output. The quadrangle will use points 0 and 1 , 1 and 2,
4932 * 2 and 3, and 3 and 0 to describe the edges of the quandrangle. 4952 * 2 and 3, and 3 and 0 to describe the edges of the quadrangle.
4933 * 4953 *
4934 * The X and Y and Z coordinates are in canvas units. Z is optional and may 4954 * The X and Y and Z coordinates are in canvas units. Z is optional and may
4935 * or may not be honored in drawing. Z is a hint and does not affect the 4955 * or may not be honored in drawing. Z is a hint and does not affect the
4936 * X and Y rendered coordinates. It may be used for calculating fills with 4956 * X and Y rendered coordinates. It may be used for calculating fills with
4937 * perspective correct rendering. 4957 * perspective correct rendering.
4938 * 4958 *
4939 * Remember all coordinates are canvas global ones like with move and reize 4959 * Remember all coordinates are canvas global ones like with move and resize
4940 * in evas. 4960 * in evas.
4941 * 4961 *
4942 * @param m map to change point. Must not be @c NULL. 4962 * @param m map to change point. Must not be @c NULL.
@@ -5466,7 +5486,7 @@ EAPI void evas_object_size_hint_padding_set (Evas_Object *obj, Evas
5466 * 5486 *
5467 * @param obj The object to attach the data pointer to 5487 * @param obj The object to attach the data pointer to
5468 * @param key The string key for the data to access it 5488 * @param key The string key for the data to access it
5469 * @param data The ponter to the data to be attached 5489 * @param data The pointer to the data to be attached
5470 * 5490 *
5471 * This attaches the pointer @p data to the object @p obj, given the 5491 * This attaches the pointer @p data to the object @p obj, given the
5472 * access string @p key. This pointer will stay "hooked" to the object 5492 * access string @p key. This pointer will stay "hooked" to the object
@@ -6124,13 +6144,99 @@ EAPI void *evas_object_intercept_move_callback_del (Evas_Obje
6124 * 6144 *
6125 * @brief Function to create evas rectangle objects. 6145 * @brief Function to create evas rectangle objects.
6126 * 6146 *
6127 * This function may seem useless given there are no functions to manipulate 6147 * There is only one function to deal with rectangle objects, this may make this
6128 * the created rectangle, however the rectangle is actually very useful and can 6148 * function seem useless given there are no functions to manipulate the created
6129 * be manipulate using the generic @ref Evas_Object_Group 6149 * rectangle, however the rectangle is actually very useful and should be
6130 * "evas object functions". 6150 * manipulated using the generic @ref Evas_Object_Group "evas object functions".
6151 *
6152 * The evas rectangle server a number of key functions when working on evas
6153 * programs:
6154 * @li Background
6155 * @li Debugging
6156 * @li Clipper
6157 *
6158 * @section Background
6131 * 6159 *
6132 * For an example of use of an evas_object_rectangle see @ref 6160 * One extremely common requirement of evas programs is to have a solid color
6133 * Example_Evas_Object_Manipulation "here". 6161 * background, this can be accomplished with the following very simple code:
6162 * @code
6163 * Evas_Object *bg = evas_object_rectangle_add(evas_canvas);
6164 * //Here we set the rectangles red, green, blue and opacity levels
6165 * evas_object_color_set(bg, 255, 255, 255, 255); // opaque white background
6166 * evas_object_resize(bg, WIDTH, HEIGHT); // covers full canvas
6167 * evas_object_show(bg);
6168 * @endcode
6169 *
6170 * This however will have issues if the @c evas_canvas is resized, however most
6171 * windows are created using ecore evas and that has a solution to using the
6172 * rectangle as a background:
6173 * @code
6174 * Evas_Object *bg = evas_object_rectangle_add(ecore_evas_get(ee));
6175 * //Here we set the rectangles red, green, blue and opacity levels
6176 * evas_object_color_set(bg, 255, 255, 255, 255); // opaque white background
6177 * evas_object_resize(bg, WIDTH, HEIGHT); // covers full canvas
6178 * evas_object_show(bg);
6179 * ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE);
6180 * @endcode
6181 * So this gives us a white background to our window that will be resized
6182 * together with it.
6183 *
6184 * @section Debugging
6185 *
6186 * Debugging is a major part of any programmers task and when debugging visual
6187 * issues with evas programs the rectangle is an extremely useful tool. The
6188 * rectangle's simplicity means that it's easier to pinpoint issues with it than
6189 * with more complex objects. Therefore a common technique to use when writing
6190 * an evas program and not getting the desired visual result is to replace the
6191 * misbehaving object for a solid color rectangle and seeing how it interacts
6192 * with the other elements, this often allows us to notice clipping, parenting
6193 * or positioning issues. Once the issues have been identified and corrected the
6194 * rectangle can be replaced for the original part and in all likelihood any
6195 * remaining issues will be specific to that object's type.
6196 *
6197 * @section clipping Clipping
6198 *
6199 * Clipping serves two main functions:
6200 * @li Limiting visibility(i.e. hiding portions of an object).
6201 * @li Applying a layer of color to an object.
6202 *
6203 * @subsection hiding Limiting visibility
6204 *
6205 * It is often necessary to show only parts of an object, while it may be
6206 * possible to create an object that corresponds only to the part that must be
6207 * shown(and it isn't always possible) it's usually easier to use a a clipper. A
6208 * clipper is a rectangle that defines what's visible and what is not. The way
6209 * to do this is to create a solid white rectangle(which is the default, no need
6210 * to call evas_object_color_set()) and give it a position and size of what
6211 * should be visible. The following code exemplifies showing the center half of
6212 * @c my_evas_object:
6213 * @code
6214 * Evas_Object *clipper = evas_object_rectangle_add(evas_canvas);
6215 * evas_object_move(clipper, my_evas_object_x / 4, my_evas_object_y / 4);
6216 * evas_object_resize(clipper, my_evas_object_width / 2, my_evas_object_height / 2);
6217 * evas_object_clip_set(my_evas_object, clipper);
6218 * evas_object_show(clipper);
6219 * @endcode
6220 *
6221 * @subsection color Layer of color
6222 *
6223 * In the @ref clipping section we used a solid white clipper, which produced no
6224 * change in the color of the clipped object, it just hid what was outside the
6225 * clippers area. It is however sometimes desirable to change the of color an
6226 * object, this can be accomplished using a clipper that has a non-white color.
6227 * Clippers with color work by multiplying the colors of clipped object. The
6228 * following code will show how to remove all the red from an object:
6229 * @code
6230 * Evas_Object *clipper = evas_object_rectangle_add(evas);
6231 * evas_object_move(clipper, my_evas_object_x, my_evas_object_y);
6232 * evas_object_resize(clipper, my_evas_object_width, my_evas_object_height);
6233 * evas_object_color_set(clipper, 0, 255, 255, 255);
6234 * evas_object_clip_set(obj, clipper);
6235 * evas_object_show(clipper);
6236 * @endcode
6237 *
6238 * For an example that more fully exercise the use of an evas object rectangle
6239 * see @ref Example_Evas_Object_Manipulation.
6134 * 6240 *
6135 * @ingroup Evas_Object_Specific 6241 * @ingroup Evas_Object_Specific
6136 */ 6242 */
@@ -6172,7 +6278,7 @@ EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_WARN_UNU
6172 * object's area</b> with that given pixel data. One could use just a 6278 * object's area</b> with that given pixel data. One could use just a
6173 * sub-region of the original image or even have it tiled repeatedly 6279 * sub-region of the original image or even have it tiled repeatedly
6174 * on the image object. For the common case of having the whole source 6280 * on the image object. For the common case of having the whole source
6175 * image to be displayed on the image object, streched to the 6281 * image to be displayed on the image object, stretched to the
6176 * destination's size, there's also a function helper, to be used 6282 * destination's size, there's also a function helper, to be used
6177 * instead of evas_object_image_fill_set(): 6283 * instead of evas_object_image_fill_set():
6178 * @code 6284 * @code
@@ -6208,7 +6314,7 @@ EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_WARN_UNU
6208 * at a given image, at full size, and will desire that the navigation 6314 * at a given image, at full size, and will desire that the navigation
6209 * to the adjacent images on his/her album be fluid and fast. Thus, 6315 * to the adjacent images on his/her album be fluid and fast. Thus,
6210 * while displaying a given image, the program can be on the 6316 * while displaying a given image, the program can be on the
6211 * background loading the next and previous imagens already, so that 6317 * background loading the next and previous images already, so that
6212 * displaying them on the sequence is just a matter of repainting the 6318 * displaying them on the sequence is just a matter of repainting the
6213 * screen (and not decoding image data). 6319 * screen (and not decoding image data).
6214 * 6320 *
@@ -6247,7 +6353,7 @@ EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_WARN_UNU
6247 * are also some tips on how to boost the performance of your 6353 * are also some tips on how to boost the performance of your
6248 * application. If the animation involves resizing of an image (thus, 6354 * application. If the animation involves resizing of an image (thus,
6249 * re-scaling), you'd better turn off smooth scaling on it @b during 6355 * re-scaling), you'd better turn off smooth scaling on it @b during
6250 * the animation, turning it back on afterwrads, for less 6356 * the animation, turning it back on afterwards, for less
6251 * computations. Also, in this case you'd better flag the image object 6357 * computations. Also, in this case you'd better flag the image object
6252 * in question not to cache scaled versions of it: 6358 * in question not to cache scaled versions of it:
6253 * @code 6359 * @code
@@ -6290,7 +6396,7 @@ EAPI Evas_Object *evas_object_rectangle_add (Evas *e) EINA_WARN_UNU
6290 * your own data as an image's pixel data, fetch an image's pixel data 6396 * your own data as an image's pixel data, fetch an image's pixel data
6291 * for saving/altering, convert images between different color spaces 6397 * for saving/altering, convert images between different color spaces
6292 * and even advanced operations like setting a native surface as image 6398 * and even advanced operations like setting a native surface as image
6293 * objecs' data. 6399 * objects' data.
6294 * 6400 *
6295 * @section Evas_Object_Image_Color_Spaces Color spaces 6401 * @section Evas_Object_Image_Color_Spaces Color spaces
6296 * 6402 *
@@ -6679,7 +6785,7 @@ EAPI double evas_object_image_border_scale_get (const Ev
6679 * 6785 *
6680 * See the following image to better understand the effects of this 6786 * See the following image to better understand the effects of this
6681 * call. On this diagram, both image object and original image source 6787 * call. On this diagram, both image object and original image source
6682 * have @c a x @c a dimentions and the image itself is a circle, with 6788 * have @c a x @c a dimensions and the image itself is a circle, with
6683 * empty space around it: 6789 * empty space around it:
6684 * 6790 *
6685 * @image html image-fill.png 6791 * @image html image-fill.png
@@ -6689,7 +6795,7 @@ EAPI double evas_object_image_border_scale_get (const Ev
6689 * @warning The default values for the fill parameters are @p x = 0, 6795 * @warning The default values for the fill parameters are @p x = 0,
6690 * @p y = 0, @p w = 0 and @p h = 0. Thus, if you're not using the 6796 * @p y = 0, @p w = 0 and @p h = 0. Thus, if you're not using the
6691 * evas_object_image_filled_add() helper and want your image 6797 * evas_object_image_filled_add() helper and want your image
6692 * displayed, you'll have to set valid values with this fuction on 6798 * displayed, you'll have to set valid values with this function on
6693 * your object. 6799 * your object.
6694 * 6800 *
6695 * @note evas_object_image_filled_set() is a helper function which 6801 * @note evas_object_image_filled_set() is a helper function which
@@ -6823,7 +6929,7 @@ EAPI void evas_object_image_data_set (Evas_Obj
6823 * This is best suited for when you want to modify an existing image, 6929 * This is best suited for when you want to modify an existing image,
6824 * without changing its dimensions. 6930 * without changing its dimensions.
6825 * 6931 *
6826 * @note The contents' formart returned by it depend on the color 6932 * @note The contents' format returned by it depend on the color
6827 * space of the given image object. 6933 * space of the given image object.
6828 * 6934 *
6829 * @note You may want to use evas_object_image_data_update_add() to 6935 * @note You may want to use evas_object_image_data_update_add() to
@@ -7022,7 +7128,7 @@ EAPI Eina_Bool evas_object_image_save (const Ev
7022EAPI Eina_Bool evas_object_image_pixels_import (Evas_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2); 7128EAPI Eina_Bool evas_object_image_pixels_import (Evas_Object *obj, Evas_Pixel_Import_Source *pixels) EINA_ARG_NONNULL(1, 2);
7023 7129
7024/** 7130/**
7025 * Set the callback function to get pixels from a canva's image. 7131 * Set the callback function to get pixels from a canvas' image.
7026 * 7132 *
7027 * @param obj The given canvas pointer. 7133 * @param obj The given canvas pointer.
7028 * @param func The callback function. 7134 * @param func The callback function.
@@ -7403,7 +7509,7 @@ EAPI Eina_Bool evas_object_image_extension_can_load_get(const char *file);
7403 * Check if a file extension may be supported by @ref Evas_Object_Image. 7509 * Check if a file extension may be supported by @ref Evas_Object_Image.
7404 * 7510 *
7405 * @param file The file to check, it should be an Eina_Stringshare. 7511 * @param file The file to check, it should be an Eina_Stringshare.
7406 * @return EINA_TRUE if we may be able to opeen it, EINA_FALSE if it's unlikely. 7512 * @return EINA_TRUE if we may be able to open it, EINA_FALSE if it's unlikely.
7407 * @since 1.1.0 7513 * @since 1.1.0
7408 * 7514 *
7409 * This functions is threadsafe. 7515 * This functions is threadsafe.
@@ -7607,7 +7713,7 @@ EAPI void evas_object_image_animated_frame_set(Evas_Object *obj, int frame_num);
7607/** 7713/**
7608 * Text style type creation macro. This one will impose shadow 7714 * Text style type creation macro. This one will impose shadow
7609 * directions on the style type variable -- use the @c 7715 * directions on the style type variable -- use the @c
7610 * EVAS_TEXT_STYLE_SHADOW_DIRECTION_* values on 's', incremmentally. 7716 * EVAS_TEXT_STYLE_SHADOW_DIRECTION_* values on 's', incrementally.
7611 */ 7717 */
7612#define EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(x, s) \ 7718#define EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(x, s) \
7613 do { x = ((x) & ~EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION) | (s); } while (0) 7719 do { x = ((x) & ~EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION) | (s); } while (0)
@@ -7686,7 +7792,7 @@ EAPI const char *evas_object_text_font_source_get (const Evas_Object *obj
7686 * 7792 *
7687 * This function allows the font name and size of a text object to be 7793 * This function allows the font name and size of a text object to be
7688 * set. The @p font string has to follow fontconfig's convention on 7794 * set. The @p font string has to follow fontconfig's convention on
7689 * naming fonts, as it's the underlying lybrary used to query system 7795 * naming fonts, as it's the underlying library used to query system
7690 * fonts by Evas (see the @c fc-list command's output, on your system, 7796 * fonts by Evas (see the @c fc-list command's output, on your system,
7691 * to get an idea). 7797 * to get an idea).
7692 * 7798 *
@@ -8286,6 +8392,40 @@ EAPI void evas_object_textblock_style_set(Evas_Object *o
8286EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); 8392EAPI const Evas_Textblock_Style *evas_object_textblock_style_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
8287 8393
8288/** 8394/**
8395 * Push ts to the top of the user style stack.
8396 *
8397 * FIXME: API is solid but currently only supports 1 style in the stack.
8398 *
8399 * The user style overrides the corresponding elements of the regular style.
8400 * This is the proper way to do theme overrides in code.
8401 * @param obj the Evas object to set the style to.
8402 * @param ts the style to set.
8403 * @return Returns no value.
8404 * @see evas_object_textblock_style_set
8405 * @since 1.2.0
8406 */
8407EAPI void evas_object_textblock_style_user_push(Evas_Object *obj, Evas_Textblock_Style *ts) EINA_ARG_NONNULL(1);
8408
8409/**
8410 * Del the from the top of the user style stack.
8411 *
8412 * @param obj the object to get the style from.
8413 * @see evas_object_textblock_style_get
8414 * @since 1.2.0
8415 */
8416EAPI void evas_object_textblock_style_user_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
8417
8418/**
8419 * Get (don't remove) the style at the top of the user style stack.
8420 *
8421 * @param obj the object to get the style from.
8422 * @return the style of the object.
8423 * @see evas_object_textblock_style_get
8424 * @since 1.2.0
8425 */
8426EAPI const Evas_Textblock_Style *evas_object_textblock_style_user_peek(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
8427
8428/**
8289 * @brief Set the "replacement character" to use for the given textblock object. 8429 * @brief Set the "replacement character" to use for the given textblock object.
8290 * 8430 *
8291 * @param obj The given textblock object. 8431 * @param obj The given textblock object.
@@ -8320,7 +8460,7 @@ EAPI void evas_object_textblock_valign_set(Evas_Object *
8320 * @brief Gets the vertical alignment of a textblock 8460 * @brief Gets the vertical alignment of a textblock
8321 * 8461 *
8322 * @param obj The given textblock object. 8462 * @param obj The given textblock object.
8323 * @return The elignment set for the object 8463 * @return The alignment set for the object
8324 * @since 1.1.0 8464 * @since 1.1.0
8325 */ 8465 */
8326EAPI double evas_object_textblock_valign_get(const Evas_Object *obj); 8466EAPI double evas_object_textblock_valign_get(const Evas_Object *obj);
@@ -8524,7 +8664,7 @@ EAPI void evas_textblock_node_format_remove_pair(Evas_Ob
8524 * @param n the format node to update according. 8664 * @param n the format node to update according.
8525 * @deprecated duplicate of evas_textblock_cursor_at_format_set 8665 * @deprecated duplicate of evas_textblock_cursor_at_format_set
8526 */ 8666 */
8527EINA_DEPRECATED EAPI void evas_textblock_cursor_set_at_format(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1, 2); 8667EAPI void evas_textblock_cursor_set_at_format(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *n) EINA_ARG_NONNULL(1, 2);
8528 8668
8529/** 8669/**
8530 * Return the format node at the position pointed by cur. 8670 * Return the format node at the position pointed by cur.
@@ -8847,7 +8987,7 @@ EAPI char *evas_textblock_cursor_content_get(const Evas_T
8847 * get, except for the case of the last char of a line which depends on the 8987 * get, except for the case of the last char of a line which depends on the
8848 * paragraph direction. 8988 * paragraph direction.
8849 * 8989 *
8850 * in '|' cursor mode (i.e a line between two chars) it is very varyable. 8990 * in '|' cursor mode (i.e a line between two chars) it is very variable.
8851 * For example consider the following visual string: 8991 * For example consider the following visual string:
8852 * "abcCBA" (ABC are rtl chars), a cursor pointing on A should actually draw 8992 * "abcCBA" (ABC are rtl chars), a cursor pointing on A should actually draw
8853 * a '|' between the c and the C. 8993 * a '|' between the c and the C.
@@ -9348,7 +9488,7 @@ struct _Evas_Smart_Cb_Description
9348 return; \ 9488 return; \
9349 if (!prefix##_parent_sc) \ 9489 if (!prefix##_parent_sc) \
9350 prefix##_parent_sc = parent_func(); \ 9490 prefix##_parent_sc = parent_func(); \
9351 evas_smart_class_inherit(sc, (const Evas_Smart_Class *)prefix##_parent_sc); \ 9491 evas_smart_class_inherit(sc, prefix##_parent_sc); \
9352 prefix##_smart_set_user(api); \ 9492 prefix##_smart_set_user(api); \
9353 } \ 9493 } \
9354 static Evas_Smart * prefix##_smart_class_new(void) \ 9494 static Evas_Smart * prefix##_smart_class_new(void) \
@@ -9557,7 +9697,7 @@ EAPI int evas_smart_usage_get(const Evas_Smart *s);
9557 * @return 1 on success, 0 on failure. 9697 * @return 1 on success, 0 on failure.
9558 * @ingroup Evas_Smart_Group 9698 * @ingroup Evas_Smart_Group
9559 */ 9699 */
9560#define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_full(sc, parent_sc, sizeof(*parent_sc)) 9700#define evas_smart_class_inherit(sc, parent_sc) evas_smart_class_inherit_full(sc, (Evas_Smart_Class *)parent_sc, sizeof(*parent_sc))
9561 9701
9562/** 9702/**
9563 * @} 9703 * @}
@@ -9576,13 +9716,13 @@ EAPI int evas_smart_usage_get(const Evas_Smart *s);
9576 * used on the icon object. 9716 * used on the icon object.
9577 * 9717 *
9578 * Besides that, generally smart objects implement a <b>specific 9718 * Besides that, generally smart objects implement a <b>specific
9579 * API</b>, so that users interect with its own custom features. The 9719 * API</b>, so that users interact with its own custom features. The
9580 * API takes form of explicit exported functions one may call and 9720 * API takes form of explicit exported functions one may call and
9581 * <b>smart callbacks</b>. 9721 * <b>smart callbacks</b>.
9582 * 9722 *
9583 * @section Evas_Smart_Object_Group_Callbacks Smart events and callbacks 9723 * @section Evas_Smart_Object_Group_Callbacks Smart events and callbacks
9584 * 9724 *
9585 * Smart objects can elect events (smart events, from now on) ocurring 9725 * Smart objects can elect events (smart events, from now on) occurring
9586 * inside of them to be reported back to their users via callback 9726 * inside of them to be reported back to their users via callback
9587 * functions (smart callbacks). This way, you can extend Evas' own 9727 * functions (smart callbacks). This way, you can extend Evas' own
9588 * object events. They are defined by an <b>event string</b>, which 9728 * object events. They are defined by an <b>event string</b>, which
@@ -9590,7 +9730,7 @@ EAPI int evas_smart_usage_get(const Evas_Smart *s);
9590 * definition for the callback functions: #Evas_Smart_Cb. 9730 * definition for the callback functions: #Evas_Smart_Cb.
9591 * 9731 *
9592 * When defining an #Evas_Smart_Class, smart object implementors are 9732 * When defining an #Evas_Smart_Class, smart object implementors are
9593 * strongly encorauged to properly set the Evas_Smart_Class::callbacks 9733 * strongly encouraged to properly set the Evas_Smart_Class::callbacks
9594 * callbacks description array, so that the users of the smart object 9734 * callbacks description array, so that the users of the smart object
9595 * can have introspection on its events API <b>at run time</b>. 9735 * can have introspection on its events API <b>at run time</b>.
9596 * 9736 *
@@ -9890,7 +10030,7 @@ EAPI void *evas_object_smart_callback_del_full(Evas_Object *obj, con
9890 * object should include a list of possible events and what type of @p 10030 * object should include a list of possible events and what type of @p
9891 * event_info to expect for each of them. Also, when defining an 10031 * event_info to expect for each of them. Also, when defining an
9892 * #Evas_Smart_Class, smart object implementors are strongly 10032 * #Evas_Smart_Class, smart object implementors are strongly
9893 * encorauged to properly set the Evas_Smart_Class::callbacks 10033 * encouraged to properly set the Evas_Smart_Class::callbacks
9894 * callbacks description array, so that the users of the smart object 10034 * callbacks description array, so that the users of the smart object
9895 * can have introspection on its events API <b>at run time</b>. 10035 * can have introspection on its events API <b>at run time</b>.
9896 * 10036 *
@@ -9949,7 +10089,7 @@ EAPI Eina_Bool evas_object_smart_callbacks_descriptions_set(Evas_Object
9949 * @param instance_count Returns how many instance callbacks 10089 * @param instance_count Returns how many instance callbacks
9950 * descriptions are known. 10090 * descriptions are known.
9951 * 10091 *
9952 * This call searchs for registered callback descriptions for both 10092 * This call searches for registered callback descriptions for both
9953 * instance and class of the given smart object. These arrays will be 10093 * instance and class of the given smart object. These arrays will be
9954 * sorted by Evas_Smart_Cb_Description::name and also @c NULL 10094 * sorted by Evas_Smart_Cb_Description::name and also @c NULL
9955 * terminated, so both @a class_count and @a instance_count can be 10095 * terminated, so both @a class_count and @a instance_count can be
@@ -10052,7 +10192,7 @@ EAPI void evas_object_smart_need_recalculate_set(Evas_Object *obj,
10052EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1); 10192EAPI Eina_Bool evas_object_smart_need_recalculate_get(const Evas_Object *obj) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
10053 10193
10054/** 10194/**
10055 * Call the @b calculate() smart function immediataly on a given smart 10195 * Call the @b calculate() smart function immediately on a given smart
10056 * object. 10196 * object.
10057 * 10197 *
10058 * @param obj the smart object's handle 10198 * @param obj the smart object's handle
@@ -10091,7 +10231,7 @@ EAPI void evas_smart_objects_calculate (Evas *e);
10091 * that this function returns the value of. It starts at the value of 0 and 10231 * that this function returns the value of. It starts at the value of 0 and
10092 * will increase (and eventually wrap around to negative values and so on) by 10232 * will increase (and eventually wrap around to negative values and so on) by
10093 * 1 every time objects are calculated. You can use this counter to ensure 10233 * 1 every time objects are calculated. You can use this counter to ensure
10094 * you dont re-do calculations withint the same calculation generation/run 10234 * you don't re-do calculations withint the same calculation generation/run
10095 * if the calculations maybe cause self-feeding effects. 10235 * if the calculations maybe cause self-feeding effects.
10096 * 10236 *
10097 * @ingroup Evas_Smart_Object_Group 10237 * @ingroup Evas_Smart_Object_Group
@@ -10348,7 +10488,7 @@ EAPI const Evas_Smart_Class *evas_object_smart_clipped_class_get (void) EINA
10348 Evas_Object_Box_Option *(*prepend) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child); /**< Smart function to prepend child elements in boxes */ 10488 Evas_Object_Box_Option *(*prepend) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child); /**< Smart function to prepend child elements in boxes */
10349 Evas_Object_Box_Option *(*insert_before) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element before another in boxes */ 10489 Evas_Object_Box_Option *(*insert_before) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element before another in boxes */
10350 Evas_Object_Box_Option *(*insert_after) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element after another in boxes */ 10490 Evas_Object_Box_Option *(*insert_after) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, const Evas_Object *reference); /**< Smart function to insert a child element after another in boxes */
10351 Evas_Object_Box_Option *(*insert_at) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos); /**< Smart function to insert a child element at a given positon on boxes */ 10491 Evas_Object_Box_Option *(*insert_at) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child, unsigned int pos); /**< Smart function to insert a child element at a given position on boxes */
10352 Evas_Object *(*remove) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child); /**< Smart function to remove a child element from boxes */ 10492 Evas_Object *(*remove) (Evas_Object *o, Evas_Object_Box_Data *priv, Evas_Object *child); /**< Smart function to remove a child element from boxes */
10353 Evas_Object *(*remove_at) (Evas_Object *o, Evas_Object_Box_Data *priv, unsigned int pos); /**< Smart function to remove a child element from boxes, by its position */ 10493 Evas_Object *(*remove_at) (Evas_Object *o, Evas_Object_Box_Data *priv, unsigned int pos); /**< Smart function to remove a child element from boxes, by its position */
10354 Eina_Bool (*property_set) (Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args); /**< Smart function to set a custom property on a box child */ 10494 Eina_Bool (*property_set) (Evas_Object *o, Evas_Object_Box_Option *opt, int property, va_list args); /**< Smart function to set a custom property on a box child */
@@ -10472,7 +10612,7 @@ EAPI const Evas_Smart_Class *evas_object_smart_clipped_class_get (void) EINA
10472 * with the default values. May be used to extend that API. 10612 * with the default values. May be used to extend that API.
10473 * 10613 *
10474 * @param api The box API struct to set back, most probably with 10614 * @param api The box API struct to set back, most probably with
10475 * overriden fields (on class extensions scenarios) 10615 * overridden fields (on class extensions scenarios)
10476 */ 10616 */
10477EAPI void evas_object_box_smart_set (Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1); 10617EAPI void evas_object_box_smart_set (Evas_Object_Box_Api *api) EINA_ARG_NONNULL(1);
10478 10618
@@ -10697,7 +10837,7 @@ EAPI void evas_object_box_layout_homogeneous_horizontal
10697 * of this overall child width in its allocated cell (@c 0.0 to 10837 * of this overall child width in its allocated cell (@c 0.0 to
10698 * extreme left, @c 1.0 to extreme right). A value of @c -1.0 to 10838 * extreme left, @c 1.0 to extreme right). A value of @c -1.0 to
10699 * @c align_x makes the box try to resize this child element to the exact 10839 * @c align_x makes the box try to resize this child element to the exact
10700 * width of its cell (respecting the minimun and maximum size hints on 10840 * width of its cell (respecting the minimum and maximum size hints on
10701 * the child's width and accounting for its horizontal padding 10841 * the child's width and accounting for its horizontal padding
10702 * hints). The child's @c padding_t, @c padding_b and @c align_y 10842 * hints). The child's @c padding_t, @c padding_b and @c align_y
10703 * properties apply for padding/alignment relative to the overall 10843 * properties apply for padding/alignment relative to the overall
@@ -10978,7 +11118,7 @@ EAPI Evas_Object_Box_Option *evas_object_box_insert_at
10978 * On removal, you'll get an unparented object again, just as it was 11118 * On removal, you'll get an unparented object again, just as it was
10979 * before you inserted it in the box. The 11119 * before you inserted it in the box. The
10980 * _Evas_Object_Box_Api::option_free box smart callback will be called 11120 * _Evas_Object_Box_Api::option_free box smart callback will be called
10981 * automatilly for you and, also, the @c "child,removed" smart event 11121 * automatically for you and, also, the @c "child,removed" smart event
10982 * will take place. 11122 * will take place.
10983 * 11123 *
10984 * @note This call will trigger the box's _Evas_Object_Box_Api::remove 11124 * @note This call will trigger the box's _Evas_Object_Box_Api::remove
@@ -10997,7 +11137,7 @@ EAPI Eina_Bool evas_object_box_remove
10997 * 11137 *
10998 * On removal, you'll get an unparented object again, just as it was 11138 * On removal, you'll get an unparented object again, just as it was
10999 * before you inserted it in the box. The @c option_free() box smart 11139 * before you inserted it in the box. The @c option_free() box smart
11000 * callback will be called automatilly for you and, also, the 11140 * callback will be called automatically for you and, also, the
11001 * @c "child,removed" smart event will take place. 11141 * @c "child,removed" smart event will take place.
11002 * 11142 *
11003 * @note This function will fail if the given position is invalid, 11143 * @note This function will fail if the given position is invalid,
@@ -11589,8 +11729,8 @@ EAPI Eina_List *evas_object_grid_children_get (const
11589 { 11729 {
11590 int saved_memory; /**< current amount of saved memory, in bytes */ 11730 int saved_memory; /**< current amount of saved memory, in bytes */
11591 int wasted_memory; /**< current amount of wasted memory, in bytes */ 11731 int wasted_memory; /**< current amount of wasted memory, in bytes */
11592 int saved_memory_peak; /**< peak ammount of saved memory, in bytes */ 11732 int saved_memory_peak; /**< peak amount of saved memory, in bytes */
11593 int wasted_memory_peak; /**< peak ammount of wasted memory, in bytes */ 11733 int wasted_memory_peak; /**< peak amount of wasted memory, in bytes */
11594 double saved_time_image_header_load; /**< time, in seconds, saved in header loads by sharing cached loads instead */ 11734 double saved_time_image_header_load; /**< time, in seconds, saved in header loads by sharing cached loads instead */
11595 double saved_time_image_data_load; /**< time, in seconds, saved in data loads by sharing cached loads instead */ 11735 double saved_time_image_data_load; /**< time, in seconds, saved in data loads by sharing cached loads instead */
11596 }; 11736 };
@@ -11803,7 +11943,7 @@ EAPI void evas_color_rgb_to_hsv (int r, int g, int b, f
11803 * @param g The Green component of the color. 11943 * @param g The Green component of the color.
11804 * @param b The Blue component of the color. 11944 * @param b The Blue component of the color.
11805 * 11945 *
11806 * This function pre-multiplies a given rbg triplet by an alpha 11946 * This function pre-multiplies a given rgb triplet by an alpha
11807 * factor. Alpha factor is used to define transparency. 11947 * factor. Alpha factor is used to define transparency.
11808 * 11948 *
11809 * @ingroup Evas_Utils 11949 * @ingroup Evas_Utils
@@ -12233,7 +12373,7 @@ EAPI Evas_Modifier_Mask evas_key_modifier_mask_get (const Evas *e, const c
12233 * modifiers that must and mustn't, respectively, be pressed along 12373 * modifiers that must and mustn't, respectively, be pressed along
12234 * with @p keyname key in order to trigger this new key 12374 * with @p keyname key in order to trigger this new key
12235 * grab. Modifiers can be things such as Shift and Ctrl as well as 12375 * grab. Modifiers can be things such as Shift and Ctrl as well as
12236 * user defigned types via evas_key_modifier_add(). Retrieve them with 12376 * user defined types via evas_key_modifier_add(). Retrieve them with
12237 * evas_key_modifier_mask_get() or use @c 0 for empty masks. 12377 * evas_key_modifier_mask_get() or use @c 0 for empty masks.
12238 * 12378 *
12239 * @p exclusive will make the given object the only one permitted to 12379 * @p exclusive will make the given object the only one permitted to
diff --git a/libraries/evas/src/lib/Evas_GL.h b/libraries/evas/src/lib/Evas_GL.h
index fdfbaad..76937eb 100644
--- a/libraries/evas/src/lib/Evas_GL.h
+++ b/libraries/evas/src/lib/Evas_GL.h
@@ -404,7 +404,7 @@ EAPI void evas_gl_free (Evas_GL *evas_gl) EINA
404 * As long as the Evas creates a config object for the user, it takes care 404 * As long as the Evas creates a config object for the user, it takes care
405 * of the backward compatibility issue. 405 * of the backward compatibility issue.
406 */ 406 */
407EAPI Evas_GL_Config *evas_gl_config_new (); 407EAPI Evas_GL_Config *evas_gl_config_new (void);
408 408
409/** 409/**
410 * Frees a config object created from evas_gl_config_new. 410 * Frees a config object created from evas_gl_config_new.
diff --git a/libraries/evas/src/lib/Makefile.am b/libraries/evas/src/lib/Makefile.am
index 2a1a92d..1240b2b 100644
--- a/libraries/evas/src/lib/Makefile.am
+++ b/libraries/evas/src/lib/Makefile.am
@@ -76,13 +76,11 @@ SUBDIRS += ../modules/engines/software_8_x11/
76EVAS_STATIC_MODULE += ../modules/engines/software_8_x11/libevas_engine_software_8_x11.la 76EVAS_STATIC_MODULE += ../modules/engines/software_8_x11/libevas_engine_software_8_x11.la
77EVAS_STATIC_LIBADD += @evas_engine_software_8_x11_libs@ 77EVAS_STATIC_LIBADD += @evas_engine_software_8_x11_libs@
78endif 78endif
79if EVAS_STATIC_BUILD_SOFTWARE_SDL 79if EVAS_STATIC_BUILD_SOFTWARE_16_SDL
80SUBDIRS += \ 80SUBDIRS += \
81 ../modules/engines/software_16_sdl/ \ 81 ../modules/engines/software_16_sdl/
82 ../modules/engines/software_sdl/
83EVAS_STATIC_MODULE += \ 82EVAS_STATIC_MODULE += \
84 ../modules/engines/software_16_sdl/libevas_engine_software_16_sdl.la \ 83 ../modules/engines/software_16_sdl/libevas_engine_software_16_sdl.la
85 ../modules/engines/software_sdl/libevas_engine_software_sdl.la
86EVAS_STATIC_LIBADD += @SDL_LIBS@ 84EVAS_STATIC_LIBADD += @SDL_LIBS@
87endif 85endif
88if EVAS_STATIC_BUILD_SOFTWARE_DDRAW 86if EVAS_STATIC_BUILD_SOFTWARE_DDRAW
@@ -201,8 +199,6 @@ AM_CPPFLAGS = \
201@pthread_cflags@ \ 199@pthread_cflags@ \
202@PIXMAN_CFLAGS@ 200@PIXMAN_CFLAGS@
203 201
204AM_CFLAGS = @WIN32_CFLAGS@
205
206lib_LTLIBRARIES = libevas.la 202lib_LTLIBRARIES = libevas.la
207 203
208includes_HEADERS = Evas.h Evas_GL.h 204includes_HEADERS = Evas.h Evas_GL.h
diff --git a/libraries/evas/src/lib/Makefile.in b/libraries/evas/src/lib/Makefile.in
index ffe71d1..cb04330 100644
--- a/libraries/evas/src/lib/Makefile.in
+++ b/libraries/evas/src/lib/Makefile.in
@@ -83,15 +83,13 @@ host_triplet = @host@
83@EVAS_STATIC_BUILD_SOFTWARE_8_X11_TRUE@am__append_36 = ../modules/engines/software_8_x11/ 83@EVAS_STATIC_BUILD_SOFTWARE_8_X11_TRUE@am__append_36 = ../modules/engines/software_8_x11/
84@EVAS_STATIC_BUILD_SOFTWARE_8_X11_TRUE@am__append_37 = ../modules/engines/software_8_x11/libevas_engine_software_8_x11.la 84@EVAS_STATIC_BUILD_SOFTWARE_8_X11_TRUE@am__append_37 = ../modules/engines/software_8_x11/libevas_engine_software_8_x11.la
85@EVAS_STATIC_BUILD_SOFTWARE_8_X11_TRUE@am__append_38 = @evas_engine_software_8_x11_libs@ 85@EVAS_STATIC_BUILD_SOFTWARE_8_X11_TRUE@am__append_38 = @evas_engine_software_8_x11_libs@
86@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@am__append_39 = \ 86@EVAS_STATIC_BUILD_SOFTWARE_16_SDL_TRUE@am__append_39 = \
87@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@ ../modules/engines/software_16_sdl/ \ 87@EVAS_STATIC_BUILD_SOFTWARE_16_SDL_TRUE@ ../modules/engines/software_16_sdl/
88@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@ ../modules/engines/software_sdl/
89 88
90@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@am__append_40 = \ 89@EVAS_STATIC_BUILD_SOFTWARE_16_SDL_TRUE@am__append_40 = \
91@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@ ../modules/engines/software_16_sdl/libevas_engine_software_16_sdl.la \ 90@EVAS_STATIC_BUILD_SOFTWARE_16_SDL_TRUE@ ../modules/engines/software_16_sdl/libevas_engine_software_16_sdl.la
92@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@ ../modules/engines/software_sdl/libevas_engine_software_sdl.la
93 91
94@EVAS_STATIC_BUILD_SOFTWARE_SDL_TRUE@am__append_41 = @SDL_LIBS@ 92@EVAS_STATIC_BUILD_SOFTWARE_16_SDL_TRUE@am__append_41 = @SDL_LIBS@
95@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE@am__append_42 = ../modules/engines/software_ddraw/ 93@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE@am__append_42 = ../modules/engines/software_ddraw/
96@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE@am__append_43 = ../modules/engines/software_ddraw/libevas_engine_software_ddraw.la 94@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE@am__append_43 = ../modules/engines/software_ddraw/libevas_engine_software_ddraw.la
97@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE@am__append_44 = @evas_engine_software_ddraw_libs@ 95@EVAS_STATIC_BUILD_SOFTWARE_DDRAW_TRUE@am__append_44 = @evas_engine_software_ddraw_libs@
@@ -346,6 +344,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
346EVIL_CFLAGS = @EVIL_CFLAGS@ 344EVIL_CFLAGS = @EVIL_CFLAGS@
347EVIL_LIBS = @EVIL_LIBS@ 345EVIL_LIBS = @EVIL_LIBS@
348EXEEXT = @EXEEXT@ 346EXEEXT = @EXEEXT@
347EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
348EXOTIC_LIBS = @EXOTIC_LIBS@
349FGREP = @FGREP@ 349FGREP = @FGREP@
350FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 350FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
351FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 351FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -396,6 +396,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
396PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 396PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
397PIXMAN_LIBS = @PIXMAN_LIBS@ 397PIXMAN_LIBS = @PIXMAN_LIBS@
398PKG_CONFIG = @PKG_CONFIG@ 398PKG_CONFIG = @PKG_CONFIG@
399PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
400PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
399PNG_CFLAGS = @PNG_CFLAGS@ 401PNG_CFLAGS = @PNG_CFLAGS@
400PNG_LIBS = @PNG_LIBS@ 402PNG_LIBS = @PNG_LIBS@
401RANLIB = @RANLIB@ 403RANLIB = @RANLIB@
@@ -414,8 +416,6 @@ VERSION = @VERSION@
414VMAJ = @VMAJ@ 416VMAJ = @VMAJ@
415WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 417WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
416WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 418WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
417WIN32_CFLAGS = @WIN32_CFLAGS@
418WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
419XCB_CFLAGS = @XCB_CFLAGS@ 419XCB_CFLAGS = @XCB_CFLAGS@
420XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 420XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
421XCB_GL_LIBS = @XCB_GL_LIBS@ 421XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -489,8 +489,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
489evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 489evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
490evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 490evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
491evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 491evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
492evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
493evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
494evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 492evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
495evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 493evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
496evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 494evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
@@ -625,7 +623,6 @@ AM_CPPFLAGS = \
625@pthread_cflags@ \ 623@pthread_cflags@ \
626@PIXMAN_CFLAGS@ 624@PIXMAN_CFLAGS@
627 625
628AM_CFLAGS = @WIN32_CFLAGS@
629lib_LTLIBRARIES = libevas.la 626lib_LTLIBRARIES = libevas.la
630includes_HEADERS = Evas.h Evas_GL.h 627includes_HEADERS = Evas.h Evas_GL.h
631includesdir = $(includedir)/evas-@VMAJ@ 628includesdir = $(includedir)/evas-@VMAJ@
diff --git a/libraries/evas/src/lib/cache/Makefile.am b/libraries/evas/src/lib/cache/Makefile.am
index d417262..78d58d2 100644
--- a/libraries/evas/src/lib/cache/Makefile.am
+++ b/libraries/evas/src/lib/cache/Makefile.am
@@ -7,7 +7,6 @@ AM_CPPFLAGS = -I. \
7 -DPACKAGE_BIN_DIR=\"$(bindir)\" \ 7 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
8 -DPACKAGE_LIB_DIR=\"$(libdir)\" \ 8 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
9 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ 9 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
10 @WIN32_CPPFLAGS@ \
11 @EVIL_CFLAGS@ \ 10 @EVIL_CFLAGS@ \
12 @FREETYPE_CFLAGS@ \ 11 @FREETYPE_CFLAGS@ \
13 @PIXMAN_CFLAGS@ \ 12 @PIXMAN_CFLAGS@ \
diff --git a/libraries/evas/src/lib/cache/Makefile.in b/libraries/evas/src/lib/cache/Makefile.in
index 2b50c81..fce77cc 100644
--- a/libraries/evas/src/lib/cache/Makefile.in
+++ b/libraries/evas/src/lib/cache/Makefile.in
@@ -147,6 +147,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
147EVIL_CFLAGS = @EVIL_CFLAGS@ 147EVIL_CFLAGS = @EVIL_CFLAGS@
148EVIL_LIBS = @EVIL_LIBS@ 148EVIL_LIBS = @EVIL_LIBS@
149EXEEXT = @EXEEXT@ 149EXEEXT = @EXEEXT@
150EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
151EXOTIC_LIBS = @EXOTIC_LIBS@
150FGREP = @FGREP@ 152FGREP = @FGREP@
151FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 153FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
152FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 154FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -197,6 +199,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
197PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 199PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
198PIXMAN_LIBS = @PIXMAN_LIBS@ 200PIXMAN_LIBS = @PIXMAN_LIBS@
199PKG_CONFIG = @PKG_CONFIG@ 201PKG_CONFIG = @PKG_CONFIG@
202PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
203PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
200PNG_CFLAGS = @PNG_CFLAGS@ 204PNG_CFLAGS = @PNG_CFLAGS@
201PNG_LIBS = @PNG_LIBS@ 205PNG_LIBS = @PNG_LIBS@
202RANLIB = @RANLIB@ 206RANLIB = @RANLIB@
@@ -215,8 +219,6 @@ VERSION = @VERSION@
215VMAJ = @VMAJ@ 219VMAJ = @VMAJ@
216WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 220WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
217WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 221WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
218WIN32_CFLAGS = @WIN32_CFLAGS@
219WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
220XCB_CFLAGS = @XCB_CFLAGS@ 222XCB_CFLAGS = @XCB_CFLAGS@
221XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 223XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
222XCB_GL_LIBS = @XCB_GL_LIBS@ 224XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -290,8 +292,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
290evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 292evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
291evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 293evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
292evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 294evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
293evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
294evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
295evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 295evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
296evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 296evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
297evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 297evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
@@ -381,7 +381,6 @@ AM_CPPFLAGS = -I. \
381 -DPACKAGE_BIN_DIR=\"$(bindir)\" \ 381 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
382 -DPACKAGE_LIB_DIR=\"$(libdir)\" \ 382 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
383 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ 383 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
384 @WIN32_CPPFLAGS@ \
385 @EVIL_CFLAGS@ \ 384 @EVIL_CFLAGS@ \
386 @FREETYPE_CFLAGS@ \ 385 @FREETYPE_CFLAGS@ \
387 @PIXMAN_CFLAGS@ \ 386 @PIXMAN_CFLAGS@ \
diff --git a/libraries/evas/src/lib/cache/evas_cache_image.c b/libraries/evas/src/lib/cache/evas_cache_image.c
index 73e4f8a..d5b72c5 100644
--- a/libraries/evas/src/lib/cache/evas_cache_image.c
+++ b/libraries/evas/src/lib/cache/evas_cache_image.c
@@ -42,10 +42,10 @@ static void _evas_cache_image_entry_preload_remove(Image_Entry *ie, const void *
42 42
43#define FREESTRC(Var) \ 43#define FREESTRC(Var) \
44 if (Var) \ 44 if (Var) \
45 { \ 45{ \
46 eina_stringshare_del(Var); \ 46 eina_stringshare_del(Var); \
47 Var = NULL; \ 47 Var = NULL; \
48 } 48}
49 49
50static void _evas_cache_image_dirty_add(Image_Entry *im); 50static void _evas_cache_image_dirty_add(Image_Entry *im);
51static void _evas_cache_image_dirty_del(Image_Entry *im); 51static void _evas_cache_image_dirty_del(Image_Entry *im);
@@ -210,9 +210,9 @@ _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie)
210 if (ie->flags.delete_me == 1) return; 210 if (ie->flags.delete_me == 1) return;
211 if (ie->preload) 211 if (ie->preload)
212 { 212 {
213 ie->flags.delete_me = 1; 213 ie->flags.delete_me = 1;
214 _evas_cache_image_entry_preload_remove(ie, NULL); 214 _evas_cache_image_entry_preload_remove(ie, NULL);
215 return; 215 return;
216 } 216 }
217#endif 217#endif
218 218
@@ -247,10 +247,10 @@ _timestamp_compare(Image_Timestamp *tstamp, struct stat *st)
247#ifdef _STAT_VER_LINUX 247#ifdef _STAT_VER_LINUX
248#if (defined __USE_MISC && defined st_mtime) 248#if (defined __USE_MISC && defined st_mtime)
249 if (tstamp->mtime_nsec != (unsigned long int)st->st_mtim.tv_nsec) 249 if (tstamp->mtime_nsec != (unsigned long int)st->st_mtim.tv_nsec)
250 return EINA_FALSE; 250 return EINA_FALSE;
251#else 251#else
252 if (tstamp->mtime_nsec != (unsigned long int)st->st_mtimensec) 252 if (tstamp->mtime_nsec != (unsigned long int)st->st_mtimensec)
253 return EINA_FALSE; 253 return EINA_FALSE;
254#endif 254#endif
255#endif 255#endif
256 return EINA_TRUE; 256 return EINA_TRUE;
@@ -285,8 +285,8 @@ _evas_cache_image_entry_new(Evas_Cache_Image *cache,
285 ie = cache->func.alloc(); 285 ie = cache->func.alloc();
286 if (!ie) 286 if (!ie)
287 { 287 {
288 *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; 288 *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
289 return NULL; 289 return NULL;
290 } 290 }
291 ie->cache = cache; 291 ie->cache = cache;
292 if (hkey) ie->cache_key = eina_stringshare_add(hkey); 292 if (hkey) ie->cache_key = eina_stringshare_add(hkey);
@@ -307,7 +307,7 @@ _evas_cache_image_entry_new(Evas_Cache_Image *cache,
307 LKI(ie->lock); 307 LKI(ie->lock);
308 LKI(ie->lock_cancel); 308 LKI(ie->lock_cancel);
309#endif 309#endif
310 310
311 if (lo) ie->load_opts = *lo; 311 if (lo) ie->load_opts = *lo;
312 if (ie->file) 312 if (ie->file)
313 { 313 {
@@ -326,8 +326,8 @@ _evas_cache_image_entry_new(Evas_Cache_Image *cache,
326 326
327static void 327static void
328_evas_cache_image_entry_surface_alloc__locked(Evas_Cache_Image *cache, 328_evas_cache_image_entry_surface_alloc__locked(Evas_Cache_Image *cache,
329 Image_Entry *ie, 329 Image_Entry *ie,
330 unsigned int wmin, 330 unsigned int wmin,
331 unsigned int hmin) 331 unsigned int hmin)
332{ 332{
333 if ((ie->allocated.w == wmin) && (ie->allocated.h == hmin)) return; 333 if ((ie->allocated.w == wmin) && (ie->allocated.h == hmin)) return;
@@ -376,16 +376,16 @@ _evas_cache_image_async_heavy(void *data)
376 if ((!current->flags.loaded) && 376 if ((!current->flags.loaded) &&
377 ((Evas_Image_Load_Func*) current->info.module)->threadable) 377 ((Evas_Image_Load_Func*) current->info.module)->threadable)
378 { 378 {
379 error = cache->func.load(current); 379 error = cache->func.load(current);
380 if (cache->func.debug) cache->func.debug("load", current); 380 if (cache->func.debug) cache->func.debug("load", current);
381 current->load_error = error; 381 current->load_error = error;
382 if (error != EVAS_LOAD_ERROR_NONE) 382 if (error != EVAS_LOAD_ERROR_NONE)
383 { 383 {
384 current->flags.loaded = 0; 384 current->flags.loaded = 0;
385 _evas_cache_image_entry_surface_alloc(cache, current, 385 _evas_cache_image_entry_surface_alloc(cache, current,
386 current->w, current->h); 386 current->w, current->h);
387 } 387 }
388 else 388 else
389 { 389 {
390 current->flags.loaded = 1; 390 current->flags.loaded = 1;
391 } 391 }
@@ -416,11 +416,11 @@ _evas_cache_image_async_end(void *data)
416 ie->flags.preload_done = ie->flags.loaded; 416 ie->flags.preload_done = ie->flags.loaded;
417 while ((tmp = ie->targets)) 417 while ((tmp = ie->targets))
418 { 418 {
419 evas_object_inform_call_image_preloaded((Evas_Object*) tmp->target); 419 evas_object_inform_call_image_preloaded((Evas_Object*) tmp->target);
420 ie->targets = (Evas_Cache_Target *) 420 ie->targets = (Evas_Cache_Target *)
421 eina_inlist_remove(EINA_INLIST_GET(ie->targets), 421 eina_inlist_remove(EINA_INLIST_GET(ie->targets),
422 EINA_INLIST_GET(ie->targets)); 422 EINA_INLIST_GET(ie->targets));
423 free(tmp); 423 free(tmp);
424 } 424 }
425} 425}
426 426
@@ -429,14 +429,14 @@ _evas_cache_image_async_cancel(void *data)
429{ 429{
430 Evas_Cache_Image *cache = NULL; 430 Evas_Cache_Image *cache = NULL;
431 Image_Entry *ie = (Image_Entry *)data; 431 Image_Entry *ie = (Image_Entry *)data;
432 432
433 ie->preload = NULL; 433 ie->preload = NULL;
434 ie->cache->pending = eina_list_remove(ie->cache->pending, ie); 434 ie->cache->pending = eina_list_remove(ie->cache->pending, ie);
435 if ((ie->flags.delete_me) || (ie->flags.dirty)) 435 if ((ie->flags.delete_me) || (ie->flags.dirty))
436 { 436 {
437 ie->flags.delete_me = 0; 437 ie->flags.delete_me = 0;
438 _evas_cache_image_entry_delete(ie->cache, ie); 438 _evas_cache_image_entry_delete(ie->cache, ie);
439 return; 439 return;
440 } 440 }
441 if (ie->flags.loaded) _evas_cache_image_async_end(ie); 441 if (ie->flags.loaded) _evas_cache_image_async_end(ie);
442#ifdef EVAS_FRAME_QUEUING 442#ifdef EVAS_FRAME_QUEUING
@@ -485,41 +485,41 @@ _evas_cache_image_entry_preload_remove(Image_Entry *ie, const void *target)
485{ 485{
486 if (target) 486 if (target)
487 { 487 {
488 Evas_Cache_Target *tg; 488 Evas_Cache_Target *tg;
489 489
490 EINA_INLIST_FOREACH(ie->targets, tg) 490 EINA_INLIST_FOREACH(ie->targets, tg)
491 { 491 {
492 if (tg->target == target) 492 if (tg->target == target)
493 { 493 {
494 // FIXME: No callback when we cancel only for one target ? 494 // FIXME: No callback when we cancel only for one target ?
495 ie->targets = (Evas_Cache_Target *) 495 ie->targets = (Evas_Cache_Target *)
496 eina_inlist_remove(EINA_INLIST_GET(ie->targets), 496 eina_inlist_remove(EINA_INLIST_GET(ie->targets),
497 EINA_INLIST_GET(tg)); 497 EINA_INLIST_GET(tg));
498 free(tg); 498 free(tg);
499 break; 499 break;
500 } 500 }
501 } 501 }
502 } 502 }
503 else 503 else
504 { 504 {
505 Evas_Cache_Target *tg; 505 Evas_Cache_Target *tg;
506 506
507 while (ie->targets) 507 while (ie->targets)
508 { 508 {
509 tg = ie->targets; 509 tg = ie->targets;
510 ie->targets = (Evas_Cache_Target *) 510 ie->targets = (Evas_Cache_Target *)
511 eina_inlist_remove(EINA_INLIST_GET(ie->targets), 511 eina_inlist_remove(EINA_INLIST_GET(ie->targets),
512 EINA_INLIST_GET(tg)); 512 EINA_INLIST_GET(tg));
513 free(tg); 513 free(tg);
514 } 514 }
515 } 515 }
516 516
517 if ((!ie->targets) && (ie->preload) && (!ie->flags.pending)) 517 if ((!ie->targets) && (ie->preload) && (!ie->flags.pending))
518 { 518 {
519 ie->cache->preload = eina_list_remove(ie->cache->preload, ie); 519 ie->cache->preload = eina_list_remove(ie->cache->preload, ie);
520 ie->cache->pending = eina_list_append(ie->cache->pending, ie); 520 ie->cache->pending = eina_list_append(ie->cache->pending, ie);
521 ie->flags.pending = 1; 521 ie->flags.pending = 1;
522 evas_preload_thread_cancel(ie->preload); 522 evas_preload_thread_cancel(ie->preload);
523 } 523 }
524} 524}
525#endif 525#endif
@@ -566,7 +566,7 @@ evas_cache_image_init(const Evas_Cache_Image_Func *cb)
566 { 566 {
567 LKI(engine_lock); 567 LKI(engine_lock);
568 LKI(wakeup); 568 LKI(wakeup);
569 eina_condition_new(&cond_wakeup, &wakeup); 569 eina_condition_new(&cond_wakeup, &wakeup);
570 } 570 }
571#endif 571#endif
572 572
@@ -616,9 +616,9 @@ evas_cache_image_shutdown(Evas_Cache_Image *cache)
616#ifdef BUILD_ASYNC_PRELOAD 616#ifdef BUILD_ASYNC_PRELOAD
617 EINA_LIST_FREE(cache->preload, im) 617 EINA_LIST_FREE(cache->preload, im)
618 { 618 {
619 /* By doing that we are protecting us from destroying image when the cache is no longer available. */ 619 /* By doing that we are protecting us from destroying image when the cache is no longer available. */
620 im->flags.delete_me = 1; 620 im->flags.delete_me = 1;
621 _evas_cache_image_entry_preload_remove(im, NULL); 621 _evas_cache_image_entry_preload_remove(im, NULL);
622 } 622 }
623 evas_async_events_process(); 623 evas_async_events_process();
624#endif 624#endif
@@ -642,21 +642,21 @@ evas_cache_image_shutdown(Evas_Cache_Image *cache)
642 eina_hash_foreach(cache->activ, _evas_cache_image_free_cb, &delete_list); 642 eina_hash_foreach(cache->activ, _evas_cache_image_free_cb, &delete_list);
643 while (delete_list) 643 while (delete_list)
644 { 644 {
645 _evas_cache_image_entry_delete(cache, eina_list_data_get(delete_list)); 645 _evas_cache_image_entry_delete(cache, eina_list_data_get(delete_list));
646 delete_list = eina_list_remove_list(delete_list, delete_list); 646 delete_list = eina_list_remove_list(delete_list, delete_list);
647 } 647 }
648 648
649#ifdef BUILD_ASYNC_PRELOAD 649#ifdef BUILD_ASYNC_PRELOAD
650 /* Now wait for all pending image to die */ 650 /* Now wait for all pending image to die */
651 while (cache->pending) 651 while (cache->pending)
652 { 652 {
653 evas_async_events_process(); 653 evas_async_events_process();
654 LKL(wakeup); 654 LKL(wakeup);
655 // the lazy bum who did eain threads and converted this code 655 // the lazy bum who did eain threads and converted this code
656 // didn't bother to worry about Eina_Lock being a different type 656 // didn't bother to worry about Eina_Lock being a different type
657 // to a pthread mutex. 657 // to a pthread mutex.
658 if (cache->pending) eina_condition_wait(&cond_wakeup); 658 if (cache->pending) eina_condition_wait(&cond_wakeup);
659 LKU(wakeup); 659 LKU(wakeup);
660 } 660 }
661#endif 661#endif
662 eina_hash_free(cache->activ); 662 eina_hash_free(cache->activ);
@@ -666,7 +666,7 @@ evas_cache_image_shutdown(Evas_Cache_Image *cache)
666#ifdef BUILD_ASYNC_PRELOAD 666#ifdef BUILD_ASYNC_PRELOAD
667 if (--_evas_cache_mutex_init == 0) 667 if (--_evas_cache_mutex_init == 0)
668 { 668 {
669 eina_condition_free(&cond_wakeup); 669 eina_condition_free(&cond_wakeup);
670 LKD(engine_lock); 670 LKD(engine_lock);
671 LKD(wakeup); 671 LKD(wakeup);
672 } 672 }
@@ -690,8 +690,8 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
690 690
691 if ((!file) || ((!file) && (!key))) 691 if ((!file) || ((!file) && (!key)))
692 { 692 {
693 *error = EVAS_LOAD_ERROR_GENERIC; 693 *error = EVAS_LOAD_ERROR_GENERIC;
694 return NULL; 694 return NULL;
695 } 695 }
696 696
697 /* generate hkey from file+key+load opts */ 697 /* generate hkey from file+key+load opts */
@@ -712,45 +712,45 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
712 (lo->dpi == 0.0) && 712 (lo->dpi == 0.0) &&
713 ((lo->w == 0) || (lo->h == 0)) && 713 ((lo->w == 0) || (lo->h == 0)) &&
714 ((lo->region.w == 0) || (lo->region.h == 0)) && 714 ((lo->region.w == 0) || (lo->region.h == 0)) &&
715 (lo->orientation == 0) 715 (lo->orientation == 0)
716 )) 716 ))
717 { 717 {
718 lo = &prevent; 718 lo = &prevent;
719 } 719 }
720 else 720 else
721 { 721 {
722 memcpy(hkey + size, "//@/", 4); 722 memcpy(hkey + size, "//@/", 4);
723 size += 4; 723 size += 4;
724 size += eina_convert_xtoa(lo->scale_down_by, hkey + size); 724 size += eina_convert_xtoa(lo->scale_down_by, hkey + size);
725 hkey[size] = '/'; 725 hkey[size] = '/';
726 size += 1; 726 size += 1;
727 size += eina_convert_dtoa(lo->dpi, hkey + size); 727 size += eina_convert_dtoa(lo->dpi, hkey + size);
728 hkey[size] = '/'; 728 hkey[size] = '/';
729 size += 1; 729 size += 1;
730 size += eina_convert_xtoa(lo->w, hkey + size); 730 size += eina_convert_xtoa(lo->w, hkey + size);
731 hkey[size] = 'x'; 731 hkey[size] = 'x';
732 size += 1; 732 size += 1;
733 size += eina_convert_xtoa(lo->h, hkey + size); 733 size += eina_convert_xtoa(lo->h, hkey + size);
734 hkey[size] = '/'; 734 hkey[size] = '/';
735 size += 1; 735 size += 1;
736 size += eina_convert_xtoa(lo->region.x, hkey + size); 736 size += eina_convert_xtoa(lo->region.x, hkey + size);
737 hkey[size] = '+'; 737 hkey[size] = '+';
738 size += 1; 738 size += 1;
739 size += eina_convert_xtoa(lo->region.y, hkey + size); 739 size += eina_convert_xtoa(lo->region.y, hkey + size);
740 hkey[size] = '.'; 740 hkey[size] = '.';
741 size += 1; 741 size += 1;
742 size += eina_convert_xtoa(lo->region.w, hkey + size); 742 size += eina_convert_xtoa(lo->region.w, hkey + size);
743 hkey[size] = 'x'; 743 hkey[size] = 'x';
744 size += 1; 744 size += 1;
745 size += eina_convert_xtoa(lo->region.h, hkey + size); 745 size += eina_convert_xtoa(lo->region.h, hkey + size);
746 746
747 if (lo->orientation) 747 if (lo->orientation)
748 { 748 {
749 hkey[size] = '/'; 749 hkey[size] = '/';
750 size += 1; 750 size += 1;
751 hkey[size] = 'o'; 751 hkey[size] = 'o';
752 size += 1; 752 size += 1;
753 } 753 }
754 } 754 }
755 hkey[size] = '\0'; 755 hkey[size] = '\0';
756 756
@@ -768,10 +768,10 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
768 768
769 stat_done = 1; 769 stat_done = 1;
770 if (stat(file, &st) < 0) 770 if (stat(file, &st) < 0)
771 { 771 {
772 stat_failed = 1; 772 stat_failed = 1;
773 ok = 0; 773 ok = 0;
774 } 774 }
775 else if (!_timestamp_compare(&(im->tstamp), &st)) ok = 0; 775 else if (!_timestamp_compare(&(im->tstamp), &st)) ok = 0;
776 if (ok) goto on_ok; 776 if (ok) goto on_ok;
777 /* image we found doesn't match what's on disk (stat info wise) 777 /* image we found doesn't match what's on disk (stat info wise)
@@ -816,10 +816,12 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
816 } 816 }
817 /* as avtive cache find - if we match in lru and its invalid, dirty */ 817 /* as avtive cache find - if we match in lru and its invalid, dirty */
818 _evas_cache_image_dirty_add(im); 818 _evas_cache_image_dirty_add(im);
819 /* this image never used, so it have to be deleted */
820 _evas_cache_image_entry_delete(cache, im);
819 im = NULL; 821 im = NULL;
820 } 822 }
821 if (stat_failed) goto on_stat_error; 823 if (stat_failed) goto on_stat_error;
822 824
823 if (!stat_done) 825 if (!stat_done)
824 { 826 {
825 if (stat(file, &st) < 0) goto on_stat_error; 827 if (stat(file, &st) < 0) goto on_stat_error;
@@ -830,7 +832,7 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
830 if (!im) goto on_stat_error; 832 if (!im) goto on_stat_error;
831 if (cache->func.debug) cache->func.debug("request", im); 833 if (cache->func.debug) cache->func.debug("request", im);
832 834
833 on_ok: 835on_ok:
834 *error = EVAS_LOAD_ERROR_NONE; 836 *error = EVAS_LOAD_ERROR_NONE;
835#ifdef EVAS_FRAME_QUEUING 837#ifdef EVAS_FRAME_QUEUING
836 LKL(im->lock_references); 838 LKL(im->lock_references);
@@ -841,24 +843,24 @@ evas_cache_image_request(Evas_Cache_Image *cache, const char *file,
841#endif 843#endif
842 return im; 844 return im;
843 845
844 on_stat_error: 846on_stat_error:
845#ifndef _WIN32 847#ifndef _WIN32
846 if ((errno == ENOENT) || (errno == ENOTDIR) || 848 if ((errno == ENOENT) || (errno == ENOTDIR) ||
847 (errno == ENAMETOOLONG) || (errno == ELOOP)) 849 (errno == ENAMETOOLONG) || (errno == ELOOP))
848#else 850#else
849 if (errno == ENOENT) 851 if (errno == ENOENT)
850#endif 852#endif
851 *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; 853 *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST;
852#ifndef _WIN32 854#ifndef _WIN32
853 else if ((errno == ENOMEM) || (errno == EOVERFLOW)) 855 else if ((errno == ENOMEM) || (errno == EOVERFLOW))
854#else 856#else
855 else if (errno == ENOMEM) 857 else if (errno == ENOMEM)
856#endif 858#endif
857 *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; 859 *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
858 else if (errno == EACCES) 860 else if (errno == EACCES)
859 *error = EVAS_LOAD_ERROR_PERMISSION_DENIED; 861 *error = EVAS_LOAD_ERROR_PERMISSION_DENIED;
860 else 862 else
861 *error = EVAS_LOAD_ERROR_GENERIC; 863 *error = EVAS_LOAD_ERROR_GENERIC;
862 864
863 if (im) _evas_cache_image_entry_delete(cache, im); 865 if (im) _evas_cache_image_entry_delete(cache, im);
864 return NULL; 866 return NULL;
@@ -879,7 +881,7 @@ evas_cache_image_drop(Image_Entry *im)
879#ifdef EVAS_FRAME_QUEUING 881#ifdef EVAS_FRAME_QUEUING
880 LKU(im->lock_references); 882 LKU(im->lock_references);
881#endif 883#endif
882 884
883 cache = im->cache; 885 cache = im->cache;
884 886
885 if (references == 0) 887 if (references == 0)
@@ -893,25 +895,25 @@ evas_cache_image_drop(Image_Entry *im)
893 LKU(im->ref_fq_del); 895 LKU(im->ref_fq_del);
894 return; 896 return;
895 } 897 }
896 LKU(im->ref_fq_add); 898 LKU(im->ref_fq_add);
897 LKU(im->ref_fq_del); 899 LKU(im->ref_fq_del);
898#endif 900#endif
899 901
900#ifdef BUILD_ASYNC_PRELOAD 902#ifdef BUILD_ASYNC_PRELOAD
901 if (im->preload) 903 if (im->preload)
902 { 904 {
903 _evas_cache_image_entry_preload_remove(im, NULL); 905 _evas_cache_image_entry_preload_remove(im, NULL);
904 return; 906 return;
905 } 907 }
906#endif 908#endif
907 909
908 if (im->flags.dirty) 910 if (im->flags.dirty)
909 { 911 {
910 _evas_cache_image_entry_delete(cache, im); 912 _evas_cache_image_entry_delete(cache, im);
911 return; 913 return;
912 } 914 }
913 _evas_cache_image_lru_add(im); 915 _evas_cache_image_lru_add(im);
914 if (cache) evas_cache_image_flush(cache); 916 if (cache) evas_cache_image_flush(cache);
915 } 917 }
916} 918}
917 919
@@ -974,10 +976,10 @@ evas_cache_image_dirty(Image_Entry *im, unsigned int x, unsigned int y, unsigned
974 } 976 }
975 _evas_cache_image_dirty_add(im_dirty); 977 _evas_cache_image_dirty_add(im_dirty);
976 } 978 }
977 979
978 if (cache->func.debug) cache->func.debug("dirty-region", im_dirty); 980 if (cache->func.debug) cache->func.debug("dirty-region", im_dirty);
979 if (cache->func.dirty_region) 981 if (cache->func.dirty_region)
980 cache->func.dirty_region(im_dirty, x, y, w, h); 982 cache->func.dirty_region(im_dirty, x, y, w, h);
981 return im_dirty; 983 return im_dirty;
982 984
983on_error: 985on_error:
@@ -1026,7 +1028,7 @@ evas_cache_image_alone(Image_Entry *im)
1026 evas_cache_image_drop(im); 1028 evas_cache_image_drop(im);
1027 } 1029 }
1028 return im_dirty; 1030 return im_dirty;
1029 1031
1030on_error: 1032on_error:
1031 if (im_dirty) _evas_cache_image_entry_delete(cache, im_dirty); 1033 if (im_dirty) _evas_cache_image_entry_delete(cache, im_dirty);
1032 evas_cache_image_drop(im); 1034 evas_cache_image_drop(im);
@@ -1039,12 +1041,12 @@ evas_cache_image_copied_data(Evas_Cache_Image *cache,
1039 DATA32 *image_data, int alpha, int cspace) 1041 DATA32 *image_data, int alpha, int cspace)
1040{ 1042{
1041 Image_Entry *im; 1043 Image_Entry *im;
1042 1044
1043 if ((cspace == EVAS_COLORSPACE_YCBCR422P601_PL) || 1045 if ((cspace == EVAS_COLORSPACE_YCBCR422P601_PL) ||
1044 (cspace == EVAS_COLORSPACE_YCBCR422P709_PL) || 1046 (cspace == EVAS_COLORSPACE_YCBCR422P709_PL) ||
1045 (cspace == EVAS_COLORSPACE_YCBCR422601_PL)) 1047 (cspace == EVAS_COLORSPACE_YCBCR422601_PL))
1046 w &= ~0x1; 1048 w &= ~0x1;
1047 1049
1048 im = _evas_cache_image_entry_new(cache, NULL, NULL, NULL, NULL, NULL, NULL); 1050 im = _evas_cache_image_entry_new(cache, NULL, NULL, NULL, NULL, NULL, NULL);
1049 if (!im) return NULL; 1051 if (!im) return NULL;
1050 im->space = cspace; 1052 im->space = cspace;
@@ -1074,8 +1076,8 @@ evas_cache_image_data(Evas_Cache_Image *cache, unsigned int w, unsigned int h, D
1074 if ((cspace == EVAS_COLORSPACE_YCBCR422P601_PL) || 1076 if ((cspace == EVAS_COLORSPACE_YCBCR422P601_PL) ||
1075 (cspace == EVAS_COLORSPACE_YCBCR422P709_PL) || 1077 (cspace == EVAS_COLORSPACE_YCBCR422P709_PL) ||
1076 (cspace == EVAS_COLORSPACE_YCBCR422601_PL)) 1078 (cspace == EVAS_COLORSPACE_YCBCR422601_PL))
1077 w &= ~0x1; 1079 w &= ~0x1;
1078 1080
1079 im = _evas_cache_image_entry_new(cache, NULL, NULL, NULL, NULL, NULL, NULL); 1081 im = _evas_cache_image_entry_new(cache, NULL, NULL, NULL, NULL, NULL, NULL);
1080 if (!im) return NULL; 1082 if (!im) return NULL;
1081 im->w = w; 1083 im->w = w;
@@ -1101,7 +1103,7 @@ EAPI void
1101evas_cache_image_surface_alloc(Image_Entry *im, unsigned int w, unsigned int h) 1103evas_cache_image_surface_alloc(Image_Entry *im, unsigned int w, unsigned int h)
1102{ 1104{
1103 Evas_Cache_Image *cache = im->cache; 1105 Evas_Cache_Image *cache = im->cache;
1104 1106
1105 if ((im->space == EVAS_COLORSPACE_YCBCR422P601_PL) || 1107 if ((im->space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
1106 (im->space == EVAS_COLORSPACE_YCBCR422P709_PL) || 1108 (im->space == EVAS_COLORSPACE_YCBCR422P709_PL) ||
1107 (im->space == EVAS_COLORSPACE_YCBCR422601_PL)) 1109 (im->space == EVAS_COLORSPACE_YCBCR422601_PL))
@@ -1145,7 +1147,7 @@ evas_cache_image_size_set(Image_Entry *im, unsigned int w, unsigned int h)
1145 if (cache->func.debug) cache->func.debug("size_set", im2); 1147 if (cache->func.debug) cache->func.debug("size_set", im2);
1146 return im2; 1148 return im2;
1147 1149
1148 on_error: 1150on_error:
1149 if (im2) _evas_cache_image_entry_delete(cache, im2); 1151 if (im2) _evas_cache_image_entry_delete(cache, im2);
1150 evas_cache_image_drop(im); 1152 evas_cache_image_drop(im);
1151 return NULL; 1153 return NULL;
@@ -1163,26 +1165,26 @@ evas_cache_image_load_data(Image_Entry *im)
1163#ifdef BUILD_ASYNC_PRELOAD 1165#ifdef BUILD_ASYNC_PRELOAD
1164 if (im->preload) 1166 if (im->preload)
1165 { 1167 {
1166 preload = EINA_TRUE; 1168 preload = EINA_TRUE;
1167 if (!im->flags.pending) 1169 if (!im->flags.pending)
1168 { 1170 {
1169 im->cache->preload = eina_list_remove(im->cache->preload, im); 1171 im->cache->preload = eina_list_remove(im->cache->preload, im);
1170 im->cache->pending = eina_list_append(im->cache->pending, im); 1172 im->cache->pending = eina_list_append(im->cache->pending, im);
1171 im->flags.pending = 1; 1173 im->flags.pending = 1;
1172 evas_preload_thread_cancel(im->preload); 1174 evas_preload_thread_cancel(im->preload);
1173 } 1175 }
1174 evas_async_events_process(); 1176 evas_async_events_process();
1175 LKL(wakeup); 1177 LKL(wakeup);
1176 while (im->preload) 1178 while (im->preload)
1177 { 1179 {
1178 eina_condition_wait(&cond_wakeup); 1180 eina_condition_wait(&cond_wakeup);
1179 LKU(wakeup); 1181 LKU(wakeup);
1180 evas_async_events_process(); 1182 evas_async_events_process();
1181 LKL(wakeup); 1183 LKL(wakeup);
1182 } 1184 }
1183 LKU(wakeup); 1185 LKU(wakeup);
1184 } 1186 }
1185 1187
1186 if ((im->flags.loaded) && (!im->flags.animated)) return error; 1188 if ((im->flags.loaded) && (!im->flags.animated)) return error;
1187 LKL(im->lock); 1189 LKL(im->lock);
1188#endif 1190#endif
@@ -1226,7 +1228,7 @@ evas_cache_image_unload_data(Image_Entry *im)
1226#ifdef BUILD_ASYNC_PRELOAD 1228#ifdef BUILD_ASYNC_PRELOAD
1227 LKU(im->lock); 1229 LKU(im->lock);
1228#endif 1230#endif
1229 return; 1231 return;
1230 } 1232 }
1231 im->cache->func.destructor(im); 1233 im->cache->func.destructor(im);
1232#ifdef BUILD_ASYNC_PRELOAD 1234#ifdef BUILD_ASYNC_PRELOAD
@@ -1256,8 +1258,8 @@ evas_cache_image_unload_all(Evas_Cache_Image *cache)
1256EAPI Eina_Bool 1258EAPI Eina_Bool
1257evas_cache_image_is_loaded(Image_Entry *im) 1259evas_cache_image_is_loaded(Image_Entry *im)
1258{ 1260{
1259 if (im->flags.loaded) return EINA_TRUE; 1261 if (im->flags.loaded) return EINA_TRUE;
1260 return EINA_FALSE; 1262 return EINA_FALSE;
1261} 1263}
1262 1264
1263EAPI void 1265EAPI void
@@ -1265,15 +1267,15 @@ evas_cache_image_preload_data(Image_Entry *im, const void *target)
1265{ 1267{
1266#ifdef BUILD_ASYNC_PRELOAD 1268#ifdef BUILD_ASYNC_PRELOAD
1267 RGBA_Image *img = (RGBA_Image *)im; 1269 RGBA_Image *img = (RGBA_Image *)im;
1268 1270
1269 if ((im->flags.loaded) && (img->image.data)) 1271 if ((im->flags.loaded) && (img->image.data))
1270 { 1272 {
1271 evas_object_inform_call_image_preloaded((Evas_Object *)target); 1273 evas_object_inform_call_image_preloaded((Evas_Object *)target);
1272 return; 1274 return;
1273 } 1275 }
1274 im->flags.loaded = 0; 1276 im->flags.loaded = 0;
1275 if (!_evas_cache_image_entry_preload_add(im, target)) 1277 if (!_evas_cache_image_entry_preload_add(im, target))
1276 evas_object_inform_call_image_preloaded((Evas_Object *)target); 1278 evas_object_inform_call_image_preloaded((Evas_Object *)target);
1277#else 1279#else
1278 evas_cache_image_load_data(im); 1280 evas_cache_image_load_data(im);
1279 evas_object_inform_call_image_preloaded((Evas_Object *)target); 1281 evas_object_inform_call_image_preloaded((Evas_Object *)target);
@@ -1319,7 +1321,7 @@ static void
1319_dump_cache(Evas_Cache_Image *cache) 1321_dump_cache(Evas_Cache_Image *cache)
1320{ 1322{
1321 Image_Entry *im; 1323 Image_Entry *im;
1322 1324
1323 printf("--CACHE DUMP----------------------------------------------------\n"); 1325 printf("--CACHE DUMP----------------------------------------------------\n");
1324 printf("cache: %ikb / %ikb\n", 1326 printf("cache: %ikb / %ikb\n",
1325 cache->usage / 1024, 1327 cache->usage / 1024,
@@ -1342,22 +1344,22 @@ EAPI int
1342evas_cache_image_flush(Evas_Cache_Image *cache) 1344evas_cache_image_flush(Evas_Cache_Image *cache)
1343{ 1345{
1344#ifdef CACHEDUMP 1346#ifdef CACHEDUMP
1345 _dump_cache(cache); 1347 _dump_cache(cache);
1346#endif 1348#endif
1347 if (cache->limit == (unsigned int)-1) return -1; 1349 if (cache->limit == (unsigned int)-1) return -1;
1348 1350
1349 while ((cache->lru) && (cache->limit < (unsigned int)cache->usage)) 1351 while ((cache->lru) && (cache->limit < (unsigned int)cache->usage))
1350 { 1352 {
1351 Image_Entry *im; 1353 Image_Entry *im;
1352 1354
1353 im = (Image_Entry *)cache->lru->last; 1355 im = (Image_Entry *)cache->lru->last;
1354 _evas_cache_image_entry_delete(cache, im); 1356 _evas_cache_image_entry_delete(cache, im);
1355 } 1357 }
1356 1358
1357 while ((cache->lru_nodata) && (cache->limit < (unsigned int)cache->usage)) 1359 while ((cache->lru_nodata) && (cache->limit < (unsigned int)cache->usage))
1358 { 1360 {
1359 Image_Entry *im; 1361 Image_Entry *im;
1360 1362
1361 im = (Image_Entry *) cache->lru_nodata->last; 1363 im = (Image_Entry *) cache->lru_nodata->last;
1362 _evas_cache_image_lru_nodata_del(im); 1364 _evas_cache_image_lru_nodata_del(im);
1363 cache->func.surface_delete(im); 1365 cache->func.surface_delete(im);
diff --git a/libraries/evas/src/lib/canvas/Makefile.am b/libraries/evas/src/lib/canvas/Makefile.am
index 79544aa..e302668 100644
--- a/libraries/evas/src/lib/canvas/Makefile.am
+++ b/libraries/evas/src/lib/canvas/Makefile.am
@@ -8,7 +8,6 @@ AM_CPPFLAGS = \
8-DPACKAGE_BIN_DIR=\"$(bindir)\" \ 8-DPACKAGE_BIN_DIR=\"$(bindir)\" \
9-DPACKAGE_LIB_DIR=\"$(libdir)\" \ 9-DPACKAGE_LIB_DIR=\"$(libdir)\" \
10-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ 10-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
11@WIN32_CPPFLAGS@ \
12@FREETYPE_CFLAGS@ \ 11@FREETYPE_CFLAGS@ \
13@EET_CFLAGS@ \ 12@EET_CFLAGS@ \
14@FONTCONFIG_CFLAGS@ \ 13@FONTCONFIG_CFLAGS@ \
diff --git a/libraries/evas/src/lib/canvas/Makefile.in b/libraries/evas/src/lib/canvas/Makefile.in
index 75da67a..c7e48bc 100644
--- a/libraries/evas/src/lib/canvas/Makefile.in
+++ b/libraries/evas/src/lib/canvas/Makefile.in
@@ -161,6 +161,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
161EVIL_CFLAGS = @EVIL_CFLAGS@ 161EVIL_CFLAGS = @EVIL_CFLAGS@
162EVIL_LIBS = @EVIL_LIBS@ 162EVIL_LIBS = @EVIL_LIBS@
163EXEEXT = @EXEEXT@ 163EXEEXT = @EXEEXT@
164EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
165EXOTIC_LIBS = @EXOTIC_LIBS@
164FGREP = @FGREP@ 166FGREP = @FGREP@
165FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 167FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
166FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 168FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -211,6 +213,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
211PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 213PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
212PIXMAN_LIBS = @PIXMAN_LIBS@ 214PIXMAN_LIBS = @PIXMAN_LIBS@
213PKG_CONFIG = @PKG_CONFIG@ 215PKG_CONFIG = @PKG_CONFIG@
216PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
217PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
214PNG_CFLAGS = @PNG_CFLAGS@ 218PNG_CFLAGS = @PNG_CFLAGS@
215PNG_LIBS = @PNG_LIBS@ 219PNG_LIBS = @PNG_LIBS@
216RANLIB = @RANLIB@ 220RANLIB = @RANLIB@
@@ -229,8 +233,6 @@ VERSION = @VERSION@
229VMAJ = @VMAJ@ 233VMAJ = @VMAJ@
230WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 234WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
231WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 235WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
232WIN32_CFLAGS = @WIN32_CFLAGS@
233WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
234XCB_CFLAGS = @XCB_CFLAGS@ 236XCB_CFLAGS = @XCB_CFLAGS@
235XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 237XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
236XCB_GL_LIBS = @XCB_GL_LIBS@ 238XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -304,8 +306,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
304evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 306evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
305evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 307evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
306evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 308evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
307evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
308evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
309evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 309evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
310evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 310evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
311evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 311evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
@@ -393,10 +393,9 @@ AM_CPPFLAGS = -I. -I$(top_srcdir)/src/lib \
393 -I$(top_srcdir)/src/lib/include -I$(top_srcdir)/src/lib/cserve \ 393 -I$(top_srcdir)/src/lib/include -I$(top_srcdir)/src/lib/cserve \
394 -DPACKAGE_BIN_DIR=\"$(bindir)\" \ 394 -DPACKAGE_BIN_DIR=\"$(bindir)\" \
395 -DPACKAGE_LIB_DIR=\"$(libdir)\" \ 395 -DPACKAGE_LIB_DIR=\"$(libdir)\" \
396 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" @WIN32_CPPFLAGS@ \ 396 -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" @FREETYPE_CFLAGS@ \
397 @FREETYPE_CFLAGS@ @EET_CFLAGS@ @FONTCONFIG_CFLAGS@ \ 397 @EET_CFLAGS@ @FONTCONFIG_CFLAGS@ @EVAS_CFLAGS@ @EINA_CFLAGS@ \
398 @EVAS_CFLAGS@ @EINA_CFLAGS@ @EVIL_CFLAGS@ @PIXMAN_CFLAGS@ \ 398 @EVIL_CFLAGS@ @PIXMAN_CFLAGS@ $(am__append_1)
399 $(am__append_1)
400noinst_LTLIBRARIES = libevas_canvas.la 399noinst_LTLIBRARIES = libevas_canvas.la
401libevas_canvas_la_SOURCES = \ 400libevas_canvas_la_SOURCES = \
402evas_callbacks.c \ 401evas_callbacks.c \
diff --git a/libraries/evas/src/lib/canvas/evas_callbacks.c b/libraries/evas/src/lib/canvas/evas_callbacks.c
index 93f34f2..47cfb0c 100644
--- a/libraries/evas/src/lib/canvas/evas_callbacks.c
+++ b/libraries/evas/src/lib/canvas/evas_callbacks.c
@@ -172,6 +172,15 @@ evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void
172 if ((obj->delete_me) || (!obj->layer)) return; 172 if ((obj->delete_me) || (!obj->layer)) return;
173 if ((obj->last_event == event_id) && 173 if ((obj->last_event == event_id) &&
174 (obj->last_event_type == type)) return; 174 (obj->last_event_type == type)) return;
175 if (obj->last_event > event_id)
176 {
177 if ((obj->last_event_type == EVAS_CALLBACK_MOUSE_OUT) &&
178 ((type >= EVAS_CALLBACK_MOUSE_DOWN) &&
179 (type <= EVAS_CALLBACK_MULTI_MOVE)))
180 {
181 return;
182 }
183 }
175 obj->last_event = event_id; 184 obj->last_event = event_id;
176 obj->last_event_type = type; 185 obj->last_event_type = type;
177 if (!(e = obj->layer->evas)) return; 186 if (!(e = obj->layer->evas)) return;
diff --git a/libraries/evas/src/lib/canvas/evas_events.c b/libraries/evas/src/lib/canvas/evas_events.c
index 9b7077e..1ee8388 100644
--- a/libraries/evas/src/lib/canvas/evas_events.c
+++ b/libraries/evas/src/lib/canvas/evas_events.c
@@ -486,8 +486,9 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
486 } 486 }
487 if (!obj->delete_me) 487 if (!obj->delete_me)
488 { 488 {
489 if (e->events_frozen <= 0) 489 if ((e->events_frozen <= 0) &&
490 evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id); 490 (!evas_event_freezes_through(obj)))
491 evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev, event_id);
491 } 492 }
492 if (e->delete_me) break; 493 if (e->delete_me) break;
493 if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN) 494 if (obj->pointer_mode == EVAS_OBJECT_POINTER_MODE_NOGRAB_NO_REPEAT_UPDOWN)
@@ -1668,18 +1669,6 @@ evas_object_freeze_events_set(Evas_Object *obj, Eina_Bool freeze)
1668 if (obj->freeze_events == freeze) return; 1669 if (obj->freeze_events == freeze) return;
1669 obj->freeze_events = freeze; 1670 obj->freeze_events = freeze;
1670 evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE); 1671 evas_object_smart_member_cache_invalidate(obj, EINA_FALSE, EINA_TRUE);
1671 if (evas_object_is_in_output_rect(obj,
1672 obj->layer->evas->pointer.x,
1673 obj->layer->evas->pointer.y, 1, 1) &&
1674 ((!obj->precise_is_inside) ||
1675 (evas_object_is_inside(obj,
1676 obj->layer->evas->pointer.x,
1677 obj->layer->evas->pointer.y))))
1678 evas_event_feed_mouse_move(obj->layer->evas,
1679 obj->layer->evas->pointer.x,
1680 obj->layer->evas->pointer.y,
1681 obj->layer->evas->last_timestamp,
1682 NULL);
1683} 1672}
1684 1673
1685EAPI Eina_Bool 1674EAPI Eina_Bool
diff --git a/libraries/evas/src/lib/canvas/evas_map.c b/libraries/evas/src/lib/canvas/evas_map.c
index 2359d5a..5dcb760 100644
--- a/libraries/evas/src/lib/canvas/evas_map.c
+++ b/libraries/evas/src/lib/canvas/evas_map.c
@@ -35,7 +35,7 @@ _evas_map_calc_geom_change(Evas_Object *obj)
35static void 35static void
36_evas_map_calc_map_geometry(Evas_Object *obj) 36_evas_map_calc_map_geometry(Evas_Object *obj)
37{ 37{
38 Evas_Coord x1, x2, y1, y2; 38 Evas_Coord x1, x2, yy1, yy2;
39 const Evas_Map_Point *p, *p_end; 39 const Evas_Map_Point *p, *p_end;
40 Eina_Bool ch = EINA_FALSE; 40 Eina_Bool ch = EINA_FALSE;
41 41
@@ -82,7 +82,7 @@ _evas_map_calc_map_geometry(Evas_Object *obj)
82 p = obj->cur.map->points; 82 p = obj->cur.map->points;
83 p_end = p + obj->cur.map->count; 83 p_end = p + obj->cur.map->count;
84 x1 = x2 = lround(p->x); 84 x1 = x2 = lround(p->x);
85 y1 = y2 = lround(p->y); 85 yy1 = yy2 = lround(p->y);
86 p++; 86 p++;
87 for (; p < p_end; p++) 87 for (; p < p_end; p++)
88 { 88 {
@@ -92,21 +92,21 @@ _evas_map_calc_map_geometry(Evas_Object *obj)
92 y = lround(p->y); 92 y = lround(p->y);
93 if (x < x1) x1 = x; 93 if (x < x1) x1 = x;
94 if (x > x2) x2 = x; 94 if (x > x2) x2 = x;
95 if (y < y1) y1 = y; 95 if (y < yy1) yy1 = y;
96 if (y > y2) y2 = y; 96 if (y > yy2) yy2 = y;
97 } 97 }
98// this causes clip-out bugs now mapped objs canbe opaque!!! 98// this causes clip-out bugs now mapped objs canbe opaque!!!
99// // add 1 pixel of fuzz around the map region to ensure updates are correct 99// // add 1 pixel of fuzz around the map region to ensure updates are correct
100// x1 -= 1; y1 -= 1; 100// x1 -= 1; yy1 -= 1;
101// x2 += 1; y2 += 1; 101// x2 += 1; yy2 += 1;
102 if (obj->cur.map->normal_geometry.x != x1) ch = 1; 102 if (obj->cur.map->normal_geometry.x != x1) ch = 1;
103 if (obj->cur.map->normal_geometry.y != y1) ch = 1; 103 if (obj->cur.map->normal_geometry.y != yy1) ch = 1;
104 if (obj->cur.map->normal_geometry.w != (x2 - x1)) ch = 1; 104 if (obj->cur.map->normal_geometry.w != (x2 - x1)) ch = 1;
105 if (obj->cur.map->normal_geometry.h != (y2 - y1)) ch = 1; 105 if (obj->cur.map->normal_geometry.h != (yy2 - yy1)) ch = 1;
106 obj->cur.map->normal_geometry.x = x1; 106 obj->cur.map->normal_geometry.x = x1;
107 obj->cur.map->normal_geometry.y = y1; 107 obj->cur.map->normal_geometry.y = yy1;
108 obj->cur.map->normal_geometry.w = (x2 - x1); 108 obj->cur.map->normal_geometry.w = (x2 - x1);
109 obj->cur.map->normal_geometry.h = (y2 - y1); 109 obj->cur.map->normal_geometry.h = (yy2 - yy1);
110 if (ch) _evas_map_calc_geom_change(obj); 110 if (ch) _evas_map_calc_geom_change(obj);
111} 111}
112 112
@@ -374,9 +374,11 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
374 MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); 374 MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
375 return; 375 return;
376 MAGIC_CHECK_END(); 376 MAGIC_CHECK_END();
377 Eina_Bool pchange = EINA_FALSE;
377 378
378 enabled = !!enabled; 379 enabled = !!enabled;
379 if (obj->cur.usemap == enabled) return; 380 if (obj->cur.usemap == enabled) return;
381 pchange = obj->changed;
380 obj->cur.usemap = enabled; 382 obj->cur.usemap = enabled;
381 if (enabled) 383 if (enabled)
382 { 384 {
@@ -405,6 +407,8 @@ evas_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled)
405 /* This is a bit heavy handed, but it fixes the case of same geometry, but 407 /* This is a bit heavy handed, but it fixes the case of same geometry, but
406 * changed colour or UV settings. */ 408 * changed colour or UV settings. */
407 evas_object_change(obj); 409 evas_object_change(obj);
410 if (!obj->changed_pchange) obj->changed_pchange = pchange;
411 obj->changed_map = EINA_TRUE;
408} 412}
409 413
410EAPI Eina_Bool 414EAPI Eina_Bool
@@ -896,7 +900,7 @@ evas_map_util_3d_lighting(Evas_Map *m,
896 for (i = 0; i < m->count; i++) 900 for (i = 0; i < m->count; i++)
897 { 901 {
898 double x, y, z; 902 double x, y, z;
899 double nx, ny, nz, x1, y1, z1, x2, y2, z2, ln, br; 903 double nx, ny, nz, x1, yy1, z1, x2, yy2, z2, ln, br;
900 int h, j, mr, mg, mb; 904 int h, j, mr, mg, mb;
901 905
902 x = m->points[i].x; 906 x = m->points[i].x;
@@ -907,15 +911,15 @@ evas_map_util_3d_lighting(Evas_Map *m,
907 j = (i + 1) % 4 + (i & ~0x3); // next point 911 j = (i + 1) % 4 + (i & ~0x3); // next point
908 912
909 x1 = m->points[h].x - x; 913 x1 = m->points[h].x - x;
910 y1 = m->points[h].y - y; 914 yy1 = m->points[h].y - y;
911 z1 = m->points[h].z - z; 915 z1 = m->points[h].z - z;
912 916
913 x2 = m->points[j].x - x; 917 x2 = m->points[j].x - x;
914 y2 = m->points[j].y - y; 918 yy2 = m->points[j].y - y;
915 z2 = m->points[j].z - z; 919 z2 = m->points[j].z - z;
916 nx = (y1 * z2) - (z1 * y2); 920 nx = (yy1 * z2) - (z1 * yy2);
917 ny = (z1 * x2) - (x1 * z2); 921 ny = (z1 * x2) - (x1 * z2);
918 nz = (x1 * y2) - (y1 * x2); 922 nz = (x1 * yy2) - (yy1 * x2);
919 923
920 ln = (nx * nx) + (ny * ny) + (nz * nz); 924 ln = (nx * nx) + (ny * ny) + (nz * nz);
921 ln = sqrt(ln); 925 ln = sqrt(ln);
diff --git a/libraries/evas/src/lib/canvas/evas_object_image.c b/libraries/evas/src/lib/canvas/evas_object_image.c
index d9f6378..4ebea08 100644
--- a/libraries/evas/src/lib/canvas/evas_object_image.c
+++ b/libraries/evas/src/lib/canvas/evas_object_image.c
@@ -2908,11 +2908,31 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
2908 { 2908 {
2909 Evas_Coord idw, idh, idx, idy; 2909 Evas_Coord idw, idh, idx, idy;
2910 int ix, iy, iw, ih; 2910 int ix, iy, iw, ih;
2911 int img_set = 0;
2911 2912
2912 if (o->dirty_pixels) 2913 if (o->dirty_pixels)
2913 { 2914 {
2914 if (o->func.get_pixels) 2915 if (o->func.get_pixels)
2915 { 2916 {
2917 // Set img object for direct rendering optimization
2918 // Check for image w/h against image geometry w/h
2919 // Check for image color r,g,b,a = {255,255,255,255}
2920 // Check and make sure that there are no maps.
2921 if ( (obj->cur.geometry.w == o->cur.image.w) &&
2922 (obj->cur.geometry.h == o->cur.image.h) &&
2923 (obj->cur.color.r == 255) &&
2924 (obj->cur.color.g == 255) &&
2925 (obj->cur.color.b == 255) &&
2926 (obj->cur.color.a == 255) &&
2927 (!obj->cur.map) )
2928 {
2929 if (obj->layer->evas->engine.func->gl_img_obj_set)
2930 {
2931 obj->layer->evas->engine.func->gl_img_obj_set(output, obj, o->cur.has_alpha);
2932 img_set = 1;
2933 }
2934 }
2935
2916 o->func.get_pixels(o->func.get_pixels_data, obj); 2936 o->func.get_pixels(o->func.get_pixels_data, obj);
2917 if (o->engine_data != pixels) 2937 if (o->engine_data != pixels)
2918 pixels = o->engine_data; 2938 pixels = o->engine_data;
@@ -3152,7 +3172,17 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
3152 idy = ydy; 3172 idy = ydy;
3153 if (dobreak_w) break; 3173 if (dobreak_w) break;
3154 } 3174 }
3155 } 3175 }
3176
3177 // Unset img object
3178 if (img_set)
3179 {
3180 if (obj->layer->evas->engine.func->gl_img_obj_set)
3181 {
3182 obj->layer->evas->engine.func->gl_img_obj_set(output, NULL, 0);
3183 img_set = 0;
3184 }
3185 }
3156 } 3186 }
3157} 3187}
3158 3188
@@ -3371,10 +3401,10 @@ evas_object_image_render_pre(Evas_Object *obj)
3371 y = idy; 3401 y = idy;
3372 h = ((int)(idy + idh)) - y; 3402 h = ((int)(idy + idh)) - y;
3373 3403
3374 r.x = ((rr->x - 1) * w) / o->cur.image.w; 3404 r.x = (rr->x * w) / o->cur.image.w;
3375 r.y = ((rr->y - 1) * h) / o->cur.image.h; 3405 r.y = (rr->y * h) / o->cur.image.h;
3376 r.w = ((rr->w + 2) * w) / o->cur.image.w; 3406 r.w = ((rr->w * w) + (o->cur.image.w * 2) - 1) / o->cur.image.w;
3377 r.h = ((rr->h + 2) * h) / o->cur.image.h; 3407 r.h = ((rr->h * h) + (o->cur.image.h * 2) - 1) / o->cur.image.h;
3378 r.x += obj->cur.geometry.x + x; 3408 r.x += obj->cur.geometry.x + x;
3379 r.y += obj->cur.geometry.y + y; 3409 r.y += obj->cur.geometry.y + y;
3380 RECTS_CLIP_TO_RECT(r.x, r.y, r.w, r.h, 3410 RECTS_CLIP_TO_RECT(r.x, r.y, r.w, r.h,
diff --git a/libraries/evas/src/lib/canvas/evas_object_main.c b/libraries/evas/src/lib/canvas/evas_object_main.c
index 86ab498..81fc858 100644
--- a/libraries/evas/src/lib/canvas/evas_object_main.c
+++ b/libraries/evas/src/lib/canvas/evas_object_main.c
@@ -230,7 +230,7 @@ evas_object_clip_changes_clean(Evas_Object *obj)
230} 230}
231 231
232void 232void
233evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v) 233evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *obj, int is_v, int was_v __UNUSED__)
234{ 234{
235 Eina_Rectangle *r; 235 Eina_Rectangle *r;
236 Evas_Object *clipper; 236 Evas_Object *clipper;
@@ -241,7 +241,6 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *obj, int i
241 241
242 if (obj->smart.smart) goto end; 242 if (obj->smart.smart) goto end;
243 /* FIXME: was_v isn't used... why? */ 243 /* FIXME: was_v isn't used... why? */
244 was_v = 0;
245 if (!obj->clip.clipees) 244 if (!obj->clip.clipees)
246 { 245 {
247 EINA_ARRAY_ITER_NEXT(rects, i, r, it) 246 EINA_ARRAY_ITER_NEXT(rects, i, r, it)
@@ -1042,6 +1041,22 @@ evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
1042 if (g > 255) g = 255; if (g < 0) g = 0; 1041 if (g > 255) g = 255; if (g < 0) g = 0;
1043 if (b > 255) b = 255; if (b < 0) b = 0; 1042 if (b > 255) b = 255; if (b < 0) b = 0;
1044 if (a > 255) a = 255; if (a < 0) a = 0; 1043 if (a > 255) a = 255; if (a < 0) a = 0;
1044 if (r > a)
1045 {
1046 r = a;
1047 ERR("Evas only handle pre multiplied color !");
1048 }
1049 if (g > a)
1050 {
1051 g = a;
1052 ERR("Evas only handle pre multiplied color !");
1053 }
1054 if (b > a)
1055 {
1056 b = a;
1057 ERR("Evas only handle pre multiplied color !");
1058 }
1059
1045 if (evas_object_intercept_call_color_set(obj, r, g, b, a)) return; 1060 if (evas_object_intercept_call_color_set(obj, r, g, b, a)) return;
1046 if (obj->smart.smart) 1061 if (obj->smart.smart)
1047 { 1062 {
diff --git a/libraries/evas/src/lib/canvas/evas_object_textblock.c b/libraries/evas/src/lib/canvas/evas_object_textblock.c
index 568911c..ee07e20 100644
--- a/libraries/evas/src/lib/canvas/evas_object_textblock.c
+++ b/libraries/evas/src/lib/canvas/evas_object_textblock.c
@@ -430,6 +430,7 @@ struct _Evas_Object_Textblock
430{ 430{
431 DATA32 magic; 431 DATA32 magic;
432 Evas_Textblock_Style *style; 432 Evas_Textblock_Style *style;
433 Evas_Textblock_Style *style_user;
433 Evas_Textblock_Cursor *cursor; 434 Evas_Textblock_Cursor *cursor;
434 Eina_List *cursors; 435 Eina_List *cursors;
435 Evas_Object_Textblock_Node_Text *text_nodes; 436 Evas_Object_Textblock_Node_Text *text_nodes;
@@ -4185,11 +4186,27 @@ _layout(const Evas_Object *obj, int w, int h, int *w_ret, int *h_ret)
4185 4186
4186 /* Start of logical layout creation */ 4187 /* Start of logical layout creation */
4187 /* setup default base style */ 4188 /* setup default base style */
4188 if ((c->o->style) && (c->o->style->default_tag))
4189 { 4189 {
4190 c->fmt = _layout_format_push(c, NULL, NULL); 4190 Eina_Bool finalize = EINA_FALSE;
4191 _format_fill(c->obj, c->fmt, c->o->style->default_tag); 4191 if ((c->o->style) && (c->o->style->default_tag))
4192 _format_finalize(c->obj, c->fmt); 4192 {
4193 c->fmt = _layout_format_push(c, NULL, NULL);
4194 _format_fill(c->obj, c->fmt, c->o->style->default_tag);
4195 finalize = EINA_TRUE;
4196 }
4197
4198 if ((c->o->style_user) && (c->o->style_user->default_tag))
4199 {
4200 if (!c->fmt)
4201 {
4202 c->fmt = _layout_format_push(c, NULL, NULL);
4203 }
4204 _format_fill(c->obj, c->fmt, c->o->style_user->default_tag);
4205 finalize = EINA_TRUE;
4206 }
4207
4208 if (finalize)
4209 _format_finalize(c->obj, c->fmt);
4193 } 4210 }
4194 if (!c->fmt) 4211 if (!c->fmt)
4195 { 4212 {
@@ -4485,9 +4502,9 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
4485 { 4502 {
4486 // format MUST be KEY='VALUE'[KEY='VALUE']... 4503 // format MUST be KEY='VALUE'[KEY='VALUE']...
4487 const char *p; 4504 const char *p;
4488 const char *key_start, *key_stop, *val_start, *val_stop; 4505 const char *key_start, *key_stop, *val_start;
4489 4506
4490 key_start = key_stop = val_start = val_stop = NULL; 4507 key_start = key_stop = val_start = NULL;
4491 p = ts->style_text; 4508 p = ts->style_text;
4492 while (*p) 4509 while (*p)
4493 { 4510 {
@@ -4504,19 +4521,54 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
4504 else if (!val_start) 4521 else if (!val_start)
4505 { 4522 {
4506 if (((*p) == '\'') && (*(p + 1))) 4523 if (((*p) == '\'') && (*(p + 1)))
4507 val_start = p + 1; 4524 {
4508 } 4525 val_start = ++p;
4509 else if (!val_stop) 4526 }
4510 {
4511 if (((*p) == '\'') && (p > ts->style_text) && (p[-1] != '\\'))
4512 val_stop = p;
4513 } 4527 }
4514 if ((key_start) && (key_stop) && (val_start) && (val_stop)) 4528 if ((key_start) && (key_stop) && (val_start))
4515 { 4529 {
4516 char *tags, *replaces; 4530 char *tags, *replaces = NULL;
4517 Evas_Object_Style_Tag *tag; 4531 Evas_Object_Style_Tag *tag;
4518 size_t tag_len = key_stop - key_start; 4532 const char *val_stop = NULL;
4519 size_t replace_len = val_stop - val_start; 4533 size_t tag_len;
4534 size_t replace_len;
4535
4536 {
4537 Eina_Strbuf *buf = eina_strbuf_new();
4538 val_stop = val_start;
4539 while(*p)
4540 {
4541 if (*p == '\'')
4542 {
4543 /* Break if we found the tag end */
4544 if (p[-1] != '\\')
4545 {
4546 eina_strbuf_append_length(buf, val_stop,
4547 p - val_stop);
4548 break;
4549 }
4550 else
4551 {
4552 eina_strbuf_append_length(buf, val_stop,
4553 p - val_stop - 1);
4554 eina_strbuf_append_char(buf, '\'');
4555 val_stop = p + 1;
4556 }
4557 }
4558 p++;
4559 }
4560 replaces = eina_strbuf_string_steal(buf);
4561 eina_strbuf_free(buf);
4562 }
4563 /* If we didn't find an end, just aboart. */
4564 if (!*p)
4565 {
4566 if (replaces) free(replaces);
4567 break;
4568 }
4569
4570 tag_len = key_stop - key_start;
4571 replace_len = val_stop - val_start;
4520 4572
4521 tags = malloc(tag_len + 1); 4573 tags = malloc(tag_len + 1);
4522 if (tags) 4574 if (tags)
@@ -4525,12 +4577,6 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
4525 tags[tag_len] = 0; 4577 tags[tag_len] = 0;
4526 } 4578 }
4527 4579
4528 replaces = malloc(replace_len + 1);
4529 if (replaces)
4530 {
4531 memcpy(replaces, val_start, replace_len);
4532 replaces[replace_len] = 0;
4533 }
4534 if ((tags) && (replaces)) 4580 if ((tags) && (replaces))
4535 { 4581 {
4536 if (!strcmp(tags, "DEFAULT")) 4582 if (!strcmp(tags, "DEFAULT"))
@@ -4561,7 +4607,7 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
4561 if (tags) free(tags); 4607 if (tags) free(tags);
4562 if (replaces) free(replaces); 4608 if (replaces) free(replaces);
4563 } 4609 }
4564 key_start = key_stop = val_start = val_stop = NULL; 4610 key_start = key_stop = val_start = NULL;
4565 } 4611 }
4566 p++; 4612 p++;
4567 } 4613 }
@@ -4576,13 +4622,15 @@ evas_textblock_style_get(const Evas_Textblock_Style *ts)
4576} 4622}
4577 4623
4578/* textblock styles */ 4624/* textblock styles */
4579EAPI void 4625
4580evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts) 4626static void
4627_textblock_style_generic_set(Evas_Object *obj, Evas_Textblock_Style *ts,
4628 Evas_Textblock_Style **obj_ts)
4581{ 4629{
4582 TB_HEAD(); 4630 TB_HEAD();
4583 if (ts == o->style) return; 4631 if (ts == *obj_ts) return;
4584 if ((ts) && (ts->delete_me)) return; 4632 if ((ts) && (ts->delete_me)) return;
4585 if (o->style) 4633 if (*obj_ts)
4586 { 4634 {
4587 Evas_Textblock_Style *old_ts; 4635 Evas_Textblock_Style *old_ts;
4588 if (o->markup_text) 4636 if (o->markup_text)
@@ -4591,7 +4639,7 @@ evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
4591 o->markup_text = NULL; 4639 o->markup_text = NULL;
4592 } 4640 }
4593 4641
4594 old_ts = o->style; 4642 old_ts = *obj_ts;
4595 old_ts->objects = eina_list_remove(old_ts->objects, obj); 4643 old_ts->objects = eina_list_remove(old_ts->objects, obj);
4596 if ((old_ts->delete_me) && (!old_ts->objects)) 4644 if ((old_ts->delete_me) && (!old_ts->objects))
4597 evas_textblock_style_free(old_ts); 4645 evas_textblock_style_free(old_ts);
@@ -4600,12 +4648,19 @@ evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
4600 { 4648 {
4601 ts->objects = eina_list_append(ts->objects, obj); 4649 ts->objects = eina_list_append(ts->objects, obj);
4602 } 4650 }
4603 o->style = ts; 4651 *obj_ts = ts;
4604 4652
4605 _evas_textblock_invalidate_all(o); 4653 _evas_textblock_invalidate_all(o);
4606 _evas_textblock_changed(o, obj); 4654 _evas_textblock_changed(o, obj);
4607} 4655}
4608 4656
4657EAPI void
4658evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
4659{
4660 TB_HEAD();
4661 _textblock_style_generic_set(obj, ts, &(o->style));
4662}
4663
4609EAPI const Evas_Textblock_Style * 4664EAPI const Evas_Textblock_Style *
4610evas_object_textblock_style_get(const Evas_Object *obj) 4665evas_object_textblock_style_get(const Evas_Object *obj)
4611{ 4666{
@@ -4614,6 +4669,27 @@ evas_object_textblock_style_get(const Evas_Object *obj)
4614} 4669}
4615 4670
4616EAPI void 4671EAPI void
4672evas_object_textblock_style_user_push(Evas_Object *obj, Evas_Textblock_Style *ts)
4673{
4674 TB_HEAD();
4675 _textblock_style_generic_set(obj, ts, &(o->style_user));
4676}
4677
4678EAPI const Evas_Textblock_Style *
4679evas_object_textblock_style_user_peek(const Evas_Object *obj)
4680{
4681 TB_HEAD_RETURN(NULL);
4682 return o->style_user;
4683}
4684
4685EAPI void
4686evas_object_textblock_style_user_pop(Evas_Object *obj)
4687{
4688 TB_HEAD();
4689 _textblock_style_generic_set(obj, NULL, &(o->style_user));
4690}
4691
4692EAPI void
4617evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch) 4693evas_object_textblock_replace_char_set(Evas_Object *obj, const char *ch)
4618{ 4694{
4619 TB_HEAD(); 4695 TB_HEAD();
@@ -4902,7 +4978,7 @@ evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text)
4902 o->markup_text = NULL; 4978 o->markup_text = NULL;
4903 } 4979 }
4904 _nodes_clear(obj); 4980 _nodes_clear(obj);
4905 if (!o->style) 4981 if (!o->style && !o->style_user)
4906 { 4982 {
4907 if (text != o->markup_text) 4983 if (text != o->markup_text)
4908 { 4984 {
@@ -5244,7 +5320,7 @@ evas_textblock_text_markup_to_utf8(const Evas_Object *obj, const char *text)
5244 const char *escape; 5320 const char *escape;
5245 5321
5246 escape = _escaped_char_get(esc_start, esc_end + 1); 5322 escape = _escaped_char_get(esc_start, esc_end + 1);
5247 eina_strbuf_append(sbuf, escape); 5323 if (escape) eina_strbuf_append(sbuf, escape);
5248 esc_start = esc_end = NULL; 5324 esc_start = esc_end = NULL;
5249 } 5325 }
5250 else if (*p == 0) 5326 else if (*p == 0)
@@ -5650,7 +5726,6 @@ EAPI Eina_Bool
5650evas_textblock_cursor_is_format(const Evas_Textblock_Cursor *cur) 5726evas_textblock_cursor_is_format(const Evas_Textblock_Cursor *cur)
5651{ 5727{
5652 if (!cur || !cur->node) return EINA_FALSE; 5728 if (!cur || !cur->node) return EINA_FALSE;
5653 if (evas_textblock_cursor_format_is_visible_get(cur)) return EINA_TRUE;
5654 return (_evas_textblock_cursor_node_format_at_pos_get(cur)) ? 5729 return (_evas_textblock_cursor_node_format_at_pos_get(cur)) ?
5655 EINA_TRUE : EINA_FALSE; 5730 EINA_TRUE : EINA_FALSE;
5656} 5731}
@@ -5977,9 +6052,9 @@ evas_textblock_cursor_format_prev(Evas_Textblock_Cursor *cur)
5977#else 6052#else
5978 6053
5979#define BREAK_AFTER(i) \ 6054#define BREAK_AFTER(i) \
5980 ((!str[i + 1]) || \ 6055 ((!text[i + 1]) || \
5981 (_is_white(str[i]) && !_is_white(str[i + 1])) || \ 6056 (_is_white(text[i]) && !_is_white(text[i + 1])) || \
5982 (!_is_white(str[i]) && _is_white(str[i + 1]))) 6057 (!_is_white(text[i]) && _is_white(text[i + 1])))
5983 6058
5984#endif 6059#endif
5985 6060
@@ -7241,7 +7316,13 @@ _evas_textblock_node_format_new(Evas_Object_Textblock *o, const char *_format)
7241 } 7316 }
7242 } 7317 }
7243 7318
7244 match = _style_match_tag(o->style, format, format_len, &replace_len); 7319 if (!o->style_user || !(match = _style_match_tag(o->style_user, format,
7320 format_len, &replace_len)))
7321 {
7322 match = _style_match_tag(o->style, format, format_len,
7323 &replace_len);
7324 }
7325
7245 if (match) 7326 if (match)
7246 { 7327 {
7247 if (match[0] != '-') 7328 if (match[0] != '-')
@@ -7633,6 +7714,7 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
7633 } 7714 }
7634 fnode = _evas_textblock_cursor_node_format_at_pos_get(cur1); 7715 fnode = _evas_textblock_cursor_node_format_at_pos_get(cur1);
7635 7716
7717 n1->dirty = n2->dirty = EINA_TRUE;
7636 if (should_merge) 7718 if (should_merge)
7637 { 7719 {
7638 /* We call this function instead of the cursor one because we already 7720 /* We call this function instead of the cursor one because we already
@@ -7646,7 +7728,6 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
7646 evas_textblock_cursor_copy(cur1, o->cursor); 7728 evas_textblock_cursor_copy(cur1, o->cursor);
7647 7729
7648 _evas_textblock_changed(o, cur1->obj); 7730 _evas_textblock_changed(o, cur1->obj);
7649 n1->dirty = n2->dirty = EINA_TRUE;
7650} 7731}
7651 7732
7652 7733
@@ -8022,6 +8103,7 @@ evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur)
8022 8103
8023 if (!cur) return EINA_FALSE; 8104 if (!cur) return EINA_FALSE;
8024 if (!cur->node) return EINA_FALSE; 8105 if (!cur->node) return EINA_FALSE;
8106 if (!evas_textblock_cursor_is_format(cur)) return EINA_FALSE;
8025 text = eina_ustrbuf_string_get(cur->node->unicode); 8107 text = eina_ustrbuf_string_get(cur->node->unicode);
8026 return EVAS_TEXTBLOCK_IS_VISIBLE_FORMAT_CHAR(text[cur->pos]); 8108 return EVAS_TEXTBLOCK_IS_VISIBLE_FORMAT_CHAR(text[cur->pos]);
8027} 8109}
@@ -9016,12 +9098,22 @@ _size_native_calc_line_finalize(const Evas_Object *obj, Eina_List *items,
9016 Eina_List *i; 9098 Eina_List *i;
9017 9099
9018 it = eina_list_data_get(items); 9100 it = eina_list_data_get(items);
9019 /* If there are no text items yet, calc ascent/descent
9020 * according to the current format. */
9021 if (it && (*ascent + *descent == 0))
9022 _layout_format_ascent_descent_adjust(obj, ascent, descent, it->format);
9023
9024 *w = 0; 9101 *w = 0;
9102
9103 if (it)
9104 {
9105 /* If there are no text items yet, calc ascent/descent
9106 * according to the current format. */
9107 if (*ascent + *descent == 0)
9108 _layout_format_ascent_descent_adjust(obj, ascent, descent,
9109 it->format);
9110
9111 /* Add margins. */
9112 if (it->format)
9113 *w = it->format->margin.l + it->format->margin.r;
9114 }
9115
9116
9025 /* Adjust all the item sizes according to the final line size, 9117 /* Adjust all the item sizes according to the final line size,
9026 * and update the x positions of all the items of the line. */ 9118 * and update the x positions of all the items of the line. */
9027 EINA_LIST_FOREACH(items, i, it) 9119 EINA_LIST_FOREACH(items, i, it)
@@ -9226,6 +9318,10 @@ evas_object_textblock_free(Evas_Object *obj)
9226 9318
9227 evas_object_textblock_clear(obj); 9319 evas_object_textblock_clear(obj);
9228 evas_object_textblock_style_set(obj, NULL); 9320 evas_object_textblock_style_set(obj, NULL);
9321 while (evas_object_textblock_style_user_peek(obj))
9322 {
9323 evas_object_textblock_style_user_pop(obj);
9324 }
9229 o = (Evas_Object_Textblock *)(obj->object_data); 9325 o = (Evas_Object_Textblock *)(obj->object_data);
9230 free(o->cursor); 9326 free(o->cursor);
9231 while (o->cursors) 9327 while (o->cursors)
diff --git a/libraries/evas/src/lib/canvas/evas_render.c b/libraries/evas/src/lib/canvas/evas_render.c
index cdedaec..32ce988 100644
--- a/libraries/evas/src/lib/canvas/evas_render.c
+++ b/libraries/evas/src/lib/canvas/evas_render.c
@@ -612,6 +612,8 @@ pending_change(void *data, void *gdata __UNUSED__)
612 obj->changed_move_only = 0; 612 obj->changed_move_only = 0;
613 obj->changed_nomove = 0; 613 obj->changed_nomove = 0;
614 obj->changed_move = 0; 614 obj->changed_move = 0;
615 obj->changed_map = 0;
616 obj->changed_pchange = 0;
615 } 617 }
616 return obj->changed ? EINA_TRUE : EINA_FALSE; 618 return obj->changed ? EINA_TRUE : EINA_FALSE;
617} 619}
@@ -984,6 +986,8 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
984 o2->changed_move_only = 0; 986 o2->changed_move_only = 0;
985 o2->changed_nomove = 0; 987 o2->changed_nomove = 0;
986 o2->changed_move = 0; 988 o2->changed_move = 0;
989 o2->changed_map = 0;
990 o2->changed_pchange = 0;
987 continue; 991 continue;
988 } 992 }
989 if (o2->changed) 993 if (o2->changed)
@@ -994,6 +998,8 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
994 o2->changed_move_only = 0; 998 o2->changed_move_only = 0;
995 o2->changed_nomove = 0; 999 o2->changed_nomove = 0;
996 o2->changed_move = 0; 1000 o2->changed_move = 0;
1001 o2->changed_map = 0;
1002 o2->changed_pchange = 0;
997 break; 1003 break;
998 } 1004 }
999 } 1005 }
@@ -1002,16 +1008,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
1002 obj->changed_move_only = 0; 1008 obj->changed_move_only = 0;
1003 obj->changed_nomove = 0; 1009 obj->changed_nomove = 0;
1004 obj->changed_move = 0; 1010 obj->changed_move = 0;
1011 obj->changed_map = 0;
1012 obj->changed_pchange = 0;
1005 } 1013 }
1006 else 1014 else
1007 { 1015 {
1008 if (obj->changed) 1016 if (obj->changed)
1009 { 1017 {
1010 changed = 1; 1018 if ((obj->changed_pchange) && (obj->changed_map))
1019 changed = 1;
1011 obj->changed = 0; 1020 obj->changed = 0;
1012 obj->changed_move_only = 0; 1021 obj->changed_move_only = 0;
1013 obj->changed_nomove = 0; 1022 obj->changed_nomove = 0;
1014 obj->changed_move = 0; 1023 obj->changed_move = 0;
1024 obj->changed_map = 0;
1025 obj->changed_pchange = 0;
1015 } 1026 }
1016 } 1027 }
1017 1028
@@ -1144,10 +1155,12 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
1144 e->engine.data.context, 1155 e->engine.data.context,
1145 ecx, ecy, ecw, ech); 1156 ecx, ecy, ecw, ech);
1146 if (obj->cur.cache.clip.visible) 1157 if (obj->cur.cache.clip.visible)
1147 obj->layer->evas->engine.func->image_map_draw 1158 {
1148 (e->engine.data.output, e->engine.data.context, surface, 1159 obj->layer->evas->engine.func->image_map_draw
1149 obj->cur.map->surface, obj->cur.map->count, pts, 1160 (e->engine.data.output, e->engine.data.context, surface,
1150 obj->cur.map->smooth, 0); 1161 obj->cur.map->surface, obj->cur.map->count, pts,
1162 obj->cur.map->smooth, 0);
1163 }
1151 // FIXME: needs to cache these maps and 1164 // FIXME: needs to cache these maps and
1152 // keep them only rendering updates 1165 // keep them only rendering updates
1153 // obj->layer->evas->engine.func->image_map_surface_free 1166 // obj->layer->evas->engine.func->image_map_surface_free
@@ -1500,6 +1513,12 @@ evas_render_updates_internal(Evas *e,
1500 off_x = cx - ux; 1513 off_x = cx - ux;
1501 off_y = cy - uy; 1514 off_y = cy - uy;
1502 /* build obscuring objects list (in order from bottom to top) */ 1515 /* build obscuring objects list (in order from bottom to top) */
1516 if (alpha)
1517 {
1518 e->engine.func->context_clip_set(e->engine.data.output,
1519 e->engine.data.context,
1520 ux + off_x, uy + off_y, uw, uh);
1521 }
1503 for (i = 0; i < e->obscuring_objects.count; ++i) 1522 for (i = 0; i < e->obscuring_objects.count; ++i)
1504 { 1523 {
1505 obj = (Evas_Object *)eina_array_data_get 1524 obj = (Evas_Object *)eina_array_data_get
@@ -1515,9 +1534,6 @@ evas_render_updates_internal(Evas *e,
1515 } 1534 }
1516 if (alpha) 1535 if (alpha)
1517 { 1536 {
1518 e->engine.func->context_clip_set(e->engine.data.output,
1519 e->engine.data.context,
1520 ux + off_x, uy + off_y, uw, uh);
1521 e->engine.func->context_color_set(e->engine.data.output, 1537 e->engine.func->context_color_set(e->engine.data.output,
1522 e->engine.data.context, 1538 e->engine.data.context,
1523 0, 0, 0, 0); 1539 0, 0, 0, 0);
@@ -1548,7 +1564,7 @@ evas_render_updates_internal(Evas *e,
1548 (obj->cur.visible) && 1564 (obj->cur.visible) &&
1549 (!obj->delete_me) && 1565 (!obj->delete_me) &&
1550 (obj->cur.cache.clip.visible) && 1566 (obj->cur.cache.clip.visible) &&
1551 // (!obj->smart.smart) && 1567// (!obj->smart.smart) &&
1552 ((obj->cur.color.a > 0 || obj->cur.render_op != EVAS_RENDER_BLEND))) 1568 ((obj->cur.color.a > 0 || obj->cur.render_op != EVAS_RENDER_BLEND)))
1553 { 1569 {
1554 int x, y, w, h; 1570 int x, y, w, h;
@@ -1579,6 +1595,9 @@ evas_render_updates_internal(Evas *e,
1579 else 1595 else
1580 e->engine.func->context_mask_unset(e->engine.data.output, 1596 e->engine.func->context_mask_unset(e->engine.data.output,
1581 e->engine.data.context); 1597 e->engine.data.context);
1598 e->engine.func->context_clip_set(e->engine.data.output,
1599 e->engine.data.context,
1600 x, y, w, h);
1582#if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ 1601#if 1 /* FIXME: this can slow things down... figure out optimum... coverage */
1583 for (j = offset; j < e->temporary_objects.count; ++j) 1602 for (j = offset; j < e->temporary_objects.count; ++j)
1584 { 1603 {
@@ -1589,9 +1608,6 @@ evas_render_updates_internal(Evas *e,
1589 _evas_render_cutout_add(e, obj2, off_x, off_y); 1608 _evas_render_cutout_add(e, obj2, off_x, off_y);
1590 } 1609 }
1591#endif 1610#endif
1592 e->engine.func->context_clip_set(e->engine.data.output,
1593 e->engine.data.context,
1594 x, y, w, h);
1595 clean_them |= evas_render_mapped(e, obj, e->engine.data.context, 1611 clean_them |= evas_render_mapped(e, obj, e->engine.data.context,
1596 surface, off_x, off_y, 0, 1612 surface, off_x, off_y, 0,
1597 cx, cy, cw, ch 1613 cx, cy, cw, ch
@@ -1637,6 +1653,8 @@ evas_render_updates_internal(Evas *e,
1637 obj->changed_move_only = 0; 1653 obj->changed_move_only = 0;
1638 obj->changed_nomove = 0; 1654 obj->changed_nomove = 0;
1639 obj->changed_move = 0; 1655 obj->changed_move = 0;
1656 obj->changed_map = 0;
1657 obj->changed_pchange = 0;
1640 } 1658 }
1641 else if ((obj->cur.map != obj->prev.map) || 1659 else if ((obj->cur.map != obj->prev.map) ||
1642 (obj->cur.usemap != obj->prev.usemap)) 1660 (obj->cur.usemap != obj->prev.usemap))
@@ -1648,6 +1666,8 @@ evas_render_updates_internal(Evas *e,
1648 obj->changed_move_only = 0; 1666 obj->changed_move_only = 0;
1649 obj->changed_nomove = 0; 1667 obj->changed_nomove = 0;
1650 obj->changed_move = 0; 1668 obj->changed_move = 0;
1669 obj->changed_map = 0;
1670 obj->changed_pchange = 0;
1651 } 1671 }
1652 /* moved to other pre-process phase 1 1672 /* moved to other pre-process phase 1
1653 if (obj->delete_me == 2) 1673 if (obj->delete_me == 2)
@@ -1684,6 +1704,7 @@ evas_render_updates_internal(Evas *e,
1684 e->framespace.changed = 0; 1704 e->framespace.changed = 0;
1685 e->invalidate = 0; 1705 e->invalidate = 0;
1686 1706
1707 // always clean... lots of mem waste!
1687 /* If their are some object to restack or some object to delete, 1708 /* If their are some object to restack or some object to delete,
1688 * it's useless to keep the render object list around. */ 1709 * it's useless to keep the render object list around. */
1689 if (clean_them) 1710 if (clean_them)
@@ -1693,6 +1714,17 @@ evas_render_updates_internal(Evas *e,
1693 eina_array_clean(&e->restack_objects); 1714 eina_array_clean(&e->restack_objects);
1694 eina_array_clean(&e->delete_objects); 1715 eina_array_clean(&e->delete_objects);
1695 eina_array_clean(&e->obscuring_objects); 1716 eina_array_clean(&e->obscuring_objects);
1717 eina_array_clean(&e->temporary_objects);
1718 eina_array_clean(&e->clip_changes);
1719/* we should flush here and have a mempool system for this
1720 eina_array_flush(&e->active_objects);
1721 eina_array_flush(&e->render_objects);
1722 eina_array_flush(&e->restack_objects);
1723 eina_array_flush(&e->delete_objects);
1724 eina_array_flush(&e->obscuring_objects);
1725 eina_array_flush(&e->temporary_objects);
1726 eina_array_flush(&e->clip_changes);
1727 */
1696 e->invalidate = 1; 1728 e->invalidate = 1;
1697 } 1729 }
1698 1730
@@ -1768,11 +1800,14 @@ evas_render_idle_flush(Evas *e)
1768 (e->engine.data.output)) 1800 (e->engine.data.output))
1769 e->engine.func->output_idle_flush(e->engine.data.output); 1801 e->engine.func->output_idle_flush(e->engine.data.output);
1770 1802
1771 eina_array_flush(&e->delete_objects);
1772 eina_array_flush(&e->active_objects); 1803 eina_array_flush(&e->active_objects);
1773 eina_array_flush(&e->restack_objects);
1774 eina_array_flush(&e->render_objects); 1804 eina_array_flush(&e->render_objects);
1805 eina_array_flush(&e->restack_objects);
1806 eina_array_flush(&e->delete_objects);
1807 eina_array_flush(&e->obscuring_objects);
1808 eina_array_flush(&e->temporary_objects);
1775 eina_array_flush(&e->clip_changes); 1809 eina_array_flush(&e->clip_changes);
1810 eina_array_flush(&e->temporary_objects);
1776 1811
1777 e->invalidate = 1; 1812 e->invalidate = 1;
1778} 1813}
diff --git a/libraries/evas/src/lib/cserve/Makefile.in b/libraries/evas/src/lib/cserve/Makefile.in
index 7599ca2..caff4d6 100644
--- a/libraries/evas/src/lib/cserve/Makefile.in
+++ b/libraries/evas/src/lib/cserve/Makefile.in
@@ -148,6 +148,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
148EVIL_CFLAGS = @EVIL_CFLAGS@ 148EVIL_CFLAGS = @EVIL_CFLAGS@
149EVIL_LIBS = @EVIL_LIBS@ 149EVIL_LIBS = @EVIL_LIBS@
150EXEEXT = @EXEEXT@ 150EXEEXT = @EXEEXT@
151EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
152EXOTIC_LIBS = @EXOTIC_LIBS@
151FGREP = @FGREP@ 153FGREP = @FGREP@
152FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 154FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
153FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 155FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -198,6 +200,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
198PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 200PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
199PIXMAN_LIBS = @PIXMAN_LIBS@ 201PIXMAN_LIBS = @PIXMAN_LIBS@
200PKG_CONFIG = @PKG_CONFIG@ 202PKG_CONFIG = @PKG_CONFIG@
203PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
204PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
201PNG_CFLAGS = @PNG_CFLAGS@ 205PNG_CFLAGS = @PNG_CFLAGS@
202PNG_LIBS = @PNG_LIBS@ 206PNG_LIBS = @PNG_LIBS@
203RANLIB = @RANLIB@ 207RANLIB = @RANLIB@
@@ -216,8 +220,6 @@ VERSION = @VERSION@
216VMAJ = @VMAJ@ 220VMAJ = @VMAJ@
217WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 221WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
218WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 222WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
219WIN32_CFLAGS = @WIN32_CFLAGS@
220WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
221XCB_CFLAGS = @XCB_CFLAGS@ 223XCB_CFLAGS = @XCB_CFLAGS@
222XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 224XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
223XCB_GL_LIBS = @XCB_GL_LIBS@ 225XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -291,8 +293,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
291evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 293evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
292evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 294evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
293evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 295evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
294evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
295evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
296evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 296evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
297evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 297evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
298evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 298evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/Makefile.in b/libraries/evas/src/lib/engines/Makefile.in
index 4c3c1da..b5cf292 100644
--- a/libraries/evas/src/lib/engines/Makefile.in
+++ b/libraries/evas/src/lib/engines/Makefile.in
@@ -158,6 +158,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
158EVIL_CFLAGS = @EVIL_CFLAGS@ 158EVIL_CFLAGS = @EVIL_CFLAGS@
159EVIL_LIBS = @EVIL_LIBS@ 159EVIL_LIBS = @EVIL_LIBS@
160EXEEXT = @EXEEXT@ 160EXEEXT = @EXEEXT@
161EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
162EXOTIC_LIBS = @EXOTIC_LIBS@
161FGREP = @FGREP@ 163FGREP = @FGREP@
162FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 164FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
163FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 165FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -208,6 +210,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
208PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 210PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
209PIXMAN_LIBS = @PIXMAN_LIBS@ 211PIXMAN_LIBS = @PIXMAN_LIBS@
210PKG_CONFIG = @PKG_CONFIG@ 212PKG_CONFIG = @PKG_CONFIG@
213PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
214PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
211PNG_CFLAGS = @PNG_CFLAGS@ 215PNG_CFLAGS = @PNG_CFLAGS@
212PNG_LIBS = @PNG_LIBS@ 216PNG_LIBS = @PNG_LIBS@
213RANLIB = @RANLIB@ 217RANLIB = @RANLIB@
@@ -226,8 +230,6 @@ VERSION = @VERSION@
226VMAJ = @VMAJ@ 230VMAJ = @VMAJ@
227WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 231WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
228WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 232WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
229WIN32_CFLAGS = @WIN32_CFLAGS@
230WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
231XCB_CFLAGS = @XCB_CFLAGS@ 233XCB_CFLAGS = @XCB_CFLAGS@
232XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 234XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
233XCB_GL_LIBS = @XCB_GL_LIBS@ 235XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -301,8 +303,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
301evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 303evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
302evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 304evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
303evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 305evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
304evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
305evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
306evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 306evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
307evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 307evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
308evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 308evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common/Makefile.am b/libraries/evas/src/lib/engines/common/Makefile.am
index 9c9918d..0937394 100644
--- a/libraries/evas/src/lib/engines/common/Makefile.am
+++ b/libraries/evas/src/lib/engines/common/Makefile.am
@@ -13,7 +13,7 @@ AM_CPPFLAGS = -I. \
13 @FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \ 13 @FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \
14 @PIXMAN_CFLAGS@ \ 14 @PIXMAN_CFLAGS@ \
15 @EET_CFLAGS@ @pthread_cflags@ \ 15 @EET_CFLAGS@ @pthread_cflags@ \
16 @WIN32_CFLAGS@ @EINA_CFLAGS@ \ 16 @EINA_CFLAGS@ \
17 @FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \ 17 @FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \
18 @PIXMAN_CFLAGS@ 18 @PIXMAN_CFLAGS@
19 19
diff --git a/libraries/evas/src/lib/engines/common/Makefile.in b/libraries/evas/src/lib/engines/common/Makefile.in
index 7d1f20a..08526cd 100644
--- a/libraries/evas/src/lib/engines/common/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/Makefile.in
@@ -202,6 +202,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
202EVIL_CFLAGS = @EVIL_CFLAGS@ 202EVIL_CFLAGS = @EVIL_CFLAGS@
203EVIL_LIBS = @EVIL_LIBS@ 203EVIL_LIBS = @EVIL_LIBS@
204EXEEXT = @EXEEXT@ 204EXEEXT = @EXEEXT@
205EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
206EXOTIC_LIBS = @EXOTIC_LIBS@
205FGREP = @FGREP@ 207FGREP = @FGREP@
206FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 208FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
207FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 209FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -252,6 +254,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
252PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 254PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
253PIXMAN_LIBS = @PIXMAN_LIBS@ 255PIXMAN_LIBS = @PIXMAN_LIBS@
254PKG_CONFIG = @PKG_CONFIG@ 256PKG_CONFIG = @PKG_CONFIG@
257PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
258PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
255PNG_CFLAGS = @PNG_CFLAGS@ 259PNG_CFLAGS = @PNG_CFLAGS@
256PNG_LIBS = @PNG_LIBS@ 260PNG_LIBS = @PNG_LIBS@
257RANLIB = @RANLIB@ 261RANLIB = @RANLIB@
@@ -270,8 +274,6 @@ VERSION = @VERSION@
270VMAJ = @VMAJ@ 274VMAJ = @VMAJ@
271WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 275WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
272WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 276WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
273WIN32_CFLAGS = @WIN32_CFLAGS@
274WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
275XCB_CFLAGS = @XCB_CFLAGS@ 277XCB_CFLAGS = @XCB_CFLAGS@
276XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 278XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
277XCB_GL_LIBS = @XCB_GL_LIBS@ 279XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -345,8 +347,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
345evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 347evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
346evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 348evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
347evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 349evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
348evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
349evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
350evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 350evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
351evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 351evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
352evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 352evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
@@ -441,7 +441,7 @@ AM_CPPFLAGS = -I. \
441 @FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \ 441 @FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \
442 @PIXMAN_CFLAGS@ \ 442 @PIXMAN_CFLAGS@ \
443 @EET_CFLAGS@ @pthread_cflags@ \ 443 @EET_CFLAGS@ @pthread_cflags@ \
444 @WIN32_CFLAGS@ @EINA_CFLAGS@ \ 444 @EINA_CFLAGS@ \
445 @FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \ 445 @FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \
446 @PIXMAN_CFLAGS@ 446 @PIXMAN_CFLAGS@
447 447
diff --git a/libraries/evas/src/lib/engines/common/evas_draw_main.c b/libraries/evas/src/lib/engines/common/evas_draw_main.c
index def19a8..d08e788 100644
--- a/libraries/evas/src/lib/engines/common/evas_draw_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_draw_main.c
@@ -559,7 +559,7 @@ evas_common_draw_context_cutout_split(Cutout_Rects* res, int idx, Cutout_Rect *s
559EAPI Cutout_Rects* 559EAPI Cutout_Rects*
560evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc) 560evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc)
561{ 561{
562 Cutout_Rects* res; 562 Cutout_Rects* res, *res2;
563 int i; 563 int i;
564 int j; 564 int j;
565 565
@@ -583,6 +583,69 @@ evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc)
583 active--; 583 active--;
584 } 584 }
585 } 585 }
586 /* merge rects */
587#define RI res->rects[i]
588#define RJ res->rects[j]
589 if (res->active > 1)
590 {
591 int found = 1;
592
593 while (found)
594 {
595 found = 0;
596 for (i = 0; i < res->active; i++)
597 {
598 for (j = i + 1; j < res->active; j++)
599 {
600 /* skip empty rects we are removing */
601 if (RJ.w == 0) continue;
602 /* check if its same width, immediately above or below */
603 if ((RJ.w == RI.w) && (RJ.x == RI.x))
604 {
605 if ((RJ.y + RJ.h) == RI.y) /* above */
606 {
607 RI.y = RJ.y;
608 RI.h += RJ.h;
609 RJ.w = 0;
610 found = 1;
611 }
612 else if ((RI.y + RI.h) == RJ.y) /* below */
613 {
614 RI.h += RJ.h;
615 RJ.w = 0;
616 found = 1;
617 }
618 }
619 /* check if its same height, immediately left or right */
620 else if ((RJ.h == RI.h) && (RJ.y == RI.y))
621 {
622 if ((RJ.x + RJ.w) == RI.x) /* left */
623 {
624 RI.x = RJ.x;
625 RI.w += RJ.w;
626 RJ.w = 0;
627 found = 1;
628 }
629 else if ((RI.x + RI.w) == RJ.x) /* right */
630 {
631 RI.w += RJ.w;
632 RJ.w = 0;
633 found = 1;
634 }
635 }
636 }
637 }
638 }
639 res2 = evas_common_draw_context_cutouts_new();
640 for (i = 0; i < res->active; i++)
641 {
642 if (RI.w == 0) continue;
643 evas_common_draw_context_cutouts_add(res2, RI.x, RI.y, RI.w, RI.h);
644 }
645 free(res->rects);
646 free(res);
647 return res2;
648 }
586 return res; 649 return res;
587} 650}
588 651
diff --git a/libraries/evas/src/lib/engines/common/evas_font_load.c b/libraries/evas/src/lib/engines/common/evas_font_load.c
index 3fc4521..abba9e3 100644
--- a/libraries/evas/src/lib/engines/common/evas_font_load.c
+++ b/libraries/evas/src/lib/engines/common/evas_font_load.c
@@ -71,9 +71,7 @@ _evas_common_font_int_free(RGBA_Font_Int *fi)
71 _evas_common_font_int_clear(fi); 71 _evas_common_font_int_clear(fi);
72 eina_hash_free(fi->kerning); 72 eina_hash_free(fi->kerning);
73 73
74#ifdef HAVE_PTHREAD 74 LKD(fi->ft_mutex);
75 pthread_mutex_destroy(&fi->ft_mutex);
76#endif
77#ifdef USE_HARFBUZZ 75#ifdef USE_HARFBUZZ
78 hb_font_destroy(fi->ft.hb_font); 76 hb_font_destroy(fi->ft.hb_font);
79#endif 77#endif
@@ -301,9 +299,7 @@ _evas_common_font_int_cache_init(RGBA_Font_Int *fi)
301 EINA_KEY_CMP(_evas_common_font_double_int_cmp), 299 EINA_KEY_CMP(_evas_common_font_double_int_cmp),
302 EINA_KEY_HASH(_evas_common_font_double_int_hash), 300 EINA_KEY_HASH(_evas_common_font_double_int_hash),
303 free, 3); 301 free, 3);
304#ifdef HAVE_PTHREAD 302 LKI(fi->ft_mutex);
305 pthread_mutex_init(&fi->ft_mutex, NULL);
306#endif
307} 303}
308 304
309EAPI RGBA_Font_Int * 305EAPI RGBA_Font_Int *
diff --git a/libraries/evas/src/lib/engines/common/evas_image_main.c b/libraries/evas/src/lib/engines/common/evas_image_main.c
index d2f8c0b..9c233b3 100644
--- a/libraries/evas/src/lib/engines/common/evas_image_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_image_main.c
@@ -16,6 +16,8 @@
16# include <memcheck.h> 16# include <memcheck.h>
17#endif 17#endif
18 18
19//#define SURFDBG 1
20
19static Evas_Cache_Image * eci = NULL; 21static Evas_Cache_Image * eci = NULL;
20static int reference = 0; 22static int reference = 0;
21 23
@@ -212,6 +214,30 @@ evas_common_rgba_image_free(Image_Entry *ie)
212 _evas_common_rgba_image_delete(ie); 214 _evas_common_rgba_image_delete(ie);
213} 215}
214 216
217#ifdef SURFDBG
218static Eina_List *surfs = NULL;
219
220static void
221surf_debug(void)
222{
223 Eina_List *l;
224 Image_Entry *ie;
225 RGBA_Image *im;
226 int i = 0;
227
228 printf("----SURFS----\n");
229 EINA_LIST_FOREACH(surfs, l, ie)
230 {
231 im = ie;
232 printf("%i - %p - %ix%i [%s][%s]\n",
233 i, im->image.data, ie->allocated.w, ie->allocated.h,
234 ie->file, ie->key
235 );
236 i++;
237 }
238}
239#endif
240
215EAPI void 241EAPI void
216evas_common_rgba_image_unload(Image_Entry *ie) 242evas_common_rgba_image_unload(Image_Entry *ie)
217{ 243{
@@ -252,7 +278,12 @@ evas_common_rgba_image_unload(Image_Entry *ie)
252#endif 278#endif
253 279
254 if (im->image.data && !im->image.no_free) 280 if (im->image.data && !im->image.no_free)
255 free(im->image.data); 281 {
282 free(im->image.data);
283#ifdef SURFDBG
284 surfs = eina_list_remove(surfs, ie);
285#endif
286 }
256 im->image.data = NULL; 287 im->image.data = NULL;
257 ie->allocated.w = 0; 288 ie->allocated.w = 0;
258 ie->allocated.h = 0; 289 ie->allocated.h = 0;
@@ -260,6 +291,9 @@ evas_common_rgba_image_unload(Image_Entry *ie)
260#ifdef BUILD_ASYNC_PRELOAD 291#ifdef BUILD_ASYNC_PRELOAD
261 ie->flags.preload_done = 0; 292 ie->flags.preload_done = 0;
262#endif 293#endif
294#ifdef SURFDBG
295 surf_debug();
296#endif
263} 297}
264 298
265void 299void
@@ -318,10 +352,20 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned
318 else 352 else
319 siz = w * h * sizeof(DATA32); 353 siz = w * h * sizeof(DATA32);
320 354
321 if (im->image.data) free(im->image.data); 355 if (im->image.data)
356 {
357 free(im->image.data);
358#ifdef SURFDBG
359 surfs = eina_list_remove(surfs, ie);
360#endif
361 }
322 im->image.data = malloc(siz); 362 im->image.data = malloc(siz);
323 if (!im->image.data) return -1; 363 if (!im->image.data) return -1;
324 364 ie->allocated.w = w;
365 ie->allocated.h = h;
366#ifdef SURFDBG
367 surfs = eina_list_append(surfs, ie);
368#endif
325#ifdef HAVE_VALGRIND 369#ifdef HAVE_VALGRIND
326# ifdef VALGRIND_MAKE_READABLE 370# ifdef VALGRIND_MAKE_READABLE
327 VALGRIND_MAKE_READABLE(im->image.data, siz); 371 VALGRIND_MAKE_READABLE(im->image.data, siz);
@@ -332,7 +376,9 @@ _evas_common_rgba_image_surface_alloc(Image_Entry *ie, unsigned int w, unsigned
332# endif 376# endif
333#endif 377#endif
334 _evas_common_rgba_image_post_surface(ie); 378 _evas_common_rgba_image_post_surface(ie);
335 379#ifdef SURFDBG
380 surf_debug();
381#endif
336 return 0; 382 return 0;
337} 383}
338 384
@@ -366,7 +412,12 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie)
366 im->cs.data = NULL; 412 im->cs.data = NULL;
367 413
368 if (im->image.data && !im->image.no_free) 414 if (im->image.data && !im->image.no_free)
369 free(im->image.data); 415 {
416 free(im->image.data);
417#ifdef SURFDBG
418 surfs = eina_list_remove(surfs, ie);
419#endif
420 }
370#ifdef EVAS_CSERVE 421#ifdef EVAS_CSERVE
371 else if (ie->data1) 422 else if (ie->data1)
372 evas_cserve_image_free(ie); 423 evas_cserve_image_free(ie);
@@ -380,6 +431,9 @@ _evas_common_rgba_image_surface_delete(Image_Entry *ie)
380#endif 431#endif
381 ie->flags.loaded = 0; 432 ie->flags.loaded = 0;
382 evas_common_rgba_image_scalecache_dirty(&im->cache_entry); 433 evas_common_rgba_image_scalecache_dirty(&im->cache_entry);
434#ifdef SURFDBG
435 surf_debug();
436#endif
383} 437}
384 438
385static void 439static void
@@ -597,7 +651,15 @@ evas_common_image_colorspace_normalize(RGBA_Image *im)
597#ifdef EVAS_CSERVE 651#ifdef EVAS_CSERVE
598 if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry); 652 if (((Image_Entry *)im)->data1) evas_cserve_image_free(&im->cache_entry);
599#endif 653#endif
600 if (!im->image.no_free) free(im->image.data); 654 if (!im->image.no_free)
655 {
656 free(im->image.data);
657#ifdef SURFDBG
658 surfs = eina_list_remove(surfs, im);
659#endif
660 ((Image_Entry *)im)->allocated.w = 0;
661 ((Image_Entry *)im)->allocated.h = 0;
662 }
601 im->image.data = im->cs.data; 663 im->image.data = im->cs.data;
602 im->cs.no_free = im->image.no_free; 664 im->cs.no_free = im->image.no_free;
603 } 665 }
@@ -634,6 +696,9 @@ evas_common_image_colorspace_normalize(RGBA_Image *im)
634 break; 696 break;
635 } 697 }
636 im->cs.dirty = 0; 698 im->cs.dirty = 0;
699#ifdef SURFDBG
700 surf_debug();
701#endif
637} 702}
638 703
639EAPI void 704EAPI void
diff --git a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in
index 78e893d..61d3479 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_add/Makefile.in
@@ -116,6 +116,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
116EVIL_CFLAGS = @EVIL_CFLAGS@ 116EVIL_CFLAGS = @EVIL_CFLAGS@
117EVIL_LIBS = @EVIL_LIBS@ 117EVIL_LIBS = @EVIL_LIBS@
118EXEEXT = @EXEEXT@ 118EXEEXT = @EXEEXT@
119EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
120EXOTIC_LIBS = @EXOTIC_LIBS@
119FGREP = @FGREP@ 121FGREP = @FGREP@
120FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 122FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
121FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 123FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -166,6 +168,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 168PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 169PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 170PKG_CONFIG = @PKG_CONFIG@
171PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
172PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
169PNG_CFLAGS = @PNG_CFLAGS@ 173PNG_CFLAGS = @PNG_CFLAGS@
170PNG_LIBS = @PNG_LIBS@ 174PNG_LIBS = @PNG_LIBS@
171RANLIB = @RANLIB@ 175RANLIB = @RANLIB@
@@ -184,8 +188,6 @@ VERSION = @VERSION@
184VMAJ = @VMAJ@ 188VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 189WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 190WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 191XCB_CFLAGS = @XCB_CFLAGS@
190XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 192XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
191XCB_GL_LIBS = @XCB_GL_LIBS@ 193XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -259,8 +261,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
259evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 261evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
260evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 262evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
261evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 263evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
262evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
263evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am
index 84add38..77435c4 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am
+++ b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.am
@@ -40,11 +40,7 @@ libevas_engine_common_op_blend_master_sse3_la_CFLAGS = \
40@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \ 40@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \
41@PIXMAN_CFLAGS@ \ 41@PIXMAN_CFLAGS@ \
42@EET_CFLAGS@ @pthread_cflags@ \ 42@EET_CFLAGS@ @pthread_cflags@ \
43@WIN32_CFLAGS@ @EINA_CFLAGS@ \ 43@EINA_CFLAGS@ \
44@FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \ 44@FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \
45@PIXMAN_CFLAGS@ \ 45@PIXMAN_CFLAGS@ \
46@EVAS_SSE3_CFLAGS@ 46@EVAS_SSE3_CFLAGS@
47
48libevas_engine_common_op_blend_master_sse3_la_DEPENENCIES = \
49$(top_builddir)/config.h
50
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in
index e00dac8..016b49c 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_blend/Makefile.in
@@ -153,6 +153,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
153EVIL_CFLAGS = @EVIL_CFLAGS@ 153EVIL_CFLAGS = @EVIL_CFLAGS@
154EVIL_LIBS = @EVIL_LIBS@ 154EVIL_LIBS = @EVIL_LIBS@
155EXEEXT = @EXEEXT@ 155EXEEXT = @EXEEXT@
156EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
157EXOTIC_LIBS = @EXOTIC_LIBS@
156FGREP = @FGREP@ 158FGREP = @FGREP@
157FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 159FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
158FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 160FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -203,6 +205,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
203PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 205PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
204PIXMAN_LIBS = @PIXMAN_LIBS@ 206PIXMAN_LIBS = @PIXMAN_LIBS@
205PKG_CONFIG = @PKG_CONFIG@ 207PKG_CONFIG = @PKG_CONFIG@
208PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
209PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
206PNG_CFLAGS = @PNG_CFLAGS@ 210PNG_CFLAGS = @PNG_CFLAGS@
207PNG_LIBS = @PNG_LIBS@ 211PNG_LIBS = @PNG_LIBS@
208RANLIB = @RANLIB@ 212RANLIB = @RANLIB@
@@ -221,8 +225,6 @@ VERSION = @VERSION@
221VMAJ = @VMAJ@ 225VMAJ = @VMAJ@
222WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 226WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
223WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 227WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
224WIN32_CFLAGS = @WIN32_CFLAGS@
225WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
226XCB_CFLAGS = @XCB_CFLAGS@ 228XCB_CFLAGS = @XCB_CFLAGS@
227XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 229XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
228XCB_GL_LIBS = @XCB_GL_LIBS@ 230XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -296,8 +298,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
296evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 298evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
297evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 299evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
298evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 300evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
299evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
300evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
301evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 301evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
302evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 302evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
303evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 303evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
@@ -420,14 +420,11 @@ libevas_engine_common_op_blend_master_sse3_la_CFLAGS = \
420@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \ 420@FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \
421@PIXMAN_CFLAGS@ \ 421@PIXMAN_CFLAGS@ \
422@EET_CFLAGS@ @pthread_cflags@ \ 422@EET_CFLAGS@ @pthread_cflags@ \
423@WIN32_CFLAGS@ @EINA_CFLAGS@ \ 423@EINA_CFLAGS@ \
424@FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \ 424@FRIBIDI_CFLAGS@ @HARFBUZZ_CFLAGS@ \
425@PIXMAN_CFLAGS@ \ 425@PIXMAN_CFLAGS@ \
426@EVAS_SSE3_CFLAGS@ 426@EVAS_SSE3_CFLAGS@
427 427
428libevas_engine_common_op_blend_master_sse3_la_DEPENENCIES = \
429$(top_builddir)/config.h
430
431all: all-am 428all: all-am
432 429
433.SUFFIXES: 430.SUFFIXES:
diff --git a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in
index 40536c0..687f34d 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_copy/Makefile.in
@@ -116,6 +116,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
116EVIL_CFLAGS = @EVIL_CFLAGS@ 116EVIL_CFLAGS = @EVIL_CFLAGS@
117EVIL_LIBS = @EVIL_LIBS@ 117EVIL_LIBS = @EVIL_LIBS@
118EXEEXT = @EXEEXT@ 118EXEEXT = @EXEEXT@
119EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
120EXOTIC_LIBS = @EXOTIC_LIBS@
119FGREP = @FGREP@ 121FGREP = @FGREP@
120FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 122FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
121FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 123FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -166,6 +168,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 168PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 169PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 170PKG_CONFIG = @PKG_CONFIG@
171PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
172PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
169PNG_CFLAGS = @PNG_CFLAGS@ 173PNG_CFLAGS = @PNG_CFLAGS@
170PNG_LIBS = @PNG_LIBS@ 174PNG_LIBS = @PNG_LIBS@
171RANLIB = @RANLIB@ 175RANLIB = @RANLIB@
@@ -184,8 +188,6 @@ VERSION = @VERSION@
184VMAJ = @VMAJ@ 188VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 189WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 190WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 191XCB_CFLAGS = @XCB_CFLAGS@
190XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 192XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
191XCB_GL_LIBS = @XCB_GL_LIBS@ 193XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -259,8 +261,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
259evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 261evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
260evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 262evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
261evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 263evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
262evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
263evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in
index d5764b1..00b536a 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_mask/Makefile.in
@@ -116,6 +116,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
116EVIL_CFLAGS = @EVIL_CFLAGS@ 116EVIL_CFLAGS = @EVIL_CFLAGS@
117EVIL_LIBS = @EVIL_LIBS@ 117EVIL_LIBS = @EVIL_LIBS@
118EXEEXT = @EXEEXT@ 118EXEEXT = @EXEEXT@
119EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
120EXOTIC_LIBS = @EXOTIC_LIBS@
119FGREP = @FGREP@ 121FGREP = @FGREP@
120FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 122FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
121FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 123FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -166,6 +168,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 168PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 169PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 170PKG_CONFIG = @PKG_CONFIG@
171PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
172PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
169PNG_CFLAGS = @PNG_CFLAGS@ 173PNG_CFLAGS = @PNG_CFLAGS@
170PNG_LIBS = @PNG_LIBS@ 174PNG_LIBS = @PNG_LIBS@
171RANLIB = @RANLIB@ 175RANLIB = @RANLIB@
@@ -184,8 +188,6 @@ VERSION = @VERSION@
184VMAJ = @VMAJ@ 188VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 189WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 190WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 191XCB_CFLAGS = @XCB_CFLAGS@
190XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 192XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
191XCB_GL_LIBS = @XCB_GL_LIBS@ 193XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -259,8 +261,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
259evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 261evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
260evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 262evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
261evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 263evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
262evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
263evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in
index d5452fe..849983e 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_mul/Makefile.in
@@ -116,6 +116,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
116EVIL_CFLAGS = @EVIL_CFLAGS@ 116EVIL_CFLAGS = @EVIL_CFLAGS@
117EVIL_LIBS = @EVIL_LIBS@ 117EVIL_LIBS = @EVIL_LIBS@
118EXEEXT = @EXEEXT@ 118EXEEXT = @EXEEXT@
119EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
120EXOTIC_LIBS = @EXOTIC_LIBS@
119FGREP = @FGREP@ 121FGREP = @FGREP@
120FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 122FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
121FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 123FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -166,6 +168,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 168PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 169PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 170PKG_CONFIG = @PKG_CONFIG@
171PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
172PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
169PNG_CFLAGS = @PNG_CFLAGS@ 173PNG_CFLAGS = @PNG_CFLAGS@
170PNG_LIBS = @PNG_LIBS@ 174PNG_LIBS = @PNG_LIBS@
171RANLIB = @RANLIB@ 175RANLIB = @RANLIB@
@@ -184,8 +188,6 @@ VERSION = @VERSION@
184VMAJ = @VMAJ@ 188VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 189WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 190WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 191XCB_CFLAGS = @XCB_CFLAGS@
190XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 192XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
191XCB_GL_LIBS = @XCB_GL_LIBS@ 193XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -259,8 +261,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
259evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 261evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
260evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 262evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
261evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 263evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
262evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
263evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in
index 4b93b1b..885465a 100644
--- a/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in
+++ b/libraries/evas/src/lib/engines/common/evas_op_sub/Makefile.in
@@ -116,6 +116,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
116EVIL_CFLAGS = @EVIL_CFLAGS@ 116EVIL_CFLAGS = @EVIL_CFLAGS@
117EVIL_LIBS = @EVIL_LIBS@ 117EVIL_LIBS = @EVIL_LIBS@
118EXEEXT = @EXEEXT@ 118EXEEXT = @EXEEXT@
119EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
120EXOTIC_LIBS = @EXOTIC_LIBS@
119FGREP = @FGREP@ 121FGREP = @FGREP@
120FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 122FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
121FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 123FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -166,6 +168,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 168PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 169PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 170PKG_CONFIG = @PKG_CONFIG@
171PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
172PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
169PNG_CFLAGS = @PNG_CFLAGS@ 173PNG_CFLAGS = @PNG_CFLAGS@
170PNG_LIBS = @PNG_LIBS@ 174PNG_LIBS = @PNG_LIBS@
171RANLIB = @RANLIB@ 175RANLIB = @RANLIB@
@@ -184,8 +188,6 @@ VERSION = @VERSION@
184VMAJ = @VMAJ@ 188VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 189WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 190WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 191XCB_CFLAGS = @XCB_CFLAGS@
190XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 192XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
191XCB_GL_LIBS = @XCB_GL_LIBS@ 193XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -259,8 +261,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
259evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 261evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
260evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 262evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
261evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 263evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
262evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
263evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common/evas_polygon_main.c b/libraries/evas/src/lib/engines/common/evas_polygon_main.c
index ea0bf13..6840d60 100644
--- a/libraries/evas/src/lib/engines/common/evas_polygon_main.c
+++ b/libraries/evas/src/lib/engines/common/evas_polygon_main.c
@@ -133,7 +133,7 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po
133 int num_active_edges; 133 int num_active_edges;
134 int n; 134 int n;
135 int i, j, k; 135 int i, j, k;
136 int y0, y1, yi; 136 int yy0, yy1, yi;
137 int ext_x, ext_y, ext_w, ext_h; 137 int ext_x, ext_y, ext_w, ext_h;
138 int *sorted_index; 138 int *sorted_index;
139 139
@@ -211,14 +211,14 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po
211 k++; 211 k++;
212 } 212 }
213 213
214 y0 = MAX(ext_y, ceil(point[sorted_index[0]].y - 0.5)); 214 yy0 = MAX(ext_y, ceil(point[sorted_index[0]].y - 0.5));
215 y1 = MIN(ext_y + ext_h - 1, floor(point[sorted_index[n - 1]].y - 0.5)); 215 yy1 = MIN(ext_y + ext_h - 1, floor(point[sorted_index[n - 1]].y - 0.5));
216 216
217 k = 0; 217 k = 0;
218 num_active_edges = 0; 218 num_active_edges = 0;
219 spans = NULL; 219 spans = NULL;
220 220
221 for (yi = y0; yi <= y1; yi++) 221 for (yi = yy0; yi <= yy1; yi++)
222 { 222 {
223 for (; (k < n) && (point[sorted_index[k]].y <= ((double)yi + 0.5)); k++) 223 for (; (k < n) && (point[sorted_index[k]].y <= ((double)yi + 0.5)); k++)
224 { 224 {
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_sample.c b/libraries/evas/src/lib/engines/common/evas_scale_sample.c
index a8951b8..c721c5e 100644
--- a/libraries/evas/src/lib/engines/common/evas_scale_sample.c
+++ b/libraries/evas/src/lib/engines/common/evas_scale_sample.c
@@ -90,7 +90,6 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
90 DATA32 *buf, *dptr; 90 DATA32 *buf, *dptr;
91 DATA32 **row_ptr; 91 DATA32 **row_ptr;
92 DATA32 *ptr, *dst_ptr, *src_data, *dst_data; 92 DATA32 *ptr, *dst_ptr, *src_data, *dst_data;
93 int dst_jump;
94 int dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h; 93 int dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h;
95 int m_clip_x = 0, m_clip_y = 0, m_clip_w = 0, m_clip_h = 0, mdx = 0, mdy = 0; 94 int m_clip_x = 0, m_clip_y = 0, m_clip_w = 0, m_clip_h = 0, mdx = 0, mdy = 0;
96 int src_w, src_h, dst_w, dst_h; 95 int src_w, src_h, dst_w, dst_h;
@@ -248,7 +247,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
248 row_ptr = alloca(dst_clip_h * sizeof(DATA32 *)); 247 row_ptr = alloca(dst_clip_h * sizeof(DATA32 *));
249 248
250 /* figure out dst jump */ 249 /* figure out dst jump */
251 dst_jump = dst_w - dst_clip_w; 250 //dst_jump = dst_w - dst_clip_w;
252 251
253 /* figure out dest start ptr */ 252 /* figure out dest start ptr */
254 dst_ptr = dst_data + dst_clip_x + (dst_clip_y * dst_w); 253 dst_ptr = dst_data + dst_clip_x + (dst_clip_y * dst_w);
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx.c b/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx.c
index 50b2e5c..a443c85 100644
--- a/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx.c
+++ b/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx.c
@@ -3,7 +3,7 @@
3 DATA32 *pix, *dptr, *pbuf, **yp; 3 DATA32 *pix, *dptr, *pbuf, **yp;
4 int r, g, b, a, rr, gg, bb, aa; 4 int r, g, b, a, rr, gg, bb, aa;
5 int *xp, xap, yap, pos; 5 int *xp, xap, yap, pos;
6 int dyy, dxx; 6 //int dyy, dxx;
7 int w = dst_clip_w; 7 int w = dst_clip_w;
8#ifdef EVAS_SLI 8#ifdef EVAS_SLI
9 int ysli = dst_clip_y; 9 int ysli = dst_clip_y;
@@ -11,8 +11,8 @@
11 11
12 dptr = dst_ptr; 12 dptr = dst_ptr;
13 pos = (src_region_y * src_w) + src_region_x; 13 pos = (src_region_y * src_w) + src_region_x;
14 dyy = dst_clip_y - dst_region_y; 14 //dyy = dst_clip_y - dst_region_y;
15 dxx = dst_clip_x - dst_region_x; 15 //dxx = dst_clip_x - dst_region_x;
16 16
17 xp = xpoints;// + dxx; 17 xp = xpoints;// + dxx;
18 yp = ypoints;// + dyy; 18 yp = ypoints;// + dyy;
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c b/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c
index ab0c74e..73da3a0 100644
--- a/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c
+++ b/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c
@@ -3,7 +3,7 @@
3 DATA32 *dptr, *sptr, *pix, *pbuf; 3 DATA32 *dptr, *sptr, *pix, *pbuf;
4 int a, r, g, b, rx, gx, bx, ax; 4 int a, r, g, b, rx, gx, bx, ax;
5 int xap, yap, pos; 5 int xap, yap, pos;
6 int dyy, dxx; 6 //int dyy, dxx;
7#ifdef EVAS_SLI 7#ifdef EVAS_SLI
8 int ysli = dst_clip_y; 8 int ysli = dst_clip_y;
9#endif 9#endif
@@ -14,8 +14,8 @@
14 14
15 dptr = dst_ptr; 15 dptr = dst_ptr;
16 pos = (src_region_y * src_w) + src_region_x; 16 pos = (src_region_y * src_w) + src_region_x;
17 dyy = dst_clip_y - dst_region_y; 17 //dyy = dst_clip_y - dst_region_y;
18 dxx = dst_clip_x - dst_region_x; 18 //dxx = dst_clip_x - dst_region_x;
19 19
20 xp = xpoints;// + dxx; 20 xp = xpoints;// + dxx;
21 yp = ypoints;// + dyy; 21 yp = ypoints;// + dyy;
diff --git a/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downy.c b/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downy.c
index 4c5448e..3b7585d 100644
--- a/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downy.c
+++ b/libraries/evas/src/lib/engines/common/evas_scale_smooth_scaler_downy.c
@@ -3,7 +3,7 @@
3 DATA32 *dptr, *pix, *pbuf, **yp; 3 DATA32 *dptr, *pix, *pbuf, **yp;
4 int r, g, b, a, rr, gg, bb, aa; 4 int r, g, b, a, rr, gg, bb, aa;
5 int *xp, xap, yap, pos; 5 int *xp, xap, yap, pos;
6 int dyy, dxx; 6 //int dyy, dxx;
7 int w = dst_clip_w; 7 int w = dst_clip_w;
8#ifdef EVAS_SLI 8#ifdef EVAS_SLI
9 int ysli = dst_clip_y; 9 int ysli = dst_clip_y;
@@ -11,8 +11,8 @@
11 11
12 dptr = dst_ptr; 12 dptr = dst_ptr;
13 pos = (src_region_y * src_w) + src_region_x; 13 pos = (src_region_y * src_w) + src_region_x;
14 dyy = dst_clip_y - dst_region_y; 14 //dyy = dst_clip_y - dst_region_y;
15 dxx = dst_clip_x - dst_region_x; 15 //dxx = dst_clip_x - dst_region_x;
16 16
17 xp = xpoints;// + dxx; 17 xp = xpoints;// + dxx;
18 yp = ypoints;// + dyy; 18 yp = ypoints;// + dyy;
diff --git a/libraries/evas/src/lib/engines/common/evas_tiler.c b/libraries/evas/src/lib/engines/common/evas_tiler.c
index ff359a4..bc5e99c 100644
--- a/libraries/evas/src/lib/engines/common/evas_tiler.c
+++ b/libraries/evas/src/lib/engines/common/evas_tiler.c
@@ -1167,40 +1167,84 @@ evas_common_tilebuf_get_render_rects(Tilebuf *tb)
1167#elif defined(EVAS_RECT_SPLIT) 1167#elif defined(EVAS_RECT_SPLIT)
1168 list_node_t *n; 1168 list_node_t *n;
1169 Tilebuf_Rect *rects = NULL; 1169 Tilebuf_Rect *rects = NULL;
1170 int bx1 = 0, bx2 = 0, by1 = 0, by2 = 0, num = 0;
1170 1171
1171 if (tb->need_merge) { 1172 if (tb->need_merge)
1172 list_t to_merge; 1173 {
1173 to_merge = tb->rects; 1174 list_t to_merge;
1174 tb->rects = list_zeroed; 1175 to_merge = tb->rects;
1175 rect_list_merge_rects(&tb->rects, &to_merge, FUZZ * FUZZ); 1176 tb->rects = list_zeroed;
1176 tb->need_merge = 0; 1177 rect_list_merge_rects(&tb->rects, &to_merge, FUZZ * FUZZ);
1177 } 1178 tb->need_merge = 0;
1178 1179 }
1179 for (n = tb->rects.head; n; n = n->next) { 1180
1180 rect_t cur; 1181 n = tb->rects.head;
1182 if (n)
1183 {
1184 bx1 = ((rect_node_t *)n)->rect.left;
1185 bx2 = bx1 + ((rect_node_t *)n)->rect.width;
1186 by1 = ((rect_node_t *)n)->rect.top;
1187 by2 = by1 + ((rect_node_t *)n)->rect.height;
1188 n = n->next;
1189 for (; n; n = n->next)
1190 {
1191
1192 int x1, x2, y1, y2;
1193
1194 x1 = ((rect_node_t *)n)->rect.left;
1195 if (x1 < bx1) bx1 = x1;
1196 x2 = x1 + ((rect_node_t *)n)->rect.width;
1197 if (x2 > bx2) bx2 = x2;
1198
1199 y1 = ((rect_node_t *)n)->rect.top;
1200 if (y1 < by1) by1 = y1;
1201 y2 = y1 + ((rect_node_t *)n)->rect.height;
1202 if (y2 > by2) by2 = y2;
1203 num++;
1204 }
1205 }
1206#define MAXREG 24
1207 /* magic number - but if we have > MAXREG regions to update, take bounding box */
1208 if (num > MAXREG)
1209 {
1210 Tilebuf_Rect *r;
1211
1212 r = malloc(sizeof(Tilebuf_Rect));
1213 r->x = bx1;
1214 r->y = by1;
1215 r->w = bx2 - bx1;
1216 r->h = by2 - by1;
1217
1218 rects = (Tilebuf_Rect *)eina_inlist_append(EINA_INLIST_GET(rects), EINA_INLIST_GET(r));
1219 return rects;
1220 }
1181 1221
1182 cur = ((rect_node_t *)n)->rect; 1222 for (n = tb->rects.head; n; n = n->next)
1223 {
1224 rect_t cur;
1225
1226 cur = ((rect_node_t *)n)->rect;
1183/* disable fuzz - created bugs. 1227/* disable fuzz - created bugs.
1184 cur.left <<= 1; 1228 cur.left <<= 1;
1185 cur.top <<= 1; 1229 cur.top <<= 1;
1186 cur.width <<= 1; 1230 cur.width <<= 1;
1187 cur.height <<= 1; 1231 cur.height <<= 1;
1188 */ 1232 */
1189 RECTS_CLIP_TO_RECT(cur.left, cur.top, cur.width, cur.height, 1233 RECTS_CLIP_TO_RECT(cur.left, cur.top, cur.width, cur.height,
1190 0, 0, tb->outbuf_w, tb->outbuf_h); 1234 0, 0, tb->outbuf_w, tb->outbuf_h);
1191 if ((cur.width > 0) && (cur.height > 0)) 1235 if ((cur.width > 0) && (cur.height > 0))
1192 { 1236 {
1193 Tilebuf_Rect *r; 1237 Tilebuf_Rect *r;
1194 1238
1195 r = malloc(sizeof(Tilebuf_Rect)); 1239 r = malloc(sizeof(Tilebuf_Rect));
1196 r->x = cur.left; 1240 r->x = cur.left;
1197 r->y = cur.top; 1241 r->y = cur.top;
1198 r->w = cur.width; 1242 r->w = cur.width;
1199 r->h = cur.height; 1243 r->h = cur.height;
1200 1244
1201 rects = (Tilebuf_Rect *)eina_inlist_append(EINA_INLIST_GET(rects), EINA_INLIST_GET(r)); 1245 rects = (Tilebuf_Rect *)eina_inlist_append(EINA_INLIST_GET(rects), EINA_INLIST_GET(r));
1202 } 1246 }
1203 } 1247 }
1204 return rects; 1248 return rects;
1205 1249
1206#else 1250#else
diff --git a/libraries/evas/src/lib/engines/common_16/Makefile.in b/libraries/evas/src/lib/engines/common_16/Makefile.in
index 313cbda..196395d 100644
--- a/libraries/evas/src/lib/engines/common_16/Makefile.in
+++ b/libraries/evas/src/lib/engines/common_16/Makefile.in
@@ -151,6 +151,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
151EVIL_CFLAGS = @EVIL_CFLAGS@ 151EVIL_CFLAGS = @EVIL_CFLAGS@
152EVIL_LIBS = @EVIL_LIBS@ 152EVIL_LIBS = @EVIL_LIBS@
153EXEEXT = @EXEEXT@ 153EXEEXT = @EXEEXT@
154EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
155EXOTIC_LIBS = @EXOTIC_LIBS@
154FGREP = @FGREP@ 156FGREP = @FGREP@
155FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 157FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
156FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 158FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -201,6 +203,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
201PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 203PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
202PIXMAN_LIBS = @PIXMAN_LIBS@ 204PIXMAN_LIBS = @PIXMAN_LIBS@
203PKG_CONFIG = @PKG_CONFIG@ 205PKG_CONFIG = @PKG_CONFIG@
206PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
207PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
204PNG_CFLAGS = @PNG_CFLAGS@ 208PNG_CFLAGS = @PNG_CFLAGS@
205PNG_LIBS = @PNG_LIBS@ 209PNG_LIBS = @PNG_LIBS@
206RANLIB = @RANLIB@ 210RANLIB = @RANLIB@
@@ -219,8 +223,6 @@ VERSION = @VERSION@
219VMAJ = @VMAJ@ 223VMAJ = @VMAJ@
220WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 224WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
221WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 225WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
222WIN32_CFLAGS = @WIN32_CFLAGS@
223WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
224XCB_CFLAGS = @XCB_CFLAGS@ 226XCB_CFLAGS = @XCB_CFLAGS@
225XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 227XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
226XCB_GL_LIBS = @XCB_GL_LIBS@ 228XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -294,8 +296,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
294evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 296evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
295evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 297evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
296evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 298evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
297evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
298evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
299evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 299evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
300evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 300evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
301evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 301evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/engines/common_8/Makefile.in b/libraries/evas/src/lib/engines/common_8/Makefile.in
index 7fa4fbb..11b2454 100644
--- a/libraries/evas/src/lib/engines/common_8/Makefile.in
+++ b/libraries/evas/src/lib/engines/common_8/Makefile.in
@@ -150,6 +150,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
150EVIL_CFLAGS = @EVIL_CFLAGS@ 150EVIL_CFLAGS = @EVIL_CFLAGS@
151EVIL_LIBS = @EVIL_LIBS@ 151EVIL_LIBS = @EVIL_LIBS@
152EXEEXT = @EXEEXT@ 152EXEEXT = @EXEEXT@
153EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
154EXOTIC_LIBS = @EXOTIC_LIBS@
153FGREP = @FGREP@ 155FGREP = @FGREP@
154FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 156FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
155FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 157FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -200,6 +202,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
200PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 202PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
201PIXMAN_LIBS = @PIXMAN_LIBS@ 203PIXMAN_LIBS = @PIXMAN_LIBS@
202PKG_CONFIG = @PKG_CONFIG@ 204PKG_CONFIG = @PKG_CONFIG@
205PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
206PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
203PNG_CFLAGS = @PNG_CFLAGS@ 207PNG_CFLAGS = @PNG_CFLAGS@
204PNG_LIBS = @PNG_LIBS@ 208PNG_LIBS = @PNG_LIBS@
205RANLIB = @RANLIB@ 209RANLIB = @RANLIB@
@@ -218,8 +222,6 @@ VERSION = @VERSION@
218VMAJ = @VMAJ@ 222VMAJ = @VMAJ@
219WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 223WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
220WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 224WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
221WIN32_CFLAGS = @WIN32_CFLAGS@
222WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
223XCB_CFLAGS = @XCB_CFLAGS@ 225XCB_CFLAGS = @XCB_CFLAGS@
224XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 226XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
225XCB_GL_LIBS = @XCB_GL_LIBS@ 227XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -293,8 +295,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
293evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 295evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
294evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 296evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
295evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 297evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
296evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
297evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
298evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 298evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
299evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 299evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
300evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 300evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/file/Makefile.am b/libraries/evas/src/lib/file/Makefile.am
index 7875fbe..84b12d9 100644
--- a/libraries/evas/src/lib/file/Makefile.am
+++ b/libraries/evas/src/lib/file/Makefile.am
@@ -11,10 +11,7 @@ AM_CPPFLAGS = \
11@FREETYPE_CFLAGS@ \ 11@FREETYPE_CFLAGS@ \
12@EINA_CFLAGS@ \ 12@EINA_CFLAGS@ \
13@EVIL_CFLAGS@ \ 13@EVIL_CFLAGS@ \
14@WIN32_CPPFLAGS@ \
15@PIXMAN_CFLAGS@ 14@PIXMAN_CFLAGS@
16
17AM_CFLAGS = @WIN32_CFLAGS@
18 15
19noinst_LTLIBRARIES = libevas_file.la 16noinst_LTLIBRARIES = libevas_file.la
20libevas_file_la_SOURCES = \ 17libevas_file_la_SOURCES = \
diff --git a/libraries/evas/src/lib/file/Makefile.in b/libraries/evas/src/lib/file/Makefile.in
index 2ac89b1..52d3608 100644
--- a/libraries/evas/src/lib/file/Makefile.in
+++ b/libraries/evas/src/lib/file/Makefile.in
@@ -146,6 +146,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
146EVIL_CFLAGS = @EVIL_CFLAGS@ 146EVIL_CFLAGS = @EVIL_CFLAGS@
147EVIL_LIBS = @EVIL_LIBS@ 147EVIL_LIBS = @EVIL_LIBS@
148EXEEXT = @EXEEXT@ 148EXEEXT = @EXEEXT@
149EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
150EXOTIC_LIBS = @EXOTIC_LIBS@
149FGREP = @FGREP@ 151FGREP = @FGREP@
150FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 152FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
151FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 153FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -196,6 +198,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
196PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 198PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
197PIXMAN_LIBS = @PIXMAN_LIBS@ 199PIXMAN_LIBS = @PIXMAN_LIBS@
198PKG_CONFIG = @PKG_CONFIG@ 200PKG_CONFIG = @PKG_CONFIG@
201PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
202PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
199PNG_CFLAGS = @PNG_CFLAGS@ 203PNG_CFLAGS = @PNG_CFLAGS@
200PNG_LIBS = @PNG_LIBS@ 204PNG_LIBS = @PNG_LIBS@
201RANLIB = @RANLIB@ 205RANLIB = @RANLIB@
@@ -214,8 +218,6 @@ VERSION = @VERSION@
214VMAJ = @VMAJ@ 218VMAJ = @VMAJ@
215WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 219WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
216WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 220WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
217WIN32_CFLAGS = @WIN32_CFLAGS@
218WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
219XCB_CFLAGS = @XCB_CFLAGS@ 221XCB_CFLAGS = @XCB_CFLAGS@
220XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 222XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
221XCB_GL_LIBS = @XCB_GL_LIBS@ 223XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -289,8 +291,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
289evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 291evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
290evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 292evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
291evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 293evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
292evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
293evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
294evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 294evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
295evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 295evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
296evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 296evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
@@ -384,10 +384,8 @@ AM_CPPFLAGS = \
384@FREETYPE_CFLAGS@ \ 384@FREETYPE_CFLAGS@ \
385@EINA_CFLAGS@ \ 385@EINA_CFLAGS@ \
386@EVIL_CFLAGS@ \ 386@EVIL_CFLAGS@ \
387@WIN32_CPPFLAGS@ \
388@PIXMAN_CFLAGS@ 387@PIXMAN_CFLAGS@
389 388
390AM_CFLAGS = @WIN32_CFLAGS@
391noinst_LTLIBRARIES = libevas_file.la 389noinst_LTLIBRARIES = libevas_file.la
392libevas_file_la_SOURCES = \ 390libevas_file_la_SOURCES = \
393evas_path.c \ 391evas_path.c \
diff --git a/libraries/evas/src/lib/file/evas_module.c b/libraries/evas/src/lib/file/evas_module.c
index 21d5cd0..dc0d26b 100644
--- a/libraries/evas/src/lib/file/evas_module.c
+++ b/libraries/evas/src/lib/file/evas_module.c
@@ -98,7 +98,6 @@ EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_8_x11);
98EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_ddraw); 98EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_ddraw);
99EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_gdi); 99EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_gdi);
100EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_generic); 100EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_generic);
101EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_sdl);
102EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_x11); 101EVAS_EINA_STATIC_MODULE_DEFINE(engine, software_x11);
103EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, bmp); 102EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, bmp);
104EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, edb); 103EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, edb);
@@ -176,9 +175,6 @@ static const struct {
176#ifdef EVAS_STATIC_BUILD_SOFTWARE_GENERIC 175#ifdef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
177 EVAS_EINA_STATIC_MODULE_USE(engine, software_generic), 176 EVAS_EINA_STATIC_MODULE_USE(engine, software_generic),
178#endif 177#endif
179#ifdef EVAS_STATIC_BUILD_SOFTWARE_SDL
180 EVAS_EINA_STATIC_MODULE_USE(engine, software_sdl),
181#endif
182#ifdef EVAS_STATIC_BUILD_SOFTWARE_X11 178#ifdef EVAS_STATIC_BUILD_SOFTWARE_X11
183 EVAS_EINA_STATIC_MODULE_USE(engine, software_x11), 179 EVAS_EINA_STATIC_MODULE_USE(engine, software_x11),
184#endif 180#endif
diff --git a/libraries/evas/src/lib/file/evas_path.c b/libraries/evas/src/lib/file/evas_path.c
index c663c16..2ff646d 100644
--- a/libraries/evas/src/lib/file/evas_path.c
+++ b/libraries/evas/src/lib/file/evas_path.c
@@ -38,9 +38,7 @@ evas_file_path_is_full_path(const char *path)
38#if defined _WIN32_WCE 38#if defined _WIN32_WCE
39 if (path[0] == '\\') return 1; 39 if (path[0] == '\\') return 1;
40#elif defined _WIN32 40#elif defined _WIN32
41 if ((path[0] == '\0') || (path[1] == '\0')) 41 if (evil_path_is_absolute(path)) return 1;
42 return 0;
43 if (path[1] == ':') return 1;
44#else 42#else
45 if (path[0] == '/') return 1; 43 if (path[0] == '/') return 1;
46#endif 44#endif
diff --git a/libraries/evas/src/lib/include/Makefile.in b/libraries/evas/src/lib/include/Makefile.in
index 21f0099..8060178 100644
--- a/libraries/evas/src/lib/include/Makefile.in
+++ b/libraries/evas/src/lib/include/Makefile.in
@@ -116,6 +116,8 @@ EVAS_SSE3_CFLAGS = @EVAS_SSE3_CFLAGS@
116EVIL_CFLAGS = @EVIL_CFLAGS@ 116EVIL_CFLAGS = @EVIL_CFLAGS@
117EVIL_LIBS = @EVIL_LIBS@ 117EVIL_LIBS = @EVIL_LIBS@
118EXEEXT = @EXEEXT@ 118EXEEXT = @EXEEXT@
119EXOTIC_CFLAGS = @EXOTIC_CFLAGS@
120EXOTIC_LIBS = @EXOTIC_LIBS@
119FGREP = @FGREP@ 121FGREP = @FGREP@
120FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ 122FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
121FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ 123FONTCONFIG_LIBS = @FONTCONFIG_LIBS@
@@ -166,6 +168,8 @@ PATH_SEPARATOR = @PATH_SEPARATOR@
166PIXMAN_CFLAGS = @PIXMAN_CFLAGS@ 168PIXMAN_CFLAGS = @PIXMAN_CFLAGS@
167PIXMAN_LIBS = @PIXMAN_LIBS@ 169PIXMAN_LIBS = @PIXMAN_LIBS@
168PKG_CONFIG = @PKG_CONFIG@ 170PKG_CONFIG = @PKG_CONFIG@
171PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
172PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
169PNG_CFLAGS = @PNG_CFLAGS@ 173PNG_CFLAGS = @PNG_CFLAGS@
170PNG_LIBS = @PNG_LIBS@ 174PNG_LIBS = @PNG_LIBS@
171RANLIB = @RANLIB@ 175RANLIB = @RANLIB@
@@ -184,8 +188,6 @@ VERSION = @VERSION@
184VMAJ = @VMAJ@ 188VMAJ = @VMAJ@
185WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@ 189WAYLAND_EGL_CFLAGS = @WAYLAND_EGL_CFLAGS@
186WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@ 190WAYLAND_EGL_LIBS = @WAYLAND_EGL_LIBS@
187WIN32_CFLAGS = @WIN32_CFLAGS@
188WIN32_CPPFLAGS = @WIN32_CPPFLAGS@
189XCB_CFLAGS = @XCB_CFLAGS@ 191XCB_CFLAGS = @XCB_CFLAGS@
190XCB_GL_CFLAGS = @XCB_GL_CFLAGS@ 192XCB_GL_CFLAGS = @XCB_GL_CFLAGS@
191XCB_GL_LIBS = @XCB_GL_LIBS@ 193XCB_GL_LIBS = @XCB_GL_LIBS@
@@ -259,8 +261,6 @@ evas_engine_software_ddraw_cflags = @evas_engine_software_ddraw_cflags@
259evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@ 261evas_engine_software_ddraw_libs = @evas_engine_software_ddraw_libs@
260evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@ 262evas_engine_software_gdi_cflags = @evas_engine_software_gdi_cflags@
261evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@ 263evas_engine_software_gdi_libs = @evas_engine_software_gdi_libs@
262evas_engine_software_sdl_cflags = @evas_engine_software_sdl_cflags@
263evas_engine_software_sdl_libs = @evas_engine_software_sdl_libs@
264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@ 264evas_engine_software_xcb_cflags = @evas_engine_software_xcb_cflags@
265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@ 265evas_engine_software_xcb_libs = @evas_engine_software_xcb_libs@
266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@ 266evas_engine_software_xlib_cflags = @evas_engine_software_xlib_cflags@
diff --git a/libraries/evas/src/lib/include/evas_blend_ops.h b/libraries/evas/src/lib/include/evas_blend_ops.h
index 1ada384..6bd1f16 100644
--- a/libraries/evas/src/lib/include/evas_blend_ops.h
+++ b/libraries/evas/src/lib/include/evas_blend_ops.h
@@ -200,7 +200,7 @@ static __m128i RGB_MASK_SSE3;
200 200
201static __m128i ALPHA_SSE3; 201static __m128i ALPHA_SSE3;
202 202
203EFL_ALWAYS_INLINE __m128i 203static EFL_ALWAYS_INLINE __m128i
204mul_256_sse3(__m128i a, __m128i c) { 204mul_256_sse3(__m128i a, __m128i c) {
205 205
206 /* prepare alpha for word multiplication */ 206 /* prepare alpha for word multiplication */
@@ -228,7 +228,7 @@ mul_256_sse3(__m128i a, __m128i c) {
228 return _mm_add_epi32(c0, c1); 228 return _mm_add_epi32(c0, c1);
229} 229}
230 230
231EFL_ALWAYS_INLINE __m128i 231static EFL_ALWAYS_INLINE __m128i
232sub4_alpha_sse3(__m128i c) { 232sub4_alpha_sse3(__m128i c) {
233 233
234 __m128i c0 = c; 234 __m128i c0 = c;
@@ -237,7 +237,7 @@ sub4_alpha_sse3(__m128i c) {
237 return _mm_sub_epi32(ALPHA_SSE3, c0); 237 return _mm_sub_epi32(ALPHA_SSE3, c0);
238} 238}
239 239
240EFL_ALWAYS_INLINE __m128i 240static EFL_ALWAYS_INLINE __m128i
241interp4_256_sse3(__m128i a, __m128i c0, __m128i c1) 241interp4_256_sse3(__m128i a, __m128i c0, __m128i c1)
242{ 242{
243 const __m128i zero = _mm_setzero_si128(); 243 const __m128i zero = _mm_setzero_si128();
@@ -289,7 +289,7 @@ interp4_256_sse3(__m128i a, __m128i c0, __m128i c1)
289 return (__m128i) _mm_shuffle_ps( (__m128)cl_sub, (__m128)ch_sub, 0x44); 289 return (__m128i) _mm_shuffle_ps( (__m128)cl_sub, (__m128)ch_sub, 0x44);
290} 290}
291 291
292EFL_ALWAYS_INLINE __m128i 292static EFL_ALWAYS_INLINE __m128i
293mul_sym_sse3(__m128i a, __m128i c) { 293mul_sym_sse3(__m128i a, __m128i c) {
294 294
295 /* Prepare alpha for word mult */ 295 /* Prepare alpha for word mult */
@@ -318,7 +318,7 @@ mul_sym_sse3(__m128i a, __m128i c) {
318 return _mm_add_epi32(c0, c1); 318 return _mm_add_epi32(c0, c1);
319} 319}
320 320
321EFL_ALWAYS_INLINE __m128i 321static EFL_ALWAYS_INLINE __m128i
322mul4_sym_sse3(__m128i x, __m128i y) { 322mul4_sym_sse3(__m128i x, __m128i y) {
323 323
324 const __m128i zero = _mm_setzero_si128(); 324 const __m128i zero = _mm_setzero_si128();
@@ -341,7 +341,7 @@ mul4_sym_sse3(__m128i x, __m128i y) {
341 return _mm_packus_epi16(r_l, r_h); 341 return _mm_packus_epi16(r_l, r_h);
342} 342}
343 343
344EFL_ALWAYS_INLINE __m128i 344static EFL_ALWAYS_INLINE __m128i
345mul3_sym_sse3(__m128i x, __m128i y) { 345mul3_sym_sse3(__m128i x, __m128i y) {
346 346
347 __m128i res = mul4_sym_sse3(x, y); 347 __m128i res = mul4_sym_sse3(x, y);
diff --git a/libraries/evas/src/lib/include/evas_common.h b/libraries/evas/src/lib/include/evas_common.h
index a9063e6..e853064 100644
--- a/libraries/evas/src/lib/include/evas_common.h
+++ b/libraries/evas/src/lib/include/evas_common.h
@@ -5,6 +5,45 @@
5#include "config.h" /* so that EAPI in Evas.h is correctly defined */ 5#include "config.h" /* so that EAPI in Evas.h is correctly defined */
6//#endif 6//#endif
7 7
8#ifdef STDC_HEADERS
9# include <stdlib.h>
10# include <stddef.h>
11#else
12# ifdef HAVE_STDLIB_H
13# include <stdlib.h>
14# endif
15#endif
16#ifdef HAVE_ALLOCA_H
17# include <alloca.h>
18#elif !defined alloca
19# ifdef __GNUC__
20# define alloca __builtin_alloca
21# elif defined _AIX
22# define alloca __alloca
23# elif defined _MSC_VER
24# include <malloc.h>
25# define alloca _alloca
26# elif !defined HAVE_ALLOCA
27# ifdef __cplusplus
28extern "C"
29# endif
30void *alloca (size_t);
31# endif
32#endif
33
34#include <stdio.h>
35#include <stdlib.h>
36#include <string.h>
37#include <sys/types.h>
38#include <sys/stat.h>
39#include <time.h>
40#include <ctype.h>
41
42#ifndef _MSC_VER
43# include <stdint.h>
44#include <unistd.h>
45#endif
46
8#ifdef HAVE_EVIL 47#ifdef HAVE_EVIL
9# include <Evil.h> 48# include <Evil.h>
10#endif 49#endif
@@ -13,10 +52,6 @@
13# include <Escape.h> 52# include <Escape.h>
14#endif 53#endif
15 54
16#include <Eina.h>
17#include "Evas.h"
18//#include "Evas_GL.h"
19
20#ifdef HAVE_PIXMAN 55#ifdef HAVE_PIXMAN
21#include <pixman.h> 56#include <pixman.h>
22#endif 57#endif
@@ -25,6 +60,14 @@
25#include <sys/stat.h> 60#include <sys/stat.h>
26#include <unistd.h> 61#include <unistd.h>
27 62
63#ifdef HAVE_EXOTIC
64# include <Exotic.h>
65#endif
66
67#include <Eina.h>
68#include "Evas.h"
69//#include "Evas_GL.h"
70
28#ifndef HAVE_LROUND 71#ifndef HAVE_LROUND
29/* right now i dont care about rendering bugs on platforms without lround 72/* right now i dont care about rendering bugs on platforms without lround
30 (e.g. windows/vc++... yay!) 73 (e.g. windows/vc++... yay!)
@@ -171,35 +214,6 @@ extern EAPI int _evas_log_dom_global;
171 214
172#endif 215#endif
173 216
174#ifdef HAVE_ALLOCA_H
175# include <alloca.h>
176#elif defined __GNUC__
177# define alloca __builtin_alloca
178#elif defined _AIX
179# define alloca __alloca
180#elif defined _MSC_VER
181# include <malloc.h>
182# define alloca _alloca
183#else
184# include <stddef.h>
185# ifdef __cplusplus
186extern "C"
187# endif
188void *alloca (size_t);
189#endif
190
191#include <stdio.h>
192#include <stdlib.h>
193#include <string.h>
194#include <sys/types.h>
195#include <sys/stat.h>
196#include <time.h>
197#include <ctype.h>
198
199#ifndef _MSC_VER
200# include <stdint.h>
201#endif
202
203#include <ft2build.h> 217#include <ft2build.h>
204#include FT_FREETYPE_H 218#include FT_FREETYPE_H
205#include FT_GLYPH_H 219#include FT_GLYPH_H
@@ -1005,12 +1019,12 @@ struct list
1005 1019
1006struct rect 1020struct rect
1007{ 1021{
1008 short left; 1022 int left;
1009 short top; 1023 int top;
1010 short right; 1024 int right;
1011 short bottom; 1025 int bottom;
1012 short width; 1026 int width;
1013 short height; 1027 int height;
1014 int area; 1028 int area;
1015}; 1029};
1016 1030
diff --git a/libraries/evas/src/lib/include/evas_private.h b/libraries/evas/src/lib/include/evas_private.h
index 84c1d36..bf0cfc5 100644
--- a/libraries/evas/src/lib/include/evas_private.h
+++ b/libraries/evas/src/lib/include/evas_private.h
@@ -615,6 +615,8 @@ struct _Evas_Object
615 Eina_Bool changed_move : 1; 615 Eina_Bool changed_move : 1;
616 Eina_Bool changed_move_only : 1; 616 Eina_Bool changed_move_only : 1;
617 Eina_Bool changed_nomove : 1; 617 Eina_Bool changed_nomove : 1;
618 Eina_Bool changed_map : 1;
619 Eina_Bool changed_pchange : 1;
618 Eina_Bool del_ref : 1; 620 Eina_Bool del_ref : 1;
619 621
620 Eina_Bool is_frame : 1; 622 Eina_Bool is_frame : 1;
@@ -850,6 +852,7 @@ struct _Evas_Func
850 void *(*gl_proc_address_get) (void *data, const char *name); 852 void *(*gl_proc_address_get) (void *data, const char *name);
851 int (*gl_native_surface_get) (void *data, void *surface, void *native_surface); 853 int (*gl_native_surface_get) (void *data, void *surface, void *native_surface);
852 void *(*gl_api_get) (void *data); 854 void *(*gl_api_get) (void *data);
855 void (*gl_img_obj_set) (void *data, void *image, int has_alpha);
853 856
854 int (*image_load_error_get) (void *data, void *image); 857 int (*image_load_error_get) (void *data, void *image);
855 int (*font_run_end_get) (void *data, Evas_Font_Set *font, Evas_Font_Instance **script_fi, Evas_Font_Instance **cur_fi, Evas_Script_Type script, const Eina_Unicode *text, int run_len); 858 int (*font_run_end_get) (void *data, Evas_Font_Set *font, Evas_Font_Instance **script_fi, Evas_Font_Instance **cur_fi, Evas_Script_Type script, const Eina_Unicode *text, int run_len);