lv2 phase 2 fixups
[goodguy/history.git] / cinelerra-5.1 / cinelerra / forkbase.h
index 5502413df63d28b36effaa46f9393ccb44aeb1a6..6b09a5c24361170012f001dee3c4899439b2749b 100644 (file)
@@ -30,7 +30,7 @@
 
 #include <stdint.h>
 
-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