Perhaps these patches to Grip 3.2.0 and 3.3.0 could close this bug?

-Mikko
Common subdirectories: grip-3.2.0-debian-orig/src/.deps and grip-3.2.0/src/.deps
Binary files grip-3.2.0-debian-orig/src/grip and grip-3.2.0/src/grip differ
Common subdirectories: grip-3.2.0-debian-orig/src/.libs and grip-3.2.0/src/.libs
diff --exclude '*.o' -u grip-3.2.0-debian-orig/src/rip.c grip-3.2.0/src/rip.c
--- grip-3.2.0-debian-orig/src/rip.c    2005-01-16 15:49:10.000000000 +0200
+++ grip-3.2.0/src/rip.c        2005-02-20 18:13:44.290689912 +0200
@@ -815,6 +815,8 @@
   gboolean result=FALSE;
   char *conv_str;
   gsize rb,wb;
+  int status;
+  pid_t pid;
 
   uinfo=&(ginfo->gui_info);
 
@@ -883,14 +885,26 @@
     }
 
     /* Check if a rip finished */
+    pid = waitpid(ginfo->rippid, &status, WNOHANG);
+    
     if((ginfo->using_builtin_cdp&&!ginfo->in_rip_thread) ||
-       (!ginfo->using_builtin_cdp&&waitpid(ginfo->rippid,NULL,WNOHANG))) {
-      if(!ginfo->using_builtin_cdp) waitpid(ginfo->rippid,NULL,0);
-      else {
+       (!ginfo->using_builtin_cdp&&WIFEXITED(status))) {
+
+      if(ginfo->using_builtin_cdp) {
        CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
                   GTK_PIXMAP(uinfo->lcd_smile_indicator));
        CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
                   GTK_PIXMAP(uinfo->smile_indicator));
+      } else if (WIFEXITED(status)) { 
+        if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+            (pid == ginfo->rippid)) {
+                LogStatus(ginfo, _("Rip succeeded! %s PID = %d returned 
%d\n"), 
+                   ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+       } else {
+                LogStatus(ginfo, _("Rip failed! %s PID = %d returned %d\n"), 
+                   ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+                DisplayMsg(_("Error: rip failed."));
+       }
       }
 
       LogStatus(ginfo,_("Rip finished\n"));
@@ -990,10 +1004,20 @@
                                percent);
       }
       
-      if(waitpid(ginfo->mp3pid[mycpu],NULL,WNOHANG)) {
-        waitpid(ginfo->mp3pid[mycpu],NULL,0);
-        ginfo->encoding&=~(1<<mycpu);
+      pid = waitpid(ginfo->mp3pid[mycpu], &status, WNOHANG);
+      
+      if(WIFEXITED(status)) {
+        if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+            (pid == ginfo->mp3pid[mycpu])) {
+                LogStatus(ginfo, _("Encoding succeeded! %s process PID = %d 
returned %d\n"), 
+                   ginfo->mp3exename, ginfo->mp3pid[mycpu], 
WEXITSTATUS(status));
+       } else {
+                LogStatus(ginfo, _("Encoding failed! %s process PID = %d 
returned %d\n"), 
+                   ginfo->mp3exename, ginfo->mp3pid[mycpu], 
WEXITSTATUS(status));
+                DisplayMsg(_("Error: encoding failed."));
+       }
 
+        ginfo->encoding&=~(1<<mycpu);
        LogStatus(ginfo,_("Finished encoding on cpu %d\n"),mycpu);
        ginfo->all_enclast[mycpu]=0;
         gtk_progress_bar_update(GTK_PROGRESS_BAR(uinfo->mp3progbar[mycpu]),
Only in grip-3.3.0/src/: .deps
Only in grip-3.3.0/src/: grip
Only in grip-3.3.0/src/: .libs
Only in grip-3.3.0/src/: Makefile
diff --exclude '*.o' -u grip-3.3.0-original/src/rip.c grip-3.3.0/src/rip.c
--- grip-3.3.0-original/src/rip.c       2005-01-29 21:16:51.000000000 +0200
+++ grip-3.3.0/src/rip.c        2005-02-20 18:10:34.560533280 +0200
@@ -791,7 +791,9 @@
   gboolean result=FALSE;
   char *conv_str;
   gsize rb,wb;
-  
+  int status;
+  pid_t pid;
+
   uinfo=&(ginfo->gui_info);
 
   if(ginfo->ripping) {
@@ -865,14 +867,28 @@
     }
 
     /* Check if a rip finished */
+    pid = waitpid(ginfo->rippid, &status, WNOHANG);
+    
     if((ginfo->using_builtin_cdp&&!ginfo->in_rip_thread) ||
-       (!ginfo->using_builtin_cdp&&waitpid(ginfo->rippid,NULL,WNOHANG))) {
-      if(!ginfo->using_builtin_cdp) waitpid(ginfo->rippid,NULL,0);
-      else {
+       (!ginfo->using_builtin_cdp&&WIFEXITED(status))) {
+
+      if(ginfo->using_builtin_cdp) {
        CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
                   GTK_PIXMAP(uinfo->lcd_smile_indicator));
        CopyPixmap(GTK_PIXMAP(uinfo->empty_image),
                   GTK_PIXMAP(uinfo->smile_indicator));
+      } else if (WIFEXITED(status)) { 
+        if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+            (pid == ginfo->rippid)) {
+                LogStatus(ginfo, _("Rip succeeded! %s PID = %d returned 
%d\n"), 
+                   ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+       } else {
+                LogStatus(ginfo, _("Rip failed! %s PID = %d returned %d\n"), 
+                   ginfo->ripexename, ginfo->rippid, WEXITSTATUS(status));
+
+                 gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+                      _("Error: rip failed."));
+       }
       }
 
       LogStatus(ginfo,_("Rip finished\n"));
@@ -976,8 +992,20 @@
                                percent);
       }
       
-      if(waitpid(ginfo->mp3pid[mycpu],NULL,WNOHANG)) {
-        waitpid(ginfo->mp3pid[mycpu],NULL,0);
+      pid = waitpid(ginfo->mp3pid[mycpu], &status, WNOHANG);
+      
+      if(WIFEXITED(status)) {
+        if ((WEXITSTATUS(status) == EXIT_SUCCESS) &&
+            (pid == ginfo->mp3pid[mycpu])) {
+                LogStatus(ginfo, _("Encoding succeeded! %s process PID = %d 
returned %d\n"), 
+                   ginfo->mp3exename, ginfo->mp3pid[mycpu], 
WEXITSTATUS(status));
+       } else {
+                LogStatus(ginfo, _("Encoding failed! %s process PID = %d 
returned %d\n"), 
+                   ginfo->mp3exename, ginfo->mp3pid[mycpu], 
WEXITSTATUS(status));
+                 gnome_app_warning((GnomeApp *)ginfo->gui_info.app,
+                      _("Error: encode failed."));
+       }
+
         ginfo->encoding&=~(1<<mycpu);
 
        LogStatus(ginfo,_("Finished encoding on cpu %d\n"),mycpu);

Reply via email to