brasero r718 - in trunk: . src
- From: philippr svn gnome org
- To: svn-commits-list gnome org
- Subject: brasero r718 - in trunk: . src
- Date: Tue, 15 Apr 2008 08:57:31 +0100 (BST)
Author: philippr
Date: Tue Apr 15 08:57:31 2008
New Revision: 718
URL: http://svn.gnome.org/viewvc/brasero?rev=718&view=rev
Log:
fix #525501 â Brasero displays odd burning speeds (1-3-5-etc) instead of even values (2-4-8-etc)
display only list of speeds returned by drive (there can be only one sometimes) instead of
making up some with a 2 increment
* src/brasero-dest-selection.c
(brasero_dest_selection_save_drive_properties),
(brasero_dest_selection_set_drive_properties):
* src/brasero-drive-properties.c
(brasero_drive_properties_format_disc_speed),
(brasero_drive_properties_set_drive):
* src/burn-medium.c (brasero_medium_get_write_speeds),
(brasero_medium_init_real):
* src/burn-medium.h:
Modified:
trunk/ChangeLog
trunk/src/brasero-dest-selection.c
trunk/src/brasero-drive-properties.c
trunk/src/burn-medium.c
trunk/src/burn-medium.h
Modified: trunk/src/brasero-dest-selection.c
==============================================================================
--- trunk/src/brasero-dest-selection.c (original)
+++ trunk/src/brasero-dest-selection.c Tue Apr 15 08:57:31 2008
@@ -103,7 +103,6 @@
GConfClient *client;
const gchar *path;
guint64 rate;
- guint speed;
gchar *key;
priv = BRASERO_DEST_SELECTION_PRIVATE (self);
@@ -111,18 +110,13 @@
client = gconf_client_get_default ();
rate = brasero_burn_session_get_rate (priv->session);
- if (brasero_burn_session_get_dest_media (priv->session) & BRASERO_MEDIUM_DVD)
- speed = BRASERO_RATE_TO_SPEED_DVD (rate);
- else
- speed = BRASERO_RATE_TO_SPEED_CD (rate);
-
key = brasero_burn_session_get_config_key (priv->session, "speed");
if (!key) {
g_object_unref (client);
return;
}
- gconf_client_set_int (client, key, speed, NULL);
+ gconf_client_set_int (client, key, rate / 1024, NULL);
g_free (key);
key = brasero_burn_session_get_config_key (priv->session, "flags");
@@ -875,12 +869,8 @@
if (!value)
rate = brasero_medium_get_max_write_speed (medium);
- else if (brasero_medium_get_status (medium) & BRASERO_MEDIUM_DVD) {
- rate = BRASERO_SPEED_TO_RATE_DVD (gconf_value_get_int (value));
- gconf_value_free (value);
- }
else {
- rate = BRASERO_SPEED_TO_RATE_CD (gconf_value_get_int (value));
+ rate = gconf_value_get_int (value) * 1024;
gconf_value_free (value);
}
Modified: trunk/src/brasero-drive-properties.c
==============================================================================
--- trunk/src/brasero-drive-properties.c (original)
+++ trunk/src/brasero-drive-properties.c Tue Apr 15 08:57:31 2008
@@ -246,13 +246,13 @@
gchar *text;
if (media & BRASERO_MEDIUM_DVD)
- text = g_strdup_printf (_("%d x (DVD)"),
+ text = g_strdup_printf (_("%.1f x (DVD)"),
BRASERO_RATE_TO_SPEED_DVD (rate));
else if (media & BRASERO_MEDIUM_CD)
- text = g_strdup_printf (_("%d x (CD)"),
+ text = g_strdup_printf (_("%.1f x (CD)"),
BRASERO_RATE_TO_SPEED_CD (rate));
else
- text = g_strdup_printf (_("%d x (DVD) %d x (CD)"),
+ text = g_strdup_printf (_("%.1f x (DVD) %.1f x (CD)"),
BRASERO_RATE_TO_SPEED_DVD (rate),
BRASERO_RATE_TO_SPEED_CD (rate));
@@ -270,12 +270,11 @@
GtkTreeModel *model;
gchar *display_name;
GtkTreeIter iter;
- gint64 max_rate;
- gchar *header;
- gint64 rate;
- gint64 step;
gchar *max_text;
+ gint64 *rates;
+ gchar *header;
gchar *text;
+ guint i;
priv = BRASERO_DRIVE_PROPERTIES_PRIVATE (self);
@@ -290,12 +289,7 @@
/* Speed combo */
medium = brasero_drive_get_medium (drive);
media = brasero_medium_get_status (medium);
- max_rate = brasero_medium_get_max_write_speed (medium);
- if (media & BRASERO_MEDIUM_CD)
- step = CD_RATE;
- else
- step = DVD_RATE;
-
+ rates = brasero_medium_get_write_speeds (medium);
model = gtk_combo_box_get_model (GTK_COMBO_BOX (priv->speed));
max_text = g_strdup_printf (_("Max speed"));
@@ -303,26 +297,42 @@
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
PROP_TEXT, max_text,
- PROP_RATE, max_rate,
+ PROP_RATE, rates [0],
-1);
g_free (max_text);
- gtk_combo_box_set_active (GTK_COMBO_BOX (priv->speed), 0);
-
- for (rate = max_rate - step; rate > step; rate -= step * 2) {
- GtkTreeIter iter;
-
- text = brasero_drive_properties_format_disc_speed (media, rate);
+ /* fill model */
+ for (i = 0; rates [i] != 0; i ++) {
+ text = brasero_drive_properties_format_disc_speed (media, rates [i]);
gtk_list_store_append (GTK_LIST_STORE (model), &iter);
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
PROP_TEXT, text,
- PROP_RATE, rate,
+ PROP_RATE, brasero_medium_get_max_write_speed (medium),
-1);
g_free (text);
+ }
+
+ /* Set active one preferably max speed */
+ gtk_tree_model_get_iter_first (model, &iter);
+ do {
+ gint64 rate;
+
+ gtk_tree_model_get (model, &iter,
+ PROP_RATE, &rate,
+ -1);
/* we do this to round things and get the closest possible speed */
- if ((rate / step) == (default_rate / step))
+ if ((rate / 1024) == (default_rate / 1024)) {
gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->speed), &iter);
+ break;
+ }
+
+ } while (gtk_tree_model_iter_next (model, &iter));
+
+ /* make sure at least one is active */
+ if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (priv->speed), &iter)) {
+ gtk_tree_model_get_iter_first (model, &iter);
+ gtk_combo_box_set_active_iter (GTK_COMBO_BOX (priv->speed), &iter);
}
}
Modified: trunk/src/burn-medium.c
==============================================================================
--- trunk/src/burn-medium.c (original)
+++ trunk/src/burn-medium.c Tue Apr 15 08:57:31 2008
@@ -358,6 +358,25 @@
return priv->max_wrt * 1024;
}
+gint64 *
+brasero_medium_get_write_speeds (BraseroMedium *medium)
+{
+ BraseroMediumPrivate *priv;
+ gint64 *speeds;
+ guint max = 0;
+ guint i;
+
+ priv = BRASERO_MEDIUM_PRIVATE (medium);
+
+ while (priv->wr_speeds [max] != 0) max ++;
+
+ speeds = g_new0 (gint64, max + 1);
+ for (i = 0; i < max; i ++)
+ speeds [i] = priv->wr_speeds [i] * 1024;
+
+ return speeds;
+}
+
/**
* NOTEs about the following functions:
* for all closed media (including ROM types) capacity == size of data and
@@ -1953,6 +1972,7 @@
brasero_medium_init_real (BraseroMedium *object,
BraseroDeviceHandle *handle)
{
+ guint i;
gchar *name;
BraseroBurnResult result;
BraseroMediumPrivate *priv;
@@ -1980,6 +2000,24 @@
brasero_medium_get_css_feature (object, handle, &code);
BRASERO_BURN_LOG_DISC_TYPE (priv->info, "media is ");
+
+ if (!priv->wr_speeds)
+ return;
+
+ /* sort write speeds */
+ for (i = 0; priv->wr_speeds [i] != 0; i ++) {
+ guint j;
+
+ for (j = 0; priv->wr_speeds [j] != 0; j ++) {
+ if (priv->wr_speeds [i] < priv->wr_speeds [j]) {
+ gint64 tmp;
+
+ tmp = priv->wr_speeds [i];
+ priv->wr_speeds [i] = priv->wr_speeds [j];
+ priv->wr_speeds [j] = tmp;
+ }
+ }
+ }
}
static gboolean
Modified: trunk/src/burn-medium.h
==============================================================================
--- trunk/src/burn-medium.h (original)
+++ trunk/src/burn-medium.h Tue Apr 15 08:57:31 2008
@@ -37,8 +37,8 @@
#define BRASERO_SPEED_TO_RATE_CD(speed) (guint) ((speed) * CD_RATE)
#define BRASERO_SPEED_TO_RATE_DVD(speed) (guint) ((speed) * DVD_RATE)
-#define BRASERO_RATE_TO_SPEED_CD(rate) (guint) ((rate) / CD_RATE)
-#define BRASERO_RATE_TO_SPEED_DVD(rate) (guint) ((rate) / DVD_RATE)
+#define BRASERO_RATE_TO_SPEED_CD(rate) (gdouble) ((gdouble) (rate) / (gdouble) CD_RATE)
+#define BRASERO_RATE_TO_SPEED_DVD(rate) (gdouble) ((gdouble) (rate) / (gdouble) DVD_RATE)
#define BRASERO_TYPE_MEDIUM (brasero_medium_get_type ())
#define BRASERO_MEDIUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BRASERO_TYPE_MEDIUM, BraseroMedium))
@@ -239,6 +239,9 @@
gint64
brasero_medium_get_max_write_speed (BraseroMedium *medium);
+gint64 *
+brasero_medium_get_write_speeds (BraseroMedium *medium);
+
void
brasero_medium_get_free_space (BraseroMedium *medium,
gint64 *size,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]