11
11
#define NDEBUG
12
12
#include <debug.h>
13
13
14
- typedef struct _FONTDEV
15
- {
16
- LIST_ENTRY leLink ;
17
- DHPDEV dhpdev ;
18
- PLDEVOBJ pldev ;
19
- HSURF ahsurf [HS_DDI_MAX ];
20
- DEVINFO devinfo ;
21
-
22
- GDIINFO gdiinfo ; // FIXME: something else?
23
- } FONTDEV , * PFONTDEV ;
24
-
25
14
C_ASSERT (sizeof (GDIINFO ) == 0x130 );
26
15
27
16
@@ -67,15 +56,15 @@ NTAPI
67
56
RFONT_vInitDeviceMetrics (
68
57
PRFONT prfnt )
69
58
{
70
- PFONTDEV pfntdev = (PFONTDEV )prfnt -> hdevProducer ;
71
-
72
- pfntdev -> pldev -> pfn .QueryFontData (prfnt -> dhpdev ,
73
- & prfnt -> fobj ,
74
- QFD_MAXEXTENTS ,
75
- -1 ,
76
- NULL ,
77
- & prfnt -> fddm ,
78
- sizeof (FD_DEVICEMETRICS ));
59
+ PPDEVOBJ ppdev = (PPDEVOBJ )prfnt -> hdevProducer ;
60
+
61
+ ppdev -> pldev -> pfn .QueryFontData (prfnt -> dhpdev ,
62
+ & prfnt -> fobj ,
63
+ QFD_MAXEXTENTS ,
64
+ -1 ,
65
+ NULL ,
66
+ & prfnt -> fddm ,
67
+ sizeof (FD_DEVICEMETRICS ));
79
68
}
80
69
81
70
static
@@ -85,8 +74,8 @@ PFE_vInitialize(
85
74
PPFF ppff ,
86
75
ULONG iFace )
87
76
{
88
- PFONTDEV pfntdev = (PFONTDEV )ppff -> hdev ;
89
- PLDEVOBJ pldev = pfntdev -> pldev ;
77
+ PPDEVOBJ ppdev = (PPDEVOBJ )ppff -> hdev ;
78
+ PLDEVOBJ pldev = ppdev -> pldev ;
90
79
ppfe -> pPFF = ppff ;
91
80
ppfe -> iFont = iFace ;
92
81
ppfe -> flPFE = 0 ;
@@ -95,13 +84,13 @@ PFE_vInitialize(
95
84
ppfe -> tid = HandleToUlong (PsGetCurrentThreadId ());
96
85
97
86
/* Query IFIMETRICS */
98
- ppfe -> pifi = pldev -> pfn .QueryFont (pfntdev -> dhpdev ,
87
+ ppfe -> pifi = pldev -> pfn .QueryFont (ppdev -> dhpdev ,
99
88
ppff -> hff ,
100
89
iFace ,
101
90
& ppfe -> idifi );
102
91
103
92
/* Query FD_GLYPHSET */
104
- ppfe -> pfdg = pldev -> pfn .QueryFontTree (pfntdev -> dhpdev ,
93
+ ppfe -> pfdg = pldev -> pfn .QueryFontTree (ppdev -> dhpdev ,
105
94
ppff -> hff ,
106
95
iFace ,
107
96
QFT_GLYPHSET ,
@@ -168,7 +157,7 @@ EngLoadFontFileFD(
168
157
PWCHAR pwcCurrent ;
169
158
KAPC_STATE ApcState ;
170
159
PLIST_ENTRY ple ;
171
- PFONTDEV pfntdev = NULL ;
160
+ PPDEVOBJ ppdev = NULL ;
172
161
HFF hff = 0 ;
173
162
ULONG cFaces , cjSize , i , ulLangID = 0 ;
174
163
PPFF ppff = NULL ;
@@ -206,23 +195,23 @@ EngLoadFontFileFD(
206
195
}
207
196
208
197
/* Acquire font driver list lock */
209
- EngAcquireSemaphore (ghsemFontDriver );
198
+ EngAcquireSemaphoreShared (ghsemFontDriver );
210
199
211
200
/* Loop all installed font drivers */
212
201
for (ple = gleFontDriverList .Flink ;
213
202
ple != & gleFontDriverList ;
214
203
ple = ple -> Flink )
215
204
{
216
- pfntdev = CONTAINING_RECORD (ple , FONTDEV , leLink );
205
+ ppdev = CONTAINING_RECORD (ple , PDEVOBJ , leLink );
217
206
218
207
/* Call the drivers DrvLoadFontFile function */
219
- hff = pfntdev -> pldev -> pfn .LoadFontFile (cFiles ,
220
- piFiles ,
221
- apvView ,
222
- acjView ,
223
- pdv ,
224
- ulLangID ,
225
- ulCheckSum );
208
+ hff = ppdev -> pldev -> pfn .LoadFontFile (cFiles ,
209
+ piFiles ,
210
+ apvView ,
211
+ acjView ,
212
+ pdv ,
213
+ ulLangID ,
214
+ ulCheckSum );
226
215
if (hff ) break ;
227
216
}
228
217
@@ -236,7 +225,7 @@ EngLoadFontFileFD(
236
225
}
237
226
238
227
/* Query the number of faces in the font file */
239
- cFaces = pfntdev -> pldev -> pfn .QueryFontFile (hff , QFF_NUMFACES , 0 , NULL );
228
+ cFaces = ppdev -> pldev -> pfn .QueryFontFile (hff , QFF_NUMFACES , 0 , NULL );
240
229
241
230
/* Allocate a new PFF */
242
231
cjSize = FIELD_OFFSET (PFF , apfe [cFaces ]);
@@ -251,7 +240,7 @@ EngLoadFontFileFD(
251
240
ppff -> sizeofThis = cjSize ;
252
241
ppff -> cFiles = cFiles ;
253
242
ppff -> cFonts = cFaces ;
254
- ppff -> hdev = (HDEV )pfntdev ;
243
+ ppff -> hdev = (HDEV )ppdev ;
255
244
ppff -> hff = hff ;
256
245
257
246
/* Copy the FONTFILEVIEW pointers */
@@ -278,49 +267,28 @@ EngLoadFontDriver(
278
267
IN PWSTR pwszDriverName )
279
268
{
280
269
PLDEVOBJ pldev ;
281
- PFONTDEV pfntdev ;
270
+ PPDEVOBJ ppdev ;
282
271
283
- /* Load the driver */
272
+ /* Try to load the driver */
284
273
pldev = EngLoadImageEx (pwszDriverName , LDEV_FONT );
285
274
if (!pldev )
286
275
{
287
- DPRINT1 ("Failed to load font driver: %ls\n" , pwszDriverName );
276
+ DPRINT1 ("Could not load display driver ' %ls' \n" , pwszDriverName );
288
277
return FALSE;
289
278
}
290
279
291
- // CHECK if all functions are there
292
-
293
-
294
- /* Allocate a FONTDEV structure */
295
- pfntdev = EngAllocMem (0 , sizeof (FONTDEV ), 'vdfG' );
296
- if (!pfntdev )
280
+ /* Create a new PDEVOBJ */
281
+ ppdev = PDEVOBJ_CreatePDEV (pldev );
282
+ if (!ppdev )
297
283
{
298
- DPRINT1 ("Failed to allocate FONTDEV structure \n" );
284
+ DPRINT1 ("failed to allocate a PDEV \n" );
299
285
EngUnloadImage (pldev );
300
286
return FALSE;
301
287
}
302
288
303
- pfntdev -> pldev = pldev ;
304
-
305
- /* Call the drivers DrvEnablePDEV function */
306
- pfntdev -> dhpdev = pldev -> pfn .EnablePDEV (NULL ,
307
- NULL ,
308
- HS_DDI_MAX ,
309
- pfntdev -> ahsurf ,
310
- sizeof (GDIINFO ),
311
- (ULONG * )& pfntdev -> gdiinfo ,
312
- sizeof (DEVINFO ),
313
- & pfntdev -> devinfo ,
314
- (HDEV )pfntdev ,
315
- NULL ,
316
- NULL );
317
-
318
- /* Call the drivers DrvCompletePDEV function */
319
- pldev -> pfn .CompletePDEV (pfntdev -> dhpdev , (HDEV )pfntdev );
320
-
321
289
/* Insert the driver into the list */
322
290
EngAcquireSemaphore (ghsemFontDriver );
323
- InsertTailList (& gleFontDriverList , & pfntdev -> leLink );
291
+ InsertTailList (& gleFontDriverList , & ppdev -> leLink );
324
292
EngReleaseSemaphore (ghsemFontDriver );
325
293
326
294
return TRUE;
0 commit comments