projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Only build in gettext support when gettext is available.
[synfig.git]
/
synfig-core
/
trunk
/
src
/
modules
/
mod_dv
/
trgt_dv.cpp
diff --git
a/synfig-core/trunk/src/modules/mod_dv/trgt_dv.cpp
b/synfig-core/trunk/src/modules/mod_dv/trgt_dv.cpp
index
bc3c181
..
a820c33
100644
(file)
--- a/
synfig-core/trunk/src/modules/mod_dv/trgt_dv.cpp
+++ b/
synfig-core/trunk/src/modules/mod_dv/trgt_dv.cpp
@@
-36,6
+36,9
@@
#include <ETL/stringf>
#include "trgt_dv.h"
#include <stdio.h>
#include <ETL/stringf>
#include "trgt_dv.h"
#include <stdio.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
#include <algorithm>
#include <functional>
#include <ETL/clock>
#include <algorithm>
#include <functional>
#include <ETL/clock>
@@
-61,6
+64,7
@@
SYNFIG_TARGET_SET_CVS_ID(dv_trgt,"$Id$");
dv_trgt::dv_trgt(const char *Filename)
{
dv_trgt::dv_trgt(const char *Filename)
{
+ pid=-1;
file=NULL;
filename=Filename;
buffer=NULL;
file=NULL;
filename=Filename;
buffer=NULL;
@@
-72,8
+76,11
@@
dv_trgt::dv_trgt(const char *Filename)
dv_trgt::~dv_trgt()
{
dv_trgt::~dv_trgt()
{
- if(file)
- pclose(file);
+ if(file){
+ fclose(file);
+ int status;
+ waitpid(pid,&status,0);
+ }
file=NULL;
delete [] buffer;
delete [] color_buffer;
file=NULL;
delete [] buffer;
delete [] color_buffer;
@@
-120,8
+127,6
@@
dv_trgt::init()
{
imagecount=desc.get_frame_start();
{
imagecount=desc.get_frame_start();
- string command;
-
int p[2];
if (pipe(p)) {
int p[2];
if (pipe(p)) {
@@
-138,12
+143,15
@@
dv_trgt::init()
if (pid == 0){
// Child process
if (pid == 0){
// Child process
+ // Close pipeout, not needed
+ close(p[1]);
// Dup pipeout to stdin
if( dup2( p[0], STDIN_FILENO ) == -1 ){
synfig::error(_("Unable to open pipe to encodedv"));
return false;
}
// Dup pipeout to stdin
if( dup2( p[0], STDIN_FILENO ) == -1 ){
synfig::error(_("Unable to open pipe to encodedv"));
return false;
}
-
+ // Close the unneeded pipeout
+ close(p[0]);
// Open filename to stdout
FILE* outfile = fopen(filename.c_str(),"wb");
if( outfile == NULL ){
// Open filename to stdout
FILE* outfile = fopen(filename.c_str(),"wb");
if( outfile == NULL ){
@@
-161,9
+169,9
@@
dv_trgt::init()
}
if(wide_aspect)
}
if(wide_aspect)
- execlp("encodedv", "encodedv", "-w", "1", "-");
+ execlp("encodedv", "encodedv", "-w", "1", "-"
, (const char *)NULL
);
else
else
- execlp("encodedv", "encodedv", "-");
+ execlp("encodedv", "encodedv", "-"
, (const char *)NULL
);
// We should never reach here unless the exec failed
synfig::error(_("Unable to open pipe to encodedv"));
return false;
// We should never reach here unless the exec failed
synfig::error(_("Unable to open pipe to encodedv"));
return false;