brasero r1144 - in trunk: . src
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r1144 - in trunk: . src
- Date: Fri, 22 Aug 2008 19:00:16 +0000 (UTC)
Author: philippr
Date: Fri Aug 22 19:00:16 2008
New Revision: 1144
URL: http://svn.gnome.org/viewvc/brasero?rev=1144&view=rev
Log:
Fix #548556 â Nagging about checking newly burned CDs
* src/brasero-burn-dialog.c (brasero_burn_dialog_insert_disc_cb),
(brasero_burn_dialog_loss_warnings_cb),
(brasero_burn_dialog_disable_joliet_cb),
(brasero_burn_dialog_progress_changed_real),
(brasero_burn_dialog_progress_changed_cb),
(brasero_burn_dialog_action_changed_cb),
(brasero_burn_dialog_dummy_success_cb),
(brasero_burn_dialog_finalize),
(brasero_burn_dialog_setup_session),
(brasero_burn_dialog_notify_success),
(brasero_burn_dialog_end_session):
* src/brasero-progress.c
(brasero_burn_progress_display_session_info):
* src/brasero-progress.h:
* src/burn.c (brasero_burn_status):
Modified:
trunk/ChangeLog
trunk/src/brasero-burn-dialog.c
trunk/src/brasero-progress.c
trunk/src/brasero-progress.h
trunk/src/burn.c
Modified: trunk/src/brasero-burn-dialog.c
==============================================================================
--- trunk/src/brasero-burn-dialog.c (original)
+++ trunk/src/brasero-burn-dialog.c Fri Aug 22 19:00:16 2008
@@ -54,6 +54,7 @@
#include "brasero-jacket-edit.h"
#include "burn-basics.h"
+#include "burn-debug.h"
#include "burn-session.h"
#include "burn-medium.h"
#include "brasero-drive-selection.h"
@@ -92,7 +93,13 @@
GtkWidget *image;
BraseroTrayIcon *tray;
+ /* for our final statistics */
+ GTimer *total_time;
+ gint64 total_size;
+ GSList *rates;
+
guint is_writing:1;
+ guint is_creating_image:1;
};
#define TIMEOUT 10000
@@ -487,6 +494,8 @@
hide = TRUE;
}
+ g_timer_stop (dialog->priv->total_time);
+
if (drive)
drive_name = brasero_drive_get_display_name (drive);
else
@@ -621,6 +630,8 @@
if (hide)
gtk_widget_hide (GTK_WIDGET (dialog));
+ g_timer_start (dialog->priv->total_time);
+
if (result != GTK_RESPONSE_OK)
return BRASERO_BURN_CANCEL;
@@ -646,6 +657,8 @@
hide = TRUE;
}
+ g_timer_stop (BRASERO_BURN_DIALOG (dialog)->priv->total_time);
+
window = GTK_WINDOW (dialog);
message = gtk_message_dialog_new (window,
GTK_DIALOG_DESTROY_WITH_PARENT|
@@ -685,6 +698,8 @@
if (hide)
gtk_widget_hide (GTK_WIDGET (dialog));
+ g_timer_start (BRASERO_BURN_DIALOG (dialog)->priv->total_time);
+
if (result == GTK_RESPONSE_ACCEPT)
return BRASERO_BURN_NEED_RELOAD;
@@ -757,6 +772,8 @@
hide = TRUE;
}
+ g_timer_stop (BRASERO_BURN_DIALOG (dialog)->priv->total_time);
+
window = GTK_WINDOW (dialog);
message = gtk_message_dialog_new (window,
GTK_DIALOG_DESTROY_WITH_PARENT|
@@ -787,6 +804,8 @@
if (hide)
gtk_widget_hide (GTK_WIDGET (dialog));
+ g_timer_start (BRASERO_BURN_DIALOG (dialog)->priv->total_time);
+
if (result != GTK_RESPONSE_OK)
return BRASERO_BURN_CANCEL;
@@ -905,6 +924,10 @@
brasero_tray_icon_set_progress (BRASERO_TRAYICON (dialog->priv->tray),
task_progress,
remaining);
+
+ if (rate > 0 && dialog->priv->is_writing)
+ dialog->priv->rates = g_slist_prepend (dialog->priv->rates,
+ GINT_TO_POINTER ((gint) rate));
}
static void
@@ -933,6 +956,8 @@
task_progress,
remaining,
media);
+ if ((dialog->priv->is_writing || dialog->priv->is_creating_image) && isosize > 0)
+ dialog->priv->total_size = isosize;
}
static void
@@ -972,6 +997,7 @@
media);
}
+ dialog->priv->is_creating_image = (action == BRASERO_BURN_ACTION_CREATING_IMAGE);
dialog->priv->is_writing = is_writing;
brasero_burn_get_action_string (dialog->priv->burn, action, &string);
@@ -995,8 +1021,16 @@
GtkWidget *message;
GtkWindow *window;
GtkWidget *button;
+ gboolean hide;
gint id;
+ if (!GTK_WIDGET_VISIBLE (dialog)) {
+ gtk_widget_show (GTK_WIDGET (dialog));
+ hide = TRUE;
+ }
+
+ g_timer_stop (dialog->priv->total_time);
+
window = GTK_WINDOW (dialog);
message = gtk_message_dialog_new (window,
GTK_DIALOG_DESTROY_WITH_PARENT|
@@ -1024,6 +1058,11 @@
answer = gtk_dialog_run (GTK_DIALOG (message));
gtk_widget_destroy (message);
+ if (hide)
+ gtk_widget_hide (GTK_WIDGET (dialog));
+
+ g_timer_start (dialog->priv->total_time);
+
if (answer == GTK_RESPONSE_OK) {
if (id)
g_source_remove (id);
@@ -1145,6 +1184,16 @@
cobj->priv->session = NULL;
}
+ if (cobj->priv->total_time) {
+ g_timer_destroy (cobj->priv->total_time);
+ cobj->priv->total_time = NULL;
+ }
+
+ if (cobj->priv->rates) {
+ g_slist_free (cobj->priv->rates);
+ cobj->priv->rates = NULL;
+ }
+
g_free (cobj->priv);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -1283,6 +1332,13 @@
brasero_tray_icon_set_action (BRASERO_TRAYICON (dialog->priv->tray),
BRASERO_BURN_ACTION_NONE);
+
+ if (dialog->priv->total_time)
+ g_timer_destroy (dialog->priv->total_time);
+
+ dialog->priv->total_time = g_timer_new ();
+ g_timer_start (dialog->priv->total_time);
+
return BRASERO_BURN_OK;
}
@@ -1583,6 +1639,8 @@
static void
brasero_burn_dialog_notify_success (BraseroBurnDialog *dialog)
{
+ gint64 rate;
+ GSList *iter;
BraseroMedia media;
BraseroDrive *drive;
gchar *primary = NULL;
@@ -1633,6 +1691,25 @@
brasero_burn_dialog_activity_stop (dialog, primary);
+ /* show total required time and average speed */
+ rate = 0;
+ if (dialog->priv->rates) {
+ int num = 0;
+
+ for (iter = dialog->priv->rates; iter; iter = iter->data) {
+ rate += GPOINTER_TO_INT (iter->data);
+ num ++;
+ }
+ rate /= num;
+ }
+
+ brasero_burn_progress_display_session_info (BRASERO_BURN_PROGRESS (dialog->priv->progress),
+ g_timer_elapsed (dialog->priv->total_time, NULL),
+ rate,
+ (media & BRASERO_MEDIUM_DVD),
+ dialog->priv->total_size);
+
+
if (brasero_burn_session_get_input_type (dialog->priv->session, NULL) == BRASERO_TRACK_TYPE_AUDIO) {
GtkWidget *button;
@@ -1717,10 +1794,8 @@
BraseroBurnResult result,
GError *error)
{
- if (dialog->priv->burn) {
- g_object_unref (dialog->priv->burn);
- dialog->priv->burn = NULL;
- }
+ if (dialog->priv->total_time)
+ g_timer_stop (dialog->priv->total_time);
brasero_burn_session_stop (dialog->priv->session);
@@ -1747,6 +1822,21 @@
brasero_burn_dialog_notify_success (dialog);
}
+ if (dialog->priv->burn) {
+ g_object_unref (dialog->priv->burn);
+ dialog->priv->burn = NULL;
+ }
+
+ if (dialog->priv->rates) {
+ g_slist_free (dialog->priv->rates);
+ dialog->priv->rates = NULL;
+ }
+
+ if (dialog->priv->total_time) {
+ g_timer_destroy (dialog->priv->total_time);
+ dialog->priv->total_time = NULL;
+ }
+
return FALSE;
}
Modified: trunk/src/brasero-progress.c
==============================================================================
--- trunk/src/brasero-progress.c (original)
+++ trunk/src/brasero-progress.c Fri Aug 22 19:00:16 2008
@@ -189,6 +189,108 @@
gtk_widget_show_all (table);
}
+void
+brasero_burn_progress_display_session_info (BraseroBurnProgress *obj,
+ glong time,
+ gint64 rate,
+ gboolean is_DVD,
+ gint written)
+{
+ GtkWidget *label;
+ GtkWidget *table;
+ int hrs, mn, sec;
+ gdouble speed;
+ gchar *text;
+
+ if (obj->priv->speed_time_info)
+ gtk_widget_destroy (obj->priv->speed_time_info);
+
+ table = gtk_table_new (2, 2, FALSE);
+ obj->priv->speed_time_info = table;
+ gtk_container_set_border_width (GTK_CONTAINER (table), 0);
+
+ label = gtk_label_new (_("Total time:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 1.0);
+ gtk_table_attach (GTK_TABLE (table), label,
+ 0,
+ 1,
+ 0,
+ 1,
+ GTK_EXPAND|GTK_FILL,
+ GTK_EXPAND|GTK_FILL,
+ 0,
+ 0);
+
+ hrs = time / 3600;
+ time = ((int) time) % 3600;
+ mn = time / 60;
+ sec = ((int) time) % 60;
+
+ text = g_strdup_printf ("%02i:%02i:%02i", hrs, mn, sec);
+ obj->priv->time = gtk_label_new (text);
+ g_free (text);
+
+ gtk_misc_set_alignment (GTK_MISC (obj->priv->time), 1.0, 1.0);
+ gtk_table_attach (GTK_TABLE (table), obj->priv->time,
+ 1,
+ 2,
+ 0,
+ 1,
+ GTK_FILL,
+ GTK_FILL,
+ 0,
+ 0);
+ if (rate > 0) {
+ label = gtk_label_new (_("Average drive speed:"));
+ gtk_misc_set_alignment (GTK_MISC (label), 0.0, 1.0);
+ gtk_table_attach (GTK_TABLE (table), label,
+ 0,
+ 1,
+ 1,
+ 2,
+ GTK_EXPAND|GTK_FILL,
+ GTK_EXPAND|GTK_FILL,
+ 0,
+ 0);
+
+ if (is_DVD)
+ speed = (gfloat) BRASERO_RATE_TO_SPEED_DVD (rate);
+ else
+ speed = (gfloat) BRASERO_RATE_TO_SPEED_CD (rate);
+
+ text = g_strdup_printf ("%"G_GINT64_FORMAT" KiB/s (%.1f x)", rate / 1024, speed);
+ obj->priv->speed = gtk_label_new (text);
+ g_free (text);
+
+ gtk_misc_set_alignment (GTK_MISC (obj->priv->speed), 1.0, 0.0);
+ gtk_table_attach (GTK_TABLE (table), obj->priv->speed,
+ 1,
+ 2,
+ 1,
+ 2,
+ GTK_FILL,
+ GTK_FILL,
+ 0,
+ 0);
+ }
+
+ gtk_box_pack_start (GTK_BOX (obj), table, TRUE, TRUE, 20);
+ gtk_widget_show_all (table);
+
+ if (written > 1024 * 1024)
+ text = g_strdup_printf (_("%i MiB"), written / 1024 / 1024);
+ else if (written > 1024)
+ text = g_strdup_printf (_("%i kiB"), written / 1024);
+ else if (written > 0)
+ text = g_strdup_printf (_("%i bytes"), written);
+ else
+ return;
+
+ gtk_label_set_text (GTK_LABEL (obj->priv->bytes_written), text);
+ gtk_widget_show (obj->priv->bytes_written);
+ g_free (text);
+}
+
static void
brasero_burn_progress_set_property (GObject *object,
guint property_id,
Modified: trunk/src/brasero-progress.h
==============================================================================
--- trunk/src/brasero-progress.h (original)
+++ trunk/src/brasero-progress.h Fri Aug 22 19:00:16 2008
@@ -71,6 +71,12 @@
gint mb_isosize,
gint mb_written,
gint64 rate);
+void
+brasero_burn_progress_display_session_info (BraseroBurnProgress *progress,
+ glong time,
+ gint64 rate,
+ gboolean is_DVD,
+ gint mb_written);
void
brasero_burn_progress_set_action (BraseroBurnProgress *progress,
Modified: trunk/src/burn.c
==============================================================================
--- trunk/src/burn.c (original)
+++ trunk/src/burn.c Fri Aug 22 19:00:16 2008
@@ -1213,15 +1213,21 @@
g_return_val_if_fail (BRASERO_BURN (burn), BRASERO_BURN_ERR);
priv = BRASERO_BURN_PRIVATE (burn);
- if (!priv->task || !brasero_task_is_running (priv->task))
+
+ if (!priv->task)
+ return BRASERO_BURN_NOT_READY;
+
+ if (isosize)
+ brasero_task_ctx_get_session_output_size (BRASERO_TASK_CTX (priv->task),
+ NULL,
+ isosize);
+
+ if (!brasero_task_is_running (priv->task))
return BRASERO_BURN_NOT_READY;
if (rate)
brasero_task_ctx_get_rate (BRASERO_TASK_CTX (priv->task), rate);
- if (isosize)
- brasero_task_ctx_get_session_output_size (BRASERO_TASK_CTX (priv->task), NULL, isosize);
-
if (written)
brasero_task_ctx_get_written (BRASERO_TASK_CTX (priv->task), written);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]