Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
baedf81b
Commit
baedf81b
authored
Dec 05, 2012
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gdi32: Don't create a separate font handle for linked fonts.
parent
60195ff6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 addition
and
43 deletions
+1
-43
freetype.c
dlls/gdi32/freetype.c
+1
-43
No files found.
dlls/gdi32/freetype.c
View file @
baedf81b
...
...
@@ -374,7 +374,6 @@ struct enum_charset_list {
static
struct
list
gdi_font_list
=
LIST_INIT
(
gdi_font_list
);
static
struct
list
unused_gdi_font_list
=
LIST_INIT
(
unused_gdi_font_list
);
#define UNUSED_CACHE_SIZE 10
static
struct
list
child_font_list
=
LIST_INIT
(
child_font_list
);
static
struct
list
system_links
=
LIST_INIT
(
system_links
);
static
struct
list
font_subst_list
=
LIST_INIT
(
font_subst_list
);
...
...
@@ -4058,7 +4057,6 @@ static void free_font(GdiFont *font)
LIST_FOR_EACH_SAFE
(
cursor
,
cursor2
,
&
font
->
hfontlist
)
{
HFONTLIST
*
hfontlist
=
LIST_ENTRY
(
cursor
,
HFONTLIST
,
entry
);
DeleteObject
(
hfontlist
->
hfont
);
list_remove
(
&
hfontlist
->
entry
);
HeapFree
(
GetProcessHeap
(),
0
,
hfontlist
);
}
...
...
@@ -4288,19 +4286,6 @@ static GdiFont *find_in_cache(HFONT hfont, const LOGFONTW *plf, const FMAT2 *pma
fd
.
can_use_bitmap
=
can_use_bitmap
;
calc_hash
(
&
fd
);
/* try the child list */
LIST_FOR_EACH
(
font_elem_ptr
,
&
child_font_list
)
{
ret
=
LIST_ENTRY
(
font_elem_ptr
,
struct
tagGdiFont
,
entry
);
if
(
!
fontcmp
(
ret
,
&
fd
))
{
if
(
!
can_use_bitmap
&&
!
FT_IS_SCALABLE
(
ret
->
ft_face
))
continue
;
LIST_FOR_EACH
(
hfontlist_elem_ptr
,
&
ret
->
hfontlist
)
{
hflist
=
LIST_ENTRY
(
hfontlist_elem_ptr
,
struct
tagHFONTLIST
,
entry
);
if
(
hflist
->
hfont
==
hfont
)
return
ret
;
}
}
}
/* try the in-use list */
LIST_FOR_EACH
(
font_elem_ptr
,
&
gdi_font_list
)
{
ret
=
LIST_ENTRY
(
font_elem_ptr
,
struct
tagGdiFont
,
entry
);
...
...
@@ -5051,13 +5036,6 @@ static void dump_gdi_font_list(void)
TRACE
(
"gdiFont=%p %s %d
\n
"
,
gdiFont
,
debugstr_w
(
gdiFont
->
font_desc
.
lf
.
lfFaceName
),
gdiFont
->
font_desc
.
lf
.
lfHeight
);
}
TRACE
(
"---------- Child gdiFont Cache ----------
\n
"
);
LIST_FOR_EACH
(
elem_ptr
,
&
child_font_list
)
{
gdiFont
=
LIST_ENTRY
(
elem_ptr
,
struct
tagGdiFont
,
entry
);
TRACE
(
"gdiFont=%p %s %d
\n
"
,
gdiFont
,
debugstr_w
(
gdiFont
->
font_desc
.
lf
.
lfFaceName
),
gdiFont
->
font_desc
.
lf
.
lfHeight
);
}
}
/*************************************************************
...
...
@@ -5077,21 +5055,6 @@ BOOL WineEngDestroyFontInstance(HFONT handle)
GDI_CheckNotLock
();
EnterCriticalSection
(
&
freetype_cs
);
LIST_FOR_EACH_ENTRY
(
gdiFont
,
&
child_font_list
,
struct
tagGdiFont
,
entry
)
{
hfontlist_elem_ptr
=
list_head
(
&
gdiFont
->
hfontlist
);
while
(
hfontlist_elem_ptr
)
{
hflist
=
LIST_ENTRY
(
hfontlist_elem_ptr
,
struct
tagHFONTLIST
,
entry
);
hfontlist_elem_ptr
=
list_next
(
&
gdiFont
->
hfontlist
,
hfontlist_elem_ptr
);
if
(
hflist
->
hfont
==
handle
)
{
TRACE
(
"removing child font %p from child list
\n
"
,
gdiFont
);
list_remove
(
&
gdiFont
->
entry
);
LeaveCriticalSection
(
&
freetype_cs
);
return
TRUE
;
}
}
}
TRACE
(
"destroying hfont=%p
\n
"
,
handle
);
if
(
TRACE_ON
(
font
))
dump_gdi_font_list
();
...
...
@@ -7128,7 +7091,6 @@ static UINT freetype_GetOutlineTextMetrics( PHYSDEV dev, UINT cbSize, OUTLINETEX
static
BOOL
load_child_font
(
GdiFont
*
font
,
CHILD_FONT
*
child
)
{
HFONTLIST
*
hfontlist
;
child
->
font
=
alloc_font
();
child
->
font
->
ft_face
=
OpenFontFace
(
child
->
font
,
child
->
face
,
0
,
-
font
->
ppem
);
if
(
!
child
->
font
->
ft_face
)
...
...
@@ -7142,13 +7104,9 @@ static BOOL load_child_font(GdiFont *font, CHILD_FONT *child)
child
->
font
->
ntmFlags
=
child
->
face
->
ntmFlags
;
child
->
font
->
orientation
=
font
->
orientation
;
child
->
font
->
scale_y
=
font
->
scale_y
;
hfontlist
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
hfontlist
));
hfontlist
->
hfont
=
CreateFontIndirectW
(
&
font
->
font_desc
.
lf
);
child
->
font
->
name
=
strdupW
(
child
->
face
->
family
->
FamilyName
);
list_add_head
(
&
child
->
font
->
hfontlist
,
&
hfontlist
->
entry
);
child
->
font
->
base_font
=
font
;
list_add_head
(
&
child_font_list
,
&
child
->
font
->
entry
);
TRACE
(
"created child font hfont %p for base %p child %p
\n
"
,
hfontlist
->
hfont
,
font
,
child
->
font
);
TRACE
(
"created child font %p for base %p
\n
"
,
child
->
font
,
font
);
return
TRUE
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment