X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fforkbase.h;h=6b09a5c24361170012f001dee3c4899439b2749b;hp=5502413df63d28b36effaa46f9393ccb44aeb1a6;hb=02595181cff2bce97eb19634bc3855778cb8c3b6;hpb=efb3600851fd27b13d3053ffbdb6434535580bfd diff --git a/cinelerra-5.1/cinelerra/forkbase.h b/cinelerra-5.1/cinelerra/forkbase.h index 5502413d..6b09a5c2 100644 --- a/cinelerra-5.1/cinelerra/forkbase.h +++ b/cinelerra-5.1/cinelerra/forkbase.h @@ -30,7 +30,7 @@ #include -class ForkBase +class ForkBase : public Mutex { public: enum { EXIT_CODE=0x7fff }; @@ -39,14 +39,17 @@ public: ForkBase(); virtual ~ForkBase(); - int is_running(); - int read_timeout(int ms, int fd, void *data, int bytes); - int read_parent(int ms); + virtual int is_running() = 0; + void send_bfr(int fd, const void *bfr, int len); + int read_timeout(int64_t usec, int fd, void *data, int bytes); + + int read_parent(int64_t usec); int send_parent(int64_t value, const void *data, int bytes); - int read_child(int ms); + int read_child(int64_t usec); int send_child(int64_t value, const void *data, int bytes); - int done, pid; + int parent_done; + int ppid, pid; ForkChild *child; int child_fd; @@ -67,9 +70,9 @@ class ForkChild : public ForkBase public: ForkChild(); virtual ~ForkChild(); - virtual void run() = 0; - virtual int handle_child(); - int child_iteration(); + virtual int child_iteration(int64_t usec) = 0; + int is_running(); + virtual void run() {} }; class ForkParent : public Thread, public ForkBase @@ -79,14 +82,13 @@ public: virtual ~ForkParent(); virtual int handle_parent(); virtual ForkChild *new_fork() = 0; + int is_running(); void start_child(); void start(); void stop(); void run(); int parent_iteration(); - - Mutex *lock; }; #endif