Re: [PATCH 1/2] ASoC: Add support for Conexant CX2072X CODEC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 03 May 2019 08:47:29 +0200,
Mark Brown wrote:
> 
> > > > +#define cx2072x_plbk_eq_en_info		snd_ctl_boolean_mono_info
> 
> > > Why not just use the function directly rather than hiding it?
> 
> > Just a standard idiom.  Can be replaced if preferred.
> 
> Please.

BTW, a good reason for the style above is that it makes code more
undrestandable.  For defining a ctl element, typically we define three
callback functions, info, get and put, in that order:

static int foo_info()
{
	....
}

static int foo_get()
{
	....
}

static int foo_put()
{
	...
};

and often the actual snd_kcontrol_new table containing these callbacks
appears much later, where you'd need to scroll down a few screens to
read that point.

In the above, especially defining the info callback at the beginning
is important.  By reading foo_init() at first, readers can know which
type (int, boolean, enum, etc) and the number of elements to be used
in get/put callbacks beforehand.  It's a commonly seen mistake, for
example, that a wrong type (e.g. integer) is passed to info callback
while enum type is used in the get/put.

The #define above keeps this foo_info() definition while optimizing
with the standard helper.  If we drop this and set
snd_ctl_boolean_mono_info directly in the snd_kcontrol_new entry,
you'll have to go and back the screen just to take a look at the info
callback.

That's why I called it a standard idiom.  It's not strictly necessary,
but often help reading / reviewing the code.  Though, it's just
another bikeshed theme, so I'm not sticking with this style.


thanks,

Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux