forked from enlightenment/efl
Compare commits
86 Commits
Author | SHA1 | Date |
---|---|---|
|
5f9bdb6120 | |
|
32ecb77191 | |
|
3fabf9f952 | |
|
864c137471 | |
|
d64e3a27e5 | |
|
4fb4d7c77c | |
|
5a4ac4e7ca | |
|
12eeebb544 | |
|
895692f0cd | |
|
5c852d1f4e | |
|
807a5aa263 | |
|
b1caa37177 | |
|
380756f6fb | |
|
cf86cf5588 | |
|
60c3dd385c | |
|
cb410fc8a6 | |
|
45f526580b | |
|
f309703d23 | |
|
fecdca678c | |
|
aee73ce086 | |
|
afb76a881d | |
|
d59e2b42fa | |
|
c625279a85 | |
|
736b02cd22 | |
|
316b35a0c6 | |
|
4327673072 | |
|
1a4e40bfdc | |
|
3d7f20cff8 | |
|
f4748ad34b | |
|
d34466c2f3 | |
|
8788cac287 | |
|
f16bda07b9 | |
|
ad3b4905b4 | |
|
ee1af1e177 | |
|
35c9fb8876 | |
|
d36f22c384 | |
|
d7af4c1ff5 | |
|
1f363c488e | |
|
753817b283 | |
|
385176976a | |
|
99fb2666ab | |
|
f8fbb5abc2 | |
|
b9480fc7d8 | |
|
fef45870b0 | |
|
1918038640 | |
|
c2088d8326 | |
|
e59c14eda9 | |
|
90f05a5721 | |
|
25391697e6 | |
|
42c7f55c2f | |
|
987a83ba96 | |
|
c0a961610f | |
|
0645512fea | |
|
6a2eff512f | |
|
409319ec9d | |
|
088c16fab1 | |
|
b35d1af4d7 | |
|
1c21b0d5ad | |
|
e54b9da65b | |
|
5671816193 | |
|
cd21cf50d2 | |
|
edb19d7a53 | |
|
7f524decd0 | |
|
528489c31c | |
|
79a2c8d503 | |
|
bd29207395 | |
|
f3aacba22f | |
|
7a0fb49773 | |
|
da06a4d316 | |
|
b9664c1059 | |
|
bd039ce80d | |
|
820ff24337 | |
|
85c9084856 | |
|
3fb2d843cc | |
|
e778366b94 | |
|
791c0ca1af | |
|
9ca37bf4d4 | |
|
9c096eac83 | |
|
3e65e6d4dd | |
|
2c615df2d2 | |
|
8f3188d42e | |
|
5f236092c5 | |
|
776c0664d4 | |
|
5a7321a314 | |
|
e6eafc517f | |
|
6c418895e2 |
89
NEWS
89
NEWS
|
@ -1,7 +1,93 @@
|
|||
=========
|
||||
EFL 1.9.0
|
||||
EFL 1.9.5
|
||||
=========
|
||||
|
||||
Changes since 1.9.4:
|
||||
--------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* evas/text: fix abnormal ellipsis logic when harfbuzz is enabled.
|
||||
* recursively hide edje group objects on edje hide
|
||||
|
||||
Changes since 1.9.3:
|
||||
--------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* emotion: fix triggering condition of fallback module loading (T1025)
|
||||
* edje now correctly forces ellipsis setting on text parts
|
||||
* Evas: gif decoding bug fix
|
||||
* eldbus-codegen no longer passes garbage values to error callbacks
|
||||
* fix emotion_test signal emit object
|
||||
* configure: Only allow wayland + egl with opengl ES (T1202)
|
||||
|
||||
|
||||
Changes since 1.9.2:
|
||||
--------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* build: Disallow non-working sdl + opengl ES combination (T856)
|
||||
* evas/proxy - redraw proxy source properly.
|
||||
* edje_cc: Fix the crash when compiled wrong edc file containing empty part
|
||||
* evas - fix incorrect object reset.
|
||||
* ecore-evas - fix object cursor to not delete the same cursor when set
|
||||
* Evas cserve2: Fix crash in elm_test GLView
|
||||
* ecore-con - deal with internal buffer growing over 2g in size
|
||||
* fix swap buffers with damage to not detect if ext str is not there
|
||||
|
||||
|
||||
Changes since 1.9.1:
|
||||
--------------------
|
||||
|
||||
Fixes:
|
||||
|
||||
* Evas filters: Fix 1-D blurs on a single buffer
|
||||
* Evas filters: Fix memory leak when destroying the object
|
||||
* Ecore x: Add back the two symbols removed in 1.9.
|
||||
* eet: fix tokenizer's escape logic.
|
||||
* edje: check font change in edje text part cache infra.
|
||||
* Evas cserve2: Fix client crashes when a file changed
|
||||
* Evas gl: Fix clip in image_draw if it's not set
|
||||
* edje_cc no longer fails on collections.group{}
|
||||
* edje_cc now correctly handles lack of state int in STATE_SET action
|
||||
* edje_cc also checks min args correctly for STATE_SET actions
|
||||
* Evas filters: fix potential memory leak
|
||||
* edje_cc uses macros for some of its handler setup
|
||||
* evas/gl - fill up missed blend mode.
|
||||
|
||||
|
||||
Changes since 1.9.0:
|
||||
--------------------
|
||||
|
||||
Additions:
|
||||
|
||||
Improvements:
|
||||
|
||||
Fixes:
|
||||
|
||||
* evas: Replace EINA_LIST_FOREACH_SAFE to while statement.
|
||||
* Evas font: Don't add canvas specific path to the global fontconfig path list.
|
||||
* edje - allow lager clipper space.
|
||||
* eina_log: Update domain colouring when color_disable_set is called (T1029)
|
||||
* edje/entry: fix to not emit "changed" signal in unnecessary cases of password mode.
|
||||
* Edje entry: fix bug preedit text is committed in the next entry when Tab key is pressed.
|
||||
* Evas filters: Avoid CRI message when using the GL engine
|
||||
* Evas filters: fix clip to target calculation
|
||||
* Evas filters: fix random cases of 'dancing text'
|
||||
* Evas filters: fix black squares with the GL engine
|
||||
* ecore_avahi: @fix timeout to avoid pitfall of forever frozen timer.
|
||||
* examples/evas: Set a proper format string for fprintf
|
||||
* ecore_avahi: fix timeout to be relative from now.
|
||||
* ecore: @fix race condition when using ecore_main_loop_thread_safe_call_sync.
|
||||
* edje: Fix CURRENT option works.
|
||||
* evas: replace EINA_LIST_FREE to EINA_LIST_FOREACH_SAFE.
|
||||
* Fix Wayland Shm engine destination calculation typo
|
||||
|
||||
Removals:
|
||||
|
||||
|
||||
Changes since 1.8.0:
|
||||
--------------------
|
||||
|
||||
|
@ -429,6 +515,7 @@ Fixes:
|
|||
* textgrid - with new fallback fonts we cant depend on glyph extents anymore
|
||||
* textgrid - out-of-bounds chars cause update artifacts - fix.
|
||||
* Emotion test: fix calculation of the displayed time.
|
||||
* eina: Update domain output if eina_log_color_disable_set is called after a domain is registered (T1029).
|
||||
|
||||
Removals:
|
||||
|
||||
|
|
13
configure.ac
13
configure.ac
|
@ -1,4 +1,4 @@
|
|||
EFL_VERSION([1], [9], [0], [release])
|
||||
EFL_VERSION([1], [9], [5], [release])
|
||||
AC_INIT([efl], [efl_version], [enlightenment-devel@lists.sourceforge.net])
|
||||
|
||||
AC_PREREQ([2.60])
|
||||
|
@ -971,6 +971,7 @@ AM_CONDITIONAL([EO_BUILD_EXAMPLE_EVAS], [test "x${have_elm}" = "xyes"])
|
|||
### Checks for linker characteristics
|
||||
|
||||
### Checks for library functions
|
||||
EFL_CHECK_FUNCS([EO], [dladdr])
|
||||
|
||||
### Check availability
|
||||
|
||||
|
@ -1091,8 +1092,14 @@ if test "${want_sdl}" = "yes"; then
|
|||
EFL_PKG_CHECK_STRICT([sdl >= 1.2.0])
|
||||
fi
|
||||
|
||||
# We only enable SDL with opengl if it is not the full version and not ES
|
||||
# This can be changed if we ported our SDL code over to SDL 2.0. For older
|
||||
# versions the SDL_opengles.h has never been released.
|
||||
want_gl_sdl="no"
|
||||
if test "${want_sdl}" = "yes" && test "${with_opengl}" != "none"; then
|
||||
if test "${want_sdl}" = "yes" && test "${with_opengl}" = "es"; then
|
||||
AC_MSG_ERROR([We currently do not support SDL with OpenGL ES. Please consider full OpenGL if you want to use it with SDL.])
|
||||
fi
|
||||
if test "${want_sdl}" = "yes" && test "${with_opengl}" = "full"; then
|
||||
want_gl_sdl="yes"
|
||||
fi
|
||||
|
||||
|
@ -1321,7 +1328,7 @@ want_evas_engine_software_gdi="${have_win32}"
|
|||
want_evas_engine_software_ddraw="${have_win32}"
|
||||
want_evas_engine_gl_cocoa="${want_cocoa}"
|
||||
want_evas_engine_wayland_egl="no"
|
||||
if test "${want_wayland}" = "yes" && test "${want_egl}" = "yes"; then
|
||||
if test "${want_wayland}" = "yes" && test "${want_egl}" = "yes" && test "${with_opengl}" = "es"; then
|
||||
want_evas_engine_wayland_egl="yes"
|
||||
fi
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ lib_ecore_libecore_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
|
|||
-DPACKAGE_DATA_DIR=\"$(datadir)/ecore\" \
|
||||
-DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)\" \
|
||||
@ECORE_CFLAGS@
|
||||
lib_ecore_libecore_la_LIBADD = @ECORE_LIBS@
|
||||
lib_ecore_libecore_la_LIBADD = @ECORE_LIBS@ @EVIL_LIBS@
|
||||
lib_ecore_libecore_la_DEPENDENCIES = @ECORE_INTERNAL_LIBS@
|
||||
lib_ecore_libecore_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
||||
|
|
|
@ -34,6 +34,6 @@ endif
|
|||
endif
|
||||
|
||||
lib_ecore_con_libecore_con_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl @ECORE_CON_CFLAGS@
|
||||
lib_ecore_con_libecore_con_la_LIBADD = @ECORE_CON_LIBS@
|
||||
lib_ecore_con_libecore_con_la_LIBADD = @ECORE_CON_LIBS@ @EVIL_LIBS@
|
||||
lib_ecore_con_libecore_con_la_DEPENDENCIES = @ECORE_CON_INTERNAL_LIBS@
|
||||
lib_ecore_con_libecore_con_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
|
|
@ -26,7 +26,9 @@ lib/ecore_evas/ecore_evas_util.c
|
|||
|
||||
lib_ecore_evas_libecore_evas_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
|
||||
-I$(top_srcdir)/src/modules/evas/engines/buffer \
|
||||
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
|
||||
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
||||
-DPACKAGE_DATA_DIR=\"$(datadir)/ecore_evas\" \
|
||||
-DPACKAGE_BUILD_DIR=\"`pwd`/$(top_builddir)\" \
|
||||
@ECORE_EVAS_CFLAGS@
|
||||
lib_ecore_evas_libecore_evas_la_LIBADD = @ECORE_EVAS_LIBS@
|
||||
|
|
|
@ -12,6 +12,6 @@ lib/ecore_ipc/ecore_ipc.c \
|
|||
lib/ecore_ipc/ecore_ipc_private.h
|
||||
|
||||
lib_ecore_ipc_libecore_ipc_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl @ECORE_IPC_CFLAGS@
|
||||
lib_ecore_ipc_libecore_ipc_la_LIBADD = @ECORE_IPC_LIBS@
|
||||
lib_ecore_ipc_libecore_ipc_la_LIBADD = @ECORE_IPC_LIBS@ @EVIL_LIBS@
|
||||
lib_ecore_ipc_libecore_ipc_la_DEPENDENCIES = @ECORE_IPC_INTERNAL_LIBS@
|
||||
lib_ecore_ipc_libecore_ipc_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
|
|
@ -28,7 +28,7 @@ lib_eet_libeet_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \
|
|||
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
||||
-DPACKAGE_DATA_DIR=\"$(datadir)/eet\" \
|
||||
@EET_CFLAGS@
|
||||
lib_eet_libeet_la_LIBADD = @EET_LIBS@
|
||||
lib_eet_libeet_la_LIBADD = @EET_LIBS@ @EVIL_LIBS@
|
||||
lib_eet_libeet_la_DEPENDENCIES = @EET_INTERNAL_LIBS@
|
||||
lib_eet_libeet_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
||||
|
|
|
@ -46,21 +46,21 @@ lib/efreet/efreet_xml.h \
|
|||
lib/efreet/efreet_cache_private.h
|
||||
|
||||
lib_efreet_libefreet_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl $(EFREET_COMMON_CPPFLAGS)
|
||||
lib_efreet_libefreet_la_LIBADD = @EFREET_LIBS@
|
||||
lib_efreet_libefreet_la_LIBADD = @EFREET_LIBS@ @EVIL_LIBS@
|
||||
lib_efreet_libefreet_la_DEPENDENCIES = @EFREET_INTERNAL_LIBS@
|
||||
lib_efreet_libefreet_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
||||
# libefreet_mime.la
|
||||
lib_efreet_libefreet_mime_la_SOURCES = lib/efreet/efreet_mime.c
|
||||
lib_efreet_libefreet_mime_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl $(EFREET_COMMON_CPPFLAGS)
|
||||
lib_efreet_libefreet_mime_la_LIBADD = @USE_EFREET_LIBS@
|
||||
lib_efreet_libefreet_mime_la_LIBADD = @USE_EFREET_LIBS@ @EVIL_LIBS@
|
||||
lib_efreet_libefreet_mime_la_DEPENDENCIES = @USE_EFREET_INTERNAL_LIBS@
|
||||
lib_efreet_libefreet_mime_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
||||
# libefreet_trash.la
|
||||
lib_efreet_libefreet_trash_la_SOURCES = lib/efreet/efreet_trash.c
|
||||
lib_efreet_libefreet_trash_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl $(EFREET_COMMON_CPPFLAGS)
|
||||
lib_efreet_libefreet_trash_la_LIBADD = @USE_EFREET_LIBS@
|
||||
lib_efreet_libefreet_trash_la_LIBADD = @USE_EFREET_LIBS@ @EVIL_LIBS@
|
||||
lib_efreet_libefreet_trash_la_DEPENDENCIES = @USE_EFREET_INTERNAL_LIBS@
|
||||
lib_efreet_libefreet_trash_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@
|
||||
|
||||
|
|
|
@ -395,6 +395,42 @@ static void st_collections_group_physics_world_depth(void);
|
|||
|
||||
/*****/
|
||||
|
||||
#define PROGRAM_STATEMENTS(PREFIX) \
|
||||
{PREFIX".programs.image", st_images_image}, /* dup */ \
|
||||
{PREFIX".programs.set.name", st_images_set_name}, /* dup */ \
|
||||
{PREFIX".programs.set.image.image", st_images_set_image_image}, /* dup */ \
|
||||
{PREFIX".programs.set.image.size", st_images_set_image_size}, /* dup */ \
|
||||
{PREFIX".programs.set.image.border", st_images_set_image_border}, /* dup */ \
|
||||
{PREFIX".programs.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */ \
|
||||
{PREFIX".programs.images.image", st_images_image}, /* dup */ \
|
||||
{PREFIX".programs.images.set.name", st_images_set_name}, /* dup */ \
|
||||
{PREFIX".programs.images.set.image.image", st_images_set_image_image}, /* dup */ \
|
||||
{PREFIX".programs.images.set.image.size", st_images_set_image_size}, /* dup */ \
|
||||
{PREFIX".programs.images.set.image.border", st_images_set_image_border}, /* dup */ \
|
||||
{PREFIX".programs.images.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */ \
|
||||
{PREFIX".programs.font", st_fonts_font}, /* dup */ \
|
||||
{PREFIX".programs.fonts.font", st_fonts_font}, /* dup */ \
|
||||
{PREFIX".programs.program.name", st_collections_group_programs_program_name}, /* dup */ \
|
||||
{PREFIX".programs.program.signal", st_collections_group_programs_program_signal}, /* dup */ \
|
||||
{PREFIX".programs.program.source", st_collections_group_programs_program_source}, /* dup */ \
|
||||
{PREFIX".programs.program.in", st_collections_group_programs_program_in}, /* dup */ \
|
||||
{PREFIX".programs.program.action", st_collections_group_programs_program_action}, /* dup */ \
|
||||
{PREFIX".programs.program.transition", st_collections_group_programs_program_transition}, /* dup */ \
|
||||
{PREFIX".programs.program.target", st_collections_group_programs_program_target}, /* dup */ \
|
||||
{PREFIX".programs.program.after", st_collections_group_programs_program_after}, /* dup */ \
|
||||
{PREFIX".programs.program.api", st_collections_group_programs_program_api}, /* dup */ \
|
||||
{PREFIX".programs.program.filter", st_collections_group_programs_program_filter}, /* dup */ \
|
||||
{PREFIX".program.name", st_collections_group_programs_program_name}, /* dup */ \
|
||||
{PREFIX".program.signal", st_collections_group_programs_program_signal}, /* dup */ \
|
||||
{PREFIX".program.source", st_collections_group_programs_program_source}, /* dup */ \
|
||||
{PREFIX".program.in", st_collections_group_programs_program_in}, /* dup */ \
|
||||
{PREFIX".program.action", st_collections_group_programs_program_action}, /* dup */ \
|
||||
{PREFIX".program.transition", st_collections_group_programs_program_transition}, /* dup */ \
|
||||
{PREFIX".program.target", st_collections_group_programs_program_target}, /* dup */ \
|
||||
{PREFIX".program.after", st_collections_group_programs_program_after}, /* dup */ \
|
||||
{PREFIX".program.api", st_collections_group_programs_program_api}, /* dup */ \
|
||||
{PREFIX".program.filter", st_collections_group_programs_program_filter}, /* dup */ \
|
||||
|
||||
New_Statement_Handler statement_handlers[] =
|
||||
{
|
||||
{"externals.external", st_externals_external},
|
||||
|
@ -717,146 +753,33 @@ New_Statement_Handler statement_handlers[] =
|
|||
{"collections.group.parts.part.description.color_classes.color_class.color", st_color_class_color}, /* dup */
|
||||
{"collections.group.parts.part.description.color_classes.color_class.color2", st_color_class_color2}, /* dup */
|
||||
{"collections.group.parts.part.description.color_classes.color_class.color3", st_color_class_color3}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.image", st_images_image}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.image", st_images_image}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.fonts.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.after", st_collections_group_programs_program_after}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.api", st_collections_group_programs_program_api}, /* dup */
|
||||
{"collections.group.parts.part.description.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.parts.part.description.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.parts.part.description.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.parts.part.description.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.parts.part.description.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.parts.part.description.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.parts.part.description.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.parts.part.description.program.after", st_collections_group_programs_program_after}, /* dup */
|
||||
{"collections.group.parts.part.description.program.api", st_collections_group_programs_program_api}, /* dup */
|
||||
{"collections.group.parts.part.programs.image", st_images_image}, /* dup */
|
||||
{"collections.group.parts.part.programs.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.parts.part.programs.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.parts.part.programs.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.parts.part.programs.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.parts.part.programs.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.image", st_images_image}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.parts.part.programs.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.parts.part.programs.fonts.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.after", st_collections_group_programs_program_after}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.api", st_collections_group_programs_program_api}, /* dup */
|
||||
{"collections.group.parts.part.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.parts.part.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.parts.part.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.parts.part.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.parts.part.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.parts.part.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.parts.part.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.parts.part.program.after", st_collections_group_programs_program_after}, /* dup */
|
||||
{"collections.group.parts.part.program.api", st_collections_group_programs_program_api}, /* dup */
|
||||
{"collections.group.parts.programs.image", st_images_image}, /* dup */
|
||||
{"collections.group.parts.programs.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.parts.programs.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.parts.programs.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.parts.programs.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.parts.programs.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.parts.programs.images.image", st_images_image}, /* dup */
|
||||
{"collections.group.parts.programs.images.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.parts.programs.images.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.parts.programs.images.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.parts.programs.images.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.parts.programs.images.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.parts.programs.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.parts.programs.fonts.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.parts.programs.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.parts.programs.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.parts.programs.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.parts.programs.program.filter", st_collections_group_programs_program_filter}, /* dup */
|
||||
{"collections.group.parts.programs.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.parts.programs.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.parts.programs.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.parts.programs.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.parts.programs.program.after", st_collections_group_programs_program_after},
|
||||
{"collections.group.parts.programs.program.api", st_collections_group_programs_program_api},
|
||||
{"collections.group.parts.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.parts.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.parts.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.parts.program.filter", st_collections_group_programs_program_filter}, /* dup */
|
||||
{"collections.group.parts.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.parts.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.parts.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.parts.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.parts.program.after", st_collections_group_programs_program_after}, /* dup */
|
||||
{"collections.group.parts.program.api", st_collections_group_programs_program_api}, /* dup */
|
||||
#ifdef HAVE_EPHYSICS
|
||||
{"collections.group.physics.world.gravity", st_collections_group_physics_world_gravity},
|
||||
{"collections.group.physics.world.rate", st_collections_group_physics_world_rate},
|
||||
{"collections.group.physics.world.z", st_collections_group_physics_world_z},
|
||||
{"collections.group.physics.world.depth", st_collections_group_physics_world_depth},
|
||||
#endif
|
||||
{"collections.group.program.name", st_collections_group_programs_program_name}, /* dup */
|
||||
{"collections.group.program.signal", st_collections_group_programs_program_signal}, /* dup */
|
||||
{"collections.group.program.source", st_collections_group_programs_program_source}, /* dup */
|
||||
{"collections.group.program.filter", st_collections_group_programs_program_filter}, /* dup */
|
||||
{"collections.group.program.in", st_collections_group_programs_program_in}, /* dup */
|
||||
{"collections.group.program.action", st_collections_group_programs_program_action}, /* dup */
|
||||
{"collections.group.program.transition", st_collections_group_programs_program_transition}, /* dup */
|
||||
{"collections.group.program.target", st_collections_group_programs_program_target}, /* dup */
|
||||
{"collections.group.program.after", st_collections_group_programs_program_after}, /* dup */
|
||||
{"collections.group.program.api", st_collections_group_programs_program_api}, /* dup */
|
||||
{"collections.group.programs.program.name", st_collections_group_programs_program_name},
|
||||
{"collections.group.programs.program.signal", st_collections_group_programs_program_signal},
|
||||
{"collections.group.programs.program.source", st_collections_group_programs_program_source},
|
||||
{"collections.group.programs.program.filter", st_collections_group_programs_program_filter}, /* dup */
|
||||
{"collections.group.programs.program.in", st_collections_group_programs_program_in},
|
||||
{"collections.group.programs.program.action", st_collections_group_programs_program_action},
|
||||
{"collections.group.programs.program.transition", st_collections_group_programs_program_transition},
|
||||
{"collections.group.programs.program.target", st_collections_group_programs_program_target},
|
||||
{"collections.group.programs.program.after", st_collections_group_programs_program_after},
|
||||
{"collections.group.programs.program.api", st_collections_group_programs_program_api},
|
||||
{"collections.group.programs.image", st_images_image}, /* dup */
|
||||
{"collections.group.programs.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.programs.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.programs.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.programs.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.programs.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.programs.images.image", st_images_image}, /* dup */
|
||||
{"collections.group.programs.images.set.name", st_images_set_name}, /* dup */
|
||||
{"collections.group.programs.images.set.image.image", st_images_set_image_image}, /* dup */
|
||||
{"collections.group.programs.images.set.image.size", st_images_set_image_size}, /* dup */
|
||||
{"collections.group.programs.images.set.image.border", st_images_set_image_border}, /* dup */
|
||||
{"collections.group.programs.images.set.image.scale_by", st_images_set_image_border_scale_by}, /* dup */
|
||||
{"collections.group.programs.font", st_fonts_font}, /* dup */
|
||||
{"collections.group.programs.fonts.font", st_fonts_font} /* dup */
|
||||
PROGRAM_STATEMENTS("collections.group.parts.part.description")
|
||||
PROGRAM_STATEMENTS("collections.group.parts.part")
|
||||
PROGRAM_STATEMENTS("collections.group.parts")
|
||||
PROGRAM_STATEMENTS("collections.group")
|
||||
};
|
||||
|
||||
#define PROGRAM_OBJECTS(PREFIX) \
|
||||
{PREFIX".program", ob_collections_group_programs_program}, /* dup */ \
|
||||
{PREFIX".program.script", ob_collections_group_programs_program_script}, /* dup */ \
|
||||
{PREFIX".programs", NULL}, /* dup */ \
|
||||
{PREFIX".programs.set", ob_images_set}, /* dup */ \
|
||||
{PREFIX".programs.set.image", ob_images_set_image}, /* dup */ \
|
||||
{PREFIX".programs.images", NULL}, /* dup */ \
|
||||
{PREFIX".programs.images.set", ob_images_set}, /* dup */ \
|
||||
{PREFIX".programs.images.set.image", ob_images_set_image}, /* dup */ \
|
||||
{PREFIX".programs.fonts", NULL}, /* dup */ \
|
||||
{PREFIX".programs.program", ob_collections_group_programs_program}, /* dup */ \
|
||||
{PREFIX".programs.program.script", ob_collections_group_programs_program_script}, /* dup */ \
|
||||
{PREFIX".programs.script", ob_collections_group_script}, /* dup */ \
|
||||
{PREFIX".script", ob_collections_group_script}, /* dup */
|
||||
|
||||
New_Object_Handler object_handlers[] =
|
||||
{
|
||||
{"externals", NULL},
|
||||
|
@ -965,58 +888,14 @@ New_Object_Handler object_handlers[] =
|
|||
{"collections.group.parts.part.description.params", NULL},
|
||||
{"collections.group.parts.part.description.color_classes", NULL}, /* dup */
|
||||
{"collections.group.parts.part.description.color_classes.color_class", ob_color_class}, /* dup */
|
||||
{"collections.group.parts.part.description.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.parts.part.description.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.parts.part.description.programs", NULL}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set", ob_images_set}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images", NULL}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.images.set", ob_images_set},
|
||||
{"collections.group.parts.part.description.programs.images.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.fonts", NULL}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.parts.part.description.programs.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.parts.part.description.script", ob_collections_group_script}, /* dup */
|
||||
{"collections.group.parts.part.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.parts.part.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.parts.part.programs", NULL}, /* dup */
|
||||
{"collections.group.parts.part.programs.set", ob_images_set}, /* dup */
|
||||
{"collections.group.parts.part.programs.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.parts.part.programs.images", NULL}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set", ob_images_set}, /* dup */
|
||||
{"collections.group.parts.part.programs.images.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.parts.part.programs.fonts", NULL}, /* dup */
|
||||
{"collections.group.parts.part.programs.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.parts.part.programs.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.parts.part.script", ob_collections_group_script}, /* dup */
|
||||
{"collections.group.parts.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.parts.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.parts.programs", NULL}, /* dup */
|
||||
{"collections.group.parts.programs.set", ob_images_set}, /* dup */
|
||||
{"collections.group.parts.programs.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.parts.programs.images", NULL}, /* dup */
|
||||
{"collections.group.parts.programs.images.set", ob_images_set}, /* dup */
|
||||
{"collections.group.parts.programs.images.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.parts.programs.fonts", NULL}, /* dup */
|
||||
{"collections.group.parts.programs.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.parts.programs.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.parts.script", ob_collections_group_script}, /* dup */
|
||||
#ifdef HAVE_EPHYSICS
|
||||
{"collections.group.physics", NULL},
|
||||
{"collections.group.physics.world", NULL},
|
||||
#endif
|
||||
{"collections.group.program", ob_collections_group_programs_program}, /* dup */
|
||||
{"collections.group.program.script", ob_collections_group_programs_program_script}, /* dup */
|
||||
{"collections.group.programs", NULL},
|
||||
{"collections.group.programs.set", ob_images_set}, /* dup */
|
||||
{"collections.group.programs.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.programs.images", NULL}, /* dup */
|
||||
{"collections.group.programs.images.set", ob_images_set}, /* dup */
|
||||
{"collections.group.programs.images.set.image", ob_images_set_image}, /* dup */
|
||||
{"collections.group.programs.fonts", NULL}, /* dup */
|
||||
{"collections.group.programs.program", ob_collections_group_programs_program},
|
||||
{"collections.group.programs.program.script", ob_collections_group_programs_program_script},
|
||||
{"collections.group.programs.script", ob_collections_group_script} /* dup */
|
||||
PROGRAM_OBJECTS("collections.group.parts.part.description")
|
||||
PROGRAM_OBJECTS("collections.group.parts.part")
|
||||
PROGRAM_OBJECTS("collections.group.parts")
|
||||
PROGRAM_OBJECTS("collections.group")
|
||||
};
|
||||
|
||||
New_Nested_Handler nested_handlers[] = {
|
||||
|
@ -2568,6 +2447,8 @@ ob_collections_group(void)
|
|||
current_de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry));
|
||||
current_de->id = eina_list_count(edje_collections);
|
||||
|
||||
if (!edje_collections_lookup)
|
||||
ob_collections();
|
||||
eina_hash_add(edje_collections_lookup, ¤t_de->id, current_de);
|
||||
|
||||
pc = mem_alloc(SZ(Edje_Part_Collection_Parser));
|
||||
|
@ -9169,7 +9050,7 @@ st_collections_group_programs_program_action(void)
|
|||
if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
|
||||
{
|
||||
ep->state = parse_str(1);
|
||||
if (get_arg_count() == 1)
|
||||
if (get_arg_count() == 2)
|
||||
ep->value = 0.0;
|
||||
else
|
||||
ep->value = parse_float_range(2, 0.0, 1.0);
|
||||
|
@ -9309,6 +9190,9 @@ st_collections_group_programs_program_action(void)
|
|||
break;
|
||||
case EDJE_ACTION_TYPE_SOUND_SAMPLE:
|
||||
break;
|
||||
case EDJE_ACTION_TYPE_STATE_SET:
|
||||
check_min_arg_count(2);
|
||||
break;
|
||||
default:
|
||||
check_arg_count(3);
|
||||
}
|
||||
|
|
|
@ -2248,6 +2248,7 @@ _data_image_id_update(Eina_List *images_unused_list)
|
|||
if (part->type == EDJE_PART_TYPE_IMAGE)
|
||||
{
|
||||
part_desc_image = (Edje_Part_Description_Image *)part->default_desc;
|
||||
if (!part_desc_image) continue;
|
||||
PART_DESC_IMAGE_ID_UPDATE
|
||||
for (j = 0; j < part->other.desc_count; j++)
|
||||
{
|
||||
|
|
|
@ -7,6 +7,14 @@
|
|||
static const char *code_prefix = NULL;
|
||||
static char buffer[4028];
|
||||
|
||||
static const char *
|
||||
null_or_zero(const char *type)
|
||||
{
|
||||
if (type[0] == 's' || type[0] == 'o' || type[0] == 'v' || type[1])
|
||||
return "NULL";
|
||||
return "0";
|
||||
}
|
||||
|
||||
static const char *
|
||||
prefix_append(const char *text)
|
||||
{
|
||||
|
@ -252,7 +260,7 @@ source_client_simple_method_callback_generate(const DBus_Method *method, Eina_St
|
|||
continue;
|
||||
eina_strbuf_append(full_signature, arg->type);
|
||||
eina_strbuf_append_printf(h, ", %s%s", dbus_type2c_type(arg->type), arg->c_name);
|
||||
eina_strbuf_append_printf(c_code, " %s%s;\n", dbus_type2c_type(arg->type), arg->c_name);
|
||||
eina_strbuf_append_printf(c_code, " %s%s = %s;\n", dbus_type2c_type(arg->type), arg->c_name, null_or_zero(arg->type));
|
||||
eina_strbuf_append_printf(end_cb, ", %s", arg->c_name);
|
||||
eina_strbuf_append_printf(arguments_get, ", &%s", arg->c_name);
|
||||
}
|
||||
|
@ -416,14 +424,6 @@ prop_cb_get(const DBus_Property *prop)
|
|||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
null_or_zero(const char *type)
|
||||
{
|
||||
if (type[0] == 's' || type[0] == 'o' || type[0] == 'v' || type[1])
|
||||
return "NULL";
|
||||
return "0";
|
||||
}
|
||||
|
||||
static void
|
||||
source_client_property_generate_get(const DBus_Property *prop, Eina_Strbuf *c_code, Eina_Strbuf *h)
|
||||
{
|
||||
|
|
|
@ -1712,6 +1712,7 @@ _file_changed_cb(const char *path EINA_UNUSED, Eina_Bool deleted EINA_UNUSED, vo
|
|||
if (fd)
|
||||
{
|
||||
fd->changed = EINA_TRUE;
|
||||
fd->valid = EINA_FALSE;
|
||||
_file_id_free(fd);
|
||||
eina_hash_set(file_entries, &fd->id, NULL);
|
||||
}
|
||||
|
|
|
@ -108,7 +108,7 @@ _on_keydown(void *data EINA_UNUSED,
|
|||
|
||||
if (strcmp(ev->key, "h") == 0) /* print help */
|
||||
{
|
||||
fprintf(stdout, commands);
|
||||
fprintf(stdout, "%s", commands);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -361,7 +361,7 @@ main(void)
|
|||
evas_object_image_border_center_fill_set(d.border, EVAS_BORDER_FILL_NONE);
|
||||
evas_object_show(d.border);
|
||||
|
||||
fprintf(stdout, commands);
|
||||
fprintf(stdout, "%s", commands);
|
||||
|
||||
_canvas_resize_cb(d.ee);
|
||||
ecore_main_loop_begin();
|
||||
|
|
|
@ -610,9 +610,8 @@ ecore_main_loop_thread_safe_call_sync(Ecore_Data_Cb callback,
|
|||
order->sync = EINA_TRUE;
|
||||
order->suspend = EINA_FALSE;
|
||||
|
||||
_ecore_main_loop_thread_safe_call(order);
|
||||
|
||||
eina_lock_take(&order->m);
|
||||
_ecore_main_loop_thread_safe_call(order);
|
||||
eina_condition_wait(&order->c);
|
||||
eina_lock_release(&order->m);
|
||||
|
||||
|
@ -1023,7 +1022,9 @@ _ecore_main_call_flush(void)
|
|||
else if (call->sync)
|
||||
{
|
||||
call->data = call->cb.sync(call->data);
|
||||
eina_lock_take(&call->m);
|
||||
eina_condition_broadcast(&call->c);
|
||||
eina_lock_release(&call->m);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -44,7 +44,7 @@ _ecore_avahi_events2ecore(AvahiWatchEvent events)
|
|||
{
|
||||
return (events & AVAHI_WATCH_IN ? ECORE_FD_READ : 0) |
|
||||
(events & AVAHI_WATCH_OUT ? ECORE_FD_WRITE : 0) |
|
||||
(events & AVAHI_WATCH_ERR ? ECORE_FD_ERROR : 0);
|
||||
ECORE_FD_ERROR;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
@ -88,7 +88,7 @@ _ecore_avahi_watch_new(const AvahiPoll *api,
|
|||
static void
|
||||
_ecore_avahi_watch_update(AvahiWatch *w, AvahiWatchEvent events)
|
||||
{
|
||||
Ecore_Avahi_Watch *watch = (Ecore_Avahi_Watch *) w;
|
||||
Ecore_Avahi_Watch *watch = (Ecore_Avahi_Watch *) w;
|
||||
|
||||
ecore_main_fd_handler_active_set(watch->handler, _ecore_avahi_events2ecore(events));
|
||||
}
|
||||
|
@ -119,8 +119,17 @@ _ecore_avahi_watch_get_events(AvahiWatch *w)
|
|||
static double
|
||||
_ecore_avahi_timeval2double(const struct timeval *tv)
|
||||
{
|
||||
struct timeval now;
|
||||
double tm;
|
||||
|
||||
if (!tv) return 3600;
|
||||
return tv->tv_sec + (double) tv->tv_usec / 1000000;
|
||||
|
||||
gettimeofday(&now, NULL);
|
||||
|
||||
tm = tv->tv_sec - now.tv_sec + (double) (tv->tv_usec - now.tv_usec) / 1000000;
|
||||
if (tm < 0) tm = 0.001;
|
||||
|
||||
return tm;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
@ -128,10 +137,10 @@ _ecore_avahi_timeout_cb(void *data)
|
|||
{
|
||||
Ecore_Avahi_Timeout *timeout = data;
|
||||
|
||||
ecore_timer_freeze(timeout->timer);
|
||||
timeout->callback((AvahiTimeout*) timeout, timeout->callback_data);
|
||||
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
timeout->timer = NULL;
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
static AvahiTimeout *
|
||||
|
@ -144,9 +153,8 @@ _ecore_avahi_timeout_new(const AvahiPoll *api, const struct timeval *tv,
|
|||
ea = api->userdata;
|
||||
timeout = calloc(1, sizeof (Ecore_Avahi_Timeout));
|
||||
if (!timeout) return NULL;
|
||||
|
||||
timeout->timer = ecore_timer_add(_ecore_avahi_timeval2double(tv), _ecore_avahi_timeout_cb, timeout);
|
||||
if (!tv) ecore_timer_freeze(timeout->timer);
|
||||
if (tv) timeout->timer = ecore_timer_add(_ecore_avahi_timeval2double(tv),
|
||||
_ecore_avahi_timeout_cb, timeout);
|
||||
timeout->callback = callback;
|
||||
timeout->callback_data = userdata;
|
||||
timeout->parent = ea;
|
||||
|
@ -161,16 +169,12 @@ _ecore_avahi_timeout_update(AvahiTimeout *t, const struct timeval *tv)
|
|||
{
|
||||
Ecore_Avahi_Timeout *timeout = (Ecore_Avahi_Timeout *) t;
|
||||
|
||||
if (timeout->timer) ecore_timer_del(timeout->timer);
|
||||
timeout->timer = NULL;
|
||||
|
||||
if (tv)
|
||||
{
|
||||
ecore_timer_interval_set(timeout->timer, _ecore_avahi_timeval2double(tv));
|
||||
if (ecore_timer_freeze_get(timeout->timer))
|
||||
ecore_timer_thaw(timeout->timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
ecore_timer_freeze(timeout->timer);
|
||||
}
|
||||
timeout->timer = ecore_timer_add(_ecore_avahi_timeval2double(tv),
|
||||
_ecore_avahi_timeout_cb, timeout);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -178,7 +182,7 @@ _ecore_avahi_timeout_free(AvahiTimeout *t)
|
|||
{
|
||||
Ecore_Avahi_Timeout *timeout = (Ecore_Avahi_Timeout *) t;
|
||||
|
||||
ecore_timer_del(timeout->timer);
|
||||
if (timeout->timer) ecore_timer_del(timeout->timer);
|
||||
timeout->parent->timeouts = eina_list_remove(timeout->parent->timeouts, timeout);
|
||||
free(timeout);
|
||||
}
|
||||
|
|
|
@ -702,7 +702,8 @@ ecore_con_server_send(Ecore_Con_Server *svr,
|
|||
}
|
||||
#endif
|
||||
}
|
||||
eina_binbuf_append_length(svr->buf, data, size);
|
||||
if (!eina_binbuf_append_length(svr->buf, data, size))
|
||||
ERR("eina_binbuf_append_length() failed");
|
||||
|
||||
return size;
|
||||
}
|
||||
|
@ -815,7 +816,8 @@ ecore_con_client_send(Ecore_Con_Client *cl,
|
|||
}
|
||||
#endif
|
||||
}
|
||||
eina_binbuf_append_length(cl->buf, data, size);
|
||||
if (!eina_binbuf_append_length(cl->buf, data, size))
|
||||
ERR("eina_binbuf_append_length() failed");
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
@ -2291,9 +2293,10 @@ _ecore_con_svr_cl_handler(void *data,
|
|||
static void
|
||||
_ecore_con_server_flush(Ecore_Con_Server *svr)
|
||||
{
|
||||
int count, num;
|
||||
int count;
|
||||
size_t num;
|
||||
size_t buf_len;
|
||||
unsigned int *buf_offset;
|
||||
size_t *buf_offset;
|
||||
const unsigned char *buf;
|
||||
Eina_Binbuf *buf_p;
|
||||
|
||||
|
@ -2400,7 +2403,8 @@ _ecore_con_server_flush(Ecore_Con_Server *svr)
|
|||
static void
|
||||
_ecore_con_client_flush(Ecore_Con_Client *cl)
|
||||
{
|
||||
int num = 0, count = 0;
|
||||
int count = 0;
|
||||
size_t num = 0;
|
||||
|
||||
if (!cl->fd_handler) return;
|
||||
#ifdef _WIN32
|
||||
|
|
|
@ -659,7 +659,7 @@ close_pipe:
|
|||
Eina_Bool
|
||||
ecore_con_local_win32_server_flush(Ecore_Con_Server *svr)
|
||||
{
|
||||
int num;
|
||||
size_t num;
|
||||
BOOL res;
|
||||
DWORD written;
|
||||
|
||||
|
@ -706,7 +706,7 @@ Eina_Bool
|
|||
ecore_con_local_win32_client_flush(Ecore_Con_Client *cl)
|
||||
{
|
||||
Ecore_Con_Type type;
|
||||
int num;
|
||||
size_t num;
|
||||
BOOL res;
|
||||
DWORD written;
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ struct _Ecore_Con_Client
|
|||
Ecore_Con_Server *host_server;
|
||||
void *data;
|
||||
Ecore_Fd_Handler *fd_handler;
|
||||
unsigned int buf_offset;
|
||||
size_t buf_offset;
|
||||
Eina_Binbuf *buf;
|
||||
const char *ip;
|
||||
Eina_List *event_count;
|
||||
|
@ -136,7 +136,7 @@ struct _Ecore_Con_Server
|
|||
Eina_List *clients;
|
||||
unsigned int client_count;
|
||||
Eina_Binbuf *buf;
|
||||
unsigned int write_buf_offset;
|
||||
size_t write_buf_offset;
|
||||
Eina_List *infos;
|
||||
Eina_List *event_count;
|
||||
int client_limit;
|
||||
|
@ -146,7 +146,7 @@ struct _Ecore_Con_Server
|
|||
Ecore_Con_Proxy_State ecs_state;
|
||||
int ecs_addrlen;
|
||||
unsigned char ecs_addr[16];
|
||||
unsigned int ecs_buf_offset;
|
||||
size_t ecs_buf_offset;
|
||||
Eina_Binbuf *ecs_buf;
|
||||
Eina_Binbuf *ecs_recvbuf;
|
||||
const char *proxyip;
|
||||
|
|
|
@ -101,9 +101,11 @@ _ecore_evas_engine_init(void)
|
|||
|
||||
/* 1. libecore_evas.so/../ecore_evas/engines/ */
|
||||
paths[0] = eina_module_symbol_path_get(_ecore_evas_engine_init, "/ecore_evas/engines");
|
||||
/* 2. PREFIX/ecore_evas/engines/ */
|
||||
#ifndef _MSC_VER
|
||||
#ifndef _WIN32
|
||||
/* 3. PREFIX/ecore_evas/engines/ */
|
||||
paths[1] = strdup(PACKAGE_LIB_DIR "/ecore_evas/engines");
|
||||
#else
|
||||
paths[1] = eina_module_symbol_path_get(_ecore_evas_engine_init, "/../lib/ecore_evas/engines");
|
||||
#endif
|
||||
|
||||
for (j = 0; j < ((sizeof (paths) / sizeof (char*)) - 1); ++j)
|
||||
|
|
|
@ -277,6 +277,11 @@ EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_MOUSE;
|
|||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ENABLE;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_DISABLE;
|
||||
|
||||
/* Abi compat fix */
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ENABLE;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_DISABLE;
|
||||
/* End of Abi compat fix */
|
||||
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_COUNTER;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE;
|
||||
EAPI extern Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED;
|
||||
|
|
|
@ -303,6 +303,11 @@ EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_MOUSE = 0;
|
|||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ENABLE = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_DISABLE = 0;
|
||||
|
||||
/* Abi compat fix */
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_ENABLE = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_ILLUME_ACCESS_DISABLE = 0;
|
||||
/* End of Abi compat fix */
|
||||
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_COUNTER = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE = 0;
|
||||
EAPI Ecore_X_Atom ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED = 0;
|
||||
|
@ -632,6 +637,10 @@ const Atom_Item atom_items[] =
|
|||
{ "_E_ILLUME_ACCESS_ACTION_MOUSE", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_MOUSE },
|
||||
{ "_E_ILLUME_ACCESS_ACTION_ENABLE", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_ENABLE },
|
||||
{ "_E_ILLUME_ACCESS_ACTION_DISABLE", &ECORE_X_ATOM_E_ILLUME_ACCESS_ACTION_DISABLE },
|
||||
/* Abi compat fix */
|
||||
{ "_E_ILLUME_ACCESS_ENABLE", &ECORE_X_ATOM_E_ILLUME_ACCESS_ENABLE },
|
||||
{ "_E_ILLUME_ACCESS_DISABLE", &ECORE_X_ATOM_E_ILLUME_ACCESS_DISABLE },
|
||||
/* End of Abi compat fix */
|
||||
{ "_E_COMP_SYNC_COUNTER", &ECORE_X_ATOM_E_COMP_SYNC_COUNTER },
|
||||
{ "_E_COMP_SYNC_DRAW_DONE", &ECORE_X_ATOM_E_COMP_SYNC_DRAW_DONE },
|
||||
{ "_E_COMP_SYNC_SUPPORTED", &ECORE_X_ATOM_E_COMP_SYNC_SUPPORTED },
|
||||
|
|
|
@ -96,6 +96,12 @@ _ecore_x_image_shm_check(void)
|
|||
if (_ecore_x_image_shm_can != -1)
|
||||
return;
|
||||
|
||||
if (!XShmQueryExtension(_ecore_x_disp))
|
||||
{
|
||||
_ecore_x_image_shm_can = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
XSync(_ecore_x_disp, False);
|
||||
_ecore_x_image_err = 0;
|
||||
|
||||
|
@ -216,6 +222,18 @@ ecore_x_image_free(Ecore_X_Image *im)
|
|||
free(im);
|
||||
}
|
||||
|
||||
static void
|
||||
_ecore_x_image_finalize(Ecore_X_Image *im)
|
||||
{
|
||||
im->data = (unsigned char *)im->xim->data;
|
||||
im->bpl = im->xim->bytes_per_line;
|
||||
im->rows = im->xim->height;
|
||||
if (im->xim->bits_per_pixel <= 8) im->bpp = 1;
|
||||
else if (im->xim->bits_per_pixel <= 16) im->bpp = 2;
|
||||
else if (im->xim->bits_per_pixel <= 24) im->bpp = 3;
|
||||
else im->bpp = 4;
|
||||
}
|
||||
|
||||
static void
|
||||
_ecore_x_image_shm_create(Ecore_X_Image *im)
|
||||
{
|
||||
|
@ -230,6 +248,7 @@ _ecore_x_image_shm_create(Ecore_X_Image *im)
|
|||
IPC_CREAT | 0666);
|
||||
if (im->shminfo.shmid == -1)
|
||||
{
|
||||
ERR("shmget failed: %s", strerror(errno));
|
||||
XDestroyImage(im->xim);
|
||||
im->xim = NULL;
|
||||
return;
|
||||
|
@ -241,6 +260,7 @@ _ecore_x_image_shm_create(Ecore_X_Image *im)
|
|||
if ((im->xim->data == (char *)-1) ||
|
||||
(!im->xim->data))
|
||||
{
|
||||
ERR("shmat failed: %s", strerror(errno));
|
||||
shmdt(im->shminfo.shmaddr);
|
||||
shmctl(im->shminfo.shmid, IPC_RMID, 0);
|
||||
XDestroyImage(im->xim);
|
||||
|
@ -249,19 +269,23 @@ _ecore_x_image_shm_create(Ecore_X_Image *im)
|
|||
}
|
||||
|
||||
XShmAttach(_ecore_x_disp, &im->shminfo);
|
||||
_ecore_x_image_finalize(im);
|
||||
}
|
||||
|
||||
im->data = (unsigned char *)im->xim->data;
|
||||
|
||||
im->bpl = im->xim->bytes_per_line;
|
||||
im->rows = im->xim->height;
|
||||
if (im->xim->bits_per_pixel <= 8)
|
||||
im->bpp = 1;
|
||||
else if (im->xim->bits_per_pixel <= 16)
|
||||
im->bpp = 2;
|
||||
else if (im->xim->bits_per_pixel <= 24)
|
||||
im->bpp = 3;
|
||||
else
|
||||
im->bpp = 4;
|
||||
static void
|
||||
_ecore_x_image_create(Ecore_X_Image *im)
|
||||
{
|
||||
im->xim = XCreateImage(_ecore_x_disp, im->vis, im->depth,
|
||||
ZPixmap, 0, NULL, im->w, im->h, 32, 0);
|
||||
if (!im->xim) return;
|
||||
im->xim->data = malloc(im->xim->bytes_per_line * im->h);
|
||||
if (!im->xim->data)
|
||||
{
|
||||
XDestroyImage(im->xim);
|
||||
im->xim = NULL;
|
||||
return;
|
||||
}
|
||||
_ecore_x_image_finalize(im);
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
|
@ -280,11 +304,12 @@ ecore_x_image_get(Ecore_X_Image *im,
|
|||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||
if (im->shm)
|
||||
{
|
||||
|
||||
if (!im->xim)
|
||||
_ecore_x_image_shm_create(im);
|
||||
|
||||
if (!im->xim)
|
||||
return 0;
|
||||
return EINA_FALSE;
|
||||
|
||||
_ecore_x_image_err = 0;
|
||||
|
||||
|
@ -345,8 +370,15 @@ ecore_x_image_get(Ecore_X_Image *im,
|
|||
}
|
||||
else
|
||||
{
|
||||
printf("currently unimplemented ecore_x_image_get without shm\n");
|
||||
ret = EINA_FALSE;
|
||||
if (!im->xim)
|
||||
_ecore_x_image_create(im);
|
||||
|
||||
if (!im->xim)
|
||||
return EINA_FALSE;
|
||||
|
||||
if (XGetSubImage(_ecore_x_disp, draw, sx, sy, w, h,
|
||||
0xffffffff, ZPixmap, im->xim, x, y) != im->xim)
|
||||
ret = EINA_FALSE;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -375,10 +407,19 @@ ecore_x_image_put(Ecore_X_Image *im,
|
|||
if (_ecore_xlib_sync) ecore_x_sync();
|
||||
gc = tgc;
|
||||
}
|
||||
if (!im->xim) _ecore_x_image_shm_create(im);
|
||||
if (!im->xim)
|
||||
{
|
||||
if (im->shm) _ecore_x_image_shm_create(im);
|
||||
else _ecore_x_image_create(im);
|
||||
}
|
||||
if (im->xim)
|
||||
{
|
||||
XShmPutImage(_ecore_x_disp, draw, gc, im->xim, sx, sy, x, y, w, h, False);
|
||||
if (im->shm)
|
||||
XShmPutImage(_ecore_x_disp, draw, gc, im->xim,
|
||||
sx, sy, x, y, w, h, False);
|
||||
else
|
||||
XPutImage(_ecore_x_disp, draw, gc, im->xim,
|
||||
sx, sy, x, y, w, h);
|
||||
if (_ecore_xlib_sync) ecore_x_sync();
|
||||
}
|
||||
if (tgc) ecore_x_gc_free(tgc);
|
||||
|
@ -391,8 +432,12 @@ ecore_x_image_data_get(Ecore_X_Image *im,
|
|||
int *bpp)
|
||||
{
|
||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||
if (!im->xim) _ecore_x_image_shm_create(im);
|
||||
if (!im->xim) return NULL;
|
||||
if (!im->xim)
|
||||
{
|
||||
if (im->shm) _ecore_x_image_shm_create(im);
|
||||
else _ecore_x_image_create(im);
|
||||
if (!im->xim) return NULL;
|
||||
}
|
||||
if (bpl) *bpl = im->bpl;
|
||||
if (rows) *rows = im->rows;
|
||||
if (bpp) *bpp = im->bpp;
|
||||
|
@ -403,7 +448,12 @@ EAPI Eina_Bool
|
|||
ecore_x_image_is_argb32_get(Ecore_X_Image *im)
|
||||
{
|
||||
Visual *vis = im->vis;
|
||||
if (!im->xim) _ecore_x_image_shm_create(im);
|
||||
if (!im->xim)
|
||||
{
|
||||
if (im->shm) _ecore_x_image_shm_create(im);
|
||||
else _ecore_x_image_create(im);
|
||||
if (!im->xim) return EINA_FALSE;
|
||||
}
|
||||
if (((vis->class == TrueColor) ||
|
||||
(vis->class == DirectColor)) &&
|
||||
(im->bpp == 4) &&
|
||||
|
@ -711,4 +761,3 @@ ecore_x_image_to_argb_convert(void *src,
|
|||
}
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1683,7 +1683,6 @@ _ecore_x_window_argb_internal_new(Ecore_X_Window parent,
|
|||
CWWinGravity,
|
||||
&attr);
|
||||
if (_ecore_xlib_sync) ecore_x_sync();
|
||||
XFreeColormap(_ecore_x_disp, attr.colormap);
|
||||
|
||||
if (parent == DefaultRootWindow(_ecore_x_disp))
|
||||
ecore_x_window_defaults_set(win);
|
||||
|
|
|
@ -3904,10 +3904,14 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
{
|
||||
if (pf->visible)
|
||||
{
|
||||
Eina_Bool vis = EINA_TRUE;
|
||||
|
||||
if (ep->part->type == EDJE_PART_TYPE_GROUP)
|
||||
vis = evas_object_visible_get(ed->obj);
|
||||
eo_do(ep->typedata.swallow->swallowed_object,
|
||||
evas_obj_position_set(ed->x + pf->final.x, ed->y + pf->final.y),
|
||||
evas_obj_size_set(pf->final.w, pf->final.h),
|
||||
evas_obj_visibility_set(EINA_TRUE));
|
||||
evas_obj_visibility_set(vis));
|
||||
}
|
||||
else evas_object_hide(ep->typedata.swallow->swallowed_object);
|
||||
mo = ep->typedata.swallow->swallowed_object;
|
||||
|
|
|
@ -1275,12 +1275,12 @@ _edje_entry_hide_visible_password(Edje *ed, Edje_Real_Part *rp)
|
|||
{
|
||||
evas_textblock_node_format_remove_pair(rp->object,
|
||||
(Evas_Object_Textblock_Node_Format *) node);
|
||||
_edje_emit(ed, "entry,changed", rp->part->name);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
_edje_entry_real_part_configure(ed, rp);
|
||||
_edje_emit(ed, "entry,changed", rp->part->name);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
@ -1342,37 +1342,16 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
|||
if (en->imf_context)
|
||||
{
|
||||
Ecore_IMF_Event_Key_Down ecore_ev;
|
||||
Eina_Bool filter_ret;
|
||||
ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev);
|
||||
if (!en->composing)
|
||||
{
|
||||
filter_ret = ecore_imf_context_filter_event(en->imf_context,
|
||||
ECORE_IMF_EVENT_KEY_DOWN,
|
||||
(Ecore_IMF_Event *)&ecore_ev);
|
||||
|
||||
if (en->have_preedit)
|
||||
if (ecore_imf_context_filter_event(en->imf_context,
|
||||
ECORE_IMF_EVENT_KEY_DOWN,
|
||||
(Ecore_IMF_Event *)&ecore_ev))
|
||||
{
|
||||
if (!strcmp(ev->key, "Down") ||
|
||||
(!strcmp(ev->key, "KP_Down") && !ev->string) ||
|
||||
!strcmp(ev->key, "Up") ||
|
||||
(!strcmp(ev->key, "KP_Up") && !ev->string) ||
|
||||
!strcmp(ev->key, "Left") ||
|
||||
(!strcmp(ev->key, "KP_Left") && !ev->string) ||
|
||||
!strcmp(ev->key, "Right") ||
|
||||
(!strcmp(ev->key, "KP_Right") && !ev->string) ||
|
||||
!strcmp(ev->key, "Next") ||
|
||||
(!strcmp(ev->key, "KP_Next") && !ev->string) ||
|
||||
!strcmp(ev->key, "Prior") ||
|
||||
(!strcmp(ev->key, "KP_Prior") && !ev->string) ||
|
||||
!strcmp(ev->key, "Home") ||
|
||||
(!strcmp(ev->key, "KP_Home") && !ev->string) ||
|
||||
!strcmp(ev->key, "End") ||
|
||||
(!strcmp(ev->key, "KP_End") && !ev->string))
|
||||
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
|
||||
return;
|
||||
}
|
||||
|
||||
if (filter_ret)
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -940,7 +940,9 @@ _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const ch
|
|||
obj);
|
||||
if (rp->part->type == EDJE_PART_TYPE_GROUP)
|
||||
{
|
||||
ed->groups = eina_list_append(ed->groups, _edje_fetch(child_obj));
|
||||
Edje *edg = _edje_fetch(child_obj);
|
||||
ed->groups = eina_list_append(ed->groups, edg);
|
||||
evas_object_data_set(child_obj, "\377 edje.part_obj", rp);
|
||||
_edje_real_part_swallow(ed, rp, child_obj, EINA_TRUE);
|
||||
_edje_subobj_register(ed, child_obj);
|
||||
source = NULL;
|
||||
|
|
|
@ -1544,9 +1544,10 @@ struct _Edje_Real_Part_Text
|
|||
Evas_Coord in_w, in_h; // 8
|
||||
const char *in_str; // 4
|
||||
const char *out_str; // 4
|
||||
const char *in_font; // 4
|
||||
FLOAT_T align_x, align_y; // 16
|
||||
} cache;
|
||||
}; // 84
|
||||
}; // 88
|
||||
// FIXME make text a potiner to struct and alloc at end
|
||||
// if part type is TEXT move common members textblock +
|
||||
// text to front and have smaller struct for textblock
|
||||
|
|
|
@ -450,15 +450,6 @@ _edje_program_end(Edje *ed, Edje_Running_Program *runp)
|
|||
runp->program->tween.v3,
|
||||
runp->program->tween.v4);
|
||||
|
||||
if (rp->current)
|
||||
{
|
||||
eina_cow_free(_edje_calc_params_map_cow, (const Eina_Cow_Data **) &rp->current->map);
|
||||
#ifdef HAVE_EPHYSICS
|
||||
eina_cow_free(_edje_calc_params_physics_cow, (const Eina_Cow_Data **) &rp->current->physics);
|
||||
#endif
|
||||
free(rp->current);
|
||||
rp->current = NULL;
|
||||
}
|
||||
rp->program = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -586,7 +577,6 @@ _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig,
|
|||
free(rp->current);
|
||||
}
|
||||
rp->current = tmp;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -89,8 +89,8 @@ _edje_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
evas_object_static_clip_set(ed->base->clipper, 1);
|
||||
evas_object_smart_member_add(ed->base->clipper, obj);
|
||||
evas_object_color_set(ed->base->clipper, 255, 255, 255, 255);
|
||||
evas_object_move(ed->base->clipper, -10000, -10000);
|
||||
evas_object_resize(ed->base->clipper, 20000, 20000);
|
||||
evas_object_move(ed->base->clipper, -100000, -100000);
|
||||
evas_object_resize(ed->base->clipper, 200000, 200000);
|
||||
evas_object_pass_events_set(ed->base->clipper, 1);
|
||||
ed->is_rtl = EINA_FALSE;
|
||||
ed->have_objects = EINA_TRUE;
|
||||
|
@ -286,7 +286,8 @@ _edje_smart_resize(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list)
|
|||
static void
|
||||
_edje_smart_show(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
||||
{
|
||||
Edje *ed = _pd;
|
||||
Edje *ed = _pd, *edg;
|
||||
Eina_List *l;
|
||||
|
||||
eo_do_super(obj, MY_CLASS, evas_obj_smart_show());
|
||||
if (evas_object_visible_get(obj)) return;
|
||||
|
@ -300,13 +301,26 @@ _edje_smart_show(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
_edje_lua_script_only_show(ed);
|
||||
return;
|
||||
}
|
||||
if (eina_list_count(ed->groups) > 1)
|
||||
{
|
||||
EINA_LIST_FOREACH(ed->groups, l, edg)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
|
||||
if (edg == ed) continue;
|
||||
rp = evas_object_data_get(edg->obj, "\377 edje.part_obj");
|
||||
if (rp->chosen_description->visible)
|
||||
evas_object_show(edg->obj);
|
||||
}
|
||||
}
|
||||
_edje_emit(ed, "show", NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_edje_smart_hide(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
||||
{
|
||||
Edje *ed = _pd;
|
||||
Edje *ed = _pd, *edg;
|
||||
Eina_List *l;
|
||||
|
||||
eo_do_super(obj, MY_CLASS, evas_obj_smart_hide());
|
||||
if (!evas_object_visible_get(obj)) return;
|
||||
|
@ -320,6 +334,8 @@ _edje_smart_hide(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
_edje_lua_script_only_hide(ed);
|
||||
return;
|
||||
}
|
||||
EINA_LIST_FOREACH(ed->groups, l, edg)
|
||||
if (edg != ed) evas_object_hide(edg->obj);
|
||||
_edje_emit(ed, "hide", NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -266,7 +266,8 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
(ep->typedata.text->cache.align_y == params->type.text.align.y) &&
|
||||
(ep->typedata.text->cache.elipsis == params->type.text.elipsis) &&
|
||||
(ep->typedata.text->cache.fit_x == chosen_desc->text.fit_x) &&
|
||||
(ep->typedata.text->cache.fit_y == chosen_desc->text.fit_y))
|
||||
(ep->typedata.text->cache.fit_y == chosen_desc->text.fit_y) &&
|
||||
(ep->typedata.text->cache.in_font == font))
|
||||
{
|
||||
text = ep->typedata.text->cache.out_str;
|
||||
size = ep->typedata.text->cache.out_size;
|
||||
|
@ -414,6 +415,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
eina_stringshare_replace(&ep->typedata.text->cache.out_str, text);
|
||||
ep->typedata.text->cache.in_w = sw;
|
||||
ep->typedata.text->cache.in_h = sh;
|
||||
ep->typedata.text->cache.in_font = font;
|
||||
ep->typedata.text->cache.out_size = size;
|
||||
ep->typedata.text->cache.align_x = params->type.text.align.x;
|
||||
ep->typedata.text->cache.align_y = params->type.text.align.y;
|
||||
|
|
|
@ -2775,6 +2775,7 @@ _eet_data_dump_token_get(const char *src,
|
|||
char *tok = NULL;
|
||||
int in_token = 0;
|
||||
int in_quote = 0;
|
||||
int in_escape = 0;
|
||||
int tlen = 0, tsize = 0;
|
||||
|
||||
#define TOK_ADD(x) \
|
||||
|
@ -2792,25 +2793,32 @@ _eet_data_dump_token_get(const char *src,
|
|||
{
|
||||
if (in_token)
|
||||
{
|
||||
if (in_quote)
|
||||
if (in_escape)
|
||||
{
|
||||
if ((p[0] == '\"') && (p > src) && (p[-1] != '\\'))
|
||||
switch (p[0]) {
|
||||
case 'n':
|
||||
TOK_ADD('\n');
|
||||
break;
|
||||
case '"':
|
||||
case '\'':
|
||||
case '\\':
|
||||
TOK_ADD(p[0]);
|
||||
break;
|
||||
default:
|
||||
ERR("Unknow escape character %#x (%c). Append as is",
|
||||
p[0], p[0]);
|
||||
TOK_ADD(p[0]);
|
||||
}
|
||||
in_escape = 0;
|
||||
}
|
||||
else if (p[0] == '\\')
|
||||
{
|
||||
in_escape = 1;
|
||||
}
|
||||
else if (in_quote)
|
||||
{
|
||||
if (p[0] == '\"')
|
||||
in_quote = 0;
|
||||
else if ((p[0] == '\\') && (*len > 1) &&
|
||||
(p[1] == '\"'))
|
||||
{
|
||||
/* skip */
|
||||
}
|
||||
else if ((p[0] == '\\') && (p > src) && (p[-1] == '\\'))
|
||||
{
|
||||
/* skip */
|
||||
}
|
||||
else if ((p[0] == '\\') && (*len > 1) && (p[1] == 'n'))
|
||||
{
|
||||
/* skip */
|
||||
}
|
||||
else if ((p[0] == 'n') && (p > src) && (p[-1] == '\\'))
|
||||
TOK_ADD('\n');
|
||||
else
|
||||
TOK_ADD(p[0]);
|
||||
}
|
||||
|
|
|
@ -1554,35 +1554,47 @@ static int
|
|||
efreet_menu_handle_default_merge_dirs(Efreet_Menu_Internal *parent, Efreet_Xml *xml)
|
||||
{
|
||||
Eina_List *dirs;
|
||||
char path[PATH_MAX], *p, *pp;
|
||||
char path[PATH_MAX], *p = NULL;
|
||||
const char *pp;
|
||||
#ifndef STRICT_SPEC
|
||||
char parent_path[PATH_MAX];
|
||||
#endif
|
||||
|
||||
if (!parent || !xml) return 0;
|
||||
|
||||
if (!strcmp(efreet_menu_prefix, "gnome-") &&
|
||||
(!strcmp(parent->file.name, "gnome-applications.menu")))
|
||||
{
|
||||
p = alloca(sizeof("applications"));
|
||||
memcpy(p, "applications", sizeof("applications"));
|
||||
}
|
||||
else if ((!strcmp(efreet_menu_prefix, "kde-") &&
|
||||
(!strcmp(parent->file.name, "kde-applications.menu"))))
|
||||
if ((!strcmp(parent->file.name, "gnome-applications.menu")) ||
|
||||
(!strcmp(parent->file.name, "kde-applications.menu")))
|
||||
{
|
||||
p = alloca(sizeof("applications"));
|
||||
memcpy(p, "applications", sizeof("applications"));
|
||||
}
|
||||
else
|
||||
{
|
||||
char *s;
|
||||
size_t len;
|
||||
|
||||
len = strlen(parent->file.name) + 1;
|
||||
p = alloca(len);
|
||||
memcpy(p, parent->file.name, len);
|
||||
s = strrchr(p, '.');
|
||||
if (s) *s = '\0';
|
||||
len = strlen(efreet_menu_prefix);
|
||||
if (!strncmp(parent->file.name, efreet_menu_prefix, len))
|
||||
{
|
||||
pp = parent->file.name;
|
||||
pp += len;
|
||||
if (!strcmp(pp, "applications.menu"))
|
||||
{
|
||||
p = alloca(sizeof("applications"));
|
||||
memcpy(p, "applications", sizeof("applications"));
|
||||
}
|
||||
}
|
||||
|
||||
if (!p)
|
||||
{
|
||||
char *s;
|
||||
size_t len;
|
||||
|
||||
len = strlen(parent->file.name) + 1;
|
||||
p = alloca(len);
|
||||
memcpy(p, parent->file.name, len);
|
||||
s = strrchr(p, '.');
|
||||
if (s) *s = '\0';
|
||||
}
|
||||
}
|
||||
snprintf(path, sizeof(path), "menus/%s-merged", p);
|
||||
|
||||
|
|
|
@ -332,12 +332,14 @@ _eina_file_map_populate(char *map, unsigned int size, Eina_Bool hugetlb)
|
|||
unsigned int i;
|
||||
unsigned int s;
|
||||
|
||||
if (size == 0) return 0;
|
||||
|
||||
s = hugetlb ? EINA_HUGE_PAGE : EINA_SMALL_PAGE;
|
||||
|
||||
for (i = 0; i < size; i += s)
|
||||
r ^= map[i];
|
||||
|
||||
r ^= map[size];
|
||||
r ^= map[size - 1];
|
||||
|
||||
return r;
|
||||
}
|
||||
|
|
|
@ -920,6 +920,7 @@ eina_log_domain_new(Eina_Log_Domain *d, Eina_Log_Timing *t,
|
|||
EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
|
||||
|
||||
d->level = EINA_LOG_LEVEL_UNKNOWN;
|
||||
d->color = color;
|
||||
d->deleted = EINA_FALSE;
|
||||
|
||||
if ((color) && (!_disable_color))
|
||||
|
@ -1581,7 +1582,24 @@ EAPI void
|
|||
eina_log_color_disable_set(Eina_Bool disabled)
|
||||
{
|
||||
#ifdef EINA_ENABLE_LOG
|
||||
Eina_Log_Domain *domain;
|
||||
unsigned int i;
|
||||
|
||||
_disable_color = disabled;
|
||||
|
||||
for (i = 0; i < _log_domains_count; i++)
|
||||
{
|
||||
domain = &_log_domains[i];
|
||||
|
||||
if (domain->domain_str)
|
||||
free((char *)domain->domain_str);
|
||||
|
||||
if ((domain->color) && (!_disable_color))
|
||||
domain->domain_str = eina_log_domain_str_get(domain->name, domain->color);
|
||||
else
|
||||
domain->domain_str = eina_log_domain_str_get(domain->name, NULL);
|
||||
}
|
||||
|
||||
#else
|
||||
(void) disabled;
|
||||
#endif
|
||||
|
|
|
@ -419,6 +419,9 @@ struct _Eina_Log_Domain
|
|||
|
||||
/* Private */
|
||||
Eina_Bool deleted : 1; /**< Flags deletion of domain, a free slot */
|
||||
|
||||
/* Add new members here. */
|
||||
const char *color; /**< Color to use when printing in this domain */
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -356,16 +356,14 @@ emotion_engine_instance_new(const char *name, Evas_Object *obj, Emotion_Module_O
|
|||
m = _find_mod(name);
|
||||
if (m) eina_module_load(m);
|
||||
}
|
||||
else
|
||||
|
||||
if (!_emotion_engine_registry)
|
||||
{
|
||||
if (!_emotion_engine_registry)
|
||||
{
|
||||
m = _find_mod("generic");
|
||||
if (!m) m = _find_mod("xine");
|
||||
if (!m) m = _find_mod("gstreamer");
|
||||
if (!m) m = _find_mod("gstreamer1");
|
||||
if (m) eina_module_load(m);
|
||||
}
|
||||
m = _find_mod("generic");
|
||||
if (!m) m = _find_mod("xine");
|
||||
if (!m) m = _find_mod("gstreamer");
|
||||
if (!m) m = _find_mod("gstreamer1");
|
||||
if (m) eina_module_load(m);
|
||||
}
|
||||
|
||||
if (name)
|
||||
|
|
|
@ -36,6 +36,7 @@ EAPI extern const Eo_Event_Description _EVAS_CANVAS_EVENT_OBJECT_FOCUS_IN;
|
|||
EAPI extern const Eo_Event_Description _EVAS_CANVAS_EVENT_OBJECT_FOCUS_OUT;
|
||||
EAPI extern const Eo_Event_Description _EVAS_CANVAS_EVENT_RENDER_PRE;
|
||||
EAPI extern const Eo_Event_Description _EVAS_CANVAS_EVENT_RENDER_POST;
|
||||
EAPI extern const Eo_Event_Description _EVAS_CANVAS_EVENT_DEVICE_CHANGED;
|
||||
|
||||
// Callbacks events for use with Evas objects
|
||||
#define EVAS_OBJECT_EVENT_MOUSE_IN (&(_EVAS_OBJECT_EVENT_MOUSE_IN))
|
||||
|
@ -73,6 +74,7 @@ EAPI extern const Eo_Event_Description _EVAS_CANVAS_EVENT_RENDER_POST;
|
|||
#define EVAS_CANVAS_EVENT_OBJECT_FOCUS_OUT (&(_EVAS_CANVAS_EVENT_OBJECT_FOCUS_OUT))
|
||||
#define EVAS_CANVAS_EVENT_RENDER_PRE (&(_EVAS_CANVAS_EVENT_RENDER_PRE))
|
||||
#define EVAS_CANVAS_EVENT_RENDER_POST (&(_EVAS_CANVAS_EVENT_RENDER_POST))
|
||||
#define EVAS_CANVAS_EVENT_DEVICE_CHANGED (&(_EVAS_CANVAS_EVENT_DEVICE_CHANGED))
|
||||
|
||||
EAPI extern const Eo_Event_Description _CLICKED_EVENT;
|
||||
EAPI extern const Eo_Event_Description _CLICKED_DOUBLE_EVENT;
|
||||
|
|
|
@ -5610,8 +5610,8 @@ EAPI char *evas_textblock_text_markup_to_utf8
|
|||
*
|
||||
* @param obj the textblock object to work with (if @c NULL, it just does the
|
||||
* default behaviour, i.e with no extra object information).
|
||||
* @param text The markup text (if @c NULL, return @c NULL).
|
||||
* @return An allocated plain text version of the markup.
|
||||
* @param text The plain text (if @c NULL, return @c NULL).
|
||||
* @return An allocated markup version of the plain text.
|
||||
* @since 1.2
|
||||
*/
|
||||
EAPI char *evas_textblock_text_utf8_to_markup(const Evas_Object *obj, const char *text) EINA_WARN_UNUSED_RESULT EINA_MALLOC;
|
||||
|
|
|
@ -75,6 +75,9 @@ EAPI const Eo_Event_Description _EVAS_CANVAS_EVENT_OBJECT_FOCUS_IN =
|
|||
EAPI const Eo_Event_Description _EVAS_CANVAS_EVENT_OBJECT_FOCUS_OUT =
|
||||
EO_HOT_EVENT_DESCRIPTION("Canvas Object Focus Out", "Canvas object lost focus");
|
||||
|
||||
EAPI const Eo_Event_Description _EVAS_CANVAS_EVENT_DEVICE_CHANGED =
|
||||
EO_HOT_EVENT_DESCRIPTION("Device changed",
|
||||
"Devices added, removed or changed to the canvas");
|
||||
/**
|
||||
* Evas events descriptions for Eo.
|
||||
*/
|
||||
|
@ -103,7 +106,6 @@ static const Eo_Event_Description *_legacy_evas_callback_table[EVAS_CALLBACK_LAS
|
|||
EVAS_OBJECT_EVENT_HOLD,
|
||||
EVAS_OBJECT_EVENT_CHANGED_SIZE_HINTS,
|
||||
EVAS_OBJECT_EVENT_IMAGE_PRELOADED,
|
||||
EVAS_OBJECT_EVENT_IMAGE_RESIZE,
|
||||
EVAS_CANVAS_EVENT_FOCUS_IN,
|
||||
EVAS_CANVAS_EVENT_FOCUS_OUT,
|
||||
EVAS_CANVAS_EVENT_RENDER_FLUSH_PRE,
|
||||
|
@ -112,7 +114,9 @@ static const Eo_Event_Description *_legacy_evas_callback_table[EVAS_CALLBACK_LAS
|
|||
EVAS_CANVAS_EVENT_OBJECT_FOCUS_OUT,
|
||||
EVAS_OBJECT_EVENT_IMAGE_UNLOADED,
|
||||
EVAS_CANVAS_EVENT_RENDER_PRE,
|
||||
EVAS_CANVAS_EVENT_RENDER_POST
|
||||
EVAS_CANVAS_EVENT_RENDER_POST,
|
||||
EVAS_OBJECT_EVENT_IMAGE_RESIZE,
|
||||
EVAS_CANVAS_EVENT_DEVICE_CHANGED
|
||||
};
|
||||
|
||||
typedef struct
|
||||
|
|
|
@ -1281,11 +1281,6 @@ _canvas_font_path_clear(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUS
|
|||
eina_stringshare_del(evas->font_path->data);
|
||||
evas->font_path = eina_list_remove(evas->font_path, evas->font_path->data);
|
||||
}
|
||||
|
||||
#ifdef HAVE_FONTCONFIG
|
||||
if (fc_config)
|
||||
FcConfigAppFontClear(fc_config);
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -1306,10 +1301,6 @@ _canvas_font_path_append(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
|
|||
e->font_path = eina_list_append(e->font_path, eina_stringshare_add(path));
|
||||
|
||||
evas_font_init();
|
||||
#ifdef HAVE_FONTCONFIG
|
||||
if (fc_config)
|
||||
FcConfigAppFontAddDir(fc_config, (const FcChar8 *) path);
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -1330,10 +1321,6 @@ _canvas_font_path_prepend(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list)
|
|||
e->font_path = eina_list_prepend(e->font_path, eina_stringshare_add(path));
|
||||
|
||||
evas_font_init();
|
||||
#ifdef HAVE_FONTCONFIG
|
||||
if (fc_config)
|
||||
FcConfigAppFontAddDir(fc_config, (const FcChar8 *) path);
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI const Eina_List *
|
||||
|
|
|
@ -3788,44 +3788,6 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
|
|||
return;
|
||||
}
|
||||
|
||||
if (o->pixels->pixel_updates)
|
||||
{
|
||||
Eina_Rectangle *r;
|
||||
Evas_Public_Data *e = obj->layer->evas;
|
||||
|
||||
if ((o->cur->border.l == 0) &&
|
||||
(o->cur->border.r == 0) &&
|
||||
(o->cur->border.t == 0) &&
|
||||
(o->cur->border.b == 0) &&
|
||||
(o->cur->image.w > 0) &&
|
||||
(o->cur->image.h > 0) &&
|
||||
(!((obj->map->cur.map) && (obj->map->cur.usemap))))
|
||||
{
|
||||
EINA_COW_PIXEL_WRITE_BEGIN(o, pixi_write)
|
||||
{
|
||||
EINA_LIST_FREE(pixi_write->pixel_updates, r)
|
||||
{
|
||||
e->engine.func->image_dirty_region(e->engine.data.output,
|
||||
o->engine_data, r->x, r->y, r->w, r->h);
|
||||
eina_rectangle_free(r);
|
||||
}
|
||||
}
|
||||
EINA_COW_PIXEL_WRITE_END(o, pixi_write);
|
||||
}
|
||||
else
|
||||
{
|
||||
EINA_COW_PIXEL_WRITE_BEGIN(o, pixi_write)
|
||||
{
|
||||
EINA_LIST_FREE(pixi_write->pixel_updates, r)
|
||||
eina_rectangle_free(r);
|
||||
}
|
||||
EINA_COW_PIXEL_WRITE_END(o, pixi_write);
|
||||
|
||||
e->engine.func->image_dirty_region(e->engine.data.output,
|
||||
o->engine_data, 0, 0, o->cur->image.w, o->cur->image.h);
|
||||
}
|
||||
}
|
||||
|
||||
obj->layer->evas->engine.func->context_color_set(output,
|
||||
context,
|
||||
255, 255, 255, 255);
|
||||
|
@ -4325,14 +4287,14 @@ evas_object_image_render_pre(Evas_Object *eo_obj,
|
|||
(!((obj->map->cur.map) && (obj->map->cur.usemap))))
|
||||
{
|
||||
Eina_Rectangle *rr;
|
||||
Eina_List *l;
|
||||
|
||||
EINA_COW_PIXEL_WRITE_BEGIN(o, pixi_write)
|
||||
{
|
||||
EINA_LIST_FOREACH(pixi_write->pixel_updates, l, rr)
|
||||
EINA_LIST_FREE(pixi_write->pixel_updates, rr)
|
||||
{
|
||||
Evas_Coord idw, idh, idx, idy;
|
||||
int x, y, w, h;
|
||||
e->engine.func->image_dirty_region(e->engine.data.output, o->engine_data, rr->x, rr->y, rr->w, rr->h);
|
||||
|
||||
idx = evas_object_image_figure_x_fill(eo_obj, obj, o->cur->fill.x, o->cur->fill.w, &idw);
|
||||
idy = evas_object_image_figure_y_fill(eo_obj, obj, o->cur->fill.y, o->cur->fill.h, &idh);
|
||||
|
@ -4377,6 +4339,16 @@ evas_object_image_render_pre(Evas_Object *eo_obj,
|
|||
}
|
||||
else
|
||||
{
|
||||
Eina_Rectangle *r;
|
||||
|
||||
EINA_COW_PIXEL_WRITE_BEGIN(o, pixi_write)
|
||||
{
|
||||
EINA_LIST_FREE(pixi_write->pixel_updates, r)
|
||||
eina_rectangle_free(r);
|
||||
}
|
||||
EINA_COW_PIXEL_WRITE_END(o, pixi_write);
|
||||
e->engine.func->image_dirty_region(e->engine.data.output, o->engine_data, 0, 0, o->cur->image.w, o->cur->image.h);
|
||||
|
||||
evas_object_render_pre_prev_cur_add(&e->clip_changes, eo_obj,
|
||||
obj);
|
||||
goto done;
|
||||
|
|
|
@ -621,7 +621,6 @@ _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
return;
|
||||
MAGIC_CHECK_END();
|
||||
Evas_Object_Protected_Data *obj = _pd;
|
||||
Evas_Object_Protected_Data *tmp;
|
||||
Evas_Object *proxy;
|
||||
Eina_List *l, *l2;
|
||||
|
||||
|
@ -654,8 +653,14 @@ _destructor(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
|
|||
goto end;
|
||||
}
|
||||
evas_object_grabs_cleanup(eo_obj, obj);
|
||||
EINA_LIST_FREE(obj->clip.clipees, tmp)
|
||||
evas_object_clip_unset(tmp->object);
|
||||
/* "while" should be used for null check of obj->clip.clipees,
|
||||
because evas_objct_clip_unset can set null to obj->clip.clipees */
|
||||
while (obj->clip.clipees)
|
||||
{
|
||||
Evas_Object_Protected_Data *tmp;
|
||||
tmp = eina_list_data_get(obj->clip.clipees);
|
||||
evas_object_clip_unset(tmp->object);
|
||||
}
|
||||
EINA_LIST_FOREACH_SAFE(obj->proxy->proxies, l, l2, proxy)
|
||||
evas_object_image_source_unset(proxy);
|
||||
if (obj->cur->clipper) evas_object_clip_unset(eo_obj);
|
||||
|
|
|
@ -685,7 +685,7 @@ static Eina_Bool
|
|||
_layout_text_item_trim(Evas_Object_Protected_Data *obj, Evas_Object_Text *o, Evas_Object_Text_Item *ti, int idx, Eina_Bool want_start)
|
||||
{
|
||||
Evas_Text_Props new_text_props;
|
||||
if (idx >= (int) ti->text_props.len)
|
||||
if (idx >= (int) ti->text_props.text_len)
|
||||
return EINA_FALSE;
|
||||
|
||||
memset(&new_text_props, 0, sizeof (new_text_props));
|
||||
|
@ -2217,7 +2217,7 @@ evas_object_text_render(Evas_Object *eo_obj EINA_UNUSED,
|
|||
// Proxies
|
||||
evas_filter_context_proxy_render_all(filter, eo_obj, EINA_FALSE);
|
||||
|
||||
// Context: FIXME it should be a sw context only
|
||||
// Draw Context
|
||||
filter_ctx = ENFN->context_new(ENDT);
|
||||
ENFN->context_color_set(ENDT, filter_ctx, 255, 255, 255, 255);
|
||||
|
||||
|
@ -2801,6 +2801,7 @@ _filter_source_set(Eo *eo_obj, void *_pd, va_list *list)
|
|||
|
||||
if (!o->cur.filter.sources)
|
||||
{
|
||||
if (!source) return;
|
||||
o->cur.filter.sources = eina_hash_string_small_new
|
||||
(EINA_FREE_CB(_filter_source_hash_free_cb));
|
||||
}
|
||||
|
|
|
@ -662,9 +662,10 @@ evas_object_textgrid_render(Evas_Object *eo_obj,
|
|||
else c = eina_array_data_get(palette, cells->fg);
|
||||
if ((c) && (c->a > 0))
|
||||
{
|
||||
evas_object_textgrid_row_text_append(row, eo_obj, o, xp,
|
||||
cells->codepoint,
|
||||
c->r, c->g, c->b, c->a);
|
||||
if (cells->codepoint > 0)
|
||||
evas_object_textgrid_row_text_append(row, eo_obj, o, xp,
|
||||
cells->codepoint,
|
||||
c->r, c->g, c->b, c->a);
|
||||
// XXX: underlines and strikethroughs dont get
|
||||
// merged into horizontal runs like bg rects above
|
||||
if (cells->underline)
|
||||
|
|
|
@ -420,7 +420,8 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
Eina_Array *render_objects,
|
||||
int restack,
|
||||
int *redraw_all,
|
||||
Eina_Bool mapped_parent
|
||||
Eina_Bool mapped_parent,
|
||||
Eina_Bool src_changed
|
||||
#ifdef REND_DBG
|
||||
, int level
|
||||
#endif
|
||||
|
@ -446,12 +447,18 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
|
||||
/* build active object list */
|
||||
evas_object_clip_recalc(obj);
|
||||
is_active = evas_object_is_active(eo_obj, obj);
|
||||
|
||||
if (src_changed) is_active = EINA_TRUE;
|
||||
else
|
||||
{
|
||||
is_active = evas_object_is_active(eo_obj, obj);
|
||||
src_changed = is_active;
|
||||
}
|
||||
obj->is_active = is_active;
|
||||
|
||||
RDI(level);
|
||||
RD(" [--- PROCESS [%p", obj);
|
||||
if (obj->name)
|
||||
if (obj->name)
|
||||
{
|
||||
RD(":%s", obj->name);
|
||||
}
|
||||
|
@ -513,7 +520,8 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
render_objects,
|
||||
obj->restack,
|
||||
redraw_all,
|
||||
EINA_TRUE
|
||||
EINA_TRUE,
|
||||
src_changed
|
||||
#ifdef REND_DBG
|
||||
, level + 1
|
||||
#endif
|
||||
|
@ -551,6 +559,9 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
RDI(level);
|
||||
RD(" changed + smart - render ok\n");
|
||||
OBJ_ARRAY_PUSH(render_objects, obj);
|
||||
|
||||
if (!is_active && obj->proxy->proxies) src_changed = EINA_TRUE;
|
||||
|
||||
obj->render_pre = EINA_TRUE;
|
||||
Evas_Object_Protected_Data *obj2;
|
||||
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj),
|
||||
|
@ -563,7 +574,8 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
render_objects,
|
||||
obj->restack,
|
||||
redraw_all,
|
||||
mapped_parent
|
||||
mapped_parent,
|
||||
src_changed
|
||||
#ifdef REND_DBG
|
||||
, level + 1
|
||||
#endif
|
||||
|
@ -633,7 +645,8 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
render_objects,
|
||||
restack,
|
||||
redraw_all,
|
||||
mapped_parent
|
||||
mapped_parent,
|
||||
src_changed
|
||||
#ifdef REND_DBG
|
||||
, level + 1
|
||||
#endif
|
||||
|
@ -714,7 +727,7 @@ _evas_render_phase1_process(Evas_Public_Data *e,
|
|||
{
|
||||
clean_them |= _evas_render_phase1_object_process
|
||||
(e, obj->object, active_objects, restack_objects, delete_objects,
|
||||
render_objects, 0, redraw_all, EINA_FALSE
|
||||
render_objects, 0, redraw_all, EINA_FALSE, EINA_FALSE
|
||||
#ifdef REND_DBG
|
||||
, 1
|
||||
#endif
|
||||
|
@ -1321,7 +1334,13 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
, level + 1
|
||||
#endif
|
||||
, do_async);
|
||||
evas_object_change_reset(obj2->object);
|
||||
/* We aren't sure this object will be rendered by
|
||||
normal(not proxy) drawing after, we reset this
|
||||
only in case of normal drawing. For optmizing,
|
||||
push this object in an array then reset them
|
||||
in the end of the rendering.*/
|
||||
if (!proxy_render_data)
|
||||
evas_object_change_reset(obj2->object);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1445,7 +1464,13 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
|
|||
, level + 1
|
||||
#endif
|
||||
, do_async);
|
||||
evas_object_change_reset(obj2->object);
|
||||
/* We aren't sure this object will be rendered by
|
||||
normal(not proxy) drawing after, we reset this
|
||||
only in case of normal drawing. For optmizing,
|
||||
push this object in an array then reset them
|
||||
in the end of the rendering.*/
|
||||
if (!proxy_render_data)
|
||||
evas_object_change_reset(obj2->object);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -475,7 +475,6 @@ evas_common_font_glyph_draw(RGBA_Font_Glyph *fg,
|
|||
DATA32 *dst = dst_image->image.data;
|
||||
DATA32 coltab[16], col;
|
||||
DATA16 mtab[16], v;
|
||||
DATA8 tmp;
|
||||
|
||||
w = fgo->bitmap.width; h = fgo->bitmap.rows;
|
||||
// skip if totally clipped out
|
||||
|
@ -520,8 +519,7 @@ evas_common_font_glyph_draw(RGBA_Font_Glyph *fg,
|
|||
{
|
||||
v = (i << 4) | i;
|
||||
coltab[i] = MUL_SYM(v, col);
|
||||
tmp = (coltab[i] >> 24);
|
||||
mtab[i] = 256 - (tmp + (tmp >> 7));
|
||||
mtab[i] = 256 - (coltab[i] >> 24);
|
||||
}
|
||||
#ifdef BUILD_MMX
|
||||
if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
|
||||
|
|
|
@ -2735,7 +2735,9 @@ _shared_image_entry_file_data_find(Image_Entry *ie)
|
|||
if (fe->server_file_id)
|
||||
{
|
||||
if ((fdata = _shared_file_data_get_by_id(fe->server_file_id)) != NULL)
|
||||
return fdata;
|
||||
if (!fdata->changed)
|
||||
return fdata;
|
||||
fe->server_file_id = 0;
|
||||
}
|
||||
|
||||
// Check hash
|
||||
|
@ -2757,6 +2759,7 @@ _shared_image_entry_file_data_find(Image_Entry *ie)
|
|||
fd = &(_index.files.entries.filedata[k]);
|
||||
if (!fd->id) break;
|
||||
if (!fd->refcount) continue;
|
||||
if (fd->changed) continue;
|
||||
|
||||
key = _shared_string_safe_get(fd->key);
|
||||
file = _shared_string_safe_get(fd->path);
|
||||
|
@ -3106,6 +3109,7 @@ _shared_image_entry_image_data_find(Image_Entry *ie)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (fd->changed || !fd->valid) continue;
|
||||
key = _shared_string_safe_get(fd->key);
|
||||
file = _shared_string_safe_get(fd->path);
|
||||
if (!file)
|
||||
|
|
|
@ -223,10 +223,11 @@ evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj,
|
|||
|
||||
obj = eo_data_scope_get(eo_obj, EVAS_OBJ_CLASS);
|
||||
|
||||
if (!ctx->has_proxies) return;
|
||||
if (ctx->gl_engine)
|
||||
{
|
||||
// FIXME: We need to call glReadPixels (yeah, no other way around...)
|
||||
CRI("Proxy subrender is not supported in the GL engine (yet)");
|
||||
ERR("Proxy subrender is not supported in the GL engine (yet)");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -680,7 +681,8 @@ evas_filter_buffer_backing_release(Evas_Filter_Context *ctx, void *stolen_buffer
|
|||
if (ctx->async)
|
||||
evas_unref_queue_image_put(ctx->evas, ie);
|
||||
else if (ctx->gl_engine)
|
||||
ENFN->image_free(ENDT, stolen_buffer);
|
||||
ctx->post_run.buffers_to_free =
|
||||
eina_list_append(ctx->post_run.buffers_to_free, stolen_buffer);
|
||||
else
|
||||
_backing_free(ctx, ie);
|
||||
|
||||
|
@ -960,12 +962,17 @@ evas_filter_command_blur_add(Evas_Filter_Context *ctx, void *drawctx,
|
|||
|
||||
if (copy_back)
|
||||
{
|
||||
int render_op;
|
||||
|
||||
if (!cmd) goto fail;
|
||||
if (!copybuf) goto fail;
|
||||
INF("Add copy %d -> %d", copybuf->id, blur_out->id);
|
||||
cmd->ENFN->context_color_set(cmd->ENDT, drawctx, 0, 0, 0, 255);
|
||||
render_op = cmd->ENFN->context_render_op_get(cmd->ENDT, drawctx);
|
||||
cmd->ENFN->context_render_op_set(cmd->ENDT, drawctx, EVAS_RENDER_COPY);
|
||||
id = evas_filter_command_blend_add(ctx, drawctx, copybuf->id, blur_out->id, ox, oy, EVAS_FILTER_FILL_MODE_NONE);
|
||||
cmd->ENFN->context_color_set(cmd->ENDT, drawctx, R, G, B, A);
|
||||
cmd->ENFN->context_render_op_set(cmd->ENDT, drawctx, render_op);
|
||||
if (id < 0) goto fail;
|
||||
ox = oy = 0;
|
||||
}
|
||||
|
@ -1419,25 +1426,20 @@ evas_filter_target_set(Evas_Filter_Context *ctx, void *draw_context,
|
|||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, EINA_FALSE);
|
||||
|
||||
if (!ctx->gl_engine)
|
||||
{
|
||||
ctx->target.bufid = evas_filter_buffer_image_new(ctx, surface);
|
||||
evas_filter_command_blend_add(ctx, draw_context,
|
||||
EVAS_FILTER_BUFFER_OUTPUT_ID,
|
||||
ctx->target.bufid,
|
||||
x, y, EVAS_FILTER_FILL_MODE_NONE);
|
||||
}
|
||||
else
|
||||
ctx->target.bufid = evas_filter_buffer_image_new(ctx, surface);
|
||||
ctx->target.x = x;
|
||||
ctx->target.y = y;
|
||||
ctx->target.clip_use = ENFN->context_clip_get
|
||||
(ENDT, draw_context, &ctx->target.cx, &ctx->target.cy,
|
||||
&ctx->target.cw, &ctx->target.ch);
|
||||
|
||||
if (ctx->gl_engine)
|
||||
{
|
||||
// Since GL has sync rendering, draw_context is safe to keep around
|
||||
Evas_Filter_Buffer *target, *image;
|
||||
RGBA_Image *im;
|
||||
|
||||
ctx->target.bufid = evas_filter_buffer_image_new(ctx, surface);
|
||||
ctx->target.context = draw_context;
|
||||
ctx->target.x = x;
|
||||
ctx->target.y = y;
|
||||
|
||||
target = _filter_buffer_get(ctx, ctx->target.bufid);
|
||||
target->glimage = target->backing;
|
||||
target->backing = NULL;
|
||||
|
@ -1455,32 +1457,52 @@ static Eina_Bool
|
|||
_filter_target_render(Evas_Filter_Context *ctx)
|
||||
{
|
||||
Evas_Filter_Buffer *src, *dst;
|
||||
Eina_Bool ok;
|
||||
void *drawctx, *image, *surface;
|
||||
int cx, cy, cw, ch;
|
||||
Eina_Bool use_clip = EINA_FALSE;
|
||||
|
||||
/* FIXME: This is some hackish hook to send the final buffer on the screen
|
||||
* Only used for OpenGL now, since evas_filter_target_set() adds a blend
|
||||
* command in case of pure software rendering.
|
||||
*/
|
||||
|
||||
if (!ctx->gl_engine) return EINA_FALSE;
|
||||
EINA_SAFETY_ON_FALSE_RETURN_VAL(ctx->target.bufid, EINA_FALSE);
|
||||
|
||||
src = _filter_buffer_get(ctx, EVAS_FILTER_BUFFER_OUTPUT_ID);
|
||||
if (!src) return EINA_FALSE;
|
||||
|
||||
dst = _filter_buffer_get(ctx, ctx->target.bufid);
|
||||
if (!dst) return EINA_FALSE;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(src, EINA_FALSE);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(dst, EINA_FALSE);
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(src->glimage, EINA_FALSE);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(dst->glimage, EINA_FALSE);
|
||||
if (!ctx->gl_engine)
|
||||
{
|
||||
drawctx = ENFN->context_new(ENDT);
|
||||
surface = dst->backing;
|
||||
image = src->backing;
|
||||
}
|
||||
else
|
||||
{
|
||||
drawctx = ctx->target.context;
|
||||
surface = dst->glimage;
|
||||
image = src->glimage;
|
||||
}
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(image, EINA_FALSE);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(surface, EINA_FALSE);
|
||||
|
||||
ok = ENFN->image_draw(ENDT, ctx->target.context,
|
||||
dst->glimage, src->glimage,
|
||||
0, 0, src->w, src->h,
|
||||
ctx->target.x, ctx->target.y, src->w, src->h,
|
||||
EINA_TRUE, EINA_FALSE);
|
||||
if (ctx->target.clip_use)
|
||||
{
|
||||
use_clip = ENFN->context_clip_get(ENDT, drawctx, &cx, &cy, &cw, &ch);
|
||||
ENFN->context_clip_set(ENDT, drawctx, ctx->target.cx, ctx->target.cy,
|
||||
ctx->target.cw, ctx->target.ch);
|
||||
}
|
||||
|
||||
return ok;
|
||||
ENFN->image_draw(ENDT, drawctx, surface, image,
|
||||
0, 0, src->w, src->h,
|
||||
ctx->target.x, ctx->target.y, src->w, src->h,
|
||||
EINA_TRUE, EINA_FALSE);
|
||||
|
||||
if (!ctx->gl_engine)
|
||||
ENFN->context_free(ENDT, drawctx);
|
||||
else if (use_clip)
|
||||
ENFN->context_clip_set(ENDT, drawctx, cx, cy, cw, ch);
|
||||
else
|
||||
ENFN->context_clip_unset(ENDT, drawctx);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1537,6 +1559,7 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
|
|||
{
|
||||
if (ox > 0)
|
||||
{
|
||||
(*sx) = 0;
|
||||
(*dx) = ox;
|
||||
(*cols) = sw;
|
||||
if (((*dx) + (*cols)) > (dw))
|
||||
|
@ -1544,18 +1567,21 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
|
|||
}
|
||||
else if (ox < 0)
|
||||
{
|
||||
(*dx) = 0;
|
||||
(*sx) = (-ox);
|
||||
(*cols) = sw - (*sx);
|
||||
if ((*cols) > dw) (*cols) = dw;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*dx) = 0;
|
||||
(*cols) = sw;
|
||||
if ((*cols) > dw) (*cols) = dw;
|
||||
}
|
||||
|
||||
if (oy > 0)
|
||||
{
|
||||
(*sy) = 0;
|
||||
(*dy) = oy;
|
||||
(*rows) = sh;
|
||||
if (((*dy) + (*rows)) > (dh))
|
||||
|
@ -1563,12 +1589,14 @@ _clip_to_target(int *sx /* OUT */, int *sy /* OUT */, int sw, int sh,
|
|||
}
|
||||
else if (oy < 0)
|
||||
{
|
||||
(*dy) = 0;
|
||||
(*sy) = (-oy);
|
||||
(*rows) = sh - (*sy);
|
||||
if ((*rows) > dh) (*rows) = dh;
|
||||
}
|
||||
else
|
||||
{
|
||||
(*dy) = 0;
|
||||
(*rows) = sh;
|
||||
if ((*rows) > dh) (*rows) = dh;
|
||||
}
|
||||
|
@ -1666,7 +1694,8 @@ static Eina_Bool
|
|||
_filter_chain_run(Evas_Filter_Context *ctx)
|
||||
{
|
||||
Evas_Filter_Command *cmd;
|
||||
Eina_Bool ok = EINA_TRUE;
|
||||
Eina_Bool ok = EINA_FALSE;
|
||||
void *buffer;
|
||||
|
||||
ctx->running = EINA_TRUE;
|
||||
EINA_INLIST_FOREACH(ctx->commands, cmd)
|
||||
|
@ -1683,6 +1712,13 @@ _filter_chain_run(Evas_Filter_Context *ctx)
|
|||
|
||||
end:
|
||||
ctx->running = EINA_FALSE;
|
||||
|
||||
EINA_LIST_FREE(ctx->post_run.buffers_to_free, buffer)
|
||||
{
|
||||
if (ctx->gl_engine)
|
||||
ENFN->image_free(ENDT, buffer);
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
@ -1690,7 +1726,10 @@ static void
|
|||
_filter_thread_run_cb(void *data)
|
||||
{
|
||||
Evas_Filter_Context *ctx = data;
|
||||
|
||||
// TODO: Add return value check and call error cb
|
||||
_filter_chain_run(ctx);
|
||||
|
||||
if (ctx->post_run.cb)
|
||||
ctx->post_run.cb(ctx, ctx->post_run.data);
|
||||
}
|
||||
|
@ -1715,6 +1754,7 @@ evas_filter_run(Evas_Filter_Context *ctx)
|
|||
}
|
||||
|
||||
ret = _filter_chain_run(ctx);
|
||||
|
||||
if (ctx->post_run.cb)
|
||||
ctx->post_run.cb(ctx, ctx->post_run.data);
|
||||
return ret;
|
||||
|
|
|
@ -2348,6 +2348,7 @@ evas_filter_context_program_use(Evas_Filter_Context *ctx,
|
|||
fb->proxy = pb->eo_proxy;
|
||||
fb->source = pb->eo_source;
|
||||
fb->source_name = eina_stringshare_ref(pb->name);
|
||||
fb->ctx->has_proxies = EINA_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ struct _Evas_Filter_Context
|
|||
/** Post-processing callback. The context can be safely destroyed here. */
|
||||
Evas_Filter_Cb cb;
|
||||
void *data;
|
||||
Eina_List *buffers_to_free; // Some buffers should be queued for deletion
|
||||
} post_run;
|
||||
|
||||
struct
|
||||
|
@ -62,11 +63,14 @@ struct _Evas_Filter_Context
|
|||
int bufid;
|
||||
void *context;
|
||||
int x, y;
|
||||
int cx, cy, cw, ch; // clip
|
||||
Eina_Bool clip_use : 1;
|
||||
} target;
|
||||
|
||||
Eina_Bool async : 1;
|
||||
Eina_Bool gl_engine : 1;
|
||||
Eina_Bool running : 1;
|
||||
Eina_Bool has_proxies : 1;
|
||||
};
|
||||
|
||||
struct _Evas_Filter_Command
|
||||
|
|
|
@ -338,36 +338,45 @@ _ecore_evas_object_cursor_del(void *data, Evas *e, Evas_Object *obj, void *event
|
|||
static void
|
||||
_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
|
||||
{
|
||||
int x, y;
|
||||
DBG("Cursor Set");
|
||||
if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
|
||||
int x, y;
|
||||
Evas_Object *old;
|
||||
DBG("Cursor Set");
|
||||
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
old = ee->prop.cursor.object;
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
goto end;
|
||||
}
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
|
||||
if (obj != old)
|
||||
{
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - ee->prop.cursor.hot.x,
|
||||
y - ee->prop.cursor.hot.y);
|
||||
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
end:
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
@ -425,32 +425,43 @@ static void
|
|||
_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
|
||||
|
||||
if (!obj)
|
||||
Evas_Object *old;
|
||||
|
||||
old = ee->prop.cursor.object;
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
return;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
|
||||
if (obj != old)
|
||||
{
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - ee->prop.cursor.hot.x,
|
||||
y - ee->prop.cursor.hot.y);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
end:
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -317,32 +317,43 @@ static void
|
|||
_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
|
||||
|
||||
if (!obj)
|
||||
Evas_Object *old;
|
||||
|
||||
old = ee->prop.cursor.object;
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
return;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
|
||||
if (obj != old)
|
||||
{
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - ee->prop.cursor.hot.x,
|
||||
y - ee->prop.cursor.hot.y);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
end:
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
static Ecore_Evas_Engine_Func _ecore_psl1ght_engine_func =
|
||||
|
|
|
@ -357,32 +357,43 @@ static void
|
|||
_ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
|
||||
{
|
||||
int x, y;
|
||||
|
||||
if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
|
||||
|
||||
if (!obj)
|
||||
Evas_Object *old;
|
||||
|
||||
old = ee->prop.cursor.object;
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
return;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
|
||||
if (obj != old)
|
||||
{
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - ee->prop.cursor.hot.x,
|
||||
y - ee->prop.cursor.hot.y);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
end:
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
|
||||
|
|
|
@ -1182,37 +1182,45 @@ _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int la
|
|||
{
|
||||
int x, y, fx, fy;
|
||||
Ecore_Evas_Engine_Wl_Data *wdata = ee->engine.data;
|
||||
|
||||
if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
|
||||
|
||||
if (!obj)
|
||||
Evas_Object *old;
|
||||
|
||||
old = ee->prop.cursor.object;
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
ecore_wl_window_cursor_default_restore(wdata->win);
|
||||
return;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
|
||||
ecore_wl_window_pointer_set(wdata->win, NULL, 0, 0);
|
||||
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
|
||||
if (obj != old)
|
||||
{
|
||||
ecore_wl_window_pointer_set(wdata->win, NULL, 0, 0);
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_output_framespace_get(ee->evas, &fx, &fy, NULL, NULL);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - fx - ee->prop.cursor.hot.x,
|
||||
y - fy - ee->prop.cursor.hot.y);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
end:
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
@ -808,40 +809,57 @@ _ecore_evas_win32_size_step_set(Ecore_Evas *ee, int width, int height)
|
|||
width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
_ecore_evas_object_cursor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
|
||||
ee = data;
|
||||
if (ee) ee->prop.cursor.object = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_ecore_evas_win32_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
|
||||
{
|
||||
#if 0
|
||||
int x, y;
|
||||
|
||||
if (ee->prop.cursor.object) evas_object_del(ee->prop.cursor.object);
|
||||
|
||||
Evas_Object *old;
|
||||
|
||||
old = ee->prop.cursor.object;
|
||||
if (obj == NULL)
|
||||
{
|
||||
ee->prop.cursor.object = NULL;
|
||||
ee->prop.cursor.layer = 0;
|
||||
ee->prop.cursor.hot.x = 0;
|
||||
ee->prop.cursor.hot.y = 0;
|
||||
ecore_win32_window_cursor_show(ee->prop.window, 1);
|
||||
return;
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
||||
ee->prop.cursor.object = obj;
|
||||
ee->prop.cursor.layer = layer;
|
||||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
|
||||
ecore_win32_window_cursor_show(ee->prop.window, 0);
|
||||
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
if (obj != old)
|
||||
{
|
||||
// ecore_win32_window_cursor_show(ee->prop.window, 0);
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - ee->prop.cursor.hot.x,
|
||||
y - ee->prop.cursor.hot.y);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
#endif
|
||||
end:
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -712,6 +712,7 @@ _ecore_evas_x_render(Ecore_Evas *ee)
|
|||
ee->in_async_render = EINA_TRUE;
|
||||
rend = 1;
|
||||
}
|
||||
else if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
||||
|
||||
return rend;
|
||||
}
|
||||
|
@ -2894,7 +2895,7 @@ static void
|
|||
_ecore_evas_x_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y)
|
||||
{
|
||||
int x, y;
|
||||
Evas_Object* old;
|
||||
Evas_Object *old;
|
||||
|
||||
old = ee->prop.cursor.object;
|
||||
if (!obj)
|
||||
|
@ -2912,21 +2913,28 @@ _ecore_evas_x_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int
|
|||
ee->prop.cursor.hot.x = hot_x;
|
||||
ee->prop.cursor.hot.y = hot_y;
|
||||
|
||||
ecore_x_window_cursor_show(ee->prop.window, 0);
|
||||
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
if (obj != old)
|
||||
{
|
||||
ecore_x_window_cursor_show(ee->prop.window, 0);
|
||||
evas_pointer_output_xy_get(ee->evas, &x, &y);
|
||||
evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL,
|
||||
_ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
evas_object_move(ee->prop.cursor.object,
|
||||
x - ee->prop.cursor.hot.x,
|
||||
y - ee->prop.cursor.hot.y);
|
||||
evas_object_pass_events_set(ee->prop.cursor.object, 1);
|
||||
if (evas_pointer_inside_get(ee->evas))
|
||||
evas_object_show(ee->prop.cursor.object);
|
||||
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
|
||||
end:
|
||||
if (old) evas_object_del(old);
|
||||
if ((old) && (obj != old))
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(old, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
evas_object_del(old);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -2766,29 +2766,42 @@ shader_array_flush(Evas_Engine_GL_Context *gc)
|
|||
{
|
||||
case EVAS_RENDER_BLEND: /**< default op: d = d*(1-sa) + s */
|
||||
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||
break;
|
||||
case EVAS_RENDER_BLEND_REL: /**< d = d*(1 - sa) + s*da */
|
||||
glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
break;
|
||||
case EVAS_RENDER_COPY: /**< d = s */
|
||||
gc->pipe[i].shader.blend = 0;
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||
// just disable blend mode. no need to set blend func
|
||||
//glBlendFunc(GL_ONE, GL_ZERO);
|
||||
break;
|
||||
// FIXME: fix blend funcs below!
|
||||
case EVAS_RENDER_BLEND_REL: /**< d = d*(1 - sa) + s*da */
|
||||
case EVAS_RENDER_COPY_REL: /**< d = s*da */
|
||||
glBlendFunc(GL_DST_ALPHA, GL_ZERO);
|
||||
break;
|
||||
case EVAS_RENDER_ADD: /**< d = d + s */
|
||||
glBlendFunc(GL_ONE, GL_ONE);
|
||||
break;
|
||||
case EVAS_RENDER_ADD_REL: /**< d = d + s*da */
|
||||
glBlendFunc(GL_DST_ALPHA, GL_ONE);
|
||||
break;
|
||||
case EVAS_RENDER_SUB: /**< d = d - s */
|
||||
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
|
||||
break;
|
||||
case EVAS_RENDER_SUB_REL: /**< d = d - s*da */
|
||||
glBlendFunc(GL_ZERO, GL_ONE_MINUS_DST_ALPHA);
|
||||
break;
|
||||
case EVAS_RENDER_MASK: /**< d = d*sa */
|
||||
glBlendFunc(GL_ZERO, GL_SRC_ALPHA);
|
||||
break;
|
||||
// FIXME: fix blend funcs below!
|
||||
case EVAS_RENDER_TINT: /**< d = d*s + d*(1 - sa) + s*(1 - da) */
|
||||
case EVAS_RENDER_TINT_REL: /**< d = d*(1 - sa + s) */
|
||||
case EVAS_RENDER_MASK: /**< d = d*sa */
|
||||
case EVAS_RENDER_MUL: /**< d = d*s */
|
||||
default:
|
||||
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
|
||||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||
break;
|
||||
}
|
||||
GLERR(__FUNCTION__, __FILE__, __LINE__, "");
|
||||
}
|
||||
if (gc->pipe[i].shader.blend != gc->state.current.blend)
|
||||
{
|
||||
|
|
|
@ -661,8 +661,11 @@ evas_gl_common_image_update(Evas_Engine_GL_Context *gc, Evas_GL_Image *im)
|
|||
{
|
||||
Image_Entry *ie;
|
||||
if (!im->im) return;
|
||||
ie = (Image_Entry *)(im->im);
|
||||
evas_gl_common_image_alloc_ensure(im);
|
||||
|
||||
// alloc ensure can change im->im, so only get the local variable later.
|
||||
ie = (Image_Entry *)(im->im);
|
||||
|
||||
/*
|
||||
if ((im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
|
||||
(im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
|
||||
|
@ -987,7 +990,7 @@ evas_gl_common_image_draw(Evas_Engine_GL_Context *gc, Evas_GL_Image *im, int sx,
|
|||
evas_gl_common_image_push(gc, im,
|
||||
dx, dy, dw, dh,
|
||||
sx, sy, sw, sh,
|
||||
sx, sy, sw, sh,
|
||||
dx, dy, dw, dh,
|
||||
r, g, b, a, smooth,
|
||||
yuv, yuy2, nv12);
|
||||
}
|
||||
|
|
|
@ -741,6 +741,10 @@ gl_extn_veto(Render_Engine *re)
|
|||
)
|
||||
extn_have_y_inverted = 0;
|
||||
}
|
||||
if (!strstr(str, "EGL_EXT_swap_buffers_with_damage"))
|
||||
{
|
||||
glsym_eglSwapBuffersWithDamage = NULL;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -936,9 +940,8 @@ eng_setup(Evas *eo_e, void *in)
|
|||
|
||||
if (re->win)
|
||||
{
|
||||
re->win->gl_context->references++;
|
||||
eng_window_free(re->win);
|
||||
inc = 1;
|
||||
eng_window_free(re->win);
|
||||
gl_wins--;
|
||||
}
|
||||
re->w = e->output.w;
|
||||
|
|
|
@ -934,6 +934,11 @@ eng_image_native_set(void *data EINA_UNUSED, void *image, void *native)
|
|||
if (im->references > 1)
|
||||
ERR("Setting native with more than one references for im=%p", im);
|
||||
|
||||
#ifdef EVAS_CSERVE2
|
||||
if (evas_cserve2_use_get() && evas_cache2_image_cached(im))
|
||||
evas_cache2_image_close(im);
|
||||
else
|
||||
#endif
|
||||
evas_cache_image_drop(im);
|
||||
|
||||
return im2;
|
||||
|
|
|
@ -180,6 +180,10 @@ evas_software_xlib_outbuf_free(Outbuf *buf)
|
|||
if (buf->priv.pal)
|
||||
evas_software_xlib_x_color_deallocate(buf->priv.x11.xlib.disp, buf->priv.x11.xlib.cmap,
|
||||
buf->priv.x11.xlib.vis, buf->priv.pal);
|
||||
|
||||
/* safe because no effect on the default colormap */
|
||||
XFreeColormap (buf->priv.x11.xlib.disp, buf->priv.x11.xlib.cmap);
|
||||
|
||||
eina_array_flush(&buf->priv.onebuf_regions);
|
||||
free(buf);
|
||||
_clear_xob(0);
|
||||
|
|
|
@ -328,7 +328,7 @@ evas_swapbuf_update_region_push(Outbuf *ob, RGBA_Image *update, int x, int y, in
|
|||
if (ob->rotation == 0)
|
||||
{
|
||||
RECTS_CLIP_TO_RECT(rect.x, rect.y, rect.w, rect.h, 0, 0, ww, hh);
|
||||
dst += (bpl * rect.y) + (rect.x + bpp);
|
||||
dst += (bpl * rect.y) + (rect.x * bpp);
|
||||
w -= rx;
|
||||
}
|
||||
else if (ob->rotation == 180)
|
||||
|
|
|
@ -528,7 +528,11 @@ evas_image_load_file_head_gif2(void *loader_data,
|
|||
ret = EINA_TRUE;
|
||||
|
||||
on_error: // jump here on any errors to clean up
|
||||
#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
|
||||
if (gif) DGifCloseFile(gif, NULL);
|
||||
#else
|
||||
if (gif) DGifCloseFile(gif);
|
||||
#endif
|
||||
if (fi.map) eina_file_map_free(f, fi.map);
|
||||
return ret;
|
||||
}
|
||||
|
@ -606,7 +610,11 @@ open_file:
|
|||
// start as we have nothnig to build on
|
||||
if ((index > 0) && (index < loader->imgnum) && (animated->animated))
|
||||
{
|
||||
#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
|
||||
if (loader->gif) DGifCloseFile(loader->gif, NULL);
|
||||
#else
|
||||
if (loader->gif) DGifCloseFile(loader->gif);
|
||||
#endif
|
||||
if ((loader->fi.map) && (loader->f))
|
||||
eina_file_map_free(loader->f, loader->fi.map);
|
||||
loader->gif = NULL;
|
||||
|
@ -753,9 +761,9 @@ open_file:
|
|||
DGifGetCodeNext(gif, &img);
|
||||
}
|
||||
}
|
||||
imgnum++;
|
||||
// if we found the image we wanted - get out of here
|
||||
if (imgnum >= index) break;
|
||||
imgnum++;
|
||||
}
|
||||
}
|
||||
while (rec != TERMINATE_RECORD_TYPE);
|
||||
|
@ -764,7 +772,11 @@ open_file:
|
|||
loader->imgnum = imgnum;
|
||||
if ((animated->frame_count <= 1) || (rec == TERMINATE_RECORD_TYPE))
|
||||
{
|
||||
#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
|
||||
if (loader->gif) DGifCloseFile(loader->gif, NULL);
|
||||
#else
|
||||
if (loader->gif) DGifCloseFile(loader->gif);
|
||||
#endif
|
||||
if ((loader->fi.map) && (loader->f))
|
||||
eina_file_map_free(loader->f, loader->fi.map);
|
||||
loader->gif = NULL;
|
||||
|
@ -848,7 +860,11 @@ static void
|
|||
evas_image_load_file_close_gif2(void *loader_data)
|
||||
{
|
||||
Loader_Info *loader = loader_data;
|
||||
#if (GIFLIB_MAJOR > 5) || ((GIFLIB_MAJOR == 5) && (GIFLIB_MINOR >= 1))
|
||||
if (loader->gif) DGifCloseFile(loader->gif, NULL);
|
||||
#else
|
||||
if (loader->gif) DGifCloseFile(loader->gif);
|
||||
#endif
|
||||
if ((loader->fi.map) && (loader->f))
|
||||
eina_file_map_free(loader->f, loader->fi.map);
|
||||
free(loader);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,128 +1,306 @@
|
|||
/*
|
||||
LZ4 - Fast LZ compression algorithm
|
||||
Header File
|
||||
Copyright (C) 2011-2012, Yann Collet.
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html
|
||||
- LZ4 source repository : http://code.google.com/p/lz4/
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
//**************************************
|
||||
// Compiler Options
|
||||
//**************************************
|
||||
#ifdef _MSC_VER // Visual Studio
|
||||
# define inline __inline // Visual is not C99, but supports some kind of inline
|
||||
#endif
|
||||
|
||||
|
||||
//****************************
|
||||
// Simple Functions
|
||||
//****************************
|
||||
|
||||
int LZ4_compress (const char* source, char* dest, int isize);
|
||||
int LZ4_uncompress (const char* source, char* dest, int osize);
|
||||
|
||||
/*
|
||||
LZ4_compress() :
|
||||
Compresses 'isize' bytes from 'source' into 'dest'.
|
||||
Destination buffer must be already allocated,
|
||||
and must be sized to handle worst cases situations (input data not compressible)
|
||||
Worst case size evaluation is provided by function LZ4_compressBound()
|
||||
|
||||
isize : is the input size. Max supported value is ~1.9GB
|
||||
return : the number of bytes written in buffer dest
|
||||
|
||||
|
||||
LZ4_uncompress() :
|
||||
osize : is the output size, therefore the original size
|
||||
return : the number of bytes read in the source buffer
|
||||
If the source stream is malformed, the function will stop decoding and return a negative result, indicating the byte position of the faulty instruction
|
||||
This function never writes outside of provided buffers, and never modifies input buffer.
|
||||
note : destination buffer must be already allocated.
|
||||
its size must be a minimum of 'osize' bytes.
|
||||
*/
|
||||
|
||||
|
||||
//****************************
|
||||
// Advanced Functions
|
||||
//****************************
|
||||
|
||||
static inline int LZ4_compressBound(int isize) { return ((isize) + ((isize)/255) + 16); }
|
||||
#define LZ4_COMPRESSBOUND( isize) ((isize) + ((isize)/255) + 16)
|
||||
|
||||
/*
|
||||
LZ4_compressBound() :
|
||||
Provides the maximum size that LZ4 may output in a "worst case" scenario (input data not compressible)
|
||||
primarily useful for memory allocation of output buffer.
|
||||
inline function is recommended for the general case,
|
||||
but macro is also provided when results need to be evaluated at compile time (such as table size allocation).
|
||||
|
||||
isize : is the input size. Max supported value is ~1.9GB
|
||||
return : maximum output size in a "worst case" scenario
|
||||
note : this function is limited by "int" range (2^31-1)
|
||||
*/
|
||||
|
||||
|
||||
int LZ4_compress_limitedOutput (const char* source, char* dest, int isize, int maxOutputSize);
|
||||
|
||||
/*
|
||||
LZ4_compress_limitedOutput() :
|
||||
Compress 'isize' bytes from 'source' into an output buffer 'dest' of maximum size 'maxOutputSize'.
|
||||
If it cannot achieve it, compression will stop, and result of the function will be zero.
|
||||
This function never writes outside of provided output buffer.
|
||||
|
||||
isize : is the input size. Max supported value is ~1.9GB
|
||||
maxOutputSize : is the size of the destination buffer (which must be already allocated)
|
||||
return : the number of bytes written in buffer 'dest'
|
||||
or 0 if the compression fails
|
||||
*/
|
||||
|
||||
|
||||
int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize);
|
||||
|
||||
/*
|
||||
LZ4_uncompress_unknownOutputSize() :
|
||||
isize : is the input size, therefore the compressed size
|
||||
maxOutputSize : is the size of the destination buffer (which must be already allocated)
|
||||
return : the number of bytes decoded in the destination buffer (necessarily <= maxOutputSize)
|
||||
If the source stream is malformed, the function will stop decoding and return a negative result, indicating the byte position of the faulty instruction
|
||||
This function never writes beyond dest + maxOutputSize, and is therefore protected against malicious data packets
|
||||
note : Destination buffer must be already allocated.
|
||||
This version is slightly slower than LZ4_uncompress()
|
||||
*/
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
LZ4 - Fast LZ compression algorithm
|
||||
Header File
|
||||
Copyright (C) 2011-2014, Yann Collet.
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- LZ4 source repository : http://code.google.com/p/lz4/
|
||||
- LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
/**************************************
|
||||
Version
|
||||
**************************************/
|
||||
#define LZ4_VERSION_MAJOR 1 /* for major interface/format changes */
|
||||
#define LZ4_VERSION_MINOR 2 /* for minor interface/format changes */
|
||||
#define LZ4_VERSION_RELEASE 0 /* for tweaks, bug-fixes, or development */
|
||||
|
||||
|
||||
/**************************************
|
||||
Tuning parameter
|
||||
**************************************/
|
||||
/*
|
||||
* LZ4_MEMORY_USAGE :
|
||||
* Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.)
|
||||
* Increasing memory usage improves compression ratio
|
||||
* Reduced memory usage can improve speed, due to cache effect
|
||||
* Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache
|
||||
*/
|
||||
#define LZ4_MEMORY_USAGE 14
|
||||
|
||||
|
||||
/**************************************
|
||||
Simple Functions
|
||||
**************************************/
|
||||
|
||||
int LZ4_compress (const char* source, char* dest, int inputSize);
|
||||
int LZ4_decompress_safe (const char* source, char* dest, int compressedSize, int maxOutputSize);
|
||||
|
||||
/*
|
||||
LZ4_compress() :
|
||||
Compresses 'inputSize' bytes from 'source' into 'dest'.
|
||||
Destination buffer must be already allocated,
|
||||
and must be sized to handle worst cases situations (input data not compressible)
|
||||
Worst case size evaluation is provided by function LZ4_compressBound()
|
||||
inputSize : Max supported value is LZ4_MAX_INPUT_VALUE
|
||||
return : the number of bytes written in buffer dest
|
||||
or 0 if the compression fails
|
||||
|
||||
LZ4_decompress_safe() :
|
||||
compressedSize : is obviously the source size
|
||||
maxOutputSize : is the size of the destination buffer, which must be already allocated.
|
||||
return : the number of bytes decoded in the destination buffer (necessarily <= maxOutputSize)
|
||||
If the destination buffer is not large enough, decoding will stop and output an error code (<0).
|
||||
If the source stream is detected malformed, the function will stop decoding and return a negative result.
|
||||
This function is protected against buffer overflow exploits :
|
||||
it never writes outside of output buffer, and never reads outside of input buffer.
|
||||
Therefore, it is protected against malicious data packets.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
Note :
|
||||
Should you prefer to explicitly allocate compression-table memory using your own allocation method,
|
||||
use the streaming functions provided below, simply reset the memory area between each call to LZ4_compress_continue()
|
||||
*/
|
||||
|
||||
|
||||
/**************************************
|
||||
Advanced Functions
|
||||
**************************************/
|
||||
#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */
|
||||
#define LZ4_COMPRESSBOUND(isize) ((unsigned int)(isize) > (unsigned int)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16)
|
||||
|
||||
/*
|
||||
LZ4_compressBound() :
|
||||
Provides the maximum size that LZ4 may output in a "worst case" scenario (input data not compressible)
|
||||
primarily useful for memory allocation of output buffer.
|
||||
macro is also provided when result needs to be evaluated at compilation (such as stack memory allocation).
|
||||
|
||||
isize : is the input size. Max supported value is LZ4_MAX_INPUT_SIZE
|
||||
return : maximum output size in a "worst case" scenario
|
||||
or 0, if input size is too large ( > LZ4_MAX_INPUT_SIZE)
|
||||
*/
|
||||
int LZ4_compressBound(int isize);
|
||||
|
||||
|
||||
/*
|
||||
LZ4_compress_limitedOutput() :
|
||||
Compress 'inputSize' bytes from 'source' into an output buffer 'dest' of maximum size 'maxOutputSize'.
|
||||
If it cannot achieve it, compression will stop, and result of the function will be zero.
|
||||
This function never writes outside of provided output buffer.
|
||||
|
||||
inputSize : Max supported value is LZ4_MAX_INPUT_VALUE
|
||||
maxOutputSize : is the size of the destination buffer (which must be already allocated)
|
||||
return : the number of bytes written in buffer 'dest'
|
||||
or 0 if the compression fails
|
||||
*/
|
||||
int LZ4_compress_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize);
|
||||
|
||||
|
||||
/*
|
||||
LZ4_decompress_fast() :
|
||||
originalSize : is the original and therefore uncompressed size
|
||||
return : the number of bytes read from the source buffer (in other words, the compressed size)
|
||||
If the source stream is malformed, the function will stop decoding and return a negative result.
|
||||
Destination buffer must be already allocated. Its size must be a minimum of 'originalSize' bytes.
|
||||
note : This function is a bit faster than LZ4_decompress_safe()
|
||||
It provides fast decompression and fully respect memory boundaries for properly formed compressed data.
|
||||
It does not provide full protection against intentionnally modified data stream.
|
||||
Use this function in a trusted environment (data to decode comes from a trusted source).
|
||||
*/
|
||||
int LZ4_decompress_fast (const char* source, char* dest, int originalSize);
|
||||
|
||||
|
||||
/*
|
||||
LZ4_decompress_safe_partial() :
|
||||
This function decompress a compressed block of size 'compressedSize' at position 'source'
|
||||
into output buffer 'dest' of size 'maxOutputSize'.
|
||||
The function tries to stop decompressing operation as soon as 'targetOutputSize' has been reached,
|
||||
reducing decompression time.
|
||||
return : the number of bytes decoded in the destination buffer (necessarily <= maxOutputSize)
|
||||
Note : this number can be < 'targetOutputSize' should the compressed block to decode be smaller.
|
||||
Always control how many bytes were decoded.
|
||||
If the source stream is detected malformed, the function will stop decoding and return a negative result.
|
||||
This function never writes outside of output buffer, and never reads outside of input buffer. It is therefore protected against malicious data packets
|
||||
*/
|
||||
int LZ4_decompress_safe_partial (const char* source, char* dest, int compressedSize, int targetOutputSize, int maxOutputSize);
|
||||
|
||||
|
||||
/***********************************************
|
||||
Experimental Streaming Compression Functions
|
||||
***********************************************/
|
||||
|
||||
#define LZ4_STREAMSIZE_U32 ((1 << (LZ4_MEMORY_USAGE-2)) + 8)
|
||||
#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U32 * sizeof(unsigned int))
|
||||
/*
|
||||
* LZ4_stream_t
|
||||
* information structure to track an LZ4 stream.
|
||||
* important : set this structure content to zero before first use !
|
||||
*/
|
||||
typedef struct { unsigned int table[LZ4_STREAMSIZE_U32]; } LZ4_stream_t;
|
||||
|
||||
/*
|
||||
* If you prefer dynamic allocation methods,
|
||||
* LZ4_createStream
|
||||
* provides a pointer (void*) towards an initialized LZ4_stream_t structure.
|
||||
* LZ4_free just frees it.
|
||||
*/
|
||||
void* LZ4_createStream();
|
||||
int LZ4_free (void* LZ4_stream);
|
||||
|
||||
|
||||
/*
|
||||
* LZ4_loadDict
|
||||
* Use this function to load a static dictionary into LZ4_stream.
|
||||
* Any previous data will be forgotten, only 'dictionary' will remain in memory.
|
||||
* Loading a size of 0 is allowed (same effect as init).
|
||||
* Return : 1 if OK, 0 if error
|
||||
*/
|
||||
int LZ4_loadDict (void* LZ4_stream, const char* dictionary, int dictSize);
|
||||
|
||||
/*
|
||||
* LZ4_compress_continue
|
||||
* Compress data block 'source', using blocks compressed before as dictionary to improve compression ratio
|
||||
* Previous data blocks are assumed to still be present at their previous location.
|
||||
*/
|
||||
int LZ4_compress_continue (void* LZ4_stream, const char* source, char* dest, int inputSize);
|
||||
|
||||
/*
|
||||
* LZ4_compress_limitedOutput_continue
|
||||
* Same as before, but also specify a maximum target compressed size (maxOutputSize)
|
||||
* If objective cannot be met, compression exits, and returns a zero.
|
||||
*/
|
||||
int LZ4_compress_limitedOutput_continue (void* LZ4_stream, const char* source, char* dest, int inputSize, int maxOutputSize);
|
||||
|
||||
/*
|
||||
* LZ4_saveDict
|
||||
* If previously compressed data block is not guaranteed to remain at its previous memory location
|
||||
* save it into a safe place (char* safeBuffer)
|
||||
* Note : you don't need to call LZ4_loadDict() afterwards,
|
||||
* dictionary is immediately usable, you can therefore call again LZ4_compress_continue()
|
||||
* Return : 1 if OK, 0 if error
|
||||
* Note : any dictSize > 64 KB will be interpreted as 64KB.
|
||||
*/
|
||||
int LZ4_saveDict (void* LZ4_stream, char* safeBuffer, int dictSize);
|
||||
|
||||
|
||||
/************************************************
|
||||
Experimental Streaming Decompression Functions
|
||||
************************************************/
|
||||
|
||||
#define LZ4_STREAMDECODESIZE_U32 4
|
||||
#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U32 * sizeof(unsigned int))
|
||||
/*
|
||||
* LZ4_streamDecode_t
|
||||
* information structure to track an LZ4 stream.
|
||||
* important : set this structure content to zero before first use !
|
||||
*/
|
||||
typedef struct { unsigned int table[LZ4_STREAMDECODESIZE_U32]; } LZ4_streamDecode_t;
|
||||
|
||||
/*
|
||||
* If you prefer dynamic allocation methods,
|
||||
* LZ4_createStreamDecode()
|
||||
* provides a pointer (void*) towards an initialized LZ4_streamDecode_t structure.
|
||||
* LZ4_free just frees it.
|
||||
*/
|
||||
void* LZ4_createStreamDecode();
|
||||
int LZ4_free (void* LZ4_stream); /* yes, it's the same one as for compression */
|
||||
|
||||
/*
|
||||
*_continue() :
|
||||
These decoding functions allow decompression of multiple blocks in "streaming" mode.
|
||||
Previously decoded blocks must still be available at the memory position where they were decoded.
|
||||
If it's not possible, save the relevant part of decoded data into a safe buffer,
|
||||
and indicate where it stands using LZ4_setDictDecode()
|
||||
*/
|
||||
int LZ4_decompress_safe_continue (void* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize);
|
||||
int LZ4_decompress_fast_continue (void* LZ4_streamDecode, const char* source, char* dest, int originalSize);
|
||||
|
||||
/*
|
||||
* LZ4_setDictDecode
|
||||
* Use this function to instruct where to find the dictionary.
|
||||
* This function can be used to specify a static dictionary,
|
||||
* or to instruct where to find some previously decoded data saved into a different memory space.
|
||||
* Setting a size of 0 is allowed (same effect as no dictionary).
|
||||
* Return : 1 if OK, 0 if error
|
||||
*/
|
||||
int LZ4_setDictDecode (void* LZ4_streamDecode, const char* dictionary, int dictSize);
|
||||
|
||||
|
||||
/*
|
||||
Advanced decoding functions :
|
||||
*_usingDict() :
|
||||
These decoding functions work the same as
|
||||
a combination of LZ4_setDictDecode() followed by LZ4_decompress_x_continue()
|
||||
all together into a single function call.
|
||||
It doesn't use nor update an LZ4_streamDecode_t structure.
|
||||
*/
|
||||
int LZ4_decompress_safe_usingDict (const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize);
|
||||
int LZ4_decompress_fast_usingDict (const char* source, char* dest, int originalSize, const char* dictStart, int dictSize);
|
||||
|
||||
|
||||
|
||||
|
||||
/**************************************
|
||||
Obsolete Functions
|
||||
**************************************/
|
||||
/*
|
||||
Obsolete decompression functions
|
||||
These function names are deprecated and should no longer be used.
|
||||
They are only provided here for compatibility with older user programs.
|
||||
- LZ4_uncompress is the same as LZ4_decompress_fast
|
||||
- LZ4_uncompress_unknownOutputSize is the same as LZ4_decompress_safe
|
||||
*/
|
||||
int LZ4_uncompress (const char* source, char* dest, int outputSize);
|
||||
int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize);
|
||||
|
||||
/* Obsolete functions for externally allocated state; use streaming interface instead */
|
||||
int LZ4_sizeofState(void);
|
||||
int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize);
|
||||
int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
|
||||
|
||||
/* Obsolete streaming functions; use new streaming interface whenever possible */
|
||||
void* LZ4_create (const char* inputBuffer);
|
||||
int LZ4_sizeofStreamState(void);
|
||||
int LZ4_resetStreamState(void* state, const char* inputBuffer);
|
||||
char* LZ4_slideInputBuffer (void* state);
|
||||
|
||||
/* Obsolete streaming decoding functions */
|
||||
int LZ4_decompress_safe_withPrefix64k (const char* source, char* dest, int compressedSize, int maxOutputSize);
|
||||
int LZ4_decompress_fast_withPrefix64k (const char* source, char* dest, int originalSize);
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,60 +1,173 @@
|
|||
/*
|
||||
LZ4 HC - High Compression Mode of LZ4
|
||||
Header File
|
||||
Copyright (C) 2011-2012, Yann Collet.
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html
|
||||
- LZ4 source repository : http://code.google.com/p/lz4/
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
int LZ4_compressHC (const char* source, char* dest, int isize);
|
||||
|
||||
/*
|
||||
LZ4_compressHC :
|
||||
return : the number of bytes in compressed buffer dest
|
||||
note : destination buffer must be already allocated.
|
||||
To avoid any problem, size it to handle worst cases situations (input data not compressible)
|
||||
Worst case size evaluation is provided by function LZ4_compressBound() (see "lz4.h")
|
||||
*/
|
||||
|
||||
|
||||
/* Note :
|
||||
Decompression functions are provided within regular LZ4 source code (see "lz4.h") (BSD license)
|
||||
*/
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
/*
|
||||
LZ4 HC - High Compression Mode of LZ4
|
||||
Header File
|
||||
Copyright (C) 2011-2014, Yann Collet.
|
||||
BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
You can contact the author at :
|
||||
- LZ4 homepage : http://fastcompression.blogspot.com/p/lz4.html
|
||||
- LZ4 source repository : http://code.google.com/p/lz4/
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
int LZ4_compressHC (const char* source, char* dest, int inputSize);
|
||||
/*
|
||||
LZ4_compressHC :
|
||||
return : the number of bytes in compressed buffer dest
|
||||
or 0 if compression fails.
|
||||
note : destination buffer must be already allocated.
|
||||
To avoid any problem, size it to handle worst cases situations (input data not compressible)
|
||||
Worst case size evaluation is provided by function LZ4_compressBound() (see "lz4.h")
|
||||
*/
|
||||
|
||||
int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize);
|
||||
/*
|
||||
LZ4_compress_limitedOutput() :
|
||||
Compress 'inputSize' bytes from 'source' into an output buffer 'dest' of maximum size 'maxOutputSize'.
|
||||
If it cannot achieve it, compression will stop, and result of the function will be zero.
|
||||
This function never writes outside of provided output buffer.
|
||||
|
||||
inputSize : Max supported value is 1 GB
|
||||
maxOutputSize : is maximum allowed size into the destination buffer (which must be already allocated)
|
||||
return : the number of output bytes written in buffer 'dest'
|
||||
or 0 if compression fails.
|
||||
*/
|
||||
|
||||
|
||||
int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel);
|
||||
int LZ4_compressHC2_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
|
||||
/*
|
||||
Same functions as above, but with programmable 'compressionLevel'.
|
||||
Recommended values are between 4 and 9, although any value between 0 and 16 will work.
|
||||
'compressionLevel'==0 means use default 'compressionLevel' value.
|
||||
Values above 16 behave the same as 16.
|
||||
Equivalent variants exist for all other compression functions below.
|
||||
*/
|
||||
|
||||
/* Note :
|
||||
Decompression functions are provided within LZ4 source code (see "lz4.h") (BSD license)
|
||||
*/
|
||||
|
||||
|
||||
/**************************************
|
||||
Using an external allocation
|
||||
**************************************/
|
||||
int LZ4_sizeofStateHC(void);
|
||||
int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize);
|
||||
int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize);
|
||||
|
||||
int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel);
|
||||
int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
|
||||
|
||||
/*
|
||||
These functions are provided should you prefer to allocate memory for compression tables with your own allocation methods.
|
||||
To know how much memory must be allocated for the compression tables, use :
|
||||
int LZ4_sizeofStateHC();
|
||||
|
||||
Note that tables must be aligned for pointer (32 or 64 bits), otherwise compression will fail (return code 0).
|
||||
|
||||
The allocated memory can be provided to the compressions functions using 'void* state' parameter.
|
||||
LZ4_compress_withStateHC() and LZ4_compress_limitedOutput_withStateHC() are equivalent to previously described functions.
|
||||
They just use the externally allocated memory area instead of allocating their own (on stack, or on heap).
|
||||
*/
|
||||
|
||||
|
||||
/**************************************
|
||||
Streaming Functions
|
||||
**************************************/
|
||||
/* Note : these streaming functions still follows the older model */
|
||||
void* LZ4_createHC (const char* inputBuffer);
|
||||
int LZ4_compressHC_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize);
|
||||
int LZ4_compressHC_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize);
|
||||
char* LZ4_slideInputBufferHC (void* LZ4HC_Data);
|
||||
int LZ4_freeHC (void* LZ4HC_Data);
|
||||
|
||||
int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel);
|
||||
int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel);
|
||||
|
||||
/*
|
||||
These functions allow the compression of dependent blocks, where each block benefits from prior 64 KB within preceding blocks.
|
||||
In order to achieve this, it is necessary to start creating the LZ4HC Data Structure, thanks to the function :
|
||||
|
||||
void* LZ4_createHC (const char* inputBuffer);
|
||||
The result of the function is the (void*) pointer on the LZ4HC Data Structure.
|
||||
This pointer will be needed in all other functions.
|
||||
If the pointer returned is NULL, then the allocation has failed, and compression must be aborted.
|
||||
The only parameter 'const char* inputBuffer' must, obviously, point at the beginning of input buffer.
|
||||
The input buffer must be already allocated, and size at least 192KB.
|
||||
'inputBuffer' will also be the 'const char* source' of the first block.
|
||||
|
||||
All blocks are expected to lay next to each other within the input buffer, starting from 'inputBuffer'.
|
||||
To compress each block, use either LZ4_compressHC_continue() or LZ4_compressHC_limitedOutput_continue().
|
||||
Their behavior are identical to LZ4_compressHC() or LZ4_compressHC_limitedOutput(),
|
||||
but require the LZ4HC Data Structure as their first argument, and check that each block starts right after the previous one.
|
||||
If next block does not begin immediately after the previous one, the compression will fail (return 0).
|
||||
|
||||
When it's no longer possible to lay the next block after the previous one (not enough space left into input buffer), a call to :
|
||||
char* LZ4_slideInputBufferHC(void* LZ4HC_Data);
|
||||
must be performed. It will typically copy the latest 64KB of input at the beginning of input buffer.
|
||||
Note that, for this function to work properly, minimum size of an input buffer must be 192KB.
|
||||
==> The memory position where the next input data block must start is provided as the result of the function.
|
||||
|
||||
Compression can then resume, using LZ4_compressHC_continue() or LZ4_compressHC_limitedOutput_continue(), as usual.
|
||||
|
||||
When compression is completed, a call to LZ4_freeHC() will release the memory used by the LZ4HC Data Structure.
|
||||
*/
|
||||
|
||||
int LZ4_sizeofStreamStateHC(void);
|
||||
int LZ4_resetStreamStateHC(void* state, const char* inputBuffer);
|
||||
|
||||
/*
|
||||
These functions achieve the same result as :
|
||||
void* LZ4_createHC (const char* inputBuffer);
|
||||
|
||||
They are provided here to allow the user program to allocate memory using its own routines.
|
||||
|
||||
To know how much space must be allocated, use LZ4_sizeofStreamStateHC();
|
||||
Note also that space must be aligned for pointers (32 or 64 bits).
|
||||
|
||||
Once space is allocated, you must initialize it using : LZ4_resetStreamStateHC(void* state, const char* inputBuffer);
|
||||
void* state is a pointer to the space allocated.
|
||||
It must be aligned for pointers (32 or 64 bits), and be large enough.
|
||||
The parameter 'const char* inputBuffer' must, obviously, point at the beginning of input buffer.
|
||||
The input buffer must be already allocated, and size at least 192KB.
|
||||
'inputBuffer' will also be the 'const char* source' of the first block.
|
||||
|
||||
The same space can be re-used multiple times, just by initializing it each time with LZ4_resetStreamState().
|
||||
return value of LZ4_resetStreamStateHC() must be 0 is OK.
|
||||
Any other value means there was an error (typically, state is not aligned for pointers (32 or 64 bits)).
|
||||
*/
|
||||
|
||||
|
||||
#if defined (__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -920,6 +920,47 @@ START_TEST(eet_test_data_type_dump_undump)
|
|||
eet_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
||||
static void
|
||||
append_strbuf_string(void *data, const char *string)
|
||||
{
|
||||
Eina_Strbuf *strbuf = data;
|
||||
eina_strbuf_append(strbuf, string);
|
||||
}
|
||||
|
||||
START_TEST(eet_test_data_type_escape_dump_undump)
|
||||
{
|
||||
void *blob;
|
||||
int blob_len;
|
||||
int ret = 0;
|
||||
const char *outputstr;
|
||||
Eina_Strbuf *strbuf;
|
||||
const char inputstr[] = ""
|
||||
"group \"\\\\My\\\"Group\\\\\" struct {\n"
|
||||
" value \"\\\\My\\\\BackSlash\\\\\" string: \"\\\\\";\n"
|
||||
" value \"\\\\My\\\\DoubleQuote\\\\\" string: \"\\\"\";\n"
|
||||
" value \"\\\\My\\\\NewLine\\\\\" string: \"\\n\";\n"
|
||||
"}\n";
|
||||
|
||||
eet_init();
|
||||
|
||||
blob = eet_data_text_undump(inputstr, strlen(inputstr), &blob_len);
|
||||
fail_if(!blob);
|
||||
|
||||
strbuf = eina_strbuf_new();
|
||||
ret = eet_data_text_dump(blob, blob_len, append_strbuf_string, strbuf);
|
||||
ck_assert_int_eq(ret, 1);
|
||||
|
||||
outputstr = eina_strbuf_string_get(strbuf);
|
||||
fail_if(!outputstr);
|
||||
ck_assert_str_eq(inputstr, outputstr);
|
||||
|
||||
eina_strbuf_free(strbuf);
|
||||
free(blob);
|
||||
|
||||
eet_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
START_TEST(eet_file_simple_write)
|
||||
{
|
||||
const char *buffer = "Here is a string of data to save !";
|
||||
|
@ -2724,6 +2765,7 @@ eet_suite(void)
|
|||
tcase_add_test(tc, eet_test_basic_data_type_encoding_decoding);
|
||||
tcase_add_test(tc, eet_test_data_type_encoding_decoding);
|
||||
tcase_add_test(tc, eet_test_data_type_dump_undump);
|
||||
tcase_add_test(tc, eet_test_data_type_escape_dump_undump);
|
||||
tcase_add_test(tc, eet_fp);
|
||||
tcase_add_test(tc, eet_test_union);
|
||||
tcase_add_test(tc, eet_test_variant);
|
||||
|
|
|
@ -646,7 +646,7 @@ init_video_object(const char *module_filename, const char *filename)
|
|||
edje_object_part_drag_value_set(oe, "video_volume", 0.0, 0.5);
|
||||
edje_object_part_text_set(oe, "video_volume_txt", "vol 0.50");
|
||||
|
||||
edje_object_signal_emit(o, "video_state", "play");
|
||||
edje_object_signal_emit(oe, "video_state", "play");
|
||||
|
||||
evas_object_show(oe);
|
||||
}
|
||||
|
|
|
@ -189,6 +189,9 @@ _test_ellipsis(Evas_Object *to, const char *buf, const char *font, Evas_Font_Siz
|
|||
evas_object_geometry_get(to, NULL, NULL, &w, NULL);
|
||||
/* If it's gotten way too small, it means we have an issue. */
|
||||
fail_if(w < 100);
|
||||
|
||||
w = evas_object_text_horiz_advance_get(to);
|
||||
fail_if(w < 100);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -218,6 +221,9 @@ START_TEST(evas_text_ellipsis)
|
|||
_test_ellipsis(to, buf, font, size, 0.5);
|
||||
_test_ellipsis(to, buf, font, size, 1.0);
|
||||
|
||||
/* Ligatures */
|
||||
buf = "Fffffffffffffffffffffffffffffffffff";
|
||||
_test_ellipsis(to, buf, font, size, 0.0);
|
||||
END_TEXT_TEST();
|
||||
}
|
||||
END_TEST
|
||||
|
|
Loading…
Reference in New Issue