[alsa-devel] [Pkg-alsa-devel] Bug#450805: alsa-tools-gui: hdspmixer initializes only first Hammerfall DSP card

Takashi Iwai tiwai at suse.de
Wed Nov 14 09:12:36 CET 2007


At Tue, 13 Nov 2007 19:56:00 +0100,
Elimar Riesebieter wrote:
> 
> forwarded 450805 alsa-devel at alsa-project.org
> tags 450805 pending patch

Yes, the patch looks useful.  Now applied to ALSA HG tree.
Thanks!


Takashi

> 
> Thanks
> 
> Hi ALSA developers,
> 
> does it make sense to apply the patch to HEAD? I don't have a
> Hammerfall handy and can not test it.
> 
> Thanks for cooperation.
> 
> Elimar
> 
> 
> On Sun, 11 Nov 2007 the mental interface of
> Frank Heckenbach told:
> 
> Package: alsa-tools-gui
> Version: 1.0.13-1
> Severity: normal
> Tags: patch
> 
> 
> We are using Hammerfall DSP cards. After booting, their audio output
> remains silent until hdspmixer is started. No interaction in the GUI
> of hdspmixer is necessary to unmute the first HDSP card; however,
> further cards are only unmuted when activating the respective GUI
> page ("2", "3"). Apparently, hdspmixer does some automatic
> initialization of the card when activating the page.
> 
> Since we'd like to have a fully automatic startup, the following
> patch activates the page for each existing card on startup, thereby
> initializing them. There are surely more elegant solutions, but this
> patch is tested and solves the problem for us.
> 
> --- alsa-tools-1.0.13/hdspmixer/src/HDSPMixerCardSelector.h.orig	2007-04-16 19:49:22.000000000 +0200
> +++ alsa-tools-1.0.13/hdspmixer/src/HDSPMixerCardSelector.h	2007-04-16 19:50:51.000000000 +0200
> @@ -37,6 +37,7 @@
>      int card;
>      HDSPMixerWindow *basew;
>      HDSPMixerCardSelector(int x, int y, int w, int h, int card);
> +    void ActivateCard (int i);
>      void draw();
>      int handle(int e);
>  };
> --- alsa-tools-1.0.13/hdspmixer/src/HDSPMixerCardSelector.cxx.orig	2007-04-16 19:49:23.000000000 +0200
> +++ alsa-tools-1.0.13/hdspmixer/src/HDSPMixerCardSelector.cxx	2007-04-16 19:53:45.000000000 +0200
> @@ -45,27 +45,25 @@
>      }    
>  }
>  
> +void HDSPMixerCardSelector::ActivateCard (int i)
> +{
> +  card = i + 1;
> +  basew->current_card = i;
> +  basew->cards[i]->setMode (basew->cards[i]->getSpeed ());
> +  redraw ();
> +}
> +
>  int HDSPMixerCardSelector::handle(int e)
>  {
>      int xpos = Fl::event_x()-x();
>      switch (e) {
>  	case FL_PUSH:
> -	    if (xpos < 13 && card != 1) {
> -		    card = 1;
> -		    basew->current_card = 0;
> -		    basew->cards[0]->setMode(basew->cards[0]->getSpeed());
> -		    redraw();
> -	    } else if (xpos >= 24 && xpos < 37 && card != 2 && basew->cards[1] != NULL) {
> -		    card = 2;
> -		    basew->current_card = 1;
> -		    basew->cards[1]->setMode(basew->cards[1]->getSpeed());
> -		    redraw();
> -	    } else if (xpos >= 48 && card != 3 && basew->cards[2] != NULL) {
> -		    card = 3;
> -		    basew->current_card = 2;
> -		    basew->cards[2]->setMode(basew->cards[2]->getSpeed());
> -		    redraw();
> -	    }
> +	    if (xpos < 13 && card != 1)
> +	      ActivateCard (0);
> +	    else if (xpos >= 24 && xpos < 37 && card != 2 && basew->cards[1] != NULL)
> +	      ActivateCard (1);
> +	    else if (xpos >= 48 && card != 3 && basew->cards[2] != NULL)
> +	      ActivateCard (2);
>  	    return 1;
>  	default:
>  	    return Fl_Widget::handle(e);
> --- alsa-tools-1.0.13/hdspmixer/src/HDSPMixerWindow.cxx.orig	2007-04-16 19:41:21.000000000 +0200
> +++ alsa-tools-1.0.13/hdspmixer/src/HDSPMixerWindow.cxx	2007-04-16 19:55:13.000000000 +0200
> @@ -700,6 +701,9 @@
>      Fl::atclose = atclose_cb;
>      Fl::add_handler(handler_cb);
>      Fl::add_timeout(0.030, readregisters_cb, this);
> +    i = 0;
> +    while (cards[i] != NULL)
> +      inputs->buttons->cardselector->ActivateCard (i++);
>  }
>  
>  int HDSPMixerWindow::handle(int e) 
> 
> -- 
>   Experience is something you don't get until 
>   just after you need it!
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list