wmmixer patches
This commit is contained in:
		
							parent
							
								
									17283d07a2
								
							
						
					
					
						commit
						02b63cb41c
					
				
					 9 changed files with 51 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -82,3 +82,11 @@ Release 1.5   25 Jun 2002 Several fixes (really open mixer device given
 | 
			
		|||
                          set volume below 0)
 | 
			
		||||
                          Shaded LED-Bar
 | 
			
		||||
                          Initial Exception Handling
 | 
			
		||||
 | 
			
		||||
Release 1.6   13 Jul 2011 Support of multiple config files to run multiple
 | 
			
		||||
                          instances of wmmixer. Hurd support. Support of
 | 
			
		||||
                          XClasses. These patches was created first in Debian
 | 
			
		||||
                          01_restore_pristine_code.patch
 | 
			
		||||
                          02_multiple_config_files.patch
 | 
			
		||||
                          03_hurd_support.patch
 | 
			
		||||
                          04_xclass_support.patch
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,10 +82,10 @@ The effect this has is to enable shape support (it implies "-s"), and
 | 
			
		|||
to reduce the size of the window to 56x56 pixels.
 | 
			
		||||
The "-position position" option has also been added, so you can push
 | 
			
		||||
wmcdplay off the edge of the screen while it gets swallowed.
 | 
			
		||||
To put wmmount in your Wharf, add the following line in the appropriate
 | 
			
		||||
To put wmmixer in your Wharf, add the following line in the appropriate
 | 
			
		||||
part of your .steprc
 | 
			
		||||
 | 
			
		||||
*Wharf wmmixer nil MaxSwallow "wmmount" wmmixer -a -g -0-0 &
 | 
			
		||||
*Wharf wmmixer nil MaxSwallow "wmmixer" wmmixer -a -g -0-0 &
 | 
			
		||||
 | 
			
		||||
It is also possible (by editing and recompiling the afterstep sources),
 | 
			
		||||
to make Wharf handle the new 56x56 pixel window properly - yes, I add
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,4 +37,4 @@ class MixerDeviceException : public Exception
 | 
			
		|||
  //  virtual ~MixerDeviceException();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif _exception_h__
 | 
			
		||||
#endif //_exception_h__
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -243,16 +243,16 @@ char* MixCtl::getLabel(int dev)
 | 
			
		|||
//----------------------------------------------------------------------
 | 
			
		||||
bool MixCtl::hasChanged()
 | 
			
		||||
{
 | 
			
		||||
  struct mixer_info mixer_info;
 | 
			
		||||
  ioctl(mixfd, SOUND_MIXER_INFO, &mixer_info);
 | 
			
		||||
  struct mixer_info mixer_info1;
 | 
			
		||||
  ioctl(mixfd, SOUND_MIXER_INFO, &mixer_info1);
 | 
			
		||||
     
 | 
			
		||||
  if (mixer_info.modify_counter == modify_counter)
 | 
			
		||||
  if (mixer_info1.modify_counter == modify_counter)
 | 
			
		||||
    {
 | 
			
		||||
      return false;
 | 
			
		||||
    }
 | 
			
		||||
  else 
 | 
			
		||||
    {
 | 
			
		||||
      modify_counter = mixer_info.modify_counter;
 | 
			
		||||
      modify_counter = mixer_info1.modify_counter;
 | 
			
		||||
      return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,12 +23,15 @@
 | 
			
		|||
#ifdef __NetBSD__
 | 
			
		||||
#include <soundcard.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __FreeBSD__
 | 
			
		||||
#include <machine/soundcard.h>
 | 
			
		||||
#if defined (__FreeBSD__) || defined(__FreeBSD_kernel__)
 | 
			
		||||
#include <sys/soundcard.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
#include <linux/soundcard.h>
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef __GNU__  // Hurd
 | 
			
		||||
#include <sys/soundcard.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "exception.h"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
// Release 1.5
 | 
			
		||||
// Copyright (C) 1998  Sam Hawker <shawkie@geocities.com>
 | 
			
		||||
// Copyright (C) 2002 Gordon Fraser <gordon@debian.org>
 | 
			
		||||
// Patch added by Rodolfo (kix) Garcia <kix@kix.es> to select the config file
 | 
			
		||||
// This software comes with ABSOLUTELY NO WARRANTY
 | 
			
		||||
// This software is free software, and you are welcome to redistribute it
 | 
			
		||||
// under certain conditions
 | 
			
		||||
| 
						 | 
				
			
			@ -234,10 +235,14 @@ void WMMixer::parseArgs(int argc, char **argv)
 | 
			
		|||
    {"led-highcolor",  1, NULL, 'L'},
 | 
			
		||||
    {"back-color", 1, NULL, 'b'},
 | 
			
		||||
    {"mix-device", 1, NULL, 'm'},
 | 
			
		||||
    {"config-file", 1, NULL, 'c'},
 | 
			
		||||
    {"x-class",    1, NULL, 'x'},
 | 
			
		||||
    {"scrollwheel",1, NULL, 'r'},
 | 
			
		||||
    {NULL,         0, NULL, 0  }};
 | 
			
		||||
  int i, opt_index = 0;
 | 
			
		||||
 | 
			
		||||
  // init the config file name
 | 
			
		||||
  snprintf(config_file_, CONFIGFILELEN -1, "%s/.wmmixer", getenv("HOME"));
 | 
			
		||||
 | 
			
		||||
  // For backward compatibility
 | 
			
		||||
  for(i=1; i<argc; i++) 
 | 
			
		||||
| 
						 | 
				
			
			@ -256,7 +261,7 @@ void WMMixer::parseArgs(int argc, char **argv)
 | 
			
		|||
	}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  while ((i = getopt_long(argc, argv, "hvd:g:wasl:L:b:m:r:", long_opts, &opt_index)) != -1) 
 | 
			
		||||
  while ((i = getopt_long(argc, argv, "hvd:g:wasl:L:b:m:c:x:r:", long_opts, &opt_index)) != -1)
 | 
			
		||||
    {
 | 
			
		||||
      switch (i) 
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -295,6 +300,12 @@ void WMMixer::parseArgs(int argc, char **argv)
 | 
			
		|||
	case 'm':
 | 
			
		||||
	  sprintf(mixer_device_, "%s", optarg);
 | 
			
		||||
	  break;
 | 
			
		||||
	case 'c':
 | 
			
		||||
	  snprintf(config_file_, CONFIGFILELEN -1, "%s", optarg);
 | 
			
		||||
	  break;
 | 
			
		||||
	case 'x':
 | 
			
		||||
	  xhandler_->setWindowClass(optarg);
 | 
			
		||||
	  break;
 | 
			
		||||
	case 'r':
 | 
			
		||||
	  if(atoi(optarg)>0)
 | 
			
		||||
	    wheel_scroll_ = atoi(optarg);
 | 
			
		||||
| 
						 | 
				
			
			@ -307,14 +318,12 @@ void WMMixer::parseArgs(int argc, char **argv)
 | 
			
		|||
void WMMixer::readConfigurationFile()
 | 
			
		||||
{
 | 
			
		||||
   FILE *rcfile;
 | 
			
		||||
   char rcfilen[256];
 | 
			
		||||
   char buf[256];
 | 
			
		||||
   int done;
 | 
			
		||||
   //   int current=-1;
 | 
			
		||||
   unsigned current = mixctl_->getNrDevices() + 1;
 | 
			
		||||
 | 
			
		||||
   sprintf(rcfilen, "%s/.wmmixer", getenv("HOME"));
 | 
			
		||||
   if((rcfile=fopen(rcfilen, "r"))!=NULL)
 | 
			
		||||
   if((rcfile=fopen(config_file_, "r"))!=NULL)
 | 
			
		||||
     {
 | 
			
		||||
       num_channels_=0;
 | 
			
		||||
       do
 | 
			
		||||
| 
						 | 
				
			
			@ -412,6 +421,8 @@ void WMMixer::displayUsage(const char* name)
 | 
			
		|||
  std::cout << "  -L,  --led-highcolor <string>  use the specified color for led shading" << std::endl;
 | 
			
		||||
  std::cout << "  -b,  --back-color <string>     use the specified color for backgrounds" << std::endl;
 | 
			
		||||
  std::cout << "  -m,  --mix-device              use specified device (rather than /dev/mixer)" << std::endl;
 | 
			
		||||
  std::cout << "  -c,  --config-file             use specified config file (rather than $HOME/.wmmixer)" << std::endl;
 | 
			
		||||
  std::cout << "  -x,  --x-class <string>        use specified class (rather than WMMmixer)" << std::endl;
 | 
			
		||||
  std::cout << "  -r,  --scrollwheel <number>    volume increase/decrease with mouse wheel (default: 2)" << std::endl;
 | 
			
		||||
  std::cout << "\nFor backward compatibility the following obsolete options are still supported:" << std::endl;
 | 
			
		||||
  std::cout << "  -help                          display this help screen" << std::endl;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
// Release 1.5
 | 
			
		||||
// Copyright (C) 1998  Sam Hawker <shawkie@geocities.com>
 | 
			
		||||
// Copyright (C) 2002 Gordon Fraser <gordon@debian.org>
 | 
			
		||||
// Patch added by Rodolfo (kix) Garcia <kix@kix.es> to select the config file
 | 
			
		||||
// This software comes with ABSOLUTELY NO WARRANTY
 | 
			
		||||
// This software is free software, and you are welcome to redistribute it
 | 
			
		||||
// under certain conditions
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +32,7 @@
 | 
			
		|||
 | 
			
		||||
// For repeating next and prev buttons
 | 
			
		||||
#define RPTINTERVAL   5
 | 
			
		||||
 | 
			
		||||
#define CONFIGFILELEN 256
 | 
			
		||||
 | 
			
		||||
class WMMixer
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +42,7 @@ class WMMixer
 | 
			
		|||
  MixCtl *mixctl_;
 | 
			
		||||
 | 
			
		||||
  char     mixer_device_[256];
 | 
			
		||||
  char     config_file_[CONFIGFILELEN];
 | 
			
		||||
  unsigned num_channels_;
 | 
			
		||||
  unsigned current_channel_;
 | 
			
		||||
  unsigned current_channel_left_;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,8 +22,10 @@ XHandler::XHandler()
 | 
			
		|||
  strcpy(ledcolor_name_, LEDCOLOR);
 | 
			
		||||
  strcpy(ledcolor_high_name_, LEDCOLOR_HIGH);
 | 
			
		||||
  strcpy(backcolor_name_, BACKCOLOR);
 | 
			
		||||
  strcpy(window_class_, CLASS);
 | 
			
		||||
 | 
			
		||||
  button_state_ = 0;
 | 
			
		||||
  icon_list_ = NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -333,6 +335,12 @@ void XHandler::setBackColor(char* arg)
 | 
			
		|||
  sprintf(backcolor_name_, "%s", arg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------
 | 
			
		||||
void XHandler::setWindowClass(char* arg)
 | 
			
		||||
{
 | 
			
		||||
  snprintf(window_class_, 254, "%s", arg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------
 | 
			
		||||
void XHandler::setUnshaped()
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -488,7 +496,7 @@ void XHandler::initWindow(int argc, char** argv)
 | 
			
		|||
    }
 | 
			
		||||
  
 | 
			
		||||
  classHint.res_name=NAME;
 | 
			
		||||
  classHint.res_class=CLASS;
 | 
			
		||||
  classHint.res_class = window_class_;
 | 
			
		||||
  
 | 
			
		||||
  XSetClassHint(display_default_, window_main_, &classHint);
 | 
			
		||||
  XSetClassHint(display_default_, window_icon_, &classHint);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -85,6 +85,7 @@ class XHandler
 | 
			
		|||
  char ledcolor_name_[256];
 | 
			
		||||
  char ledcolor_high_name_[256];
 | 
			
		||||
  char backcolor_name_[256];
 | 
			
		||||
  char window_class_[256];
 | 
			
		||||
 | 
			
		||||
  Pixel back_pix;
 | 
			
		||||
  Pixel fore_pix;
 | 
			
		||||
| 
						 | 
				
			
			@ -142,6 +143,7 @@ class XHandler
 | 
			
		|||
  void setLedColor(char* arg);
 | 
			
		||||
  void setLedHighColor(char* arg);
 | 
			
		||||
  void setBackColor(char* arg);
 | 
			
		||||
  void setWindowClass(char* arg);
 | 
			
		||||
  void setUnshaped();
 | 
			
		||||
  void setWindowMaker();
 | 
			
		||||
  void setAfterStep();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue