summaryrefslogtreecommitdiff
path: root/src/udiskslinuxdrive.c
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2011-09-29 14:01:05 -0400
committerDavid Zeuthen <davidz@redhat.com>2011-09-29 14:01:05 -0400
commit00d936988fda3a7a7b52e66d071bdf358e8408c3 (patch)
treecb9c0ce96dfb6fe49320c52eb6bf6b7732b09f29 /src/udiskslinuxdrive.c
parent5669e9258cf001e3c5527c57ef28b1e9376d09e2 (diff)
Add properties about currently inserted optical media to the drive interface
Signed-off-by: David Zeuthen <davidz@redhat.com>
Diffstat (limited to 'src/udiskslinuxdrive.c')
-rw-r--r--src/udiskslinuxdrive.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/udiskslinuxdrive.c b/src/udiskslinuxdrive.c
index da98af3..8ca3080 100644
--- a/src/udiskslinuxdrive.c
+++ b/src/udiskslinuxdrive.c
@@ -196,6 +196,12 @@ set_media (UDisksDrive *iface,
guint n;
GPtrArray *media_compat_array;
const gchar *media_in_drive;
+ gboolean is_disc = FALSE;
+ gboolean disc_is_blank = FALSE;
+ guint disc_session_count = 0;
+ guint disc_track_count = 0;
+ guint disc_track_count_audio = 0;
+ guint disc_track_count_data = 0;
media_compat_array = g_ptr_array_new ();
for (n = 0; drive_media_mapping[n].udev_property != NULL; n++)
@@ -228,6 +234,25 @@ set_media (UDisksDrive *iface,
udisks_drive_set_media_compatibility (iface, (const gchar* const *) media_compat_array->pdata);
udisks_drive_set_media (iface, media_in_drive);
g_ptr_array_free (media_compat_array, TRUE);
+
+ if (g_udev_device_get_property_as_boolean (device, "ID_CDROM_MEDIA"))
+ {
+ const gchar *state;
+ is_disc = TRUE;
+ state = g_udev_device_get_property (device, "ID_CDROM_MEDIA_STATE");
+ if (g_strcmp0 (state, "blank") == 0)
+ disc_is_blank = TRUE;
+ disc_session_count = g_udev_device_get_property_as_int (device, "ID_CDROM_MEDIA_SESSION_COUNT");
+ disc_track_count = g_udev_device_get_property_as_int (device, "ID_CDROM_MEDIA_TRACK_COUNT");
+ disc_track_count_audio = g_udev_device_get_property_as_int (device, "ID_CDROM_MEDIA_TRACK_COUNT_AUDIO");
+ disc_track_count_data = g_udev_device_get_property_as_int (device, "ID_CDROM_MEDIA_TRACK_COUNT_DATA");
+ }
+ udisks_drive_set_optical (iface, is_disc);
+ udisks_drive_set_optical_blank (iface, disc_is_blank);
+ udisks_drive_set_optical_num_sessions (iface, disc_session_count);
+ udisks_drive_set_optical_num_tracks (iface, disc_track_count);
+ udisks_drive_set_optical_num_audio_tracks (iface, disc_track_count_audio);
+ udisks_drive_set_optical_num_data_tracks (iface, disc_track_count_data);
}
static void