[vlc-devel] [PATCH] npapi: Changed files to be compilable by VC.

Rafaël Carré funman at videolan.org
Mon Nov 21 18:16:28 CET 2011


Le Mon, 21 Nov 2011 14:29:24 +0700,
Sergey Radionov <rsatom at gmail.com> a écrit :

> 
> 
> 21.11.2011 13:26, Rafaël Carré пишет:
> >> +#ifdef _MSC_VER
> >> +const NPUTF8 * const LibvlcDeinterlaceNPObject::propertyNames[] = {
> >> +    ""
> >> +};
> >> +const int LibvlcDeinterlaceNPObject::propertyCount=0;
> >> +#else
> >>    const NPUTF8 * const LibvlcDeinterlaceNPObject::propertyNames[] = {
> >>    };
> >>    enum LibvlcDeinterlaceNPObjectPropertyIds {
> >>    };
> >>    COUNTNAMES(LibvlcDeinterlaceNPObject,propertyCount,propertyNames);
> >> +#endif //_MSC_VER
> >>
> >> problem is that VC not able create zero length arrays.
> >> so we need create array with some dummy item (it can be any string, including zero lengh string, or
> >> simply NULL, it does not matter), but propertyCount set to 0, to satisfy original logic.
> >>
> >> anticipating you next question, I say  that we must define propertyNames and propertyCount, as
> >> LibvlcDeinterlaceNPObject used in templates that need it.
> >
> > Ok, if a dummy array works, we might as well use it in all cases to avoid #ifdef hell
> but what about COUNTNAMES macro? if array will have dummy item, then it return 1, instead of 0...



> > Just add a comment saying why we do that.
> > e.g. // MSVC++ doesn't support zero length arrays, as of version XXXX
> >
> >>> - mingw-w64 also includes npapi.h (I guess mingw32 is just broken), but
> >>> gcc fetches npapi.h from the correct path if we give it with -I
> >>
> >> In visual studio (at least in VS2008 and early), paths to libs usially not defined directly in
> >> solution, but it defines in IDE. But IDE already have path to Windows SDK in the first place, so
> >> SDK's npapi.h founded first. But we can't move gecko sdk to first place in IDE, as then we can broke
> >> compilation of other projects than include npapi.h from Windows SDK.
> >> So we need include some header with unique name, that include npapi.h by self.
> >
> > Ha I see npfunctions has a #include "" and not<>
> I think it is only mistyping, but I am not shure, thats why I am not fix it.

Well it's part of gecko SDK so we won't change it, perhaps they used "" just because of
conflict with Windows header.

> > Same than above, just use npfunctions everywhere with
> > // Include npfunctions to avoid including Windows' own npapi.h
> >
> >>> - why do you need config.h at all? It only contains the const or not
> >>> const prefix for the function which recently changed prototype.
> >> In VS solution I make substitution of original config.h by my own config.h, which now is:
> >
> > Hm right you had explained that already sorry.
> >
> > You could add -Dsnprintf=_snprintf and likes to the VC project but if we need more config
> > options it will soon get very long so I am not sure what's the best to do.
> No, I can't. There are too many versions of Visual Stuio, and each of could have there own 
> solution/project/workspace. So, I think the best way is to have single config.h than multiple 
> definitions in different places.

OK

-- 
Rafaël Carré



More information about the vlc-devel mailing list