.PHONY: screenshots
-examplesdir = $(datadir)/$(PACKAGE)/examples
-filesdir = $(datadir)/$(PACKAGE)/examples
+examplesdir = $(pkgdatadir)/examples
+filesdir = $(pkgdatadir)/examples
files_DATA =
AM_CPPFLAGS = \
-I. \
-I$(top_srcdir)/src/lib \
-I$(top_builddir)/src/lib \
--DPACKAGE_DATA_DIR="\"$(datadir)/elementary\"" \
+-DPACKAGE_DATA_DIR="\"$(pkgdatadir)\"" \
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
@ELEMENTARY_EDBUS_CFLAGS@ \
@ELEMENTARY_CFLAGS@
LDADD = \
- @ELEMENTARY_LIBS@ \
- @ELEMENTARY_ETHUMB_LIBS@ \
- @ELEMENTARY_X_LIBS@ \
- $(top_builddir)/src/lib/libelementary.la
+@ELEMENTARY_LIBS@ \
+@ELEMENTARY_ETHUMB_LIBS@ \
+@ELEMENTARY_X_LIBS@ \
+$(top_builddir)/src/lib/libelementary.la
EDJE_CC = @edje_cc@
EDJE_FLAGS_VERBOSE_ =
EDJE_FLAGS = $(EDJE_FLAGS_$(V))
SRCS = \
- actionslider_example_01.c \
- bubble_example_01.c \
- button_example_00.c \
- button_example_01.c \
- check_example_01.c \
- colorselector_example_01.c \
- frame_example_01.c \
- transit_example_01.c \
- transit_example_02.c \
- transit_example_03.c \
- transit_example_04.c \
- bg_example_01.c \
- bg_example_02.c \
- bg_example_03.c \
- box_example_02.c \
- flip_example_01.c \
- general_funcs_example.c \
- hover_example_01.c \
- hoversel_example_01.c \
- label_example_01.c \
- theme_example_01.c \
- theme_example_02.c \
- calendar_example_01.c \
- calendar_example_02.c \
- calendar_example_03.c \
- calendar_example_04.c \
- calendar_example_05.c \
- calendar_example_06.c \
- datetime_example.c \
- map_example_01.c \
- map_example_02.c \
- map_example_03.c \
- toolbar_example_01.c \
- toolbar_example_02.c \
- toolbar_example_03.c \
- spinner_example.c \
- clock_example.c \
- dayselector_example.c \
- mapbuf_example.c \
- conformant_example_01.c \
- conformant_example_02.c \
- image_example_01.c \
- icon_example_01.c \
- layout_example_01.c \
- layout_example_02.c \
- layout_example_03.c \
- list_example_01.c \
- list_example_02.c \
- list_example_03.c \
- segment_control_example.c \
- flipselector_example.c \
- fileselector_example.c \
- fileselector_button_example.c \
- fileselector_entry_example.c \
- diskselector_example_01.c \
- diskselector_example_02.c \
- index_example_01.c \
- index_example_02.c \
- genlist_example_01.c \
- genlist_example_02.c \
- genlist_example_03.c \
- genlist_example_04.c \
- genlist_example_05.c \
- theme_example.edc \
- layout_example.edc \
- slider_example.c \
- panes_example.c \
- ctxpopup_example_01.c \
- separator_example_01.c \
- radio_example_01.c \
- panel_example_01.c \
- gengrid_example.c \
- entry_example.c \
- slideshow_example.c \
- progressbar_example.c \
- notify_example_01.c \
- photocam_example_01.c \
- popup_example_01.c \
- popup_example_02.c \
- popup_example_03.c \
- inwin_example.c \
- scroller_example_01.c \
- table_example_01.c \
- table_example_02.c \
- menu_example_01.c \
- thumb_example_01.c \
- web_example.c \
- win_example.c \
- efl_thread_1.c \
- efl_thread_2.c \
- efl_thread_3.c \
- efl_thread_4.c \
- efl_thread_5.c \
- efl_thread_6.c
-
-examples_PROGRAMS =
+actionslider_example_01.c \
+bg_example_01.c \
+bg_example_02.c \
+bg_example_03.c \
+box_example_02.c \
+bubble_example_01.c \
+button_example_00.c \
+button_example_01.c \
+calendar_example_01.c \
+calendar_example_02.c \
+calendar_example_03.c \
+calendar_example_04.c \
+calendar_example_05.c \
+calendar_example_06.c \
+check_example_01.c \
+clock_example.c \
+colorselector_example_01.c \
+conformant_example_01.c \
+conformant_example_02.c \
+ctxpopup_example_01.c \
+datetime_example.c \
+dayselector_example.c \
+diskselector_example_01.c \
+diskselector_example_02.c \
+efl_thread_1.c \
+efl_thread_2.c \
+efl_thread_3.c \
+efl_thread_4.c \
+efl_thread_5.c \
+efl_thread_6.c \
+efl_thread_win32_1.c \
+efl_thread_win32_2.c \
+efl_thread_win32_3.c \
+efl_thread_win32_4.c \
+entry_example.c \
+fileselector_button_example.c \
+fileselector_entry_example.c \
+fileselector_example.c \
+flip_example_01.c \
+flipselector_example.c \
+frame_example_01.c \
+general_funcs_example.c \
+gengrid_example.c \
+genlist_example_01.c \
+genlist_example_02.c \
+genlist_example_03.c \
+genlist_example_04.c \
+genlist_example_05.c \
+hover_example_01.c \
+hoversel_example_01.c \
+icon_example_01.c \
+image_example_01.c \
+index_example_01.c \
+index_example_02.c \
+inwin_example.c \
+label_example_01.c \
+layout_example.edc \
+layout_example_01.c \
+layout_example_02.c \
+layout_example_03.c \
+list_example_01.c \
+list_example_02.c \
+list_example_03.c \
+map_example_01.c \
+map_example_02.c \
+map_example_03.c \
+mapbuf_example.c \
+menu_example_01.c \
+notify_example_01.c \
+panes_example.c \
+panel_example_01.c \
+photocam_example_01.c \
+popup_example_01.c \
+popup_example_02.c \
+popup_example_03.c \
+progressbar_example.c \
+radio_example_01.c \
+segment_control_example.c \
+separator_example_01.c \
+slider_example.c \
+slideshow_example.c \
+spinner_example.c \
+scroller_example_01.c \
+table_example_01.c \
+table_example_02.c \
+theme_example.edc \
+theme_example_01.c \
+theme_example_02.c \
+thumb_example_01.c \
+toolbar_example_01.c \
+toolbar_example_02.c \
+toolbar_example_03.c \
+transit_example_01.c \
+transit_example_02.c \
+transit_example_03.c \
+transit_example_04.c \
+web_example.c \
+win_example.c
.edc.edj:
$(EDJE_CC) $(EDJE_FLAGS) $< $@
clean-local:
rm -f *.edj
-examples_PROGRAMS += \
- actionslider_example_01 \
- bubble_example_01 \
- button_example_00 \
- button_example_01 \
- check_example_01 \
- colorselector_example_01 \
- frame_example_01 \
- transit_example_01 \
- transit_example_02 \
- transit_example_03 \
- transit_example_04 \
- bg_example_01 \
- bg_example_02 \
- bg_example_03 \
- box_example_02 \
- flip_example_01 \
- general_funcs_example \
- hover_example_01 \
- hoversel_example_01 \
- label_example_01 \
- theme_example_01 \
- theme_example_02 \
- calendar_example_01 \
- calendar_example_02 \
- calendar_example_03 \
- calendar_example_04 \
- calendar_example_05 \
- calendar_example_06 \
- datetime_example \
- map_example_01 \
- map_example_02 \
- map_example_03 \
- toolbar_example_01 \
- toolbar_example_02 \
- toolbar_example_03 \
- spinner_example \
- clock_example \
- dayselector_example \
- mapbuf_example \
- conformant_example_01 \
- conformant_example_02 \
- image_example_01 \
- diskselector_example_01 \
- diskselector_example_02 \
- icon_example_01 \
- layout_example_01 \
- layout_example_02 \
- layout_example_03 \
- list_example_01 \
- list_example_02 \
- list_example_03 \
- segment_control_example \
- slider_example \
- panes_example \
- ctxpopup_example_01 \
- flipselector_example \
- fileselector_example \
- fileselector_button_example \
- fileselector_entry_example \
- index_example_01 \
- index_example_02 \
- separator_example_01 \
- radio_example_01 \
- panel_example_01 \
- gengrid_example \
- genlist_example_01 \
- genlist_example_02 \
- genlist_example_03 \
- genlist_example_04 \
- genlist_example_05 \
- entry_example \
- slideshow_example \
- progressbar_example \
- notify_example_01 \
- photocam_example_01 \
- popup_example_01 \
- popup_example_02 \
- popup_example_03 \
- inwin_example \
- scroller_example_01 \
- table_example_01 \
- table_example_02 \
- menu_example_01 \
- thumb_example_01 \
- web_example \
- win_example \
- efl_thread_1 \
- efl_thread_2 \
- efl_thread_3 \
- efl_thread_4 \
- efl_thread_5 \
- efl_thread_6
+examples_PROGRAMS = \
+actionslider_example_01 \
+bg_example_01 \
+bg_example_02 \
+bg_example_03 \
+box_example_02 \
+bubble_example_01 \
+button_example_00 \
+button_example_01 \
+calendar_example_01 \
+calendar_example_02 \
+calendar_example_03 \
+calendar_example_04 \
+calendar_example_05 \
+calendar_example_06 \
+check_example_01 \
+clock_example \
+colorselector_example_01 \
+conformant_example_01 \
+conformant_example_02 \
+ctxpopup_example_01 \
+datetime_example \
+dayselector_example \
+diskselector_example_01 \
+diskselector_example_02 \
+efl_thread_1 \
+efl_thread_2 \
+efl_thread_3 \
+efl_thread_4 \
+efl_thread_5 \
+efl_thread_6 \
+entry_example \
+fileselector_button_example \
+fileselector_entry_example \
+fileselector_example \
+flip_example_01 \
+flipselector_example \
+frame_example_01 \
+general_funcs_example \
+gengrid_example \
+genlist_example_01 \
+genlist_example_02 \
+genlist_example_03 \
+genlist_example_04 \
+genlist_example_05 \
+hover_example_01 \
+hoversel_example_01 \
+icon_example_01 \
+image_example_01 \
+index_example_01 \
+index_example_02 \
+inwin_example \
+label_example_01 \
+layout_example_01 \
+layout_example_02 \
+layout_example_03 \
+list_example_01 \
+list_example_02 \
+list_example_03 \
+map_example_01 \
+map_example_02 \
+map_example_03 \
+mapbuf_example \
+menu_example_01 \
+notify_example_01 \
+panes_example \
+panel_example_01 \
+photocam_example_01 \
+popup_example_01 \
+popup_example_02 \
+popup_example_03 \
+progressbar_example \
+radio_example_01 \
+segment_control_example \
+separator_example_01 \
+slider_example \
+slideshow_example \
+spinner_example \
+scroller_example_01 \
+table_example_01 \
+table_example_02 \
+theme_example_01 \
+theme_example_02 \
+thumb_example_01 \
+toolbar_example_01 \
+toolbar_example_02 \
+toolbar_example_03 \
+transit_example_01 \
+transit_example_02 \
+transit_example_03 \
+transit_example_04 \
+web_example \
+win_example
+
+if ELEMENTARY_WINDOWS_BUILD
+efl_thread_1_SOURCES = efl_thread_win32_1.c
+efl_thread_2_SOURCES = efl_thread_win32_2.c
+efl_thread_3_SOURCES = efl_thread_win32_3.c
+efl_thread_4_SOURCES = efl_thread_win32_4.c
+else
+efl_thread_1_SOURCES = efl_thread_1.c
+efl_thread_2_SOURCES = efl_thread_2.c
+efl_thread_3_SOURCES = efl_thread_3.c
+efl_thread_4_SOURCES = efl_thread_4.c
+endif
# This variable will hold the list of screenshots that will be made
# by "make screenshots". Each item in the list is of the form:
# <example executable>:<screenshot filename>:<delay in seconds>
SCREENSHOTS = \
- actionslider_example_01:actionslider_01.png:0.0 \
- bg_example_02:bg_01.png:0.0 \
- box_example_02:box_example_02.png:1.3 \
- bubble_example_01:bubble_example_01.png:0.0 \
- button_example_00:button_00.png:0.0 \
- button_example_01:button_01.png:0.0 \
- check_example_01:check_example_01.png:0.0 \
- colorselector_example_01:colorselector_example_01.png:0.0 \
- animator_example_01:animator_example_01.png:0.2 \
- animator_example_01:animator_example_02.png:0.5 \
- animator_example_01:animator_example_03.png:0.9 \
- flip_example_01:flip_example_01.png:0.0 \
- frame_example_01:frame_example_01.png:0.0 \
- hover_example_01:hover_example_01.png:0.0 \
- hoversel_example_01:hoversel_example_01.png:0.0 \
- label_example_01:label_example_01.png:0.0 \
- theme_example_01:theme_example_01.png:0.0 \
- conformant_example_01:conformant_example_01.png:0.0 \
- conformant_example_02:conformant_example_02.png:0.0 \
- calendar_example_01:calendar_example_01.png:0.0 \
- calendar_example_02:calendar_example_02.png:0.0 \
- calendar_example_03:calendar_example_03.png:0.0 \
- calendar_example_04:calendar_example_04.png:0.0 \
- calendar_example_05:calendar_example_05.png:0.0 \
- calendar_example_06:calendar_example_06.png:0.0 \
- datetime_example:datetime_example.png:0.0 \
- map_example_01:map_example_01.png:2 \
- map_example_02:map_example_02.png:2.5 \
- map_example_03:map_example_03.png:2 \
- toolbar_example_01:toolbar_example_01.png:0.0 \
- toolbar_example_02:toolbar_example_02.png:1 \
- toolbar_example_03:toolbar_example_03.png:1 \
- spinner_example:spinner_example.png:0.0 \
- clock_example:clock_example.png:0.5 \
- dayselector_example:dayselector_example.png:0.0 \
- mapbuf_example:mapbuf_example.png:0.0 \
- image_example_01:image_example_01.png:0.0 \
- diskselector_example_01:diskselector_example_01.png:0.2 \
- diskselector_example_02:diskselector_example_02.png:0.2 \
- icon_example_01:icon_example_01.png:0.0 \
- layout_example_01:layout_example_01.png:0.0 \
- layout_example_02:layout_example_02.png:0.0 \
- layout_example_03:layout_example_03.png:0.0 \
- list_example_01:list_example_01.png:0.0 \
- list_example_02:list_example_02.png:0.0 \
- list_example_03:list_example_03.png:0.0 \
- segment_control_example:segment_control_example.png:0.0 \
- flipselector_example:flipselector_example.png:0.0 \
- fileselector_example:fileselector_example.png:0.0 \
- index_example_02:index_example_03.png:0.3 \
- slider_example:slider_example.png:0.0 \
- panes_example:panes_example.png:0.0 \
- ctxpopup_example_01:ctxpopup_example_01.png:0.0 \
- separator_example_01:separator_example_01.png:0.0 \
- radio_example_01:radio_example_01.png:0.0 \
- panel_example_01:panel_example_01.png:0.0 \
- gengrid_example:gengrid_example.png:0.0 \
- genlist_example_01:genlist_example_01.png:0.1 \
- genlist_example_02:genlist_example_02.png:0.1 \
- genlist_example_03:genlist_example_03.png:0.1 \
- genlist_example_04:genlist_example_04.png:0.1 \
- genlist_example_05:genlist_example_05.png:0.1 \
- thumb_example_01:thumb_example_01.png:0.5 \
- entry_example:entry_example.png:0.0 \
- progressbar_example:progressbar_example.png:0.0 \
- notify_example_01:notify_example_01.png:0.0 \
- notify_example_01:notify_example_01_a.png:6.0 \
- popup_example_01:popup_example_01.png:1.0 \
- popup_example_01:popup_example_01_a.png:6.0 \
- popup_example_02:popup_example_02.png:0.2 \
- popup_example_03:popup_example_03.png:0.2 \
- slideshow_example:slideshow_example.png:1.0 \
- photocam_example_01:photocam_example_01.png:3 \
- scroller_example_01:scroller_example_01.png:0.0 \
- inwin_example:inwin_example.png:0.0 \
- inwin_example:inwin_example_a.png:0.2 \
- table_example_01:table_example_01.png:0.0 \
- table_example_02:table_example_02.png:0.0 \
- menu_example_01:menu_example_01.png:0.5
+actionslider_example_01:actionslider_01.png:0.0 \
+bg_example_02:bg_01.png:0.0 \
+box_example_02:box_example_02.png:1.3 \
+bubble_example_01:bubble_example_01.png:0.0 \
+button_example_00:button_00.png:0.0 \
+button_example_01:button_01.png:0.0 \
+check_example_01:check_example_01.png:0.0 \
+colorselector_example_01:colorselector_example_01.png:0.0 \
+animator_example_01:animator_example_01.png:0.2 \
+animator_example_01:animator_example_02.png:0.5 \
+animator_example_01:animator_example_03.png:0.9 \
+flip_example_01:flip_example_01.png:0.0 \
+frame_example_01:frame_example_01.png:0.0 \
+hover_example_01:hover_example_01.png:0.0 \
+hoversel_example_01:hoversel_example_01.png:0.0 \
+label_example_01:label_example_01.png:0.0 \
+theme_example_01:theme_example_01.png:0.0 \
+conformant_example_01:conformant_example_01.png:0.0 \
+conformant_example_02:conformant_example_02.png:0.0 \
+calendar_example_01:calendar_example_01.png:0.0 \
+calendar_example_02:calendar_example_02.png:0.0 \
+calendar_example_03:calendar_example_03.png:0.0 \
+calendar_example_04:calendar_example_04.png:0.0 \
+calendar_example_05:calendar_example_05.png:0.0 \
+calendar_example_06:calendar_example_06.png:0.0 \
+datetime_example:datetime_example.png:0.0 \
+map_example_01:map_example_01.png:2 \
+map_example_02:map_example_02.png:2.5 \
+map_example_03:map_example_03.png:2 \
+toolbar_example_01:toolbar_example_01.png:0.0 \
+toolbar_example_02:toolbar_example_02.png:1 \
+toolbar_example_03:toolbar_example_03.png:1 \
+spinner_example:spinner_example.png:0.0 \
+clock_example:clock_example.png:0.5 \
+dayselector_example:dayselector_example.png:0.0 \
+mapbuf_example:mapbuf_example.png:0.0 \
+image_example_01:image_example_01.png:0.0 \
+diskselector_example_01:diskselector_example_01.png:0.2 \
+diskselector_example_02:diskselector_example_02.png:0.2 \
+icon_example_01:icon_example_01.png:0.0 \
+layout_example_01:layout_example_01.png:0.0 \
+layout_example_02:layout_example_02.png:0.0 \
+layout_example_03:layout_example_03.png:0.0 \
+list_example_01:list_example_01.png:0.0 \
+list_example_02:list_example_02.png:0.0 \
+list_example_03:list_example_03.png:0.0 \
+segment_control_example:segment_control_example.png:0.0 \
+flipselector_example:flipselector_example.png:0.0 \
+fileselector_example:fileselector_example.png:0.0 \
+index_example_02:index_example_03.png:0.3 \
+slider_example:slider_example.png:0.0 \
+panes_example:panes_example.png:0.0 \
+ctxpopup_example_01:ctxpopup_example_01.png:0.0 \
+separator_example_01:separator_example_01.png:0.0 \
+radio_example_01:radio_example_01.png:0.0 \
+panel_example_01:panel_example_01.png:0.0 \
+gengrid_example:gengrid_example.png:0.0 \
+genlist_example_01:genlist_example_01.png:0.1 \
+genlist_example_02:genlist_example_02.png:0.1 \
+genlist_example_03:genlist_example_03.png:0.1 \
+genlist_example_04:genlist_example_04.png:0.1 \
+genlist_example_05:genlist_example_05.png:0.1 \
+thumb_example_01:thumb_example_01.png:0.5 \
+entry_example:entry_example.png:0.0 \
+progressbar_example:progressbar_example.png:0.0 \
+notify_example_01:notify_example_01.png:0.0 \
+notify_example_01:notify_example_01_a.png:6.0 \
+popup_example_01:popup_example_01.png:1.0 \
+popup_example_01:popup_example_01_a.png:6.0 \
+popup_example_02:popup_example_02.png:0.2 \
+popup_example_03:popup_example_03.png:0.2 \
+slideshow_example:slideshow_example.png:1.0 \
+photocam_example_01:photocam_example_01.png:3 \
+scroller_example_01:scroller_example_01.png:0.0 \
+inwin_example:inwin_example.png:0.0 \
+inwin_example:inwin_example_a.png:0.2 \
+table_example_01:table_example_01.png:0.0 \
+table_example_02:table_example_02.png:0.0 \
+menu_example_01:menu_example_01.png:0.5
HTML_SS_DIR=$(top_builddir)/doc/html/screenshots
LATEX_SS_DIR=$(top_builddir)/doc/latex/screenshots
my_thread_run(void *arg)
{
double t = 0.0;
-
+
for (;;)
{
ecore_thread_main_loop_begin(); // begin critical
{ // indented for illustration of "critical" block
Evas_Coord x, y;
-
+
x = 200 + (200 * sin(t));
y = 200 + (200 * cos(t));
evas_object_move(rect, x - 50, y - 50);
my_thread_new(void)
{
pthread_attr_t attr;
-
+
if (pthread_attr_init(&attr) != 0)
perror("pthread_attr_init");
if (pthread_create(&thread_id, &attr, my_thread_run, NULL) != 0)
elm_main(int argc, char **argv)
{
Evas_Object *o, *bg;
-
+
win = elm_win_add(NULL, "efl-thread-1", ELM_WIN_BASIC);
elm_win_title_set(win, "EFL Thread 1");
elm_win_autodel_set(win, EINA_TRUE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
evas_object_resize(win, 400, 400);
evas_object_show(win);
-
+
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
-
+
o = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(o, 50, 80, 180, 255);
evas_object_resize(o, 100, 100);
evas_object_show(o);
rect = o;
-
+
// create custom thread to do some "work on the side"
my_thread_new();
-
+
elm_run();
return 0;
}
for (;;)
{
struct info *inf = malloc(sizeof(struct info));
-
+
if (inf)
{
inf->x = 200 + (200 * sin(t));
my_thread_new(void)
{
pthread_attr_t attr;
-
+
if (pthread_attr_init(&attr) != 0)
perror("pthread_attr_init");
if (pthread_create(&thread_id, &attr, my_thread_run, NULL) != 0)
elm_main(int argc, char **argv)
{
Evas_Object *o, *bg;
-
+
win = elm_win_add(NULL, "efl-thread-2", ELM_WIN_BASIC);
elm_win_title_set(win, "EFL Thread 2");
elm_win_autodel_set(win, EINA_TRUE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
evas_object_resize(win, 400, 400);
evas_object_show(win);
-
+
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
-
+
o = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(o, 50, 80, 180, 255);
evas_object_resize(o, 100, 100);
evas_object_show(o);
rect = o;
-
+
// create custom thread to do some "work on the side"
my_thread_new();
-
+
elm_run();
return 0;
}
-
+
ELM_MAIN()
for (;;)
{
struct info *inf = malloc(sizeof(struct info));
-
+
if (inf)
{
inf->x = 200 + (200 * sin(t));
my_thread_new(void)
{
pthread_attr_t attr;
-
+
if (pthread_attr_init(&attr) != 0)
perror("pthread_attr_init");
if (pthread_create(&thread_id, &attr, my_thread_run, NULL) != 0)
elm_main(int argc, char **argv)
{
Evas_Object *o, *bg;
-
+
win = elm_win_add(NULL, "efl-thread-3", ELM_WIN_BASIC);
elm_win_title_set(win, "EFL Thread 3");
elm_win_autodel_set(win, EINA_TRUE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
evas_object_resize(win, 400, 400);
evas_object_show(win);
-
+
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
-
+
o = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(o, 50, 80, 180, 255);
evas_object_resize(o, 100, 100);
evas_object_show(o);
rect = o;
-
+
// create custom thread to do some "work on the side"
my_thread_new();
-
+
elm_run();
return 0;
}
ELM_MAIN()
-
{
struct info *inf = malloc(sizeof(struct info));
int do_exit;
-
+
if (inf)
{
inf->x = 200 + (200 * sin(t));
elm_main(int argc, char **argv)
{
Evas_Object *o, *bg;
-
+
win = elm_win_add(NULL, "efl-thread-4", ELM_WIN_BASIC);
elm_win_title_set(win, "EFL Thread 4");
elm_win_autodel_set(win, EINA_TRUE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
evas_object_resize(win, 400, 400);
evas_object_show(win);
-
+
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
// the thread
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, down, NULL);
rect = o;
-
+
// create custom thread to do some "work on the side"
my_thread_new();
-
+
elm_run();
return 0;
}
ELM_MAIN()
-
double x, y;
};
-// BEGIN - code running in my custom pthread instance
+// BEGIN - code running in my custom thread instance
//
static void
th_do(void *data, Ecore_Thread *th)
{
double t = 0.0;
-
+
// inside our "do" function for the ecore thread, lets do the real work
for (;;)
{
struct info *inf = malloc(sizeof(struct info));
-
+
if (inf)
{
inf->x = 200 + (200 * sin(t));
}
}
//
-// END - code running in my custom pthread instance
+// END - code running in my custom thread instance
static void // when mainloop gets feedback from worker
th_feedback(void *data, Ecore_Thread *th, void *msg)
elm_main(int argc, char **argv)
{
Evas_Object *o, *bg;
-
+
win = elm_win_add(NULL, "efl-thread-5", ELM_WIN_BASIC);
elm_win_title_set(win, "EFL Thread 5");
elm_win_autodel_set(win, EINA_TRUE);
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
evas_object_resize(win, 400, 400);
evas_object_show(win);
-
+
bg = elm_bg_add(win);
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
elm_win_resize_object_add(win, bg);
evas_object_show(bg);
-
+
o = evas_object_rectangle_add(evas_object_evas_get(win));
evas_object_color_set(o, 50, 80, 180, 255);
evas_object_resize(o, 100, 100);
evas_object_show(o);
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, down, NULL);
rect = o;
-
+
// explicitly create ecore thread to do some "work on the side" and pass
// in NULL as data ptr to callbacks and true at the end means to actually
// make a new thread and not use the thread pool (there is a thread pool
// overload the cpu's with more work than you actually have processing
// units *IF* your threads do actually spend their time doing actual
// heavy computation)
- th = ecore_thread_feedback_run(th_do, th_feedback, th_end, th_cancel,
+ th = ecore_thread_feedback_run(th_do, th_feedback, th_end, th_cancel,
NULL, EINA_TRUE);
elm_run();
return 0;
int *pix;
};
-// BEGIN - code running in my custom pthread instance
+// BEGIN - code running in my custom thread instance
//
static void
mandel(int *pix, int w, int h)
}
val = (((x * x) + (y * y)) * 2.55) / 100.0;
if (val > 255) val = 255;
- if (iteration >= 99999)
+ if (iteration >= 99999)
{
rr = (r * val) / 255;
gg = (g * val) / 255;
bb = (b * val) / 255;
- pix[(hy * w) + hx] =
+ pix[(hy * w) + hx] =
(val << 24) | (rr << 16) | (gg << 8) | (bb);
}
else
mandel(inf->pix, 256, 256);
}
//
-// END - code running in my custom pthread instance
+// END - code running in my custom thread instance
static void // thread job finished - collect results and put in img obj
th_end(void *data, Ecore_Thread *th)
}
ELM_MAIN()
-
--- /dev/null
+//Compile with:
+//gcc -o efl_thread_1 efl_thread_win32_1.c -g `pkg-config --cflags --libs elementary`
+#include <Elementary.h>
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+static Evas_Object *win = NULL;
+static Evas_Object *rect = NULL;
+
+static HANDLE thread;
+
+// BEGIN - code running in my custom win32 thread instance
+//
+static DWORD WINAPI
+my_thread_run(LPVOID arg)
+{
+ double t = 0.0;
+
+ for (;;)
+ {
+ ecore_thread_main_loop_begin(); // begin critical
+ { // indented for illustration of "critical" block
+ Evas_Coord x, y;
+
+ x = 200 + (200 * sin(t));
+ y = 200 + (200 * cos(t));
+ evas_object_move(rect, x - 50, y - 50);
+ }
+ ecore_thread_main_loop_end(); // end critical
+ usleep(1000);
+ t += 0.02;
+ }
+ return 0;
+}
+//
+// END - code running in my custom win32 thread instance
+
+static void
+my_thread_new(void)
+{
+ thread = CreateThread(NULL, 0, my_thread_run, NULL, 0, NULL);
+ if (!thread)
+ {
+ char *str = evil_last_error_get();
+ if (str)
+ {
+ fprintf("thread creation failed: %s\n", str);
+ free(str);
+ }
+ }
+}
+
+int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *o, *bg;
+
+ win = elm_win_add(NULL, "efl-thread-1", ELM_WIN_BASIC);
+ elm_win_title_set(win, "EFL Thread 1");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+ evas_object_resize(win, 400, 400);
+ evas_object_show(win);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ o = evas_object_rectangle_add(evas_object_evas_get(win));
+ evas_object_color_set(o, 50, 80, 180, 255);
+ evas_object_resize(o, 100, 100);
+ evas_object_show(o);
+ rect = o;
+
+ // create custom thread to do some "work on the side"
+ my_thread_new();
+
+ elm_run();
+ return 0;
+}
+
+ELM_MAIN()
--- /dev/null
+//Compile with:
+//gcc -o efl_thread_2 efl_thread_win32_2.c -g `pkg-config --cflags --libs elementary`
+#include <Elementary.h>
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+static Evas_Object *win = NULL;
+static Evas_Object *rect = NULL;
+
+struct info
+{
+ double x, y;
+};
+
+static void *my_thread_mainloop_code(void *data);
+
+static HANDLE thread;
+
+// BEGIN - code running in my custom win32 thread instance
+//
+static DWORD WINAPI
+my_thread_run(LPVOID arg)
+{
+ double t = 0.0;
+
+ for (;;)
+ {
+ struct info *inf = malloc(sizeof(struct info));
+
+ if (inf)
+ {
+ inf->x = 200 + (200 * sin(t));
+ inf->y = 200 + (200 * cos(t));
+ ecore_main_loop_thread_safe_call_sync
+ (my_thread_mainloop_code, inf);
+ }
+ // and sleep and loop
+ usleep(1000);
+ t += 0.02;
+ }
+ return 0;
+}
+//
+// END - code running in my custom win32 thread instance
+static void
+my_thread_new(void)
+{
+ thread = CreateThread(NULL, 0, my_thread_run, NULL, 0, NULL);
+ if (!thread)
+ {
+ char *str = evil_last_error_get();
+ if (str)
+ {
+ fprintf("thread creation failed: %s\n", str);
+ free(str);
+ }
+ }
+}
+
+static void *
+my_thread_mainloop_code(void *data)
+{
+ struct info *inf = data;
+ evas_object_move(rect, inf->x - 50, inf->y - 50);
+ free(inf);
+ return NULL;
+}
+
+int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *o, *bg;
+
+ win = elm_win_add(NULL, "efl-thread-2", ELM_WIN_BASIC);
+ elm_win_title_set(win, "EFL Thread 2");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+ evas_object_resize(win, 400, 400);
+ evas_object_show(win);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ o = evas_object_rectangle_add(evas_object_evas_get(win));
+ evas_object_color_set(o, 50, 80, 180, 255);
+ evas_object_resize(o, 100, 100);
+ evas_object_show(o);
+ rect = o;
+
+ // create custom thread to do some "work on the side"
+ my_thread_new();
+
+ elm_run();
+ return 0;
+}
+
+ELM_MAIN()
--- /dev/null
+//Compile with:
+//gcc -o efl_thread_3 efl_thread_win32_3.c -g `pkg-config --cflags --libs elementary`
+#include <Elementary.h>
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+static Evas_Object *win = NULL;
+static Evas_Object *rect = NULL;
+
+struct info
+{
+ double x, y;
+};
+
+static void my_thread_mainloop_code(void *data);
+
+static HANDLE thread;
+
+// BEGIN - code running in my custom win32 thread instance
+//
+static DWORD WINAPI
+my_thread_run(LPVOID arg)
+{
+ double t = 0.0;
+
+ // inside the thread function lets loop forever incrimenting a time point
+ for (;;)
+ {
+ struct info *inf = malloc(sizeof(struct info));
+
+ if (inf)
+ {
+ inf->x = 200 + (200 * sin(t));
+ inf->y = 200 + (200 * cos(t));
+ // now call a function in the mainloop and pass it our allocated
+ // data that it will free when it gets it
+ ecore_main_loop_thread_safe_call_async
+ (my_thread_mainloop_code, inf);
+ }
+ // and sleep and loop
+ usleep(1000);
+ t += 0.02;
+ }
+ return NULL;
+}
+//
+// END - code running in my custom win32 thread instance
+static void
+my_thread_new(void)
+{
+ thread = CreateThread(NULL, 0, my_thread_run, NULL, 0, NULL);
+ if (!thread)
+ {
+ char *str = evil_last_error_get();
+ if (str)
+ {
+ fprintf("thread creation failed: %s\n", str);
+ free(str);
+ }
+ }
+}
+
+static void
+my_thread_mainloop_code(void *data)
+{
+ struct info *inf = data;
+ evas_object_move(rect, inf->x - 50, inf->y - 50);
+ free(inf);
+}
+
+int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *o, *bg;
+
+ win = elm_win_add(NULL, "efl-thread-3", ELM_WIN_BASIC);
+ elm_win_title_set(win, "EFL Thread 3");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+ evas_object_resize(win, 400, 400);
+ evas_object_show(win);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ o = evas_object_rectangle_add(evas_object_evas_get(win));
+ evas_object_color_set(o, 50, 80, 180, 255);
+ evas_object_resize(o, 100, 100);
+ evas_object_show(o);
+ rect = o;
+
+ // create custom thread to do some "work on the side"
+ my_thread_new();
+
+ elm_run();
+ return 0;
+}
+
+ELM_MAIN()
--- /dev/null
+//Compile with:
+//gcc -o efl_thread_4 efl_thread_win32_4.c -g `pkg-config --cflags --libs elementary`
+#include <Elementary.h>
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+static Evas_Object *win = NULL;
+static Evas_Object *rect = NULL;
+
+struct info
+{
+ double x, y;
+};
+
+static void my_thread_mainloop_code(void *data);
+
+static HANDLE thread;
+static CRITICAL_SECTION lock;
+static int th_exit = 0;
+
+// BEGIN - code running in my custom win32 thread instance
+//
+static DWORD WINAPI
+my_thread_run(LPVOID arg)
+{
+ double t = 0.0;
+
+ // inside the thread function lets loop forever incrimenting a time point
+ for (;;)
+ {
+ struct info *inf = malloc(sizeof(struct info));
+ int do_exit;
+
+ if (inf)
+ {
+ inf->x = 200 + (200 * sin(t));
+ inf->y = 200 + (200 * cos(t));
+ // now call a function in the mainloop and pass it our allocated
+ // data that it will free when it gets it
+ ecore_main_loop_thread_safe_call_async
+ (my_thread_mainloop_code, inf);
+ }
+ // and sleep and loop
+ usleep(1000);
+ t += 0.02;
+ // in case someone has asked us to cancel - then cancel this loop
+ // co-operatively (cancelling is co-operative)
+ EnterCriticalSection(&lock);
+ do_exit = th_exit;
+ LeaveCriticalSection(&lock);
+ if (do_exit) break;
+ }
+ DeleteCriticalSection(&lock);
+ return NULL;
+}
+//
+// END - code running in my custom win32 thread instance
+
+static void
+my_thread_new(void)
+{
+ InitializeCriticalSection(&lock);
+ thread = CreateThread(NULL, 0, my_thread_run, NULL, 0, NULL);
+ if (!thread)
+ {
+ char *str = evil_last_error_get();
+ if (str)
+ {
+ fprintf("thread creation failed: %s\n", str);
+ free(str);
+ }
+ }
+}
+
+static void
+my_thread_mainloop_code(void *data)
+{
+ struct info *inf = data;
+ evas_object_move(rect, inf->x - 50, inf->y - 50);
+ free(inf);
+}
+
+// just test cancelling the thread
+static void
+down(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ EnterCriticalSection(&lock);
+ th_exit = 1;
+ LeaveCriticalSection(&lock);
+}
+
+int
+elm_main(int argc, char **argv)
+{
+ Evas_Object *o, *bg;
+
+ win = elm_win_add(NULL, "efl-thread-4", ELM_WIN_BASIC);
+ elm_win_title_set(win, "EFL Thread 4");
+ elm_win_autodel_set(win, EINA_TRUE);
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+ evas_object_resize(win, 400, 400);
+ evas_object_show(win);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ o = evas_object_rectangle_add(evas_object_evas_get(win));
+ evas_object_color_set(o, 50, 80, 180, 255);
+ evas_object_resize(o, 100, 100);
+ evas_object_show(o);
+ // new in the examples - we have a mouse down on the blue box cancel
+ // the thread
+ evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, down, NULL);
+ rect = o;
+
+ // create custom thread to do some "work on the side"
+ my_thread_new();
+
+ elm_run();
+ return 0;
+}
+
+ELM_MAIN()