[PATCH] winemp3.acm: Fixes compilation for older mpg123 library versions

Sebastian Lackner sebastian at fds-team.de
Sun Feb 19 14:12:58 CST 2017


On 19.02.2017 21:05, Sebastian Lackner wrote:
> On 19.02.2017 20:25, Bruno Jesus wrote:
>> On Sun, Feb 19, 2017 at 4:04 PM, Bruno Jesus <00cpxxx at gmail.com> wrote:
>>>
>>> On Sun, Feb 19, 2017 at 3:57 PM, Sebastian Lackner <sebastian at fds-team.de> wrote:
>>>>
>>>> On 19.02.2017 19:54, Bruno Jesus wrote:
>>>>> From: Bruno Jesus <00cpxxx at gmail.com>
>>>>>
>>>>> Fixes bug https://bugs.winehq.org/show_bug.cgi?id=42483
>>>>>
>>>>> Signed-off-by: Bruno Jesus <00cpxxx at gmail.com>
>>>>> ---
>>>>>  dlls/winemp3.acm/mpegl3.c | 2 ++
>>>>>  1 file changed, 2 insertions(+)
>>>>>
>>>>> diff --git a/dlls/winemp3.acm/mpegl3.c b/dlls/winemp3.acm/mpegl3.c
>>>>> index 28a1998..100aa49 100644
>>>>> --- a/dlls/winemp3.acm/mpegl3.c
>>>>> +++ b/dlls/winemp3.acm/mpegl3.c
>>>>> @@ -249,12 +249,14 @@ static  LRESULT MPEG3_StreamOpen(PACMDRVSTREAMINSTANCE adsi)
>>>>>          aad->mh = mpg123_new(NULL,&err);
>>>>>          mpg123_open_feed(aad->mh);
>>>>>
>>>>> +#ifdef MPG123_IGNORE_INFOFRAME
>>>>
>>>> Are you sure this works? On my system it is an enum, not a define.
>>>>
>>>
>>> You are absolutely right, it doesn't. I was a victim of my own "add error inside #ifdef/else and recompile test", probably recompiled before saving.
>>
>> Would you mind helping me understand why the check at [1] fails with:
>>
>> 14734 configure:13848: checking for MPG123_IGNORE_INFOFRAME
>> 14735 configure:13848: ccache gcc-4.6 -m32 -c -g -O0   conftest.c >&5
>> 14736 configure:13848: $? = 0
>> 14737 configure:13848: ccache gcc-4.6 -m32 -c -g -O0   conftest.c >&5
>> 14738 configure:13848: $? = 0
>> 14739 configure:13848: result: no
>>
>> [1] http://pastebin.com/nveZQNDR
>>
>> I never did this sort of change before and the best example I found
>> was some libxml2 stuff inside configure.ac.
>>
>> Thanks in advance,
>> Bruno
>>
> 
> Usually config.log also contains the code which was used for the check.
> In this case, I would assume it fails because MPG123_IGNORE_INFOFRAME
> isn't really a type. The type is "enum mpg123_param_flags", but testing
> for that obviously doesn't make much sense.
> 
> I would suggest a slightly different solution. The commit where the
> feature (including the MPG123_IGNORE_INFOFRAME const) was added is:
> 
> https://www.mpg123.de/cgi-bin/scm/mpg123?view=revision&revision=2910
> https://www.mpg123.de/cgi-bin/scm/mpg123/trunk/src/libmpg123/mpg123.h.in?r1=2910&r2=2909&pathrev=2910
> 
> As you can see, in the same commit the API_VERSION was bumped to 31.
> 
> https://www.mpg123.de/cgi-bin/scm/mpg123/trunk/configure.ac?r1=2910&r2=2909&pathrev=2910
> 
> So why not just something like:
> 
> #if MPG123_API_VERSION >= 31 /* needed for MPG123_IGNORE_FRAMEINFO */
> 
> Best regards,
> Sebastian
> 

I just checked, and Ubuntu Precise ships header files with:
"#define MPG123_API_VERSION 25"
So such a solution would indeed fix the issue. Alternatively you could
of course also define the missing enum for API_VERSION < 31.




More information about the wine-devel mailing list