On Sat, 2007-04-07 at 11:37 +1000, skaller wrote: > On Sat, 2007-04-07 at 11:19 +1000, skaller wrote: > > Tarball, docs updated for flx_1.1.3_rc2. > > > > Please download and try to build! > > > > Builds on AMD64, linux/Ubuntu 6.10/gcc-4.x. > > Demos are broken: > > flx_arun: ./lpsrc/flx_faio.pak:153: void > flx::faio::flx_driver_request_base::notify_finished(): Assertion `fn!=0' > failed. This is the timer routine .. hmm .. but faio tests passed: > faio doesn't have enough tests!
Hmm .. but this test works: //////////////////////////////////// #import <flx.flxh> include "pthread"; include "flx_faio"; val clock = Faio::mk_alarm_clock(); proc sleeper() { print "Sleeping\n"; Faio::sleep$ clock, 10.0; print "Awake\n"; }; Pthread::spawn_pthread the sleeper; sleeper(); //////////////////////////////////// so the problem must be in the SDL messaging .. @select(tangler("faio/faio_sdl_event.cpp")) In fact this is certain I think, because worker tasks now use a re-entrant interface: one has to create a worker queue in user space: this code: // get ONE SDL event class SDL_EXTERN faio_sdl_event : public flx_driver_request_base, public flx::pthread::worker_task { pthread::worker_fifo* job_queue; SDL_Event *e; SDL_mutex *m; public: faio_sdl_event() {} // felix linkage faio_sdl_event(pthread::worker_fifo* q, SDL_Event *_e, SDL_mutex *_m); // from flx_driver_request_base bool start_async_op(demux::demuxer& demux); // from fifo_worker_task void doit(); }; is just plain wrong! Why did it even compile????? The current interface is: class FAIO_EXTERN flx_driver_request_base { finote_t *fn; virtual bool start_async_op_impl(demux::demuxer& demux) = 0; public: flx_driver_request_base() : fn(0) {} virtual ~flx_driver_request_base() {} // so destructors work // returns finished flag (async may fail or immediately finish) void start_async_op(demux::demuxer& demuxer, finote_t *fn_a); void notify_finished(); }; Hmm .. no pure virtuals, that's the problem :) BTW: the 'no flag' return turned out to be a problem.. -- John Skaller <skaller at users dot sf dot net> Felix, successor to C++: http://felix.sf.net ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language