Commit Graph

40 Commits

Author SHA1 Message Date
Mike Blumenkrantz c12008b4d0 efl/io: return EINVAL if null slice is passed for writing
Summary: CIDs 1396996, 1396983, 1396953

Reviewers: cedric

Reviewed By: cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D10451
2019-10-18 13:30:03 -04:00
Carsten Haitzler d1890f5eca efl task - change exit method to use normal event for multiple listeners
we couldn't have multilpe listeners before. now we can. better this
way. have to do this now because i can't mark efl task as @beta
without taking out massive wads of efl with it.
2019-09-10 23:09:30 +01:00
Carsten Haitzler d4c123d360 efl loops/threads - by defaylt tasks (exe and threads) exit with parent
this also defers parent exit until all children exit and will wait
around looping until those children do report back with exited status
etc. - this meay mean some hangs for badly written/blocking apps that
have efl thrrads that refuse to exit. a slight policy change also
means that by default thread objects also get auto-deleted whent hey
report back exit codes etc. which leads to less code if you don't care
about this.
2019-08-26 14:19:30 +01:00
Carsten Haitzler f3c01a9a6c efl thread - use pipe array names consistently to avoid err handling bug
in the case pipes fail to create we'll close the wrong ones... this
fixes that. it also happens because i didn't use names consistently.
now it does so it's easier to keep right.

thanks coverity.

fix CID 1396994
2019-08-11 12:47:38 +01:00
Carsten Haitzler 60f549c5fb efl thread - fic pipe close to not close invalid pipe fds
if we only have stdout and no stdin we'd accidentally close junk int's
on the stack. fix this fix CID 1396963
2019-08-11 12:47:38 +01:00
Boris Faure cdb920ab08 get rid of shadow variables
Summary: gl: add some EINA_FALLTHROUGH

Reviewers: #reviewers, zmike

Reviewed By: zmike

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D9525
2019-08-08 17:18:46 -04:00
Xavi Artigas 25324500e4 Fix typo in Efl prefix
This annoyed me far far far more than it should.
2019-07-30 15:36:32 +02:00
Carsten Haitzler 3195cf6d5f ecore - efl thread - remove mroe error case cnp code and share it
more cnp code de-duplication
2019-07-20 11:55:59 +01:00
Carsten Haitzler 54b321d459 ecore - efl thread - move duplicate code into shared func to reduce cnp
more copy & paste code - put into shared func.
2019-07-20 11:55:59 +01:00
Carsten Haitzler 40800366b2 ecore - efl thread - remove more copy & paste in fd in clearing handling
move to common shared function to reduce c&p
2019-07-20 11:55:59 +01:00
Carsten Haitzler 687b06fb3f ecore - efl thread - reduce copy & paste and merge into single func
the call and call sync stuff was almost entirely copy & paste - this
moves all the common code into shared funcs that reduce code bloat. it
also moved from heap to stack for sync reply struct location.
2019-07-20 11:55:59 +01:00
Carsten Haitzler df286b238c ecore - efl thread - handle write call mishaps and complain
fixes warnings too.
2019-06-20 11:26:55 +01:00
Vincent Torri 839f22870b bin/efl and ecore: include evil_private.h when appropriate
Test Plan: compilation

Reviewers: raster, zmike, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8908
2019-05-17 11:53:35 +01:00
Mike Blumenkrantz 049c65e7ac efl_io_*: apply new event calling convention
Summary:
ref T7758
Depends on D8409

Reviewers: cedric, zmike, segfaultxavi

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7758

Differential Revision: https://phab.enlightenment.org/D8410
2019-03-19 16:32:02 -04:00
Mike Blumenkrantz 421bf2d0a3 api: add bool data to efl.io.reader/writer 'changed' events
Summary:
changed events should always be triggered with the accompanying changed
data to reduce function calls

ref T7600, T7599

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7600, T7599

Differential Revision: https://phab.enlightenment.org/D7984
2019-02-22 08:50:02 -05:00
Carsten Haitzler 0bf8b1ab1a fix efl exe/thread/appthread to work again after seemingly bitrotting 2019-02-15 10:21:19 +00:00
Carsten Haitzler eb2ead11b5 fix args handling in cmdline class to not be broken
first use consistent ownership (stringshare the strings) and then also
properly dup and pass them and not free null arrays and so on where
they are used
2019-02-15 10:21:14 +00:00
Carsten Haitzler 8e98c7eef9 cmdline iface - fix to consume input array AND strings totally
strings often enough are generated e.g. via "%s/%s" or "%i" or similar
etc. ... i have poitned to examples, so move to make all strings
consistently stringshared, fix a bug added to the efl thread code
where it accessed and freed array even tho array was consumed (but not
strings) in the set, and the code used free to consume not
stringshare_del. fix other code and tests to match

EXCTLY the kind of bugs and mistakes with this kind of design that i
said would happen more often just happened...
2019-02-15 10:21:04 +00:00
Marcel Hollerbach 3b262340ba Revert "Revert command line array object because it's broken by design"
This reverts commit a57c7f7510.

I pretty much hate to just revert your revert, but you failed to read my
replies, and failed to understand what i was talking about.

And YES we talked at fosdem about the platform issue, and do you
remember my answer, that back in time this might be the case, today is
different freebsd suppoerts setenv, and for windows we have a setenv
implementation in evil. And yes, vtorri also created a issue how bad and
evil this commit is, however, i still fail to see the issue since setenv
unsetenv and clearenv usages are taken as needed. (T7693)

The ownership question is answered in
https://phab.enlightenment.org/D7516#137367.

Can we please get into a state of technical discussions, and not *oh
shit, i am going to revert this* this has been in review for a long
time, a lots of people have tested it, we discussed things on it, and
there was 3 weeks of no reply from you.

The issues that exist will be dealed with. Feel free to create tasks if
you want :)
2019-02-12 21:42:33 +01:00
Carsten Haitzler a57c7f7510 Revert command line array object because it's broken by design
Revert "ecore: get rid of commands in efl_task."
  This reverts commit 616381e9cf.
Revert "ecore: here comes a command line object"
  This reverts commit 48e5684b3c.

1. this is broken:

EOLIAN static const char*
_efl_core_command_line_command_get(const Eo *obj EINA_UNUSED, Efl_Core_Command_Line_Data *pd)
{
   return eina_strdup(pd->string_command);
}

it returns a const char * BUT it duplicates it on return. no. a big
fat honking NO. return a char * or don't duplicate. pick.

2. _efl_core_command_line_command_array_set() is broken by design. it
accepts an array of strings, but the strings are owned by the caller
who creates the array (requiring they free them up themselves after
this call) but the array becomes owned by the callee. the code here frees the
incoming array but doesn't care about the string content of it. it's
leak heaven waiting to happen (or bugs when someone wants to access
the array they create to walk it to free the strings they put into it
after it is set).

i brought this up and it was dismissed. now exactly he issue i brought
up is there with mixed ownership and the added complexity as well as
transfer of some ownership but not others.

go back and think about this so it isn't broken by design.
2019-02-12 19:54:35 +00:00
Marcel Hollerbach 616381e9cf ecore: get rid of commands in efl_task.
Note that the usage in efl_thread.c should and could be removed.
the problem with its usage is that when the ARGUMENTS event is fired,
noone ever had the chance to subscribe to the loop of the thread yet. So
all in all this is unneccessary, since noone could ever touch that.

Differential Revision: https://phab.enlightenment.org/D7517
2019-02-12 11:19:28 +01:00
Hosang Kim 58c9f56885 ecore: check fcntl return.
Summary: Found by svace

Reviewers: Jaehyun_Cho, woohyun, Hermet

Reviewed By: Jaehyun_Cho

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7808
2019-01-29 19:30:45 +09:00
Cedric BAIL 563f91eaf9 ecore: remove data parameters of Efl.Loop_Consumer.promise_new to reduce the risk of inadvertently using the wrong data.
If you need data, use a efl_future_then as done in every case here to get the same feature.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D7577
2019-01-16 14:33:26 -08:00
Hermet Park 77bb3fb986 ecore thread: remove an unused variable. 2019-01-08 19:57:59 +09:00
Carsten Haitzler 318d16846f Revert "Revert "ecore: make efl_loop_promise_new a function of Efl.Loop_Consumer.""
This reverts commit 42e886d8d6.
2018-12-26 17:50:09 +00:00
Marcel Hollerbach 42e886d8d6 Revert "ecore: make efl_loop_promise_new a function of Efl.Loop_Consumer."
This reverts commit 9b5155c9f1.

For now lets revert this, this breaks copy and paste, further more it
has the potential to break a lot more things, as eio_model tends to use
efl_loop_promise new, and then eina_promise_data_set, which is
explicitly forbidden.

This fixes crashing terminology instances.
2018-12-26 12:31:08 +01:00
Cedric BAIL 9b5155c9f1 ecore: make efl_loop_promise_new a function of Efl.Loop_Consumer.
I am not sure this is the right way to do it as binding would have to likely
to bind it manually.

Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Differential Revision: https://phab.enlightenment.org/D7492
2018-12-20 12:42:34 -08:00
Cedric BAIL 6b22e6e33d ecore: use efl_future_then to simplify the code logic and reduce potential bugs.
Summary: Depends on D7380

Reviewers: segfaultxavi, felipealmeida, SanghyeonLee, vitor.sousa, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: barbieri, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7472

Differential Revision: https://phab.enlightenment.org/D7381
2018-12-07 12:42:31 +01:00
Cedric BAIL 5de51f84fb eo: rename efl_future_Eina_FutureXXX_then in efl_future_then as this has been available for some time.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7327
2018-11-23 11:39:43 -08:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.

Ref T6859.
2018-04-17 20:31:55 +02:00
Carsten Haitzler b90cd2f683 efl threadio - make call and call sync func proto same as efl events
well call sync returns a void * too.... instead of just void return
(nothing) but this makes it easier to write and maintain code due to
consistency of function callback signatures.
2018-04-05 18:52:57 +09:00
Carsten Haitzler 6fbf6d6c67 efl task - support flag to ignore exit code errors for future resolve 2018-04-05 18:52:57 +09:00
Carsten Haitzler 0a3e7c05e4 ecore - efl exe + thread - error print if deleted before task is done
both exe and thread objects must (currently) stay around until the
child thread or exe (task) is done. if you don't do this "bad things
can happen". so produce an error to let the programmer know.
2018-03-26 23:17:56 +09:00
Cedric BAIL 4c4177ac20 efl: use efl_add_ref to create objects which have no parent
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:56 -07:00
Carsten Haitzler 6391a13558 efl.task - move to returning future insead of bool + exit event
title says it all...
2018-03-20 20:56:46 +09:00
Carsten Haitzler 249f50098f ecore - efl thread - remove unused local vars 2018-03-10 20:03:32 +09:00
Carsten Haitzler 965f257e70 ecore - efl exe/thread - only allow run once ever 2018-03-10 20:02:09 +09:00
Carsten Haitzler 6865ad1773 ecore - efl threads - add thredio class
this adds a simple indata and outdata void ptr to begin that you can
set on efl.thread objects (set the indata) and get the outdata too to
get results. then on the efl.appthread side the indata is set on the
efl.appthread before it runs and on quit the thresad can set the
outdata on the appthread, and this appears back on the efl.thread
object in the parent thread.

so you can basically share pointers to anything in and out this way on
start/exit in addition to string args etc.

the reason i made it an extra class (mixin actually) is for future
expansion. sharing more complex data - eina values maybe or objects as
long as they are shared objects, and perhaps acting as an interface
for calling a function at the other end like ecore_thread_async_call
etc.
2018-03-07 02:32:15 +09:00
Carsten Haitzler 1ac60fe022 ecore efl exe/task/thread - move stdin/out flags to task class
also use them in efl thread to determine if io handlers are set up and
pipes created at all etc.
2018-03-07 02:32:15 +09:00
Carsten Haitzler 1bdd9e4dd1 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/
2018-03-03 13:40:33 +09:00