you will have anyway #ifdef because of the [win32 | fd]_handler_add() in ethumb_slave, so...
On Sat, Dec 24, 2016 at 1:45 AM, Carsten Haitzler <ras...@rasterman.com> wrote: > On Fri, 23 Dec 2016 12:50:34 +0100 Vincent Torri <vincent.to...@gmail.com> > said: > >> On Fri, Dec 23, 2016 at 11:23 AM, Andrii Kroitor <an.kroi...@samsung.com> >> wrote: >> > >> > On 23.12.16 06:35, Vincent Torri wrote: >> >> hey >> >> >> >> i don't like the idea of getc/ungetc in the thread, imho it's a bad hack >> >> you do that for ethumb_slave, i guess, but i think that the wait for >> >> input should be in ethumb slave, with a thread and ReadConsole(). and >> >> not the hack you did >> >> >> >> Vincent >> >> >> >> ------------------------------------------------------------------------------ >> >> Developer Access Program for Intel Xeon Phi Processors >> >> Access to Intel Xeon Phi processor-based developer platforms. >> >> With one year of Intel Parallel Studio XE. >> >> Training and support from Colfax. >> >> Order your platform today.http://sdm.link/intel >> >> _______________________________________________ >> >> enlightenment-devel mailing list >> >> enlightenment-devel@lists.sourceforge.net >> >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> >> >> > I'm also not 100% happy with getc/ungetc thread, but this was the only >> > solution, that works in all cases. >> > I have tried various approaches, but all other are failing to wait for >> > input correctly at least in one of the following cases: >> > 1. direct run and input from console >> > 2. debug run and input from console (yep, this is somehow different from >> > case 1 :( ) >> > 3. redirected stdin input ( "app.exe <in.txt" ) >> > 4. direct run within pipeline ( "some_other_app.exe | app.exe" ) >> > 5. run as subprocess with stdin replaced with pipe from parent (i.e. >> > parent uses ecore_exe) >> > >> > If I remember it right ReadConsole will fail in cases 3-5. >> > >> > So if you find some better solution that will work in all this cases it >> > will be great. > > the POINT of moving it to a thread and just using getc/gets was to be portable > and not have #ifdef'd per os solutions. > >> 1) try with filtering the console mode and flushing the buffer in >> ethumb_slave: >> >> DWORD old_mode; >> HANDLE stdin_handle; >> stdin_handle = GetStdHandle(STD_INPUT_HANDLE); >> GetConsoleMode(, &old_mode); >> mode = oldmode ^ ENABLE_MOUSE_INPUT ^ ENABLE_WINDOW_INPUT; >> SetConsoleMode(stdin_handle, mode); >> FlushConsoleInputBuffer(stdin_handle); >> >> then you should be able to wait on stdin_handle after that. >> >> anyway, ReadConsoleInput() should be used intead of read() >> >> you should restore the old mode to restore it at the end : >> >> SetConsoleMode(stdin_handle, old_mode); >> >> 2) try to redirect console input handle (not tested): >> >> HANDLE stdin_handle; >> int fd; >> FILE *fp; >> >> stdin_handle = GetStdHandle(STD_INPUT_HANDLE); >> fd = _open_osfhandle((intptr_t)stdin_handle, _O_TEXT); >> fp = _fdopen(fd, "r"); >> *stdin = *fp; >> setvbuf(stdin, NULL, _IONBF, 0); >> >> 3) there is another possibility : using WSAWaitForMultipleEvents(), >> but that would mean another way to add a handler in ecore_main.c. >> >> note that it would save my day for another thing i'am working on. >> >> >> > I disagree with you about this code placement. My point is that as many >> > as possible platform-dependent things should be in libraries rather than >> > in client-side code. >> >> it's not possible to have everything platform dependant. I know some >> stuff that will never be platform dependant, by the very nature of >> Windows. >> >> but I think that the ecore_exe way should be the way to go, even if it >> needs modifications >> >> Vincent >> >> > -- >> > *Best Regards, >> > Andrii Kroitor >> > * Engineer, Tizen Platform Lab >> > >> > Samsung R&D Institute Ukraine >> > 57, Lva Tolstogo St., Kyiv 01032, Ukraine >> > email: an.kroi...@samsung.com <mailto:an.kroi...@samsung.com> >> > >> > >> > ------------------------------------------------------------------------------ >> > Developer Access Program for Intel Xeon Phi Processors >> > Access to Intel Xeon Phi processor-based developer platforms. >> > With one year of Intel Parallel Studio XE. >> > Training and support from Colfax. >> > Order your platform today.http://sdm.link/intel >> > _______________________________________________ >> > enlightenment-devel mailing list >> > enlightenment-devel@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> >> ------------------------------------------------------------------------------ >> Developer Access Program for Intel Xeon Phi Processors >> Access to Intel Xeon Phi processor-based developer platforms. >> With one year of Intel Parallel Studio XE. >> Training and support from Colfax. >> Order your platform today.http://sdm.link/intel >> _______________________________________________ >> enlightenment-devel mailing list >> enlightenment-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel >> > > > -- > ------------- Codito, ergo sum - "I code, therefore I am" -------------- > The Rasterman (Carsten Haitzler) ras...@rasterman.com > ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today.http://sdm.link/intel _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel