Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Apr 2009 22:34:45 -0700 (PDT)
From:      baileygeoff@telus.net
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        mich@FreeBSD.org
Subject:   ports/133413: [patch] sysctls/libcdio-0.78.2 is broken for CDROM's that don't support media-changed notification.
Message-ID:  <200904060534.n365YjZq001533@uzyod.ca>
Resent-Message-ID: <200904060600.n36605Ze005538@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         133413
>Category:       ports
>Synopsis:       [patch]  sysctls/libcdio-0.78.2 is broken for CDROM's that don't support media-changed notification.
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Apr 06 06:00:05 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Geoff Bailey <baileygeoff@telus.net>
>Release:        FreeBSD 7.1-RELEASE i386
>Organization:
>Environment:
sysctls/libcdio-0.78.2_2 used by multimedia/audacious-1.5.1_3
System:         FreeBSD uzyod 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 14:37:25 UTC 2009 root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386

>Description:
1. The function get_media_changed_freebsd(), in lib/driver/FreeBSD/freebsd.c,
   returns DRIVER_OP_UNSUPPORTED for my NEC-28D CDROM device. The lshal program
   shows: 'storage.cdrom.support_media_changed = false' for this device.

   This causes the Audacious Media Player's cdaudio-ng plugin to only load the
   first track of a CD in the playlist.

   The problem is solved if this function returns 0 (not changed) for
   unsupported devices instead of DRIVER_OP_UNSUPPORTED. While the player
   may not be able to detect media changes under these circumstances, it
   at least remains functional for older drives.

   I have attached 'patch-lib_driver_FreeBSD_freebsd.c' which makes the 
   the requested change. It also adds a few lines to set access_mode='ioctl'
   if the atapi (/dev/acd0) driver is being used by the the application.

2. The  read_audio_sectors_freebsd_ioctl() function, in 
   lib/driver/FreeBSD/freebsd_ioctl.c, calls the CDIOCREADAUDIO ioctl, which
   has been deprecated for some time. However, this call can be easily replaced
   with a CDRIOCSETBLOCKSIZE ioctl call followed by a pread() call.

   Since the atapicd driver is in the generic kernel and the atapicam
   driver module must be explicitly loaded, this simple fix to the atapi
   ioctl interface will allow programs (such as Audacious) to function 
   'out of the box'.

   I have attached 'patch-lib_driver_FreeBSD_freebsd_ioctl.c' which makes
   the requested changes.

>How-To-Repeat:

>Fix:
	please see atached patches:
		'patch-lib_driver_FreeBSD_freebsd.c'
		'patch-lib_driver_FreeBSD_freebsd_ioctl.c'
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904060534.n365YjZq001533>