summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/i830_driver.c11
-rw-r--r--uxa/uxa-glyphs.c28
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;