bluray lpcm fixes from Andrew
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / threadexec.h
1
2 /*
3  * CINELERRA
4  * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifndef THREADEXEC_H
23 #define THREADEXEC_H
24
25
26 // Construct command arguments, exec a background function with
27 // command line arguments, and wait for it.
28
29
30
31 // The reason we do this is that execvp and threading don't work together.
32
33 #include <stdio.h>
34 #include <stdint.h>
35
36 #include "bcwindowbase.inc"
37 #include "mutex.inc"
38 #include "thread.h"
39
40
41 class ThreadExec : public Thread
42 {
43 public:
44         ThreadExec();
45         virtual ~ThreadExec();
46
47         FILE* get_stdin();
48         void run();
49         void start_command(const char *command_line, int pipe_stdin);
50         virtual void run_program(int argc, char *argv[], int stdin_fd);
51
52
53 private:
54         int filedes[2];
55         char **arguments;
56         char path[BCTEXTLEN];
57         int total_arguments;
58         FILE *stdin_fd;
59         Mutex *start_lock;
60         const char *command_line;
61         int pipe_stdin;
62 };
63
64
65
66
67 #endif