summaryrefslogtreecommitdiff
path: root/modules/basic/basic-win32.c
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2009-09-10 18:49:31 +0300
committerTor Lillqvist <tml@iki.fi>2009-09-10 18:49:31 +0300
commit33bb108bd8c053de4ce37c6db26dd32ea20f46e2 (patch)
tree3a23a76f126de5270dab51013d1a1f935c131a3f /modules/basic/basic-win32.c
parent7f821fb6f714095c431f2195eb42ea2d288f84af (diff)
downloadpango-33bb108bd8c053de4ce37c6db26dd32ea20f46e2.tar.gz
Revert "[basic-win32] Increase performance of Uniscribe code"
Unfortunately this change breaks complex script shaping. This reverts commit ea608c0bd7721d3019bed7ef2472289b1ea6fa53.
Diffstat (limited to 'modules/basic/basic-win32.c')
-rw-r--r--modules/basic/basic-win32.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/modules/basic/basic-win32.c b/modules/basic/basic-win32.c
index 60a86532..ecb139e0 100644
--- a/modules/basic/basic-win32.c
+++ b/modules/basic/basic-win32.c
@@ -581,7 +581,7 @@ itemize_shape_and_place (PangoFont *font,
#endif
items[item].a.fRTL = analysis->level % 2;
- if ((*script_shape) (hdc, script_cache,
+ if ((*script_shape) (hdc, &script_cache[script],
wtext + items[item].iCharPos, itemlen,
G_N_ELEMENTS (iglyphs),
&items[item].a,
@@ -611,7 +611,7 @@ itemize_shape_and_place (PangoFont *font,
nglyphs, glyphs->log_clusters + ng,
char_offset);
- if ((*script_place) (hdc, script_cache, iglyphs, nglyphs,
+ if ((*script_place) (hdc, &script_cache[script], iglyphs, nglyphs,
visattrs, &items[item].a,
advances, offsets, &abc))
{
@@ -673,7 +673,7 @@ uniscribe_shape (PangoFont *font,
long wlen;
int i;
gboolean retval = TRUE;
- SCRIPT_CACHE script_cache;
+ SCRIPT_CACHE script_cache[100];
if (!pango_win32_font_select_font (font, hdc))
return FALSE;
@@ -684,10 +684,11 @@ uniscribe_shape (PangoFont *font,
if (retval)
{
- memset (&script_cache, 0, sizeof (script_cache));
+ memset (script_cache, 0, sizeof (script_cache));
retval = itemize_shape_and_place (font, hdc, wtext, wlen, analysis, glyphs, script_cache);
- if (script_cache)
- (*script_free_cache)(&script_cache);
+ for (i = 0; i < G_N_ELEMENTS (script_cache); i++)
+ if (script_cache[i])
+ (*script_free_cache)(&script_cache[i]);
}
if (retval)