[poppler] Openjpeg2 patches: Why de-inline doGetChar?

Adam Reichold adam.reichold at t-online.de
Mon Jan 5 14:02:51 PST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hello,

Am 05.01.2015 um 22:49 schrieb Albert Astals Cid:
> El Dilluns, 5 de gener de 2015, a les 22:29:22, Adam Reichold va
> escriure:
>> Hello again,
>> 
>> Am 05.01.2015 um 21:59 schrieb Albert Astals Cid:
>>> El Dilluns, 5 de gener de 2015, a les 21:46:32, Adam Reichold
>>> va
>>> 
>>> escriure:
>>>> Hello again,
>>>> 
>>>> suggested changes attached as patch.
>>> 
>>> Doesn't compile, init() is not accessible from that static 
>>> function.
>> 
>> Sorry about that, it seems CMake does not find OpenJPEG (1 or 2)
>> at all on my system with the current master, the library is found
>> alright but the includes are "LIBOPENJPEG_INCLUDE_DIR-NOTFOUND"
>> so the file was not compiled at all. Autoconf on the other hand
>> not problems finding at least the preferred OpenJPEG version 1.
> 
> HAve you tried cleaning your cmake build dir? It works fine to me.

It seems for some reason Arch Linux installs the OpenJPEG header only
into "/usr/include/openjpeg-1.5/openjpeg.h" and "find_path" does not
find that, symlinking "/usr/include/openjpeg.h" there works fine.
(Possibly nobody noticed as the package is built using Autoconf?)
(Also I have to correct myself, OpenJPEG version 2 is found correctly.)

Best regards, Adam.

> Cheers, Albert
> 
>> I also attached a fixed patch that moves the lazy-initialization
>> into the entry points which also has the benefit of making the
>> check only once for each call of 'getChars' but is admittedly
>> uglier. (One solution would be to move the 'inited' flag into the
>> class proper instead of the pimpl or even use "priv != NULL" as
>> the initialization condition, but that felt unnecessarily
>> intrusive.)
>> 
>> Best regards, Adam.
>> 
>>> Cheers, Albert
>>> 
>>>> Best regards, Adam.
>>>> 
>>>> Am 05.01.2015 um 21:24 schrieb Adam Reichold:
>>>>> Hello,
>>>>> 
>>>>> Am 04.01.2015 um 23:44 schrieb Albert Astals Cid:
>>>>>> El Dilluns, 5 de gener de 2015, a les 08:53:26, Adrian 
>>>>>> Johnson
>>>>>> 
>>>>>> va escriure:
>>>>>>> On 05/01/15 08:39, Albert Astals Cid wrote:
>>>>>>>> Adrian, any reason you de-inlined doGetChar in the 
>>>>>>>> patches for openjpeg2?
>>>>>>>> 
>>>>>>>> As far as i remember when i made this function inline
>>>>>>>> it got us a not so bad free speed increase.
>>>>>>> 
>>>>>>> When I wrote the patch I moved all openjpeg specific
>>>>>>> types and code into the .cc file. I could not figure
>>>>>>> out how to make an inline function in the .h access
>>>>>>> the JPXStreamPrivate struct that is defined in the .cc
>>>>>>> file.
>>>>>> 
>>>>>> I see :/
>>>>>> 
>>>>>> Cheers, Albert
>>>>> 
>>>>> Looking at the implemenation, both "doGetChar" and 
>>>>> "doLookChar" will always be called inside
>>>>> "JPEG2000Stream.cc" via the virtual methods "getChar(s)"
>>>>> and "lookChar", so I'd say we could just mark the
>>>>> implemenations as "inline" as the compiler can still inline
>>>>> within the compilation unit.
>>>>> 
>>>>> Actually, I think there is no compelling reason to have
>>>>> those present in the header at all, as they always seem to
>>>>> access the data via the "priv" pointer anyway, so I'd say
>>>>> the declarations like
>>>>> 
>>>>> static inline int doGetChar(JPXStreamPrivate* priv);
>>>>> static inline int doLookChar(JPXStreamPrivate* priv);
>>>>> 
>>>>> only within the source file could open even more
>>>>> possibilities for compiler optimizations. (You could
>>>>> probably also make them inline methods of
>>>>> "JPXStreamPrivate" as well, but then the compiler would
>>>>> have to infer the effective linkage. Maybe we could put the
>>>>> whole definition of "JPXStreamPrivate" within the anonymous
>>>>> namespace anyway?)
>>>>> 
>>>>> Best regards, Adam.
>>>>> 
>>>>>>>> Cheers,
>>>>>>>> 
>>>>>>>> Albert
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> poppler mailing list poppler at lists.freedesktop.org 
>>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>>>>>
>>>>>>>
>>>>>>>> 
_______________________________________________ poppler
>>>>>>> mailing list poppler at lists.freedesktop.org 
>>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>>>> 
>>>>>> _______________________________________________ poppler 
>>>>>> mailing list poppler at lists.freedesktop.org 
>>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
>>>>> 
>>>>> _______________________________________________ poppler 
>>>>> mailing list poppler at lists.freedesktop.org 
>>>>> http://lists.freedesktop.org/mailman/listinfo/poppler
> 
> _______________________________________________ poppler mailing
> list poppler at lists.freedesktop.org 
> http://lists.freedesktop.org/mailman/listinfo/poppler
> 
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iQEcBAEBCAAGBQJUqwoGAAoJEPSSjE3STU340SgIAMBUIC/PpPpND/m5MQlVhKac
PVZqwtkXWcKF2xEzwl3bv+xzKQbHYIkuCkUDjvrIzyHCVQjoIzoFDiHyB6PaHLyc
Yy9WNCwx62LreZDWOiwBkEs2YQsjcSPjMVOrB5uDco4D2Evls+RXyoUOKgwXIwLD
lvKnzC2O/WO3N1k0IjJUKzAW5bzSEjUaEzO7C8kJOvSnum8exDTdYvQKmG8RTM69
+qFJwY1T+qqlox53rPa2dmy8utLmeUjaLWt4aGVxjrjDyfsUKjkDgIDl2AKS2pjH
H/lcsMb/QuhHy4eViJBAB79AF+fVjiYIJkPes5hqRwXG3fC0AGQAJiSbqlO9+NE=
=/HOF
-----END PGP SIGNATURE-----


More information about the poppler mailing list