[Goodies-commits] r4551 - xfburn/trunk/xfburn
David Mohr
squisher at xfce.org
Sun Apr 13 23:29:04 CEST 2008
Author: squisher
Date: 2008-04-13 21:29:04 +0000 (Sun, 13 Apr 2008)
New Revision: 4551
Modified:
xfburn/trunk/xfburn/xfburn-device-list.c
Log:
Sort speed list, added fallback value if no list is available (fixes bug #4012)
Modified: xfburn/trunk/xfburn/xfburn-device-list.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-device-list.c 2008-04-13 21:14:02 UTC (rev 4550)
+++ xfburn/trunk/xfburn/xfburn-device-list.c 2008-04-13 21:29:04 UTC (rev 4551)
@@ -67,6 +67,12 @@
return TRUE;
}
+/* sort the speed list in ascending order */
+static gint cmp_ints (gconstpointer a, gconstpointer b)
+{
+ return GPOINTER_TO_INT(a) - GPOINTER_TO_INT(b);
+}
+
static void
refresh_supported_speeds (XfburnDevice * device, struct burn_drive_info *drive_info)
{
@@ -83,22 +89,22 @@
/* fill new list */
ret = burn_drive_get_speedlist (drive_info->drive, &speed_list);
- /* retrieve media type, so we can convert from 'kb/s' into 'x' rating */
- if (burn_disc_get_profile(drive_info->drive, &media_no, media_name) == 1) {
- /* this will fail if newer disk types get supported */
- if (media_no <= 0x0a)
- factor = CDR_1X_SPEED;
- else
- /* assume DVD for now */
- factor = DVD_1X_SPEED;
- } else {
- g_warning ("no profile could be retrieved to calculate speed");
- factor = 1;
- }
-
if (ret > 0) {
struct burn_speed_descriptor *el = speed_list;
+ /* retrieve media type, so we can convert from 'kb/s' into 'x' rating */
+ if (burn_disc_get_profile(drive_info->drive, &media_no, media_name) == 1) {
+ /* this will fail if newer disk types get supported */
+ if (media_no <= 0x0a)
+ factor = CDR_1X_SPEED;
+ else
+ /* assume DVD for now */
+ factor = DVD_1X_SPEED;
+ } else {
+ g_warning ("no profile could be retrieved to calculate speed");
+ factor = 1;
+ }
+
while (el) {
gint speed = -1;
@@ -113,9 +119,12 @@
el = el->next;
}
- burn_drive_free_speedlist (&speed_list);
+ burn_drive_free_speedlist (&speed_list);
+ device->supported_cdr_speeds = g_slist_sort (device->supported_cdr_speeds, &cmp_ints);
} else if (ret == 0) {
g_warning ("reported speed list is empty");
+
+ device->supported_cdr_speeds = g_slist_prepend (device->supported_cdr_speeds, GINT_TO_POINTER (0));
} else {
g_error ("severe error while retrieving speed list");
}
More information about the Goodies-commits
mailing list