ecore - a different take on efl.app class as a super class to efl.loop
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Tue, 27 Feb 2018 12:19:17 +0000 (21:19 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 11:10:46 +0000 (20:10 +0900)
commitca22eb20e3d51bb92eb2892aabccc2ac860b60c2
tree4a562458c178d0c06c9213ba5d6b48eeb580d837
parent1b8a6bd272149e0449228588be8378354c10d9d5
ecore - a different take on efl.app class as a super class to efl.loop

so the MAIN loop is actually an efl.app object. which inherits from
efl.loop. the idea is that other loops in threads will not be efl.app
objects. thread on the creator side return an efl.thread object.
inside the thread, like the mainloop, there is now an efl.appthread
object that is for all non-main-loop threads.

every thread (main loop or child) when it spawns a thread is the
parent. there are i/o pipes from parnet to child and back. so parents
are generally expected to, if they want to talk to child thread, so
use the efl.io interfaces on efl.thread, and the main loop's elf.app
class allows you to talk to stdio back to the parent process like the
efl.appthread does the same using the efl.io interfaces to talk to its
parent app or appthread. it's symmetrical

no tests here - sure. i have been holding off on tests until things
settle. that's why i haven't done them yet. those will come back in a
subsequent commit

for really quick examples on using this see:

https://phab.enlightenment.org/F2983118
https://phab.enlightenment.org/F2983142

they are just my test code for this.

Please see this design document:

https://phab.enlightenment.org/w/efl-loops-threads/
35 files changed:
src/Makefile_Ecore.am
src/lib/ecore/Ecore_Eo.h
src/lib/ecore/ecore.c
src/lib/ecore/ecore_exe.c
src/lib/ecore/ecore_main.c
src/lib/ecore/ecore_private.h
src/lib/ecore/ecore_signal.c
src/lib/ecore/ecore_timer.c
src/lib/ecore/efl_app.c [new file with mode: 0644]
src/lib/ecore/efl_app.eo [new file with mode: 0644]
src/lib/ecore/efl_appthread.c [new file with mode: 0644]
src/lib/ecore/efl_appthread.eo [new file with mode: 0644]
src/lib/ecore/efl_exe.c
src/lib/ecore/efl_general.h
src/lib/ecore/efl_loop.c
src/lib/ecore/efl_loop.eo
src/lib/ecore/efl_loop_fd.c
src/lib/ecore/efl_loop_handler.c
src/lib/ecore/efl_task.c
src/lib/ecore/efl_thread.c [new file with mode: 0644]
src/lib/ecore/efl_thread.eo
src/lib/ecore_evas/ecore_evas.c
src/lib/eina/eina_internal.h
src/lib/eina/eina_promise.c
src/lib/elementary/efl_ui_text.c
src/lib/elementary/efl_ui_win.c
src/lib/elementary/elm_entry.c
src/lib/elementary/elm_main.c
src/lib/eo/Eo.h
src/lib/eo/eo_base_class.c
src/lib/evas/canvas/evas_callbacks.c
src/tests/ecore/ecore_test_ecore.c
src/tests/elementary/efl_ui_suite.c
src/tests/eo/signals/signals_simple.c
src/tests/eo/suite/eo_test_general.c