/[graveman]/graveman/current/src/cdrecord.c
ViewVC logotype

Diff of /graveman/current/src/cdrecord.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.18 by scresto, Thu Feb 17 01:22:53 2005 UTC revision 1.19 by scresto, Sat Feb 19 17:49:08 2005 UTC
# Line 137  gboolean extractlecteur(gchar *Achaine, Line 137  gboolean extractlecteur(gchar *Achaine,
137  gboolean scan_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata)  gboolean scan_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata)
138  {  {
139    GIOStatus Lstatus;    GIOStatus Lstatus;
140    GHashTable *Lhash = (GHashTable *)Adata;    Tgrave *Lg = (Tgrave *)Adata;
141    gint *Lcont = (gint *)g_hash_table_lookup(Lhash, "cont");    gint *Lcont = (gint *)sc_grave_get_data(Lg, "cont");
142    Tsearchdrive *Ldrivedesc = (Tsearchdrive *)g_hash_table_lookup(Lhash, "drivedesc");    Tsearchdrive *Ldrivedesc = (Tsearchdrive *)sc_grave_get_data(Lg, "drivedesc");
143    gchar *Lbuffer = NULL;    gchar *Lbuffer = NULL;
144    gchar *Lmodel, *Lmarque, *Ldev, *Lquoi;    gchar *Lmodel, *Lmarque, *Ldev, *Lquoi;
145        
# Line 172  _DEB("scan lecteur = %s\n", Lbuffer); Line 172  _DEB("scan lecteur = %s\n", Lbuffer);
172  }  }
173    
174  /* scan des lecteurs */  /* scan des lecteurs */
175  gboolean scan_for_drives(GHashTable *Ahash, GError **Aerror)  gboolean scan_for_drives(Tgrave *Ag, GError **Aerror)
176  {  {
177    gchar **Lcmd;    gchar **Lcmd;
178    gchar *Lcommandline;    gchar *Lcommandline;
# Line 182  gboolean scan_for_drives(GHashTable *Aha Line 182  gboolean scan_for_drives(GHashTable *Aha
182    gboolean Lstatus;    gboolean Lstatus;
183    guint Lcomevent;    guint Lcomevent;
184    Tsearchdrive *Lcurentry;    Tsearchdrive *Lcurentry;
185    gint *Lcont = (gint *)g_hash_table_lookup(Ahash, "cont");    gint *Lcont = (gint *)sc_grave_get_data(Ag, "cont");
186    gboolean *Labort = (gboolean *)g_hash_table_lookup(Ahash, "gabort");    gboolean *Labort = (gboolean *)sc_grave_get_data(Ag, "gabort");
187        
188    free_drives(FALSE);    free_drives(FALSE);
189    
# Line 195  gboolean scan_for_drives(GHashTable *Aha Line 195  gboolean scan_for_drives(GHashTable *Aha
195      if (Lstatus == FALSE) return FALSE;      if (Lstatus == FALSE) return FALSE;
196    
197      *Lcont = 3;      *Lcont = 3;
198      g_hash_table_insert(Ahash, "drivedesc", Lcurentry);      sc_grave_set_data(Ag, Lcurentry, "drivedesc");
199    
200      Lbolstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, /* env argument */      Lbolstatus = g_spawn_async_with_pipes(NULL, Lcmd, NULL, /* env argument */
201        (GSpawnFlags ) (0),        (GSpawnFlags ) (0),
# Line 212  gboolean scan_for_drives(GHashTable *Aha Line 212  gboolean scan_for_drives(GHashTable *Aha
212      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
213      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
214                                               scan_callback,                                               scan_callback,
215                                               Ahash);                                               Ag);
216      while (*Lcont==3) {      while (*Lcont==3) {
217        gtk_main_iteration();            gtk_main_iteration();    
218      }      }
# Line 222  gboolean scan_for_drives(GHashTable *Aha Line 222  gboolean scan_for_drives(GHashTable *Aha
222      g_io_channel_shutdown(Lcom, FALSE, NULL);      g_io_channel_shutdown(Lcom, FALSE, NULL);
223      g_io_channel_unref(Lcom);      g_io_channel_unref(Lcom);
224      g_spawn_close_pid(Lpid);      g_spawn_close_pid(Lpid);
225      g_hash_table_remove(Ahash, "drivedesc");      sc_grave_del_data(Ag, "drivedesc");
226    }    }
227    
228    return TRUE;    return TRUE;
# Line 287  _DEB("==================%s\n", Lcommandl Line 287  _DEB("==================%s\n", Lcommandl
287  }  }
288    
289  /* recherche les parametres supllementaires a passer a cdrecord */  /* recherche les parametres supllementaires a passer a cdrecord */
290  gchar *burn_data_getextrapara(GHashTable *Ahash)  gchar *burn_data_getextrapara(Tgrave *Ag)
291  {  {
292    gchar *Lformat = get_combo_value(g_hash_table_lookup(Ahash, "dataformat"));    gchar *Lformat = get_combo_value(sc_grave_get_widget(Ag, "dataformat"));
293    gchar *Lmodburn = get_combo_value(g_hash_table_lookup(Ahash, "datamodburn"));    gchar *Lmodburn = get_combo_value(sc_grave_get_widget(Ag, "datamodburn"));
294    gchar *Lreturn;    gchar *Lreturn;
295    
296    Lreturn = g_strdup_printf("-%s -%s", Lformat, Lmodburn);    Lreturn = g_strdup_printf("-%s -%s", Lformat, Lmodburn);
# Line 300  gchar *burn_data_getextrapara(GHashTable Line 300  gchar *burn_data_getextrapara(GHashTable
300    return Lreturn;    return Lreturn;
301  }  }
302    
303  static gchar *get_blank_type(GHashTable *Ahash)  static gchar *get_blank_type(Tgrave *Ag)
304  {  {
305    gboolean *Luseautoblank = (gboolean *) g_hash_table_lookup(Ahash, "useautoblank");    gboolean *Luseautoblank = (gboolean *) sc_grave_get_widget(Ag, "useautoblank");
306    
307    if (!*Luseautoblank) return g_strdup("");    if (!*Luseautoblank) return g_strdup("");
308    
# Line 310  static gchar *get_blank_type(GHashTable Line 310  static gchar *get_blank_type(GHashTable
310  }  }
311    
312  /* copie d'une image iso */  /* copie d'une image iso */
313  gboolean burn_from_image(gchar *Aop, GHashTable *Ahash, GError **Aerror) {  gboolean burn_from_image(gchar *Aop, Tgrave *Ag, GError **Aerror) {
314    gchar **Lcmd;    gchar **Lcmd;
315    gchar *Lcommandline, *Lbufgrav, *Ltxt;    gchar *Lcommandline, *Lbufgrav, *Ltxt;
316    GIOChannel *Lcom, *Lcomerr;    GIOChannel *Lcom, *Lcomerr;
317    guint Lcomevent, Lcomerrevent;    guint Lcomevent, Lcomerrevent;
318    gint *Lcont = (gint *) g_hash_table_lookup(Ahash, "cont");    gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont");
319    gboolean *Labort = (gboolean *) g_hash_table_lookup(Ahash, "gabort");    gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort");
320    GtkWindow *Lwindow = GTK_WINDOW(g_hash_table_lookup(Ahash, "window_burn"));    GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_widget(Ag, "window_burn"));
321    gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_hash_table_lookupv(Ahash, "%ssimul", Aop)));    gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%ssimul", Aop)));
322    gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_hash_table_lookupv(Ahash, "nbrcd%s", Aop)));      gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widgetv(Ag, "nbrcd%s", Aop)));  
323    gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Ahash, "operationstatus");    gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus");
324    gboolean Lwanteject = conf_get_boolean("eject");    gboolean Lwanteject = conf_get_boolean("eject");
325    gchar **Liso = (gchar **)g_hash_table_lookup(Ahash, "iso"); /* image iso */    gchar **Liso = (gchar **)sc_grave_get_data(Ag, "iso"); /* image iso */
326    gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid");    gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");
327    gboolean Ldosimul;    gboolean Ldosimul;
328    GtkWidget *Lvitesse = sc_hash_table_lookupv(Ahash, "dst%sspeed", Aop);    GtkWidget *Lvitesse = sc_grave_get_widgetv(Ag, "dst%sspeed", Aop);
329    GtkWidget *Lgraveur = sc_hash_table_lookupv(Ahash, "dst%scombo", Aop);    GtkWidget *Lgraveur = sc_grave_get_widgetv(Ag, "dst%scombo", Aop);
330    GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Ahash, "gravetitle"));    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Ag, "gravetitle"));
331    GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_hash_table_lookupv(Ahash, "%snotfix", Aop));    GtkToggleButton *Lbtnnotfix = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%snotfix", Aop));
332    gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE;    gboolean Lnotfix = Lbtnnotfix ? gtk_toggle_button_get_active(Lbtnnotfix) : FALSE;
333    gchar **Lextrapara = g_hash_table_lookup(Ahash, "extrapara");    gchar **Lextrapara = sc_grave_get_data(Ag, "extrapara");
334    gboolean Lmulti = FALSE;    gboolean Lmulti = FALSE;
335    gint *Ldone = (gint *)g_hash_table_lookup(Ahash, "done"); /* fais */    gint *Ldone = (gint *)sc_grave_get_data(Ag, "done"); /* fais */
336    gint Lcurcd;    gint Lcurcd;
337    gint Lnbrpass=1;    gint Lnbrpass=1;
338    gchar *Lbufvitesse, *Lblank;    gchar *Lbufvitesse, *Lblank;
# Line 342  gboolean burn_from_image(gchar *Aop, GHa Line 342  gboolean burn_from_image(gchar *Aop, GHa
342    gboolean Leject = FALSE;    gboolean Leject = FALSE;
343    GtkToggleButton *Ltbtn = NULL;    GtkToggleButton *Ltbtn = NULL;
344    
345    Lblank = get_blank_type(Ahash);    Lblank = get_blank_type(Ag);
346    
347    if ((Ltbtn = GTK_TOGGLE_BUTTON(sc_hash_table_lookupv(Ahash, "%smulti", Aop))))    if ((Ltbtn = GTK_TOGGLE_BUTTON(sc_grave_get_widgetv(Ag, "%smulti", Aop))))
348      Lmulti =gtk_toggle_button_get_active(Ltbtn);      Lmulti =gtk_toggle_button_get_active(Ltbtn);
349    
350    _DEB("on veut graver %d cd simul(%d)", Lnbrgravure, Lsimul ? 1 : 0);    _DEB("on veut graver %d cd simul(%d)", Lnbrgravure, Lsimul ? 1 : 0);
# Line 420  gboolean burn_from_image(gchar *Aop, GHa Line 420  gboolean burn_from_image(gchar *Aop, GHa
420      }      }
421    
422      *Lcont = 1;      *Lcont = 1;
423      g_hash_table_insert(Ahash, "lasttrack", &Llasttrack);      sc_grave_set_data(Ag, &Llasttrack, "lasttrack");
424      Lcom = g_io_channel_unix_new( g_out );      Lcom = g_io_channel_unix_new( g_out );
425      g_io_channel_set_encoding (Lcom, NULL, NULL);      g_io_channel_set_encoding (Lcom, NULL, NULL);
426      g_io_channel_set_buffered(Lcom, FALSE);      g_io_channel_set_buffered(Lcom, FALSE);
427      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
428      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
429                                        cdrecord_grave_callback, Ahash);                                        cdrecord_grave_callback, Ag);
430        
431      Lcomerr = g_io_channel_unix_new( g_err );      Lcomerr = g_io_channel_unix_new( g_err );
432      g_io_channel_set_encoding (Lcomerr, NULL, NULL);      g_io_channel_set_encoding (Lcomerr, NULL, NULL);
433      g_io_channel_set_buffered(Lcomerr, FALSE);      g_io_channel_set_buffered(Lcomerr, FALSE);
434      g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );      g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );
435      Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),      Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
436                                        cdrecord_grave_callback, Ahash);                                        cdrecord_grave_callback, Ag);
437            
438      while (*Lcont > 0 && *Labort == FALSE) {      while (*Lcont > 0 && *Labort == FALSE) {
439        gtk_main_iteration();            gtk_main_iteration();    
# Line 450  gboolean burn_from_image(gchar *Aop, GHa Line 450  gboolean burn_from_image(gchar *Aop, GHa
450      g_spawn_close_pid(*Lpid);      g_spawn_close_pid(*Lpid);
451      *Lpid = 0;      *Lpid = 0;
452    
453      g_hash_table_remove(Ahash, "lasttrack");      sc_grave_del_data(Ag, "lasttrack");
454    
455      if (*Aerror) {      if (*Aerror) {
456        _DEB("IL Y A UNE ERREUR !!");        _DEB("IL Y A UNE ERREUR !!");
# Line 513  void maj_audio_title(GtkLabel *Alabel, g Line 513  void maj_audio_title(GtkLabel *Alabel, g
513  gboolean cdrecord_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata)  gboolean cdrecord_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata)
514  {  {
515    GIOStatus Lstatus;    GIOStatus Lstatus;
516    GHashTable *Lhash = (GHashTable *)Adata;    Tgrave *Lg = (Tgrave *)Adata;
517    gchar Lbuffer[_BUF_SIZE];    gchar Lbuffer[_BUF_SIZE];
518    gint *Lcont = (gint *) g_hash_table_lookup(Lhash, "cont"); /* on traite encore des donnees ? */    gint *Lcont = (gint *) sc_grave_get_data(Lg, "cont"); /* on traite encore des donnees ? */
519    GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */    GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */
520    gint *Ltodo = (gint *) g_hash_table_lookup(Lhash, "todo"); /* nombre de piste a traiter */    gint *Ltodo = (gint *) sc_grave_get_data(Lg, "todo"); /* nombre de piste a traiter */
521    gint *Ldone = (gint *) g_hash_table_lookup(Lhash, "done"); /* nombre de piste deja traite */    gint *Ldone = (gint *) sc_grave_get_data(Lg, "done"); /* nombre de piste deja traite */
522    gchar *Llasttrack = (gchar *) g_hash_table_lookup(Lhash, "lasttrack"); /* precedente piste traite */    gchar *Llasttrack = (gchar *) sc_grave_get_data(Lg, "lasttrack"); /* precedente piste traite */
523    gchar *f, *e;    gchar *f, *e;
524    gchar *Ltxt;    gchar *Ltxt;
525    gchar Lsbuf[200], Lsbuf2[200];    gchar Lsbuf[200];
526    gdouble Ltotaldone = 1, Ltotaltodo, Lfifo, Lpct, Lgbuf = 0, Ltava;    gdouble Ltotaldone = 1, Ltotaltodo, Lfifo, Lpct, Lgbuf = 0, Ltava;
527    gsize Llu = 0;    gsize Llu = 0;
528    gchar *Ltracknum;    gchar *Ltracknum;
529    
530    GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Lhash, "gravetitle"));    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Lg, "gravetitle"));
531    GtkProgressBar *Lprogressbar = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_total"));    GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_step"));
532    GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_step"));    GtkProgressBar *LprogressbarFifo = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_fifo"));
533    GtkProgressBar *LprogressbarFifo = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_fifo"));    GtkProgressBar *LprogressbarBuffer = GTK_PROGRESS_BAR(sc_grave_get_widget(Lg, "pb_buffer"));
   GtkProgressBar *LprogressbarBuffer = GTK_PROGRESS_BAR(g_hash_table_lookup(Lhash, "pb_buffer"));  
534        
535    /* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */    /* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */
536    if (Acond == G_IO_HUP || Acond == G_IO_ERR) {    if (Acond == G_IO_HUP || Acond == G_IO_ERR) {
# Line 636  _DEB("===>%s", Lbuffer); Line 635  _DEB("===>%s", Lbuffer);
635      /* blanking disk */      /* blanking disk */
636      gtk_label_set_text(Ltitle, _("Blanking..."));      gtk_label_set_text(Ltitle, _("Blanking..."));
637    } else if ((f=strstr(Lbuffer, CDRECORD_STATUS))) {    } else if ((f=strstr(Lbuffer, CDRECORD_STATUS))) {
638      gboolean *Lstatus = (gboolean *) g_hash_table_lookup(Lhash, "operationstatus");      gboolean *Lstatus = (gboolean *) sc_grave_get_data(Lg, "operationstatus");
639  /* bug 11803  /* bug 11803
640   * cause des problems apparements, a tester ..   * cause des problems apparements, a tester ..
641      f=f+strlen(CDRECORD_STATUS);      f=f+strlen(CDRECORD_STATUS);
# Line 693  _DEB("===>%s", Lbuffer); Line 692  _DEB("===>%s", Lbuffer);
692    return TRUE;    return TRUE;
693  }  }
694    
695  gboolean gravepiste(GHashTable *Ahash, GError **Aerror) {  gboolean gravepiste(Tgrave *Ag, GError **Aerror) {
696    GtkWindow *Lwindow = GTK_WINDOW(g_hash_table_lookup(Ahash, "window_burn"));    GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_widget(Ag, "window_burn"));
697    GtkLabel *Ltitle = GTK_LABEL(g_hash_table_lookup(Ahash, "gravetitle"));    GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_widget(Ag, "gravetitle"));
698    GtkWidget *Lvitesse = g_hash_table_lookup(Ahash, "dstaudiospeed");    GtkWidget *Lvitesse = sc_grave_get_widget(Ag, "dstaudiospeed");
699    GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstaudiocombo");    GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstaudiocombo");
700    gchar **Lrepertoire = (gchar **)g_hash_table_lookup(Ahash, "tmpdir");    gchar **Lrepertoire = (gchar **)sc_grave_get_data(Ag, "tmpdir");
701    gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Ahash, "operationstatus");    gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag, "operationstatus");
702    gboolean *Labort = (gboolean *) g_hash_table_lookup(Ahash, "gabort");    gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort");
703    gchar *Lbuftitle = NULL;    gchar *Lbuftitle = NULL;
704    gchar **Lcmd;    gchar **Lcmd;
705    gchar *Lcommandline;    gchar *Lcommandline;
706    GIOChannel *Lcom, *Lcomerr;    GIOChannel *Lcom, *Lcomerr;
707    guint Lcomevent, Lcomerrevent;    guint Lcomevent, Lcomerrevent;
708    gint *Lcont = (gint *) g_hash_table_lookup(Ahash, "cont"); /* on traite encore des donnees ? */    gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont"); /* on traite encore des donnees ? */
709    /* nombre d'element total */    /* nombre d'element total */
710    gint *Ldone = (gint *)g_hash_table_lookup(Ahash, "done"); /* fais */    gint *Ldone = (gint *)sc_grave_get_data(Ag, "done"); /* fais */
711    gint *Ltodo = (gint *) g_hash_table_lookup(Ahash, "todo");    gint *Ltodo = (gint *) sc_grave_get_data(Ag, "todo");
712    gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid");    gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");
713        
714    gint g_out, g_err, Lnbrarg;    gint g_out, g_err, Lnbrarg;
715    gboolean Lstatus = FALSE;    gboolean Lstatus = FALSE;
716    gchar *Lbufvitesse, *Lbufgrav;    gchar *Lbufvitesse, *Lbufgrav;
717    gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "audiosimul")));    gboolean Lsimul = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiosimul")));
718    gboolean Lnotfix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "audionotfix")));    gboolean Lnotfix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audionotfix")));
719    gboolean Ldaomode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(g_hash_table_lookup(Ahash, "audiodao")));    gboolean Ldaomode = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag, "audiodao")));
720    gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(g_hash_table_lookup(Ahash, "nbrcdaudio")));    gint Lnbrgravure = gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag, "nbrcdaudio")));
721    gboolean Lwanteject = conf_get_boolean("eject");    gboolean Lwanteject = conf_get_boolean("eject");
722    gint Lcurcd;    gint Lcurcd;
723    gboolean Ldosimul;    gboolean Ldosimul;
# Line 730  gboolean gravepiste(GHashTable *Ahash, G Line 729  gboolean gravepiste(GHashTable *Ahash, G
729    Lfileslist = make_audio_fileslist(*Ltodo);    Lfileslist = make_audio_fileslist(*Ltodo);
730    Lbufvitesse = get_combo_value(Lvitesse);    Lbufvitesse = get_combo_value(Lvitesse);
731    Lbufgrav = get_combo_value(Lgraveur);    Lbufgrav = get_combo_value(Lgraveur);
732    Lblank = get_blank_type(Ahash);    Lblank = get_blank_type(Ag);
733    
734    *Ltodo = (*Ltodo) * ((Lnbrgravure) + (Lsimul ? 1 : 0));    *Ltodo = (*Ltodo) * ((Lnbrgravure) + (Lsimul ? 1 : 0));
735    
# Line 795  _DEB("execution [%s]\n", Lcommandline); Line 794  _DEB("execution [%s]\n", Lcommandline);
794      }      }
795    
796      *Lcont = 1;      *Lcont = 1;
797      g_hash_table_insert(Ahash, "lasttrack", &Llasttrack);      sc_grave_set_data(Ag, &Llasttrack, "lasttrack");
798      Lcom = g_io_channel_unix_new( g_out );      Lcom = g_io_channel_unix_new( g_out );
799      g_io_channel_set_encoding (Lcom, NULL, NULL);      g_io_channel_set_encoding (Lcom, NULL, NULL);
800      g_io_channel_set_buffered(Lcom, FALSE);      g_io_channel_set_buffered(Lcom, FALSE);
801      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );      g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
802      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),      Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
803                                          cdrecord_grave_callback, Ahash);                                          cdrecord_grave_callback, Ag);
804        
805      Lcomerr = g_io_channel_unix_new( g_err );      Lcomerr = g_io_channel_unix_new( g_err );
806      g_io_channel_set_encoding (Lcomerr, NULL, NULL);      g_io_channel_set_encoding (Lcomerr, NULL, NULL);
807      g_io_channel_set_buffered(Lcomerr, FALSE);      g_io_channel_set_buffered(Lcomerr, FALSE);
808      g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );      g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );
809      Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),      Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
810                                          cdrecord_grave_callback, Ahash);                                            cdrecord_grave_callback, Ag);  
811            
812      while (*Lcont>0 && *Labort == FALSE) {      while (*Lcont>0 && *Labort == FALSE) {
813        gtk_main_iteration();        gtk_main_iteration();
# Line 825  _DEB("execution [%s]\n", Lcommandline); Line 824  _DEB("execution [%s]\n", Lcommandline);
824      g_spawn_close_pid(*Lpid);      g_spawn_close_pid(*Lpid);
825      *Lpid = 0;      *Lpid = 0;
826    
827      g_hash_table_remove(Ahash, "lasttrack");      sc_grave_del_data(Ag, "lasttrack");
828    
829      if (*Aerror) {      if (*Aerror) {
830        Lstatus = FALSE;        Lstatus = FALSE;
# Line 872  _DEB("execution [%s]\n", Lcommandline); Line 871  _DEB("execution [%s]\n", Lcommandline);
871  gboolean common_blankorfix_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata)  gboolean common_blankorfix_callback(GIOChannel *Astd, GIOCondition Acond, gpointer Adata)
872  {  {
873    GIOStatus Lstatus;    GIOStatus Lstatus;
874    GHashTable *Lhash = (GHashTable *)Adata;    Tgrave *Lg = (Tgrave *)Adata;
875    gint *Lcont = (gint *) g_hash_table_lookup(Lhash, "cont"); /* on traite encore des donnees ? */    gint *Lcont = (gint *) sc_grave_get_data(Lg, "cont"); /* on traite encore des donnees ? */
876    gchar *Lbuffer = NULL;    gchar *Lbuffer = NULL;
877    /* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */    /* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme */
878    if (Acond == G_IO_HUP || Acond == G_IO_ERR) {    if (Acond == G_IO_HUP || Acond == G_IO_ERR) {
# Line 888  _DEB("===>%s", Lbuffer); Line 887  _DEB("===>%s", Lbuffer);
887    
888    if (!strcmp(Lbuffer, CDRECORD_BLANKING_TIME)) {    if (!strcmp(Lbuffer, CDRECORD_BLANKING_TIME)) {
889      /* fin de l'operation: effacer un cdrw */      /* fin de l'operation: effacer un cdrw */
890      gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Lhash, "operationstatus");      gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Lg, "operationstatus");
891      *Loperationstatus = TRUE;      *Loperationstatus = TRUE;
892    } else if (!strcmp(Lbuffer, CDRECORD_FIXATING_TIME)) {    } else if (!strcmp(Lbuffer, CDRECORD_FIXATING_TIME)) {
893      /* fin de l'operation: cloturer un cdr */      /* fin de l'operation: cloturer un cdr */
894       gboolean *Loperationstatus = (gboolean *)g_hash_table_lookup(Lhash, "operationstatus");       gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Lg, "operationstatus");
895      *Loperationstatus = TRUE;      *Loperationstatus = TRUE;
896    } else if (strstr(Lbuffer, CDRECORD_CANNOT_BLANK)) {    } else if (strstr(Lbuffer, CDRECORD_CANNOT_BLANK)) {
897      GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */      GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */
898      if (!*Lerreur)      if (!*Lerreur)
899        g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_CANNOT_BLANK, _("Cannot blank disk, aborting."));        g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_CANNOT_BLANK, _("Cannot blank disk, aborting."));
900    } else if (strstr(Lbuffer, CDRECORD_INCOMPATIBLE_MEDIUM)) {    } else if (strstr(Lbuffer, CDRECORD_INCOMPATIBLE_MEDIUM)) {
901      /* hum, erreur */      /* hum, erreur */
902      GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */      GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */
903      if (!*Lerreur)      if (!*Lerreur)
904        g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_INCOMPATIBLE_MEDIUM, _("Cannot blank disk, this is not a CD-RW !"));        g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_INCOMPATIBLE_MEDIUM, _("Cannot blank disk, this is not a CD-RW !"));
905    } else if (strstr(Lbuffer, CDRECORD_ERRORDISK)) {    } else if (strstr(Lbuffer, CDRECORD_ERRORDISK)) {
906      /* erreur pas de cd */      /* erreur pas de cd */
907      GError **Lerreur = (GError **) g_hash_table_lookup(Lhash, "gerror"); /* pointeur erreur */      GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur erreur */
908      if (!*Lerreur)      if (!*Lerreur)
909        g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_NO_CD, _("Error, a CD-R/CD-RW is required in the cd recorder !"));        g_set_error(Lerreur, GRAVEMAN_ERROR, _ERR_NO_CD, _("Error, a CD-R/CD-RW is required in the cd recorder !"));
910    }    }
# Line 915  _DEB("===>%s", Lbuffer); Line 914  _DEB("===>%s", Lbuffer);
914  }  }
915    
916  /* cloturer un cdr*/  /* cloturer un cdr*/
917  gboolean perform_fix_cd(GHashTable *Ahash, GError **Aerror)  gboolean perform_fix_cd(Tgrave *Ag, GError **Aerror)
918  {  {
919    gchar **Lcmd;    gchar **Lcmd;
920    gchar *Lcommandline, *Lbufgrav;    gchar *Lcommandline, *Lbufgrav;
# Line 923  gboolean perform_fix_cd(GHashTable *Ahas Line 922  gboolean perform_fix_cd(GHashTable *Ahas
922    GIOChannel *Lcom, *Lcomerr;    GIOChannel *Lcom, *Lcomerr;
923    guint Lcomevent, Lcomerrevent;    guint Lcomevent, Lcomerrevent;
924    gint g_out, g_err, Lnbrarg;    gint g_out, g_err, Lnbrarg;
925    gint *Lcont = g_hash_table_lookup(Ahash, "cont");    gint *Lcont = sc_grave_get_data(Ag, "cont");
926    GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstothercombo");    GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstothercombo");
927    
928    /* pid de cdrecord */    /* pid de cdrecord */
929    gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid");    gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");
930    
931    Lbufgrav = get_combo_value(Lgraveur);    Lbufgrav = get_combo_value(Lgraveur);
932    Lcommandline = g_strdup_printf("%s dev=%s -v -fix", conf_get_string("cdrecord"), Lbufgrav);    Lcommandline = g_strdup_printf("%s dev=%s -v -fix", conf_get_string("cdrecord"), Lbufgrav);
# Line 954  gboolean perform_fix_cd(GHashTable *Ahas Line 953  gboolean perform_fix_cd(GHashTable *Ahas
953    g_io_channel_set_encoding (Lcom, NULL, NULL);    g_io_channel_set_encoding (Lcom, NULL, NULL);
954    g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );    g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
955    Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),    Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
956                                        common_blankorfix_callback, Ahash);                                        common_blankorfix_callback, Ag);
957        
958    Lcomerr = g_io_channel_unix_new( g_err );    Lcomerr = g_io_channel_unix_new( g_err );
959    g_io_channel_set_encoding (Lcomerr, NULL, NULL);    g_io_channel_set_encoding (Lcomerr, NULL, NULL);
960    g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );    g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );
961    Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),    Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
962                                        common_blankorfix_callback, Ahash);                                          common_blankorfix_callback, Ag);  
963  _DEB("cont vaut => %d\n", *Lcont);  _DEB("cont vaut => %d\n", *Lcont);
964    while (*Lcont > 1) {    while (*Lcont > 1) {
965      gtk_main_iteration();      gtk_main_iteration();
# Line 996  void eject_cd(gchar *Adev, GError **Aerr Line 995  void eject_cd(gchar *Adev, GError **Aerr
995  }  }
996    
997  /* effacer un cdrw */  /* effacer un cdrw */
998  gboolean perform_erase_cdrw(GHashTable *Ahash, GError **Aerror)  gboolean perform_erase_cdrw(Tgrave *Ag, GError **Aerror)
999  {  {
1000    gchar **Lcmd;    gchar **Lcmd;
1001    gchar *Lcommandline, *Lbufgrav;    gchar *Lcommandline, *Lbufgrav;
# Line 1004  gboolean perform_erase_cdrw(GHashTable * Line 1003  gboolean perform_erase_cdrw(GHashTable *
1003    GIOChannel *Lcom, *Lcomerr;    GIOChannel *Lcom, *Lcomerr;
1004    guint Lcomevent, Lcomerrevent;    guint Lcomevent, Lcomerrevent;
1005    gint g_out, g_err, Lnbrarg;    gint g_out, g_err, Lnbrarg;
1006    gint *Lcont = g_hash_table_lookup(Ahash, "cont");    gint *Lcont = sc_grave_get_data(Ag, "cont");
1007    GtkWidget *Lgraveur = g_hash_table_lookup(Ahash, "dstothercombo");    GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstothercombo");
1008    gboolean *Lfastblank = g_hash_table_lookup(Ahash, "usefastblank");    gboolean *Lfastblank = sc_grave_get_data(Ag, "usefastblank");
1009    
1010    /* pid de cdrecord */    /* pid de cdrecord */
1011    gint *Lpid = (gint *) g_hash_table_lookup(Ahash, "pid");    gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");
1012    
1013    Lbufgrav = get_combo_value(Lgraveur);    Lbufgrav = get_combo_value(Lgraveur);
1014    Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 blank=%s",    Lcommandline = g_strdup_printf("%s dev=%s -v gracetime=2 blank=%s",
# Line 1038  gboolean perform_erase_cdrw(GHashTable * Line 1037  gboolean perform_erase_cdrw(GHashTable *
1037    g_io_channel_set_encoding (Lcom, NULL, NULL);    g_io_channel_set_encoding (Lcom, NULL, NULL);
1038    g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );    g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
1039    Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),    Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
1040                                        common_blankorfix_callback, Ahash);                                        common_blankorfix_callback, Ag);
1041        
1042    Lcomerr = g_io_channel_unix_new( g_err );    Lcomerr = g_io_channel_unix_new( g_err );
1043    g_io_channel_set_encoding (Lcomerr, NULL, NULL);    g_io_channel_set_encoding (Lcomerr, NULL, NULL);
1044    g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );    g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );
1045    Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),    Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_PRI),
1046                                        common_blankorfix_callback, Ahash);                                          common_blankorfix_callback, Ag);  
1047  _DEB("cont vaut => %d\n", *Lcont);  _DEB("cont vaut => %d\n", *Lcont);
1048    while (*Lcont > 1) {    while (*Lcont > 1) {
1049      gtk_main_iteration();      gtk_main_iteration();

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26