brasero r972 - in trunk: . src src/plugins/growisofs
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r972 - in trunk: . src src/plugins/growisofs
- Date: Fri, 11 Jul 2008 12:51:56 +0000 (UTC)
Author: philippr
Date: Fri Jul 11 12:51:55 2008
New Revision: 972
URL: http://svn.gnome.org/viewvc/brasero?rev=972&view=rev
Log:
Fix #529418 â Speed is not displayed
* src/burn-job.c (brasero_job_set_progress):
* src/burn-task-ctx.c (brasero_task_ctx_reset),
(brasero_task_ctx_set_next_track),
(brasero_task_ctx_start_progress),
(brasero_task_ctx_set_written_track),
(brasero_task_ctx_set_progress), (brasero_task_ctx_get_rate),
(brasero_task_ctx_stop_progress):
* src/plugins/growisofs/burn-growisofs.c
(brasero_growisofs_read_stderr):
Modified:
trunk/ChangeLog
trunk/src/burn-job.c
trunk/src/burn-task-ctx.c
trunk/src/plugins/growisofs/burn-growisofs.c
Modified: trunk/src/burn-job.c
==============================================================================
--- trunk/src/burn-job.c (original)
+++ trunk/src/burn-job.c Fri Jul 11 12:51:55 2008
@@ -1663,8 +1663,10 @@
if (priv->next)
return BRASERO_BURN_ERR;
- if (progress < 0.0 || progress > 1.0)
+ if (progress < 0.0 || progress > 1.0) {
+ BRASERO_JOB_LOG (self, "Tried to set an insane progress value (%lf)", progress);
return BRASERO_BURN_ERR;
+ }
return brasero_task_ctx_set_progress (priv->ctx, progress);
}
Modified: trunk/src/burn-task-ctx.c
==============================================================================
--- trunk/src/burn-task-ctx.c (original)
+++ trunk/src/burn-task-ctx.c Fri Jul 11 12:51:55 2008
@@ -60,13 +60,15 @@
/* keep track of time */
GTimer *timer;
gint64 first_written;
+ gdouble first_progress;
/* used for immediate rate */
- gint64 current_written;
gdouble current_elapsed;
- gint64 last_written;
gdouble last_elapsed;
+ gint64 last_written;
+ gdouble last_progress;
+
/* used for remaining time */
GSList *times;
gdouble total_time;
@@ -167,10 +169,11 @@
priv->track_bytes = -1;
priv->session_bytes = -1;
priv->written_changed = 0;
- priv->current_written = 0;
+
priv->current_elapsed = 0;
priv->last_written = 0;
priv->last_elapsed = 0;
+ priv->last_progress = 0;
if (priv->times) {
g_slist_free (priv->times);
@@ -299,6 +302,7 @@
priv->session_bytes += priv->track_bytes;
priv->track_bytes = 0;
+ priv->last_written = 0;
if (priv->current_track)
brasero_track_unref (priv->current_track);
@@ -413,10 +417,12 @@
if (!priv->timer) {
priv->timer = g_timer_new ();
priv->first_written = priv->session_bytes + priv->track_bytes;
+ priv->first_progress = priv->progress;
}
else if (force) {
g_timer_start (priv->timer);
priv->first_written = priv->session_bytes + priv->track_bytes;
+ priv->first_progress = priv->progress;
}
return BRASERO_BURN_OK;
@@ -563,22 +569,23 @@
priv = BRASERO_TASK_CTX_PRIVATE (self);
- priv->track_bytes = written;
priv->written_changed = 1;
- if (priv->use_average_rate)
+ if (priv->use_average_rate) {
+ priv->track_bytes = written;
return BRASERO_BURN_OK;
+ }
if (priv->timer)
elapsed = g_timer_elapsed (priv->timer, NULL);
if ((elapsed - priv->last_elapsed) > 0.5) {
- priv->last_written = priv->current_written;
+ priv->last_written = priv->track_bytes;
priv->last_elapsed = priv->current_elapsed;
- priv->current_written = written;
priv->current_elapsed = elapsed;
}
+ priv->track_bytes = written;
return BRASERO_BURN_OK;
}
@@ -601,14 +608,36 @@
gdouble progress)
{
BraseroTaskCtxPrivate *priv;
+ gdouble elapsed;
g_return_val_if_fail (BRASERO_IS_TASK_CTX (self), BRASERO_BURN_ERR);
priv = BRASERO_TASK_CTX_PRIVATE (self);
priv->progress_changed = 1;
- priv->progress = progress;
+ if (priv->use_average_rate) {
+ priv->progress = progress;
+ return BRASERO_BURN_OK;
+ }
+
+ /* here we prefer to use track written bytes instead of progress.
+ * NOTE: usually plugins will return only one information. */
+ if (priv->last_written) {
+ priv->progress = progress;
+ return BRASERO_BURN_OK;
+ }
+
+ if (priv->timer)
+ elapsed = g_timer_elapsed (priv->timer, NULL);
+
+ if ((elapsed - priv->last_elapsed) > 0.5) {
+ priv->last_progress = priv->progress;
+ priv->last_elapsed = priv->current_elapsed;
+ priv->current_elapsed = elapsed;
+ }
+
+ priv->progress = progress;
return BRASERO_BURN_OK;
}
@@ -678,7 +707,7 @@
if (priv->current_action != BRASERO_BURN_ACTION_RECORDING
&& priv->current_action != BRASERO_BURN_ACTION_DRIVE_COPY) {
*rate = -1;
- return BRASERO_BURN_OK;
+ return BRASERO_BURN_NOT_SUPPORTED;
}
if (priv->rate) {
@@ -689,18 +718,30 @@
if (priv->use_average_rate) {
gdouble elapsed;
- if ((priv->session_bytes + priv->track_bytes) <= 0 || !priv->timer)
+ if (!priv->timer)
return BRASERO_BURN_NOT_READY;
elapsed = g_timer_elapsed (priv->timer, NULL);
- *rate = (gdouble) ((priv->session_bytes + priv->track_bytes) - priv->first_written) / elapsed;
+
+ if ((priv->session_bytes + priv->track_bytes) > 0)
+ *rate = (gdouble) ((priv->session_bytes + priv->track_bytes) - priv->first_written) / elapsed;
+ else if (priv->progress > 0.0)
+ *rate = (gdouble) (priv->progress - priv->first_progress) * priv->size / elapsed;
+ else
+ return BRASERO_BURN_NOT_READY;
}
else {
- if (!priv->last_written)
+ if (priv->last_written > 0) {
+ *rate = (gdouble) (priv->track_bytes - priv->last_written) /
+ (gdouble) (priv->current_elapsed - priv->last_elapsed);
+ }
+ else if (priv->last_progress > 0.0) {
+ *rate = (gdouble) priv->size *
+ (gdouble) (priv->progress - priv->last_progress) /
+ (gdouble) (priv->current_elapsed - priv->last_elapsed);
+ }
+ else
return BRASERO_BURN_NOT_READY;
-
- *rate = (gdouble) (priv->current_written - priv->last_written) /
- (gdouble) (priv->current_elapsed - priv->last_elapsed);
}
return BRASERO_BURN_OK;
@@ -891,6 +932,7 @@
priv->timer = NULL;
}
priv->first_written = 0;
+ priv->first_progress = 0.0;
g_mutex_lock (priv->lock);
Modified: trunk/src/plugins/growisofs/burn-growisofs.c
==============================================================================
--- trunk/src/plugins/growisofs/burn-growisofs.c (original)
+++ trunk/src/plugins/growisofs/burn-growisofs.c Fri Jul 11 12:51:55 2008
@@ -107,12 +107,12 @@
{
int perc_1, perc_2;
- if (sscanf (line, " %2d.%1d%% done, estimate finish", &perc_1, &perc_2) == 2) {
+ if (sscanf (line, " %2d.%2d%% done, estimate finish", &perc_1, &perc_2) == 2) {
gdouble fraction;
BraseroBurnAction action;
fraction = (gdouble) ((gdouble) perc_1 +
- ((gdouble) perc_2 / (gdouble) 10.0)) /
+ ((gdouble) perc_2 / (gdouble) 100.0)) /
(gdouble) 100.0;
brasero_job_set_progress (BRASERO_JOB (process), fraction);
@@ -120,8 +120,10 @@
brasero_job_get_current_action (BRASERO_JOB (process), &action);
if (action == BRASERO_BURN_ACTION_BLANKING
&& fraction >= 0.01) {
- /* we nullified 1% (more than 65536) that's enough. A
- * signal SIGTERM will be sent. */
+ /* we nullified 1% of the medium (more than 65536)
+ * that's enough to make the filesystem unusable and
+ * looking blank. A signal SIGTERM will be sent to stop
+ * us. */
brasero_job_finished_session (BRASERO_JOB (process));
return BRASERO_BURN_OK;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]