[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Graveman-cvs] Changes to graveman/current/src/cdrdao.c
From: |
sylvain cresto |
Subject: |
[Graveman-cvs] Changes to graveman/current/src/cdrdao.c |
Date: |
Sun, 20 Feb 2005 20:25:40 -0500 |
Index: graveman/current/src/cdrdao.c
diff -u graveman/current/src/cdrdao.c:1.1 graveman/current/src/cdrdao.c:1.2
--- graveman/current/src/cdrdao.c:1.1 Sun Feb 20 17:45:02 2005
+++ graveman/current/src/cdrdao.c Mon Feb 21 01:25:28 2005
@@ -53,9 +53,9 @@
#define CDRDAO_BUFFERS "Buffers "
#define CDRDAO_INCOMPATIBLE_MEDIUM "Medium in recorder device is not empty and
not appendable"
-static gchar *get_blank_type(Tgrave *Ahash)
+static gchar *get_blank_type(Tgrave *Ag)
{
- gboolean *Luseautoblank = (gboolean *) sc_grave_get_widget(Ahash,
"useautoblank");
+ gboolean *Luseautoblank = (gboolean *) sc_grave_get_data(Ag, "useautoblank");
if (!*Luseautoblank) return g_strdup("");
@@ -66,15 +66,15 @@
gboolean cdrdao_grave_callback(GIOChannel *Astd, GIOCondition Acond, gpointer
Adata)
{
GIOStatus Lstatus;
- Tgrave *Lhash = (Tgrave *)Adata;
+ Tgrave *Lg = (Tgrave *)Adata;
gchar Lbuffer[_BUF_SIZE];
- gint *Lcont = (gint *) sc_grave_get_data(Lhash, "cont"); /* on traite encore
des donnees ? */
- GError **Lerreur = (GError **) sc_grave_get_data(Lhash, "gerror"); /*
pointeur erreur */
- gint *Ltodo = (gint *) sc_grave_get_data(Lhash, "todo"); /* nombre de piste
a traiter */
- gint *Ldone = (gint *) sc_grave_get_data(Lhash, "done"); /* nombre de piste
deja traite */
- gchar *Llasttrack = (gchar *) sc_grave_get_data(Lhash, "lasttrack"); /*
precedente piste traite */
- gchar *Latspeed = (gchar *) sc_grave_get_data(Lhash, "atspeed"); /* vitesse
reel operation */
- glong *Llength = (glong *) sc_grave_get_data(Lhash, "length"); /* longueur
total */
+ gint *Lcont = (gint *) sc_grave_get_data(Lg, "cont"); /* on traite encore
des donnees ? */
+ GError **Lerreur = (GError **) sc_grave_get_data(Lg, "gerror"); /* pointeur
erreur */
+ gint *Ltodo = (gint *) sc_grave_get_data(Lg, "todo"); /* nombre de piste a
traiter */
+ gint *Ldone = (gint *) sc_grave_get_data(Lg, "done"); /* nombre de piste
deja traite */
+ gchar *Llasttrack = (gchar *) sc_grave_get_data(Lg, "lasttrack"); /*
precedente piste traite */
+ gchar *Latspeed = (gchar *) sc_grave_get_data(Lg, "atspeed"); /* vitesse
reel operation */
+ glong *Llength = (glong *) sc_grave_get_data(Lg, "length"); /* longueur
total */
gchar *f, *e;
gchar *Ltxt;
gchar Lsbuf[_BUF_SIZE], Lsbuf2[_BUF_SIZE];
@@ -82,11 +82,11 @@
gsize Llu = 0;
gchar *Ltracknum;
- GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Lhash, "gravetitle"));
- GtkProgressBar *Lprogressbar = GTK_PROGRESS_BAR(sc_grave_get_data(Lhash,
"pb_total"));
- GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(sc_grave_get_data(Lhash,
"pb_step"));
- GtkProgressBar *LprogressbarFifo = GTK_PROGRESS_BAR(sc_grave_get_data(Lhash,
"pb_fifo"));
- GtkProgressBar *LprogressbarBuffer =
GTK_PROGRESS_BAR(sc_grave_get_data(Lhash, "pb_buffer"));
+ GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Lg, "gravetitle"));
+ GtkProgressBar *Lprogressbar = GTK_PROGRESS_BAR(sc_grave_get_data(Lg,
"pb_total"));
+ GtkProgressBar *Lprogressbar2 = GTK_PROGRESS_BAR(sc_grave_get_data(Lg,
"pb_step"));
+ GtkProgressBar *LprogressbarFifo = GTK_PROGRESS_BAR(sc_grave_get_data(Lg,
"pb_fifo"));
+ GtkProgressBar *LprogressbarBuffer = GTK_PROGRESS_BAR(sc_grave_get_data(Lg,
"pb_buffer"));
/* fin du callback lorsque l'on recoi un signal comme quoi le pipe est ferme
*/
if (Acond == G_IO_HUP || Acond == G_IO_ERR) {
@@ -146,8 +146,13 @@
g_snprintf(Lsbuf, sizeof(Lsbuf)-1, _("Writing track %s - %.0f MB of
%.0f MB at %s"),
Llasttrack, Lde, La, Latspeed);
gtk_label_set_text(Ltitle, Lsbuf);
-
- maj_progress(Lprogressbar2, POURCENT(La, Lde));
+printf("ici Ltodo = %d done = %d\n", *Ltodo, *Ldone);
+ Lpct = POURCENT(La, Lde);
+ maj_progress(Lprogressbar2, Lpct);
+
+ /* avancement total */
+ Ltava = (1.0/ (*Ltodo)) * ((*Ldone)-1+Lpct);
+ maj_progress(Lprogressbar, Ltava);
/* barre fifo */
g_snprintf(Lsbuf, sizeof(Lsbuf)-1, "%.0f%%", Lfifo);
@@ -161,92 +166,6 @@
}
}
-/*
- Ltracknum = f;
-
-
-
- if (!(f=strchr(f, ':'))) return TRUE;
- *(f++)=0;
- g_strstrip(Ltracknum);
-
- if (!(e = strstr(f, CDRECORD_OF))) return TRUE;
-
-
- *e=0; e=e+strlen(CDRECORD_OF);
- Ltotaldone = atof(ltrim(f));
-
- * champ total a graver *
- f=e;
- if (!(e=strstr(f, CDRECORD_MB))) {
- maj_audio_title(Ltitle, Ltracknum, NULL, 0, Ltotaldone);
- return TRUE;
- }
- *e=0; e=e+strlen(CDRECORD_MB);
- Ltotaltodo = atof(ltrim(f));
-
- * champ fifo *
- if (!(f=strstr(e, CDRECORD_FIFO))) {
- maj_audio_title(Ltitle, Ltracknum, NULL, Ltotaltodo, Ltotaldone);
- return TRUE;
- }
- f=f+strlen(CDRECORD_FIFO);
-
- if ((e = strchr(++f, ')'))) {
- *e++=0;
- } else {
- e = f;
- }
- Lfifo = atof(ltrim(f));
-
- * champ buf *
- if (!(f=strstr(e, CDRECORD_BUF))) {
- maj_audio_title(Ltitle, Ltracknum, NULL, Ltotaltodo, Ltotaldone);
- return TRUE;
- }
- f=f+strlen(CDRECORD_BUF);
-
- if ((e = strchr(++f, ']'))) {
- *e++=0;
- Lgbuf = atof(ltrim(f));
- } else {
- e = f;
- }
-
- e=ltrim(e);
- if ((f=strchr(e, 'x'))) {
- *(++f)=0;
- maj_audio_title(Ltitle, Ltracknum, e, Ltotaltodo, Ltotaldone);
- }
-
- * barres de progression *
- * avancement operation *
- Lpct = (1.0/Ltotaltodo) * Ltotaldone;
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(Lprogressbar2), Lpct);
- g_snprintf(Lsbuf2, sizeof(Lsbuf2)-1, "%.0f%%", Lpct*100);
- gtk_progress_bar_set_text(GTK_PROGRESS_BAR(Lprogressbar2), Lsbuf2);
-
- * avancement total *
- if (*Ltracknum && (!*Llasttrack || strcmp(Llasttrack, Ltracknum))) {
- if (strcmp(Llasttrack, "00")) *Ldone=(*Ldone)+1;
- g_strlcpy(Llasttrack, Ltracknum, _BUF_SIZE - 1);
- }
- Ltava = (1.0/ (*Ltodo)) * ((*Ldone)-1+Lpct);
- gtk_progress_bar_set_fraction(Lprogressbar, Ltava);
- g_snprintf(Lsbuf2, sizeof(Lsbuf2)-1, "%.0f%%", Ltava*100);
- gtk_progress_bar_set_text(Lprogressbar, Lsbuf2);
-
- * barre fifo *
- g_snprintf(Lsbuf, sizeof(Lsbuf)-1, "%.0f%%", Lfifo);
- gtk_progress_bar_set_fraction(LprogressbarFifo, Lfifo * 0.01);
- gtk_progress_bar_set_text(LprogressbarFifo, Lsbuf);
-
- * barre buffer *
- g_snprintf(Lsbuf, sizeof(Lsbuf)-1, "%.0f%%", Lgbuf);
- gtk_progress_bar_set_fraction(LprogressbarBuffer, Lgbuf * 0.01);
- gtk_progress_bar_set_text(LprogressbarBuffer, Lsbuf);
- */
-
} else if ((f=strstr(Lbuffer, CDRDAO_TRACK))) {
/* debut lecture d'une piste */
f=f+strlen(CDRDAO_TRACK);
@@ -262,7 +181,13 @@
/* operation lecture d'une piste en cours */
glong Lcur = get_2time(Lbuffer);
if (Lcur > 0) {
- maj_progress(Lprogressbar2, POURCENT(*Llength, Lcur));
+ /* avancement operation */
+ Lpct = POURCENT(*Llength, Lcur);
+ maj_progress(Lprogressbar2, Lpct);
+
+ /* avancement total */
+ Ltava = (1.0/ (*Ltodo)) * ((*Ldone)-1+Lpct);
+ maj_progress(Lprogressbar, Ltava);
}
} else if ((f=strstr(Lbuffer, CDRDAO_LENGTH))) {
/* longueur total du cd */
@@ -290,9 +215,16 @@
/* mise a jour du titre ecriture de la piste en cours */
f=f+strlen(CDRDAO_WRITING_TRACK);
if ((e=next_no_numeric(f))) {
+ gboolean *Lsimul = (gboolean *) sc_grave_get_data(Lg, "simul"); /*
simulation */
+
*e=0;
+ if (atoi(f)==1) {
+ (*Ldone)++;
+ }
g_snprintf(Llasttrack, _BUF_SIZE-1, "%s", f);
- g_snprintf(Lsbuf, sizeof(Lsbuf)-1, _("Writing track %s at %s..."), f,
Latspeed);
+ g_snprintf(Lsbuf, sizeof(Lsbuf)-1,
+ *Lsimul ? _("Simulated writing track %s as %s...") : _("Writing
track %s at %s..."),
+ f, Latspeed);
gtk_label_set_text(Ltitle, Lsbuf);
}
} else if ((f=strstr(Lbuffer, CDRDAO_COPYING_TRACK))) {
@@ -308,7 +240,7 @@
/* blanking disk */
gtk_label_set_text(Ltitle, _("Flushing cache..."));
} else if ((f=strstr(Lbuffer, CDRDAO_SUCCESSFULLY))) {
- gboolean *Lstatus = (gboolean *) sc_grave_get_data(Lhash,
"operationstatus");
+ gboolean *Lstatus = (gboolean *) sc_grave_get_data(Lg, "operationstatus");
/* ok tout s'est bien passe ! */
*Lstatus = TRUE;
@@ -330,33 +262,33 @@
}
/* operation de copie d'un cd */
-gboolean copycd(Tgrave *Ahash, GError **Aerror) {
- GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_data(Ahash, "window_burn"));
- GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ahash, "gravetitle"));
- GtkWidget *Lvitesse = sc_grave_get_widget(Ahash, "dstcopyspeed");
- GtkWidget *Lsource = sc_grave_get_widget(Ahash, "srccopycombo");
- GtkWidget *Lgraveur = sc_grave_get_widget(Ahash, "dstcopycombo");
- gchar *Lrepertoire = (gchar *)sc_grave_get_data(Ahash, "tmpdir");
- gchar *Liso = (gchar *)sc_grave_get_data(Ahash, "iso");
- gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ahash,
"operationstatus");
- gboolean *Labort = (gboolean *) sc_grave_get_data(Ahash, "gabort");
+gboolean copycd(Tgrave *Ag, GError **Aerror) {
+ GtkWindow *Lwindow = GTK_WINDOW(sc_grave_get_data(Ag, "window_burn"));
+ GtkLabel *Ltitle = GTK_LABEL(sc_grave_get_data(Ag, "gravetitle"));
+ GtkWidget *Lvitesse = sc_grave_get_widget(Ag, "dstcopyspeed");
+ GtkWidget *Lsource = sc_grave_get_widget(Ag, "srccopycombo");
+ GtkWidget *Lgraveur = sc_grave_get_widget(Ag, "dstcopycombo");
+ gchar *Lrepertoire = (gchar *)sc_grave_get_data(Ag, "tmpdir");
+ gchar *Liso = (gchar *)sc_grave_get_data(Ag, "iso");
+ gboolean *Loperationstatus = (gboolean *)sc_grave_get_data(Ag,
"operationstatus");
+ gboolean *Labort = (gboolean *) sc_grave_get_data(Ag, "gabort");
gchar *Lbuftitle = NULL;
gchar **Lcmd;
gchar *Lcommandline;
GIOChannel *Lcom, *Lcomerr;
guint Lcomevent, Lcomerrevent;
- gint *Lcont = (gint *) sc_grave_get_data(Ahash, "cont"); /* on traite encore
des donnees ? */
+ gint *Lcont = (gint *) sc_grave_get_data(Ag, "cont"); /* on traite encore
des donnees ? */
/* nombre d'element total */
- gint *Ldone = (gint *)sc_grave_get_data(Ahash, "done"); /* fais */
- gint *Ltodo = (gint *) sc_grave_get_data(Ahash, "todo");
- gint *Lpid = (gint *) sc_grave_get_data(Ahash, "pid");
+ gint *Ldone = (gint *)sc_grave_get_data(Ag, "done"); /* fais */
+ gint *Ltodo = (gint *) sc_grave_get_data(Ag, "todo");
+ gint *Lpid = (gint *) sc_grave_get_data(Ag, "pid");
gint g_out, g_err, Lnbrarg;
gboolean Lstatus = FALSE;
gchar *Lbufvitesse, *Lbufgrav, *Lbufsrc;
- gboolean Lsimul =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ahash,
"copysimul")));
- gboolean Lonfly =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ahash,
"copyonfly")));
- gint Lnbrgravure =
gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ahash,
"nbrcdcopy")));
+ gboolean Lsimul =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag,
"copysimul")));
+ gboolean Lonfly =
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(sc_grave_get_widget(Ag,
"copyonfly")));
+ gint Lnbrgravure =
gtk_spin_button_get_value(GTK_SPIN_BUTTON(sc_grave_get_widget(Ag,
"nbrcdcopy")));
gboolean Lwanteject = conf_get_boolean("eject");
gint Lcurcd;
gboolean Ldosimul;
@@ -370,14 +302,16 @@
Lbufvitesse = get_combo_value(Lvitesse);
Lbufsrc = get_combo_value(Lsource);
Lbufgrav = get_combo_value(Lgraveur);
- Lblank = get_blank_type(Ahash);
+ Lblank = get_blank_type(Ag);
- *Ltodo = ((Lnbrgravure) + (Lsimul ? 1 : 0) + (Lonfly ? Lnbrgravure : 0));
+ *Ltodo = ((Lnbrgravure * 2 ) + (Lsimul ? 2 : 0) + (Lonfly ? Lnbrgravure :
0));
- sc_grave_set_data(Ahash, &Latspeed, "atspeed");
- sc_grave_set_data(Ahash, &Llasttrack, "lasttrack");
- sc_grave_set_data(Ahash, &Llength, "length");
+ sc_grave_set_data(Ag, &Latspeed, "atspeed");
+ sc_grave_set_data(Ag, &Llasttrack, "lasttrack");
+ sc_grave_set_data(Ag, &Llength, "length");
+ sc_grave_set_data(Ag, &Ldosimul, "simul");
+printf("ici super\n");
for (Lcurcd=1; Lcurcd<= Lnbrgravure;
((Lsimul && Lnbrpass>1) || (!Lsimul)) ? ( Lcurcd++, Lnbrpass=1 ) : (
Lnbrpass++ )) {
*Loperationstatus = FALSE;
@@ -413,15 +347,21 @@
* si il faut realiser d'autre gravure sur d'autres CD-R */
Leject = ((Lcurcd > 1 && (Lwanteject || Lcurcd<Lnbrgravure)) || (Lcurcd ==
1 && !Ldosimul && Lwanteject));
- Lcommandline = g_strdup_printf("%s copy -n -v 2 %s %s %s %s%s
--source-device %s --device %s --datafile %s %s %s",
+ if (Lonfly || Ldosimul || Lcurcd == 1) {
+ /* copie a la volé, ou simulation, ou cd numero 1, on n'utilise pas
l'image sauvé
+ * lors de la precedente operation */
+ Lcommandline = g_strdup_printf("%s copy -n -v 2 %s %s %s %s%s
--source-device %s --device %s --datafile %s %s %s",
conf_get_string("cdrdao"),
Ldosimul ? " --simulate" : "",
- Lonfly ? " --on-the-fly" : "",
+ Lonfly ? " --on-the-fly" : "--keepimage",
Leject ? "--eject" : "",
*Lbufvitesse == '0' ? "" : "--speed", *Lbufvitesse == '0' ? "" :
Lbufvitesse,
Lbufsrc, Lbufgrav, Liso,
conf_get_boolean("overburn") ? "--overburn" : "",
conf_get_string("cdrdaopara"));
+ } else {
+ /* sinon on l'utilise oui ! */
+ }
_DEB("execution [%s]\n", Lcommandline);
Lstatus = g_shell_parse_argv(Lcommandline, &Lnbrarg, &Lcmd, Aerror);
@@ -446,14 +386,14 @@
g_io_channel_set_buffered(Lcom, FALSE);
g_io_channel_set_flags( Lcom, G_IO_FLAG_NONBLOCK, NULL );
Lcomevent = g_io_add_watch (Lcom, (G_IO_IN | G_IO_HUP | G_IO_ERR |
G_IO_PRI),
- cdrdao_grave_callback, Ahash);
+ cdrdao_grave_callback, Ag);
Lcomerr = g_io_channel_unix_new( g_err );
g_io_channel_set_encoding (Lcomerr, NULL, NULL);
g_io_channel_set_buffered(Lcomerr, FALSE);
g_io_channel_set_flags( Lcomerr, G_IO_FLAG_NONBLOCK, NULL );
Lcomerrevent = g_io_add_watch (Lcomerr, (G_IO_IN | G_IO_HUP | G_IO_ERR |
G_IO_PRI),
- cdrdao_grave_callback, Ahash);
+ cdrdao_grave_callback, Ag);
while (*Lcont>0 && *Labort == FALSE) {
gtk_main_iteration();
@@ -508,9 +448,10 @@
g_free(Lbufgrav);
g_free(Lbufvitesse);
- sc_grave_del_data(Ahash, "length");
- sc_grave_del_data(Ahash, "lasttrack");
- sc_grave_del_data(Ahash, "atspeed");
+ sc_grave_del_data(Ag, "simul");
+ sc_grave_del_data(Ag, "length");
+ sc_grave_del_data(Ag, "lasttrack");
+ sc_grave_del_data(Ag, "atspeed");
return Lstatus;
}