diff options
-rw-r--r-- | src/i830_driver.c | 11 | ||||
-rw-r--r-- | uxa/uxa-glyphs.c | 28 |
2 files changed, 29 insertions, 10 deletions
diff --git a/src/i830_driver.c b/src/i830_driver.c index 89a4525c..39585d3a 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -1221,6 +1221,11 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) xf86SetBlackWhitePixels(screen); + miInitializeBackingStore(screen); + xf86SetBackingStore(screen); + xf86SetSilkenMouse(screen); + miDCInitialize(screen, xf86GetPointerScreenFuncs()); + if (!I830AccelInit(screen)) { xf86DrvMsg(scrn->scrnIndex, X_ERROR, "Hardware acceleration initialization failed\n"); @@ -1235,13 +1240,7 @@ I830ScreenInit(int scrnIndex, ScreenPtr screen, int argc, char **argv) } else intel->batch_flush_notify = i830_batch_flush_notify; - miInitializeBackingStore(screen); - xf86SetBackingStore(screen); - xf86SetSilkenMouse(screen); - miDCInitialize(screen, xf86GetPointerScreenFuncs()); - xf86DrvMsg(scrn->scrnIndex, X_INFO, "Initializing HW Cursor\n"); - if (!xf86_cursors_init(screen, I810_CURSOR_X, I810_CURSOR_Y, (HARDWARE_CURSOR_TRUECOLOR_AT_8BPP | HARDWARE_CURSOR_BIT_ORDER_MSBFIRST | diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c index fde40287..e679b4e3 100644 --- a/uxa/uxa-glyphs.c +++ b/uxa/uxa-glyphs.c @@ -84,16 +84,24 @@ struct uxa_glyph { uint16_t size, pos; }; -static int uxa_glyph_index; +#if HAS_DEVPRIVATEKEYREC +static DevPrivateKeyRec uxa_glyph_key; +#else +static int uxa_glyph_key; +#endif static inline struct uxa_glyph *uxa_glyph_get_private(GlyphPtr glyph) { - return dixLookupPrivate(&glyph->devPrivates, &uxa_glyph_index); +#if HAS_DEVPRIVATEKEYREC + return dixGetPrivate(&glyph->devPrivates, &uxa_glyph_key); +#else + return dixLookupPrivate(&glyph->devPrivates, &uxa_glyph_key); +#endif } static inline void uxa_glyph_set_private(GlyphPtr glyph, struct uxa_glyph *priv) { - dixSetPrivate(&glyph->devPrivates, &uxa_glyph_index, priv); + dixSetPrivate(&glyph->devPrivates, &uxa_glyph_key, priv); } #define NeedsComponent(f) (PICT_FORMAT_A(f) != 0 && PICT_FORMAT_RGB(f) != 0) @@ -189,8 +197,20 @@ bail: Bool uxa_glyphs_init(ScreenPtr pScreen) { - if (!dixRequestPrivate(&uxa_glyph_index, 0)) + /* We are trying to initialise per screen resources prior to the + * complete initialisation of the screen. So ensure the components + * that we depend upon are initialsed prior to our use. + */ + if (!CreateScratchPixmapsForScreen(pScreen->myNum)) + return FALSE; + +#if HAS_DIXREGISTERPRIVATEKEY + if (!dixRegisterPrivateKey(&uxa_glyph_key, PRIVATE_GLYPH, 0)) + return FALSE; +#else + if (!dixRequestPrivate(&uxa_glyph_key, 0)) return FALSE; +#endif if (!uxa_realize_glyph_caches(pScreen)) return FALSE; |