summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Gurr <tgurr@gentoo.org>2013-06-07 23:44:16 +0000
committerTimo Gurr <tgurr@gentoo.org>2013-06-07 23:44:16 +0000
commitbe56a0c7be5fb5d8f8c0742d41355a70c014c549 (patch)
treedda79ce32f7c08fdb9962ed3105c826a35be4a27 /media-libs/lcms
parentVersion bump (diff)
downloadgentoo-2-be56a0c7be5fb5d8f8c0742d41355a70c014c549.tar.gz
gentoo-2-be56a0c7be5fb5d8f8c0742d41355a70c014c549.tar.bz2
gentoo-2-be56a0c7be5fb5d8f8c0742d41355a70c014c549.zip
Revbump adding upstream patch required for ghostscript 9.07, EAPI5, slot-operators, port to autotools-utils eclass.
(Portage version: 2.2.0_alpha177/cvs/Linux x86_64, signed Manifest commit with key 5270BA51)
Diffstat (limited to 'media-libs/lcms')
-rw-r--r--media-libs/lcms/ChangeLog9
-rw-r--r--media-libs/lcms/files/lcms-2.4-threading-plugin.patch470
-rw-r--r--media-libs/lcms/lcms-2.4-r1.ebuild47
3 files changed, 525 insertions, 1 deletions
diff --git a/media-libs/lcms/ChangeLog b/media-libs/lcms/ChangeLog
index ca13313f59d7..8a3c2ed6c46b 100644
--- a/media-libs/lcms/ChangeLog
+++ b/media-libs/lcms/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for media-libs/lcms
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/lcms/ChangeLog,v 1.151 2013/05/05 21:00:10 dilfridge Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-libs/lcms/ChangeLog,v 1.152 2013/06/07 23:44:16 tgurr Exp $
+
+*lcms-2.4-r1 (07 Jun 2013)
+
+ 07 Jun 2013; Timo Gurr <tgurr@gentoo.org> +lcms-2.4-r1.ebuild,
+ +files/lcms-2.4-threading-plugin.patch:
+ Revbump adding upstream patch required for ghostscript 9.07, EAPI5,
+ slot-operators, port to autotools-utils eclass.
*lcms-1.19-r1 (05 May 2013)
diff --git a/media-libs/lcms/files/lcms-2.4-threading-plugin.patch b/media-libs/lcms/files/lcms-2.4-threading-plugin.patch
new file mode 100644
index 000000000000..8f995624d41e
--- /dev/null
+++ b/media-libs/lcms/files/lcms-2.4-threading-plugin.patch
@@ -0,0 +1,470 @@
+diff -up lcms2-2.4/include/lcms2.h.threading-plugin lcms2-2.4/include/lcms2.h
+--- lcms2-2.4/include/lcms2.h.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/include/lcms2.h 2013-04-25 15:45:02.853816514 +0100
+@@ -985,6 +985,7 @@ CMSAPI long int CMSEXPORT cmsfi
+ // Plug-In registering ---------------------------------------------------------------------------------------------------
+
+ CMSAPI cmsBool CMSEXPORT cmsPlugin(void* Plugin);
++CMSAPI cmsBool CMSEXPORT cmsPluginTHR(cmsContext ContextID, void* Plugin);
+ CMSAPI void CMSEXPORT cmsUnregisterPlugins(void);
+
+ // Error logging ----------------------------------------------------------------------------------------------------------
+diff -up lcms2-2.4/src/cmscnvrt.c.threading-plugin lcms2-2.4/src/cmscnvrt.c
+--- lcms2-2.4/src/cmscnvrt.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmscnvrt.c 2013-04-25 15:45:02.854816518 +0100
+@@ -1028,7 +1028,7 @@ cmsUInt32Number CMSEXPORT cmsGetSupporte
+ }
+
+ // The plug-in registration. User can add new intents or override default routines
+-cmsBool _cmsRegisterRenderingIntentPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterRenderingIntentPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+ cmsPluginRenderingIntent* Plugin = (cmsPluginRenderingIntent*) Data;
+ cmsIntentsList* fl;
+@@ -1043,7 +1043,7 @@ cmsBool _cmsRegisterRenderingIntentPlug
+ fl = SearchIntent(Plugin ->Intent);
+
+ if (fl == NULL) {
+- fl = (cmsIntentsList*) _cmsPluginMalloc(sizeof(cmsIntentsList));
++ fl = (cmsIntentsList*) _cmsPluginMalloc(id, sizeof(cmsIntentsList));
+ if (fl == NULL) return FALSE;
+ }
+
+diff -up lcms2-2.4/src/cmsgamma.c.threading-plugin lcms2-2.4/src/cmsgamma.c
+--- lcms2-2.4/src/cmsgamma.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmsgamma.c 2013-04-25 15:45:02.855816522 +0100
+@@ -70,7 +70,7 @@ static _cmsParametricCurvesCollection De
+ static _cmsParametricCurvesCollection* ParametricCurves = &DefaultCurves;
+
+ // As a way to install new parametric curves
+-cmsBool _cmsRegisterParametricCurvesPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterParametricCurvesPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+ cmsPluginParametricCurves* Plugin = (cmsPluginParametricCurves*) Data;
+ _cmsParametricCurvesCollection* fl;
+@@ -81,7 +81,7 @@ cmsBool _cmsRegisterParametricCurvesPlug
+ return TRUE;
+ }
+
+- fl = (_cmsParametricCurvesCollection*) _cmsPluginMalloc(sizeof(_cmsParametricCurvesCollection));
++ fl = (_cmsParametricCurvesCollection*) _cmsPluginMalloc(id, sizeof(_cmsParametricCurvesCollection));
+ if (fl == NULL) return FALSE;
+
+ // Copy the parameters
+diff -up lcms2-2.4/src/cmsio0.c.threading-plugin lcms2-2.4/src/cmsio0.c
+--- lcms2-2.4/src/cmsio0.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmsio0.c 2013-04-25 15:46:28.537183522 +0100
+@@ -1057,6 +1057,7 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _c
+ cmsTagDescriptor* TagDescriptor;
+ cmsTagTypeSignature TypeBase;
+ cmsTagTypeHandler* TypeHandler;
++ cmsTagTypeHandler LocalTypeHandler;
+
+
+ for (i=0; i < Icc -> TagCount; i++) {
+@@ -1124,9 +1125,10 @@ cmsBool SaveTags(_cmsICCPROFILE* Icc, _c
+ if (!_cmsWriteTypeBase(io, TypeBase))
+ return FALSE;
+
+- TypeHandler ->ContextID = Icc ->ContextID;
+- TypeHandler ->ICCVersion = Icc ->Version;
+- if (!TypeHandler ->WritePtr(TypeHandler, io, Data, TagDescriptor ->ElemCount)) {
++ LocalTypeHandler = *TypeHandler;
++ LocalTypeHandler.ContextID = Icc ->ContextID;
++ LocalTypeHandler.ICCVersion = Icc ->Version;
++ if (!LocalTypeHandler.WritePtr(&LocalTypeHandler, io, Data, TagDescriptor ->ElemCount)) {
+
+ char String[5];
+
+@@ -1302,10 +1304,11 @@ cmsBool CMSEXPORT cmsCloseProfile(cmsHP
+ cmsTagTypeHandler* TypeHandler = Icc ->TagTypeHandlers[i];
+
+ if (TypeHandler != NULL) {
++ cmsTagTypeHandler LocalTypeHandler = *TypeHandler;
+
+- TypeHandler ->ContextID = Icc ->ContextID; // As an additional parameters
+- TypeHandler ->ICCVersion = Icc ->Version;
+- TypeHandler ->FreePtr(TypeHandler, Icc -> TagPtrs[i]);
++ LocalTypeHandler.ContextID = Icc ->ContextID; // As an additional parameters
++ LocalTypeHandler.ICCVersion = Icc ->Version;
++ LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc -> TagPtrs[i]);
+ }
+ else
+ _cmsFree(Icc ->ContextID, Icc ->TagPtrs[i]);
+@@ -1349,6 +1352,7 @@ void* CMSEXPORT cmsReadTag(cmsHPROFILE h
+ _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile;
+ cmsIOHANDLER* io = Icc ->IOhandler;
+ cmsTagTypeHandler* TypeHandler;
++ cmsTagTypeHandler LocalTypeHandler;
+ cmsTagDescriptor* TagDescriptor;
+ cmsTagTypeSignature BaseType;
+ cmsUInt32Number Offset, TagSize;
+@@ -1389,14 +1393,15 @@ void* CMSEXPORT cmsReadTag(cmsHPROFILE h
+ // Get type handler
+ TypeHandler = _cmsGetTagTypeHandler(BaseType);
+ if (TypeHandler == NULL) return NULL;
++ LocalTypeHandler = *TypeHandler;
+
+
+ // Read the tag
+ Icc -> TagTypeHandlers[n] = TypeHandler;
+
+- TypeHandler ->ContextID = Icc ->ContextID;
+- TypeHandler ->ICCVersion = Icc ->Version;
+- Icc -> TagPtrs[n] = TypeHandler ->ReadPtr(TypeHandler, io, &ElemCount, TagSize);
++ LocalTypeHandler.ContextID = Icc ->ContextID;
++ LocalTypeHandler.ICCVersion = Icc ->Version;
++ Icc -> TagPtrs[n] = LocalTypeHandler.ReadPtr(&LocalTypeHandler, io, &ElemCount, TagSize);
+
+ // The tag type is supported, but something wrong happend and we cannot read the tag.
+ // let know the user about this (although it is just a warning)
+@@ -1449,6 +1454,7 @@ cmsBool CMSEXPORT cmsWriteTag(cmsHPROFIL
+ {
+ _cmsICCPROFILE* Icc = (_cmsICCPROFILE*) hProfile;
+ cmsTagTypeHandler* TypeHandler = NULL;
++ cmsTagTypeHandler LocalTypeHandler;
+ cmsTagDescriptor* TagDescriptor = NULL;
+ cmsTagTypeSignature Type;
+ int i;
+@@ -1479,9 +1485,10 @@ cmsBool CMSEXPORT cmsWriteTag(cmsHPROFIL
+
+ if (TypeHandler != NULL) {
+
+- TypeHandler ->ContextID = Icc ->ContextID; // As an additional parameter
+- TypeHandler ->ICCVersion = Icc ->Version;
+- TypeHandler->FreePtr(TypeHandler, Icc -> TagPtrs[i]);
++ LocalTypeHandler = *TypeHandler;
++ LocalTypeHandler.ContextID = Icc ->ContextID; // As an additional parameter
++ LocalTypeHandler.ICCVersion = Icc ->Version;
++ LocalTypeHandler.FreePtr(&LocalTypeHandler, Icc -> TagPtrs[i]);
+ }
+ }
+ }
+@@ -1558,9 +1565,10 @@ cmsBool CMSEXPORT cmsWriteTag(cmsHPROFIL
+ Icc ->TagSizes[i] = 0;
+ Icc ->TagOffsets[i] = 0;
+
+- TypeHandler ->ContextID = Icc ->ContextID;
+- TypeHandler ->ICCVersion = Icc ->Version;
+- Icc ->TagPtrs[i] = TypeHandler ->DupPtr(TypeHandler, data, TagDescriptor ->ElemCount);
++ LocalTypeHandler = *TypeHandler;
++ LocalTypeHandler.ContextID = Icc ->ContextID;
++ LocalTypeHandler.ICCVersion = Icc ->Version;
++ Icc ->TagPtrs[i] = LocalTypeHandler.DupPtr(&LocalTypeHandler, data, TagDescriptor ->ElemCount);
+
+ if (Icc ->TagPtrs[i] == NULL) {
+
+@@ -1587,6 +1595,7 @@ cmsInt32Number CMSEXPORT cmsReadRawTag(c
+ int i;
+ cmsIOHANDLER* MemIO;
+ cmsTagTypeHandler* TypeHandler = NULL;
++ cmsTagTypeHandler LocalTypeHandler;
+ cmsTagDescriptor* TagDescriptor = NULL;
+ cmsUInt32Number rc;
+ cmsUInt32Number Offset, TagSize;
+@@ -1654,16 +1663,18 @@ cmsInt32Number CMSEXPORT cmsReadRawTag(c
+ return 0;
+ }
+
++ // FIXME: No handling for TypeHandler == NULL here?
+ // Serialize
+- TypeHandler ->ContextID = Icc ->ContextID;
+- TypeHandler ->ICCVersion = Icc ->Version;
++ LocalTypeHandler = *TypeHandler;
++ LocalTypeHandler.ContextID = Icc ->ContextID;
++ LocalTypeHandler.ICCVersion = Icc ->Version;
+
+ if (!_cmsWriteTypeBase(MemIO, TypeHandler ->Signature)) {
+ cmsCloseIOhandler(MemIO);
+ return 0;
+ }
+
+- if (!TypeHandler ->WritePtr(TypeHandler, MemIO, Object, TagDescriptor ->ElemCount)) {
++ if (!LocalTypeHandler.WritePtr(&LocalTypeHandler, MemIO, Object, TagDescriptor ->ElemCount)) {
+ cmsCloseIOhandler(MemIO);
+ return 0;
+ }
+diff -up lcms2-2.4/src/cmsopt.c.threading-plugin lcms2-2.4/src/cmsopt.c
+--- lcms2-2.4/src/cmsopt.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmsopt.c 2013-04-25 15:45:02.856816527 +0100
+@@ -1609,7 +1609,7 @@ static _cmsOptimizationCollection Defaul
+ static _cmsOptimizationCollection* OptimizationCollection = DefaultOptimization;
+
+ // Register new ways to optimize
+-cmsBool _cmsRegisterOptimizationPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterOptimizationPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+ cmsPluginOptimization* Plugin = (cmsPluginOptimization*) Data;
+ _cmsOptimizationCollection* fl;
+@@ -1623,7 +1623,7 @@ cmsBool _cmsRegisterOptimizationPlugin(
+ // Optimizer callback is required
+ if (Plugin ->OptimizePtr == NULL) return FALSE;
+
+- fl = (_cmsOptimizationCollection*) _cmsPluginMalloc(sizeof(_cmsOptimizationCollection));
++ fl = (_cmsOptimizationCollection*) _cmsPluginMalloc(id, sizeof(_cmsOptimizationCollection));
+ if (fl == NULL) return FALSE;
+
+ // Copy the parameters
+diff -up lcms2-2.4/src/cmspack.c.threading-plugin lcms2-2.4/src/cmspack.c
+--- lcms2-2.4/src/cmspack.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmspack.c 2013-04-25 15:45:02.858816535 +0100
+@@ -3137,7 +3137,7 @@ static cmsFormattersFactoryList* Factory
+
+
+ // Formatters management
+-cmsBool _cmsRegisterFormattersPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterFormattersPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+ cmsPluginFormatters* Plugin = (cmsPluginFormatters*) Data;
+ cmsFormattersFactoryList* fl ;
+@@ -3149,7 +3149,7 @@ cmsBool _cmsRegisterFormattersPlugin(cm
+ return TRUE;
+ }
+
+- fl = (cmsFormattersFactoryList*) _cmsPluginMalloc(sizeof(cmsFormattersFactoryList));
++ fl = (cmsFormattersFactoryList*) _cmsPluginMalloc(id, sizeof(cmsFormattersFactoryList));
+ if (fl == NULL) return FALSE;
+
+ fl ->Factory = Plugin ->FormattersFactory;
+diff -up lcms2-2.4/src/cmsplugin.c.threading-plugin lcms2-2.4/src/cmsplugin.c
+--- lcms2-2.4/src/cmsplugin.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmsplugin.c 2013-04-25 15:45:02.859816539 +0100
+@@ -514,10 +514,10 @@ cmsBool CMSEXPORT _cmsIOPrintf(cmsIOHAND
+ static _cmsSubAllocator* PluginPool = NULL;
+
+ // Specialized malloc for plug-ins, that is freed upon exit.
+-void* _cmsPluginMalloc(cmsUInt32Number size)
++void* _cmsPluginMalloc(cmsContext id, cmsUInt32Number size)
+ {
+ if (PluginPool == NULL)
+- PluginPool = _cmsCreateSubAlloc(0, 4*1024);
++ PluginPool = _cmsCreateSubAlloc(id, 4*1024);
+
+ return _cmsSubAlloc(PluginPool, size);
+ }
+@@ -526,6 +526,11 @@ void* _cmsPluginMalloc(cmsUInt32Number s
+ // Main plug-in dispatcher
+ cmsBool CMSEXPORT cmsPlugin(void* Plug_in)
+ {
++ return cmsPluginTHR(NULL, Plug_in);
++}
++
++cmsBool CMSEXPORT cmsPluginTHR(cmsContext id, void* Plug_in)
++{
+ cmsPluginBase* Plugin;
+
+ for (Plugin = (cmsPluginBase*) Plug_in;
+@@ -554,35 +559,35 @@ cmsBool CMSEXPORT cmsPlugin(void* Plug_i
+ break;
+
+ case cmsPluginTagTypeSig:
+- if (!_cmsRegisterTagTypePlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterTagTypePlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginTagSig:
+- if (!_cmsRegisterTagPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterTagPlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginFormattersSig:
+- if (!_cmsRegisterFormattersPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterFormattersPlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginRenderingIntentSig:
+- if (!_cmsRegisterRenderingIntentPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterRenderingIntentPlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginParametricCurveSig:
+- if (!_cmsRegisterParametricCurvesPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterParametricCurvesPlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginMultiProcessElementSig:
+- if (!_cmsRegisterMultiProcessElementPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterMultiProcessElementPlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginOptimizationSig:
+- if (!_cmsRegisterOptimizationPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterOptimizationPlugin(id, Plugin)) return FALSE;
+ break;
+
+ case cmsPluginTransformSig:
+- if (!_cmsRegisterTransformPlugin(Plugin)) return FALSE;
++ if (!_cmsRegisterTransformPlugin(id, Plugin)) return FALSE;
+ break;
+
+ default:
+@@ -601,14 +606,14 @@ void CMSEXPORT cmsUnregisterPlugins(void
+ {
+ _cmsRegisterMemHandlerPlugin(NULL);
+ _cmsRegisterInterpPlugin(NULL);
+- _cmsRegisterTagTypePlugin(NULL);
+- _cmsRegisterTagPlugin(NULL);
+- _cmsRegisterFormattersPlugin(NULL);
+- _cmsRegisterRenderingIntentPlugin(NULL);
+- _cmsRegisterParametricCurvesPlugin(NULL);
+- _cmsRegisterMultiProcessElementPlugin(NULL);
+- _cmsRegisterOptimizationPlugin(NULL);
+- _cmsRegisterTransformPlugin(NULL);
++ _cmsRegisterTagTypePlugin(NULL, NULL);
++ _cmsRegisterTagPlugin(NULL, NULL);
++ _cmsRegisterFormattersPlugin(NULL, NULL);
++ _cmsRegisterRenderingIntentPlugin(NULL, NULL);
++ _cmsRegisterParametricCurvesPlugin(NULL, NULL);
++ _cmsRegisterMultiProcessElementPlugin(NULL, NULL);
++ _cmsRegisterOptimizationPlugin(NULL, NULL);
++ _cmsRegisterTransformPlugin(NULL, NULL);
+
+ if (PluginPool != NULL)
+ _cmsSubAllocDestroy(PluginPool);
+diff -up lcms2-2.4/src/cmssamp.c.threading-plugin lcms2-2.4/src/cmssamp.c
+--- lcms2-2.4/src/cmssamp.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmssamp.c 2013-04-25 15:45:22.998902804 +0100
+@@ -38,13 +38,13 @@
+ static
+ cmsHTRANSFORM CreateRoundtripXForm(cmsHPROFILE hProfile, cmsUInt32Number nIntent)
+ {
+- cmsHPROFILE hLab = cmsCreateLab4Profile(NULL);
++ cmsContext ContextID = cmsGetProfileContextID(hProfile);
++ cmsHPROFILE hLab = cmsCreateLab4ProfileTHR(ContextID, NULL);
+ cmsHTRANSFORM xform;
+ cmsBool BPC[4] = { FALSE, FALSE, FALSE, FALSE };
+ cmsFloat64Number States[4] = { 1.0, 1.0, 1.0, 1.0 };
+ cmsHPROFILE hProfiles[4];
+ cmsUInt32Number Intents[4];
+- cmsContext ContextID = cmsGetProfileContextID(hProfile);
+
+ hProfiles[0] = hLab; hProfiles[1] = hProfile; hProfiles[2] = hProfile; hProfiles[3] = hLab;
+ Intents[0] = INTENT_RELATIVE_COLORIMETRIC; Intents[1] = nIntent; Intents[2] = INTENT_RELATIVE_COLORIMETRIC; Intents[3] = INTENT_RELATIVE_COLORIMETRIC;
+diff -up lcms2-2.4/src/cmstypes.c.threading-plugin lcms2-2.4/src/cmstypes.c
+--- lcms2-2.4/src/cmstypes.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmstypes.c 2013-04-25 15:45:02.861816548 +0100
+@@ -62,7 +62,7 @@ typedef struct _cmsTagTypeLinkedList_st
+
+ // Register a new type handler. This routine is shared between normal types and MPE
+ static
+-cmsBool RegisterTypesPlugin(cmsPluginBase* Data, _cmsTagTypeLinkedList* LinkedList, cmsUInt32Number DefaultListCount)
++cmsBool RegisterTypesPlugin(cmsContext id, cmsPluginBase* Data, _cmsTagTypeLinkedList* LinkedList, cmsUInt32Number DefaultListCount)
+ {
+ cmsPluginTagType* Plugin = (cmsPluginTagType*) Data;
+ _cmsTagTypeLinkedList *pt, *Anterior = NULL;
+@@ -89,7 +89,7 @@ cmsBool RegisterTypesPlugin(cmsPluginBas
+ }
+
+ // Registering happens in plug-in memory pool
+- pt = (_cmsTagTypeLinkedList*) _cmsPluginMalloc(sizeof(_cmsTagTypeLinkedList));
++ pt = (_cmsTagTypeLinkedList*) _cmsPluginMalloc(id, sizeof(_cmsTagTypeLinkedList));
+ if (pt == NULL) return FALSE;
+
+ pt ->Handler = Plugin ->Handler;
+@@ -5248,14 +5248,14 @@ static _cmsTagTypeLinkedList SupportedTa
+ #define DEFAULT_TAG_TYPE_COUNT (sizeof(SupportedTagTypes) / sizeof(_cmsTagTypeLinkedList))
+
+ // Both kind of plug-ins share same structure
+-cmsBool _cmsRegisterTagTypePlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterTagTypePlugin(cmsContext id, cmsPluginBase* Data)
+ {
+- return RegisterTypesPlugin(Data, SupportedTagTypes, DEFAULT_TAG_TYPE_COUNT);
++ return RegisterTypesPlugin(id, Data, SupportedTagTypes, DEFAULT_TAG_TYPE_COUNT);
+ }
+
+-cmsBool _cmsRegisterMultiProcessElementPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterMultiProcessElementPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+- return RegisterTypesPlugin(Data, SupportedMPEtypes, DEFAULT_MPE_TYPE_COUNT);
++ return RegisterTypesPlugin(id, Data, SupportedMPEtypes, DEFAULT_MPE_TYPE_COUNT);
+ }
+
+
+@@ -5377,7 +5377,7 @@ static _cmsTagLinkedList SupportedTags[]
+
+ #define DEFAULT_TAG_COUNT (sizeof(SupportedTags) / sizeof(_cmsTagLinkedList))
+
+-cmsBool _cmsRegisterTagPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterTagPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+ cmsPluginTag* Plugin = (cmsPluginTag*) Data;
+ _cmsTagLinkedList *pt, *Anterior;
+@@ -5401,7 +5401,7 @@ cmsBool _cmsRegisterTagPlugin(cmsPlugin
+ pt = pt ->Next;
+ }
+
+- pt = (_cmsTagLinkedList*) _cmsPluginMalloc(sizeof(_cmsTagLinkedList));
++ pt = (_cmsTagLinkedList*) _cmsPluginMalloc(id, sizeof(_cmsTagLinkedList));
+ if (pt == NULL) return FALSE;
+
+ pt ->Signature = Plugin ->Signature;
+diff -up lcms2-2.4/src/cmsxform.c.threading-plugin lcms2-2.4/src/cmsxform.c
+--- lcms2-2.4/src/cmsxform.c.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/cmsxform.c 2013-04-25 15:45:02.862816552 +0100
+@@ -367,7 +367,7 @@ typedef struct _cmsTransformCollection_s
+ static _cmsTransformCollection* TransformCollection = NULL;
+
+ // Register new ways to transform
+-cmsBool _cmsRegisterTransformPlugin(cmsPluginBase* Data)
++cmsBool _cmsRegisterTransformPlugin(cmsContext id, cmsPluginBase* Data)
+ {
+ cmsPluginTransform* Plugin = (cmsPluginTransform*) Data;
+ _cmsTransformCollection* fl;
+@@ -383,7 +383,7 @@ cmsBool _cmsRegisterTransformPlugin(cms
+ if (Plugin ->Factory == NULL) return FALSE;
+
+
+- fl = (_cmsTransformCollection*) _cmsPluginMalloc(sizeof(_cmsTransformCollection));
++ fl = (_cmsTransformCollection*) _cmsPluginMalloc(id, sizeof(_cmsTransformCollection));
+ if (fl == NULL) return FALSE;
+
+ // Copy the parameters
+diff -up lcms2-2.4/src/lcms2_internal.h.threading-plugin lcms2-2.4/src/lcms2_internal.h
+--- lcms2-2.4/src/lcms2_internal.h.threading-plugin 2012-09-10 17:01:51.000000000 +0100
++++ lcms2-2.4/src/lcms2_internal.h 2013-04-25 15:45:02.862816552 +0100
+@@ -167,7 +167,7 @@ cmsINLINE cmsUInt16Number _cmsQuickSatur
+ // Plug-In registering ---------------------------------------------------------------
+
+ // Specialized function for plug-in memory management. No pairing free() since whole pool is freed at once.
+-void* _cmsPluginMalloc(cmsUInt32Number size);
++void* _cmsPluginMalloc(cmsContext ContextID, cmsUInt32Number size);
+
+ // Memory management
+ cmsBool _cmsRegisterMemHandlerPlugin(cmsPluginBase* Plugin);
+@@ -176,28 +176,28 @@ cmsBool _cmsRegisterMemHandlerPlugin(c
+ cmsBool _cmsRegisterInterpPlugin(cmsPluginBase* Plugin);
+
+ // Parametric curves
+-cmsBool _cmsRegisterParametricCurvesPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterParametricCurvesPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Formatters management
+-cmsBool _cmsRegisterFormattersPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterFormattersPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Tag type management
+-cmsBool _cmsRegisterTagTypePlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterTagTypePlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Tag management
+-cmsBool _cmsRegisterTagPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterTagPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Intent management
+-cmsBool _cmsRegisterRenderingIntentPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterRenderingIntentPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Multi Process elements
+-cmsBool _cmsRegisterMultiProcessElementPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterMultiProcessElementPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Optimization
+-cmsBool _cmsRegisterOptimizationPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterOptimizationPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // Transform
+-cmsBool _cmsRegisterTransformPlugin(cmsPluginBase* Plugin);
++cmsBool _cmsRegisterTransformPlugin(cmsContext ContextID, cmsPluginBase* Plugin);
+
+ // ---------------------------------------------------------------------------------------------------------
+
diff --git a/media-libs/lcms/lcms-2.4-r1.ebuild b/media-libs/lcms/lcms-2.4-r1.ebuild
new file mode 100644
index 000000000000..5ff9dd25bf94
--- /dev/null
+++ b/media-libs/lcms/lcms-2.4-r1.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/lcms/lcms-2.4-r1.ebuild,v 1.1 2013/06/07 23:44:16 tgurr Exp $
+
+EAPI=5
+
+AUTOTOOLS_PRUNE_LIBTOOL_FILES="modules"
+
+inherit autotools-utils
+
+DESCRIPTION="A lightweight, speed optimized color management engine"
+HOMEPAGE="http://www.littlecms.com/"
+SRC_URI="mirror://sourceforge/${PN}/lcms2-${PV}.tar.gz"
+
+LICENSE="MIT"
+SLOT="2"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x86-freebsd ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~m68k-mint ~sparc-solaris ~x64-solaris ~x86-solaris"
+IUSE="doc jpeg static-libs test tiff zlib"
+
+RDEPEND="jpeg? ( virtual/jpeg )
+ tiff? ( media-libs/tiff:0= )
+ zlib? ( sys-libs/zlib:= )"
+DEPEND="${RDEPEND}"
+
+S=${WORKDIR}/lcms2-${PV}
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.4-threading-plugin.patch
+)
+
+src_configure() {
+ local myeconfargs=(
+ $(use_with jpeg)
+ $(use_with tiff)
+ $(use_with zlib)
+ )
+ autotools-utils_src_configure
+}
+
+src_install() {
+ autotools-utils_src_install
+
+ if use doc; then
+ docinto pdf
+ dodoc doc/*.pdf
+ fi
+}