diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2006-02-10 17:16:24 +0100 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2006-02-10 17:16:24 +0100 |
commit | 34eacf87403f8a3382beab0271a28764b030c333 (patch) | |
tree | fd11ce442eb246ad01b0c59b3698f909c68f8510 /src/GsWidget.cxx | |
parent | 676eec5dc5331a0d006bb32d8b8c946bda8069c1 (diff) |
make PostscriptDSC stuff more robust
Diffstat (limited to 'src/GsWidget.cxx')
-rw-r--r-- | src/GsWidget.cxx | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/GsWidget.cxx b/src/GsWidget.cxx index 3d3a081..27a8cb7 100644 --- a/src/GsWidget.cxx +++ b/src/GsWidget.cxx @@ -115,6 +115,7 @@ GsWidget::GsWidget(int X,int Y,int W, int H) : Fl_Widget(X, Y, W, H) { in_fd = -1; reload_needed = 0; dsc = NULL; + feeding = 0; } GsWidget::~GsWidget() { @@ -204,7 +205,7 @@ GsWidget::load_page(int p) { pid_t pid; int pdes[2]; - if (in_fd < 0) { + if (feeding || in_fd < 0) { return 1; } @@ -225,6 +226,8 @@ GsWidget::load_page(int p) { perror("pipe"); return 1; } + + feeding = 1; lseek(in_fd, 0L, SEEK_SET); setProps(); @@ -247,6 +250,7 @@ GsWidget::load_page(int p) { len = dsc->get_setup_len(); if (fd_copy(pdes[1], in_fd, len) != 0) { close(pdes[1]); + feeding = 0; return 1; } @@ -254,12 +258,14 @@ GsWidget::load_page(int p) { len = dsc->get_page_len(p); if (fd_copy(pdes[1], in_fd, len) != 0) { close(pdes[1]); + feeding = 0; return 1; } close(pdes[1]); } + feeding = 0; return 0; } |