NetBSD Problem Report #48403

From www@NetBSD.org  Sun Nov 24 11:21:58 2013
Return-Path: <www@NetBSD.org>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(Client CN "mail.NetBSD.org", Issuer "Postmaster NetBSD.org" (verified OK))
	by mollari.NetBSD.org (Postfix) with ESMTPS id CB861A61B2
	for <gnats-bugs@gnats.NetBSD.org>; Sun, 24 Nov 2013 11:21:58 +0000 (UTC)
Message-Id: <20131124112156.BE073A61F6@mollari.NetBSD.org>
Date: Sun, 24 Nov 2013 11:21:56 +0000 (UTC)
From: nathanialsloss@yahoo.com.au
Reply-To: nathanialsloss@yahoo.com.au
To: gnats-bugs@NetBSD.org
Subject: multimedia/kscd - Cannot get track count with vlc backend nor reload disc with hal on NetBSD
X-Send-Pr-Version: www-1.0

>Number:         48403
>Category:       pkg
>Synopsis:       multimedia/kscd - Cannot get track count with vlc backend nor reload disc with hal on NetBSD
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    markd
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Nov 24 11:25:00 +0000 2013
>Last-Modified:  Sun Nov 24 11:34:47 +0000 2013
>Originator:     Nat Sloss
>Release:        pkgsrc-2013Q2
>Organization:
>Environment:
NetBSD beast 6.1.1_PATCH NetBSD 6.1.1_PATCH (PCIPAE) #22: Thu Nov 21 23:13:25 EST 2013  build@microrusty:/usr/src/sys/arch/i386/compile/obj/PCIPAE i386
>Description:
If you use kscd for kde 4.10.3 with phonon-backend-vlc you will find that you can select next track beyond the number of tracks on the cd as getavailableTitles only works for video discs and not audio cds in the vlc backend.

Also due to the way hal works on NetBSD audio cds are not reloaded when the disc is changed, so you have to restart kscd when a disc is changed.
>How-To-Repeat:
Insert an audio cd.
Start kscd.
Keep pressing next track beyond the last track on the disc.
Press eject.  (NB: The cd will not eject problem with hal described in another PR)
At a command line type:
cdplay eject to actually eject the disc.
Change to another audio cd.
Check kscd you will find that your new cd is not loaded and you will have to restart kscd.
>Fix:
Apply these patches:

They fallback to the cddb track count (which also works without an internet connection) if querying the phonon backend for available titles returns zero.  Also the cd is reloaded on play if no disc is present/or changed.

--- /dev/null	2013-11-24 21:33:24.000000000 +1100
+++ pkgsrc/multimedia/kscd/patches/patch-hwcontroler.h	2013-11-24 21:52:54.000000000 +1100
@@ -0,0 +1,22 @@
+$NetBSD$
+
+Add MBManager for cddb track count fall back.
+
+--- hwcontroler.h.orig	2013-06-28 17:40:46.000000000 +0000
++++ hwcontroler.h
+@@ -37,6 +37,7 @@
+ #include <phonon/volumeslider.h>
+ 
+ #include "audiocd.h"
++#include "mbmanager.h"
+ 
+ enum LoopMode
+ {
+@@ -82,6 +83,7 @@ class HWControler : public QObject
+ 	public:
+ 		HWControler();
+ 		~HWControler();
++		MBManager* m_MBManager;
+ 		void selectCd(int cdNum);
+ 		void selectSpeaker(int sNum);
+ 		void play(int track);
--- /dev/null	2013-11-24 21:33:24.000000000 +1100
+++ pkgsrc/multimedia/kscd/patches/patch-hwcontroler.cpp	2013-11-24 21:51:53.000000000 +1100
@@ -0,0 +1,71 @@
+$NetBSD$
+
+Get available titles from cddb fallback for phonon-backend-vlc.
+Reload cd in disc is valid for as NetBSD hal does not disable and re-enable the cd drive.
+
+--- hwcontroler.cpp.orig	2013-11-10 10:32:28.000000000 +0000
++++ hwcontroler.cpp
+@@ -131,6 +131,7 @@ void HWControler::play()
+ 			/*if (!random)
+ 			{*/
+ 				mc->setAutoplayTitles(true);
++				mc->setCurrentTitle(getCurrentTrack());
+ 				media->play();
+ 				kDebug() << getCurrentTrack() <<"/"<< getTotalTrack();
+ //			}
+@@ -159,7 +160,7 @@ void HWControler::nextTrack()
+ 		{
+ 			if(!random)
+ 			{
+-				if(mc->currentTitle() == mc->availableTitles())
++				if(mc->currentTitle() == getTotalTrack())
+ 				{
+ 					mc->setCurrentTitle(1);
+ 				}
+@@ -187,7 +188,7 @@ void HWControler::prevTrack()
+ 			{
+ 				if(mc->currentTitle() == 1)
+ 				{
+-					mc->setCurrentTitle(mc->availableTitles());
++					mc->setCurrentTitle(getTotalTrack());
+ 				}
+ 				else
+ 				{
+@@ -445,11 +446,14 @@ int HWControler ::getCurrentTrack()const
+ }
+ int HWControler ::getTotalTrack()const
+ {
++	int allTitles;
+ 	if((selectedCd!=-1))
+ 	{
+ 		if(cdIn[selectedCd]->isCdInserted())
+ 		{
+-			return mc->availableTitles();
++			if (!((allTitles = mc->availableTitles()) > 0))
++				allTitles = m_MBManager->getTrackList().size();
++			return allTitles;
+ 		}
+ 	}
+ 	return 0;
+@@ -500,14 +504,17 @@ void HWControler::setRandom(bool b)
+ 
+ bool HWControler::isDiscValid()
+ {
+-/*	if(getCD()->isCdInserted())
++	if(!getCD()->isCdInserted()) {
++		getCD()->reloadCD();
++	}
++
++	if(getCD()->isCdInserted())
+ 	{
+-		return !(getCD()->getCd()->discType()&0x01) ;
++		return true;
+ 	}
+ 	else
+ 		return false;
+-*/
+-return true;
++
+ }
+ 
+ void HWControler ::loadPlayList()
--- /dev/null	2013-11-24 21:33:24.000000000 +1100
+++ pkgsrc/multimedia/kscd/patches/patch-kscd.cpp	2013-11-24 21:55:16.000000000 +1100
@@ -0,0 +1,33 @@
+$NetBSD$
+
+Initialise MBManager for cddb track count fall back.
+Change stop to stop(false) to stop phonon-backend-vlc from playing track 1 when stop is pressed.
+
+--- kscd.cpp.orig	2013-06-28 17:40:46.000000000 +0000
++++ kscd.cpp
+@@ -73,6 +73,7 @@ KSCD::KSCD( QWidget *parent ) : KscdWind
+ 	{
+ 		m_MBManager->discLookup(devices->getMedia()->currentSource().deviceName());
+ 	}
++	devices->m_MBManager = m_MBManager;
+ 
+ 	setupActions();
+ 	setupContextMenu();
+@@ -617,7 +618,7 @@ void KSCD::actionButton(const QString & 
+ 	{
+ 		if ((devices->getState() == PlayingState)|| (devices->getState() == PausedState))
+ 		{
+-			devices->stop();
++			devices->stop(false);
+ // 			m_slider->stop();
+ 		}
+ 		emit(picture(name,state));
+@@ -629,7 +630,7 @@ void KSCD::actionButton(const QString & 
+ 		emit(picture(name,state));
+ 		if ((devices->getState() == PlayingState)|| (devices->getState() == PausedState))
+ 		{
+-			devices->stop();
++			devices->stop(false);
+ // 			m_slider->stop();
+ 		}
+ 	}

Regards,

Nat.

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: pkg-manager->markd
Responsible-Changed-By: wiz@NetBSD.org
Responsible-Changed-When: Sun, 24 Nov 2013 11:34:47 +0000
Responsible-Changed-Why:
Over to maintainer.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.