On Sat, 24 Dec 2016 04:40:20 +0100 Vincent Torri <vincent.to...@gmail.com> said:
> you will have anyway #ifdef because of the [win32 | fd]_handler_add() > in ethumb_slave, so... that also shouldn't be there. no fd handlers for stdin etc. no it the portable way with thread+feedback. yes - an abstraction would be good but with windows it seems a royal pain as every "fd" is different and is special. so one abstraction per kind of fd... > 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 > > > -- ------------- 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