Behdad Esfahbod
8828fffd93
Copy all values from pattern to font if the font doesn't have the element
...
Bug 59376 - FcFontRenderPrepare enhancement
2013-01-14 14:36:38 -06:00
Behdad Esfahbod
98efed3bca
Add atomic ops for Solaris
...
Patch from Raimund Steger.
2013-01-10 01:17:46 -06:00
Akira TAGOH
8e8a99ae8a
Bug 29312 - RFE: feature to indicate which characters are missing to satisfy the language support
...
Add fc-validate to check the language coverage in a font.
2013-01-09 12:21:33 +09:00
Behdad Esfahbod
dc21ed28d6
Fix memory corruption!
...
In FcStrListCreate() we were increasing reference count of set,
however, if set had a const reference (which is the case for list
of languages), and with multiple threads, the const ref (-1) was
getting up to 1 and then a decrease was destroying the set. Ouch.
Here's the valgrind error, which took me quite a few hours of
running to catch:
==4464== Invalid read of size 4
==4464== at 0x4E58FF3: FcStrListNext (fcstr.c:1256)
==4464== by 0x4E3F11D: FcConfigSubstituteWithPat (fccfg.c:1508)
==4464== by 0x4E3F8F4: FcConfigSubstitute (fccfg.c:1729)
==4464== by 0x4009FA: test_match (simple-pthread-test.c:53)
==4464== by 0x400A6E: run_test_in_thread (simple-pthread-test.c:68)
==4464== by 0x507EE99: start_thread (pthread_create.c:308)
==4464== Address 0x6bc0b44 is 4 bytes inside a block of size 24 free'd
==4464== at 0x4C2A82E: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4464== by 0x4E58F84: FcStrSetDestroy (fcstr.c:1236)
==4464== by 0x4E3F0C6: FcConfigSubstituteWithPat (fccfg.c:1507)
==4464== by 0x4E3F8F4: FcConfigSubstitute (fccfg.c:1729)
==4464== by 0x4009FA: test_match (simple-pthread-test.c:53)
==4464== by 0x400A6E: run_test_in_thread (simple-pthread-test.c:68)
==4464== by 0x507EE99: start_thread (pthread_create.c:308)
Thread test is running happily now. Will add the test in a moment.
2013-01-08 13:03:35 -06:00
Akira TAGOH
4e6c7d0827
Fix a build fail on mingw
...
Regarding the change of 596931c8b4
2013-01-08 16:20:40 +09:00
Akira TAGOH
d837a7a584
missing header file to declare _mkdir
2013-01-08 16:18:32 +09:00
Akira TAGOH
596931c8b4
Bug 47705 - Using O_CLOEXEC
2013-01-08 15:34:09 +09:00
Akira TAGOH
b6b678e71e
Missing header file for _mkdir declaration
2013-01-04 11:29:50 +09:00
Behdad Esfahbod
8e143b4ec4
Minor
2013-01-03 04:19:12 -06:00
Behdad Esfahbod
86e3255118
Second try to make Sun CPP happy
2013-01-02 20:16:55 -06:00
Behdad Esfahbod
32c1d32cbd
Work around Sun CPP
...
According to Raimund Steger:
> [...]
> diff --git a/src/Makefile.am b/src/Makefile.am
> index dc082b7..57c34a2 100644
> [...]
> +fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
> + $(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | $(GREP) '^[^#]' | awk ' \
> + /CUT_OUT_BEGIN/ { no_write=1; next; }; \
> + /CUT_OUT_END/ { no_write=0; next; }; \
> + { if (!no_write) print; next; }; \
> + ' - > $@.tmp && \
> + mv -f $@.tmp $@
Sun Studio CPP seems to insert whitespace in a different way than GCC's CPP.
GCC generates in src/fcobjshash.gperf:
[...]
"family", FC_FAMILY_OBJECT
"familylang", FC_FAMILYLANG_OBJECT
[...]
Sun Studio generates:
[...]
"family" , FC_FAMILY_OBJECT
"familylang" , FC_FAMILYLANG_OBJECT
[...]
leading to:
[...]
Making all in src
gmake[2]: Entering directory `/home/rs/src/fontconfig-git/fontconfig/src'
GEN fcobjshash.gperf
GEN fcobjshash.h
Key link: " " = " ", with key set "".
1 input keys have identical hash values,
use option -D.
gmake[2]: *** [fcobjshash.h] Error 1
gmake[2]: Leaving directory `/home/rs/src/fontconfig-git/fontconfig/src'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/home/rs/src/fontconfig-git/fontconfig'
gmake: *** [all] Error 2
...maybe we could tuck in an additional sed to remove the whitespace, like:
[...]
fcobjshash.gperf: fcobjshash.gperf.h fcobjs.h
$(AM_V_GEN) $(CPP) -I$(top_srcdir) $< | \
$(SED) 's/^\s*//;s/\s*,\s*/,/;' | \
$(GREP) '^[^#]' | \
$(AWK) '/CUT_OUT_BEGIN/,/CUT_OUT_END/ { next; }; { print; };' \
> $@.tmp && \
mv -f $@.tmp $@
[...]
though I'm not sure what kind of guarantee CPP can give us/what easier option I might have missed...
2013-01-02 19:04:17 -06:00
Behdad Esfahbod
b1510145e7
Fix build around true/false
2013-01-02 18:57:47 -06:00
Behdad Esfahbod
46ab96b8fa
Fix more warnings.
...
Linux build and mingw32 cross build warning-free now.
2013-01-02 18:00:09 -06:00
Behdad Esfahbod
ec8a40d238
Fix build and warnings on win32
2013-01-02 17:35:56 -06:00
Behdad Esfahbod
766bed901f
Fix compiler warnings
2013-01-02 02:19:04 -06:00
Behdad Esfahbod
93fb1d4bab
Remove FcSharedStr*
2013-01-02 02:18:02 -06:00
Behdad Esfahbod
6b14378107
Fixup fcobjs.c
...
Ouch!
2013-01-02 01:54:38 -06:00
Behdad Esfahbod
6047ce7b9f
Warn about undefined/invalid attributes during config parsing
2013-01-02 01:31:34 -06:00
Behdad Esfahbod
b604f10c0c
Make fcobjs.c thread-safe
...
With this, the library should be threadsafe as far as my analysis goes!
2013-01-02 01:09:43 -06:00
Behdad Esfahbod
2ae07bbcd2
Make FcDirCacheDispose() threadsafe
2013-01-02 01:04:58 -06:00
Behdad Esfahbod
68b8ae9af8
Make cache hash threadsafe
...
This concludes my first pass at making fontconfig threadsafe. Now to
testing and actually fixing it!
2013-01-02 01:04:47 -06:00
Behdad Esfahbod
adb03b730d
Make random-state initialization threadsafe
2013-01-02 01:04:03 -06:00
Behdad Esfahbod
91dd7d28ff
Add a big cache lock
...
Not used yet.
2013-01-02 01:03:49 -06:00
Behdad Esfahbod
8d2bbb193a
Make cache refcounting threadsafe
2013-01-02 01:03:22 -06:00
Behdad Esfahbod
31ee38e541
Minor
2013-01-02 01:03:18 -06:00
Behdad Esfahbod
b8f238e49d
Make FcCacheIsMmapSafe() threadsafe
2013-01-02 01:03:06 -06:00
Behdad Esfahbod
b27a22aae9
Minor
2013-01-02 01:01:52 -06:00
Behdad Esfahbod
0552f26016
Make default-FcConfig threadsafe
2013-01-02 01:01:29 -06:00
Behdad Esfahbod
e53f5da54f
Minor
2013-01-02 00:58:52 -06:00
Behdad Esfahbod
7ae24b4554
Refactor; contain default config in fccfg.c
2013-01-02 00:58:31 -06:00
Behdad Esfahbod
32b0d88923
Make FcDefaultFini() threadsafe
2013-01-02 00:57:26 -06:00
Behdad Esfahbod
7019896c99
Make FcInitDebug() idempotent
2013-01-02 00:53:16 -06:00
Behdad Esfahbod
b97ab0c949
Make FcGetDefaultLang and FcGetDefaultLangs thread-safe
2013-01-02 00:52:14 -06:00
Behdad Esfahbod
64af9e1917
Make refcounts, patterns, charsets, strings, and FcLang thread-safe
2013-01-02 00:51:00 -06:00
Behdad Esfahbod
814871b2aa
Add thread-safety primitives
2013-01-02 00:38:36 -06:00
Behdad Esfahbod
b53744383d
Fix build stuff
2013-01-02 00:38:18 -06:00
Behdad Esfahbod
db6d86a6c1
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.
2013-01-02 00:37:00 -06:00
Behdad Esfahbod
ed41b23765
Switch .gitignore to git.mk
2013-01-02 00:36:12 -06:00
Behdad Esfahbod
d58c31e6dc
Use a static perfect hash table for object-name lookup
...
The hash table is generated by gperf. For runtime element types, we use
a append-only linked list.
A bit clumsy, but I think I got it right.
2013-01-02 00:35:39 -06:00
Behdad Esfahbod
7c0f79c5fe
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.
2013-01-01 22:55:08 -06:00
Behdad Esfahbod
a498f2f717
Minor
2013-01-01 20:27:54 -06:00
Behdad Esfahbod
8198127b25
Don't crash in FcPatternFormat() with NULL pattern
2013-01-01 20:20:31 -06:00
Behdad Esfahbod
c9581b47c4
Don't crash in FcPatternDestroy with NULL pattern
2013-01-01 20:20:12 -06:00
Behdad Esfahbod
e7d3e21632
Add NULL check
2013-01-01 20:19:57 -06:00
Behdad Esfahbod
5bb5da4c4a
Refuse to set value to unsupported types during config too
2013-01-01 20:19:57 -06:00
Behdad Esfahbod
3878a12541
Make FC_DBG_OBJTYPES debug messages into warnings
...
And remove FC_DBG_OBJTYPES since it has no use now.
2013-01-01 20:19:53 -06:00
Behdad Esfahbod
209750a4e0
Warn if <name target="font"> appears in <match target="pattern">
2012-12-31 20:11:12 -06:00
Behdad Esfahbod
31ce352bb3
Initialize matrix during name parsing
...
Before:
$ fc-match sans:matrix=2 -v | grep matrix
matrix: [2 6.95183e-310; 0 0](s)
After:
$ fc-match sans:matrix=2 -v | grep matrix
matrix: [2 0; 0 1](s)
2012-12-31 19:56:06 -06:00
Behdad Esfahbod
b1630dc00e
Enable fcarch assert checks even when FC_ARCHITECTURE is explicitly given
...
After all, if the asserts fail, the resulting library simply can't be
working correctly.
2012-12-31 17:20:29 -06:00
Behdad Esfahbod
a603be89cd
Unbreak build when FC_ARCHITECTURE is defined
2012-12-31 17:00:19 -06:00