diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am index 6fddfd75e3..3dc49ce4d5 100644 --- a/src/Makefile_Evas.am +++ b/src/Makefile_Evas.am @@ -2254,6 +2254,7 @@ tests/evas/evas_suite.h tests_evas_evas_suite_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ -I$(top_srcdir)/src/lib/ecore_evas \ -I$(top_builddir)/src/lib/evas/canvas \ +-I$(top_srcdir)/src/modules/evas/engines/buffer \ -DPACKAGE_BUILD_DIR=\"$(abs_top_builddir)\" \ -DTESTS_SRC_DIR=\"$(top_srcdir)/src/tests/evas\" \ -DTESTS_BUILD_DIR=\"$(top_builddir)/src/tests/evas\" \ diff --git a/src/tests/evas/evas_test_render_engines.c b/src/tests/evas/evas_test_render_engines.c index 6e9aef730a..f336bf1928 100644 --- a/src/tests/evas/evas_test_render_engines.c +++ b/src/tests/evas/evas_test_render_engines.c @@ -5,8 +5,10 @@ #include #include +#include #include "evas_suite.h" +#include "evas_tests_helpers.h" static Eina_Bool _find_list(const Eina_List *lst, const char *item) @@ -75,8 +77,62 @@ EFL_START_TEST(evas_render_lookup) } EFL_END_TEST +static unsigned int counter; + +static void +render_post(void *data EINA_UNUSED, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED) +{ + counter++; +} + +static void +render_flush_post(void *data EINA_UNUSED, Evas *e, void *event_info EINA_UNUSED) +{ + counter++; + evas_event_callback_add(e, EVAS_CALLBACK_RENDER_POST, render_post, NULL); +} + +static void +render_flush_pre(void *data EINA_UNUSED, Evas *e, void *event_info EINA_UNUSED) +{ + counter++; + evas_event_callback_add(e, EVAS_CALLBACK_RENDER_FLUSH_POST, render_flush_post, NULL); +} + +static void +render_pre(void *data EINA_UNUSED, Evas *e, void *event_info EINA_UNUSED) +{ + counter++; + evas_event_callback_add(e, EVAS_CALLBACK_RENDER_FLUSH_PRE, render_flush_pre, NULL); +} + +EFL_START_TEST(evas_render_callbacks) +{ + Evas_Object *rect; + Evas *evas = EVAS_TEST_INIT_EVAS(); + Evas_Engine_Info_Buffer *einfo; + + einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(evas); + /* 500 x 500 */ + einfo->info.dest_buffer_row_bytes = 500 * sizeof(int); + einfo->info.dest_buffer = malloc(einfo->info.dest_buffer_row_bytes * 500); + ck_assert(evas_engine_info_set(evas, (Evas_Engine_Info *)einfo)); + + rect = evas_object_rectangle_add(evas); + evas_object_color_set(rect, 255, 0, 0, 255); + evas_object_resize(rect, 500, 500); + evas_object_show(rect); + + evas_event_callback_add(evas, EVAS_CALLBACK_RENDER_PRE, render_pre, NULL); + evas_render(evas); + ck_assert_int_eq(counter, 4); + evas_free(evas); +} +EFL_END_TEST + void evas_test_render_engines(TCase *tc) { tcase_add_test(tc, evas_render_engines); tcase_add_test(tc, evas_render_lookup); + tcase_add_test(tc, evas_render_callbacks); } diff --git a/src/tests/evas/meson.build b/src/tests/evas/meson.build index 62898cd241..5c06ff79ff 100644 --- a/src/tests/evas/meson.build +++ b/src/tests/evas/meson.build @@ -21,6 +21,7 @@ evas_suite_src = [ evas_suite = executable('evas_suite', evas_suite_src, dependencies: [evas_bin, evas, ecore_evas, dl, check], + include_directories: include_directories(join_paths('..', '..', 'modules', 'evas', 'engines', 'buffer')), c_args : [ '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"', '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"']