diff options
author | David Zeuthen <davidz@redhat.com> | 2011-09-29 14:01:05 -0400 |
---|---|---|
committer | David Zeuthen <davidz@redhat.com> | 2011-09-29 14:01:05 -0400 |
commit | 00d936988fda3a7a7b52e66d071bdf358e8408c3 (patch) | |
tree | cb9c0ce96dfb6fe49320c52eb6bf6b7732b09f29 /src/udiskslinuxdrive.c | |
parent | 5669e9258cf001e3c5527c57ef28b1e9376d09e2 (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.c | 25 |
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 |