New branch 'wip/threadsafe' available with the following commits: commit 1045a40778c1f77fd88908f7b1495c6c8f01c539 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Mon Oct 15 19:35:03 2012 -0500 Make FcDirCacheDispose() threadsafe commit 887bbf9984a26077105d280e8134bde9b97b34ee Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Wed Oct 10 15:24:31 2012 -0400 Make cache hash threadsafe This concludes my first pass at making fontconfig threadsafe. Now to testing and actually fixing it! commit 7ddb50f0af17d8cb46893640c3f3e62717eae5e5 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Mon Oct 8 20:03:35 2012 -0400 Make random-state initialization threadsafe commit 8a975a9d1bc9f02baab0640c4f4f45509b3c9bcc Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Mon Oct 8 20:02:05 2012 -0400 Add a big cache lock Not used yet. commit bf2c62506558fb9b858770445fff5319b2755734 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Mon Oct 8 17:59:38 2012 -0400 Fix FcConfigInit() Ouch! commit e7876691ba90641bf38e80b958494eabc8657e23 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 21:03:58 2012 -0400 Make cache refcounting threadsafe commit fc45f436a3e73bae025cd565638f8898ab5102a3 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 17:46:12 2012 -0400 Minor commit 98b81e0b2a1b10c070ec2b74ca7b254b2e055575 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 17:42:18 2012 -0400 Make FcCacheIsMmapSafe() threadsafe commit 6fd40c71fa138ce6e90136dd0c1dbea4284c8956 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 17:41:58 2012 -0400 Fix FcDefaultFini() Oops. commit 9ea420ea0ff230e2a7131dbb67c68a0180507863 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 17:29:45 2012 -0400 Minor commit e16aa7370aa13482bd5259fd45804a5fb6564029 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 17:02:50 2012 -0400 Make default-FcConfig threadsafe commit baa5e7c3c94a2b5b1785b2177aafa1eba316fae8 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 16:42:36 2012 -0400 Minor commit eea5a914375e97b979c5cc247b95b3977f02329b Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 16:37:03 2012 -0400 Refactor; contain default config in fccfg.c commit 1ea981331bcd7e7913c1cdd76a66fef52816dda2 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 16:26:53 2012 -0400 Make FcDefaultFini() threadsafe commit 180b4203d781e93f2bc322240353bd36d4f65df1 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 16:09:35 2012 -0400 Make FcInitDebug() idempotent commit 13d3438ba6a62cadeed2874ffb6da5f318c2a0e6 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 16:07:57 2012 -0400 Mark some vars as MT-dontcare commit 8e9ec4c5014372223a138ffc5a8816d018db4059 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 16:04:49 2012 -0400 Remove unused macro commit afbf466854bd1d6e2dee2998cd66c82b6dda4e66 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 15:52:25 2012 -0400 Make FcGetDefaultLang and FcGetDefaultLangs thread-safe commit 336916dce0ef11ed08d61b6dd24e8b8de0c0d36c Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 15:35:47 2012 -0400 Minor include cleanup commit b9c06fd6272b2960c0d62560a2f051c3036e1ff6 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 14:41:38 2012 -0400 Make refcounts, patterns, charsets, strings, and FcLang thread-safe commit 7d36ebb500ed0263206c4b4885d2851b982c5e9f Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 14:24:28 2012 -0400 Add thread-safety primitives commit b3a3c1d4599b9dc5412bb1dc0e57b6da75b8821f Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sun Oct 7 13:49:45 2012 -0400 Add build stuff for threadsafety primitives Copied over from HarfBuzz. commit 38dfb8fb8eae3ca61410599890932c8583a906f1 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sat Oct 6 18:15:58 2012 -0400 Fix build stuff commit 0f6a1d3e2021173e8eee909614b15f42369daa72 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sat Oct 6 18:12:19 2012 -0400 Remove shared-str pool We used to have a shared-str pool. Removed to make thread-safety work easier. My measurements show that the extra overhead is not significant by any means. commit c9ac52ab54cc42c4e5d253eddb5dc39eff6ac7cb Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sat Oct 6 17:52:39 2012 -0400 Switch .gitignore to git.mk commit 22a5f865294410ed34bd9d04e66f7d0542d6670e Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sat Oct 6 17:52:07 2012 -0400 Minor commit 51de848a3e16e1be541988345eec01df0c13392b Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Sat Oct 6 17:34:52 2012 -0400 Use a static perfect hash table for object-name lookup Generated by gperf. A bit fragile, but I think I got it all right. commit 4ee76085cf240925345d33bce2c11b5e4c3c192a Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Thu Sep 20 14:42:31 2012 -0400 Add fcobjs.h Centralize object declaration. commit 30bef25c000c119ecebb281d35de97379948fcb6 Author: Behdad Esfahbod <behdad@xxxxxxxxxx> Date: Thu Sep 20 14:01:47 2012 -0400 Deprecate FcName(Un)RegisterObjectTypes / FcName(Un)RegisterConstants These never worked as intended. The problem is, if Fontconfig tries to read config files when these new types / constants are not registered, it errs. As a result, no defined types / constants are usable from config files. Which makes these really useless. Xft was the only user of this API and even there it's not really used. Just kill it. One inch closer to thread-safety since we can fix the object-type hash table at compile time. _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/fontconfig