attempt to fix eternal twirling

This commit is contained in:
David Rose 2011-09-14 12:42:06 +00:00
parent 0f7b6d6c40
commit d592205b57

View File

@ -368,7 +368,7 @@ set_window(NPWindow *window) {
} }
#endif // HAVE_GTK #endif // HAVE_GTK
if (!_failed && _p3d_inst == NULL) { if (!_failed && !_started) {
x11_start_twirl_subprocess(); x11_start_twirl_subprocess();
} }
#endif // HAVE_X11 #endif // HAVE_X11
@ -2837,7 +2837,10 @@ twirl_timer_callback() {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
void PPInstance:: void PPInstance::
x11_start_twirl_subprocess() { x11_start_twirl_subprocess() {
assert(_twirl_subprocess_pid == -1); if (_twirl_subprocess_pid == -1) {
// Already started.
return;
}
// Fork and exec. // Fork and exec.
pid_t child = fork(); pid_t child = fork();
@ -2849,11 +2852,13 @@ x11_start_twirl_subprocess() {
if (child == 0) { if (child == 0) {
// Here we are in the child process. // Here we are in the child process.
x11_twirl_subprocess_run(); x11_twirl_subprocess_run();
_exit(0); _exit(99);
} }
// In the parent process. // In the parent process.
_twirl_subprocess_pid = child; _twirl_subprocess_pid = child;
cerr << "Started twirl subprocess, pid " << _twirl_subprocess_pid
<< "\n";
} }
#endif // HAVE_X11 #endif // HAVE_X11