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

Reply via email to