diff options
author | Alan Hourihane <alanh@tungstengraphics.com> | 2007-10-19 11:46:01 +0100 |
---|---|---|
committer | Alan Hourihane <alanh@tungstengraphics.com> | 2007-10-19 11:46:01 +0100 |
commit | b45d236590764837643e2e9d4e941de7d0ffeb88 (patch) | |
tree | f8f21ca951f20b765a9806c68855fc731eeeaa0b /glucose | |
parent | 69f5760aec6f2eccc639f00bd32c5a4059eb3013 (diff) |
Fix recent merge problems and add enter/leave wrapper
from Jose's code.
Diffstat (limited to 'glucose')
-rw-r--r-- | glucose/glucose.c | 39 | ||||
-rw-r--r-- | glucose/glucose_context.c | 2 | ||||
-rw-r--r-- | glucose/glucose_format.c | 2 |
3 files changed, 31 insertions, 12 deletions
diff --git a/glucose/glucose.c b/glucose/glucose.c index f80527535..6d6004b5c 100644 --- a/glucose/glucose.c +++ b/glucose/glucose.c @@ -130,12 +130,10 @@ glucoseCreateWindow(WindowPtr pWin) { glitz_drawable_t *drawable; glitz_drawable_format_t *format; - __GLcontextModes *modes = pScreenPriv->screen->modes; + __GLcontextModes *fbconfigs = pScreenPriv->screen->fbconfigs; PixmapPtr pPixmap = pScreen->GetScreenPixmap(pScreen); xglScreenPtr xglScreenPriv = XGL_GET_SCREEN_PRIV (pScreen); - __pGlxClient = serverClient; - /* track root pixmap */ if (pPixmap) { @@ -144,17 +142,21 @@ glucoseCreateWindow(WindowPtr pWin) AddResource(pPixmap->drawable.id, RT_PIXMAP, (pointer)pPixmap); } - pScreenPriv->rootDrawable = pScreenPriv->screen->createDrawable(pScreenPriv->screen, (DrawablePtr)pPixmap, GLX_DRAWABLE_PIXMAP, pPixmap->drawable.id, modes); + xglLeaveServer(); + + pScreenPriv->rootDrawable = pScreenPriv->screen->createDrawable(pScreenPriv->screen, (DrawablePtr)pPixmap, GLX_DRAWABLE_PIXMAP, pPixmap->drawable.id, fbconfigs); if (!pScreenPriv->rootDrawable) { + xglEnterServer(); xf86DrvMsg(pScreen->myNum, X_WARNING, "GLucose - creating root drawable failed\n"); return FALSE; } - pScreenPriv->rootContext = pScreenPriv->screen->createContext(pScreenPriv->screen, modes, NULL); + pScreenPriv->rootContext = pScreenPriv->screen->createContext(pScreenPriv->screen, fbconfigs, NULL); if (!pScreenPriv->rootContext) { + xglEnterServer(); xf86DrvMsg(pScreen->myNum, X_WARNING, "GLucose - creating root context failed\n"); pScreenPriv->rootDrawable->destroy(pScreenPriv->rootDrawable); @@ -165,10 +167,9 @@ glucoseCreateWindow(WindowPtr pWin) pScreenPriv->rootContext->drawPriv = pScreenPriv->rootContext->readPriv = pScreenPriv->rootDrawable; - __glXleaveServer(FALSE); err = pScreenPriv->rootContext->makeCurrent(pScreenPriv->rootContext); if (!err) { - __glXenterServer(FALSE); + xglEnterServer(); xf86DrvMsg(pScreen->myNum, X_WARNING, "GLucose makeCurrent failed, err is %d\n",err); pScreenPriv->rootContext->destroy(pScreenPriv->rootContext); @@ -186,7 +187,7 @@ glucoseCreateWindow(WindowPtr pWin) pScreen->height); if (!drawable) { - __glXenterServer(FALSE); + xglEnterServer(); xf86DrvMsg(pScreen->myNum, X_ERROR, "GLucose could not create glitz drawable, not initializing.\n"); @@ -205,7 +206,7 @@ glucoseCreateWindow(WindowPtr pWin) "GLucose reports GLitz features as 0x%lx\n",xglScreenPriv->features); if (!glucoseFinishScreenInit(pScreen)) { - __glXenterServer(FALSE); + xglEnterServer(); xf86DrvMsg(pScreen->myNum, X_ERROR, "GLucose could not initialize.\n"); pScreenPriv->rootContext->destroy(pScreenPriv->rootContext); @@ -215,7 +216,7 @@ glucoseCreateWindow(WindowPtr pWin) return FALSE; } - __glXenterServer(FALSE); + xglEnterServer(); /* now fixup root pixmap */ pPixmap = pScreen->GetScreenPixmap(pScreen); @@ -733,6 +734,8 @@ glucoseCloseScreen (int index, xglFiniPixmap (pScreenPriv->pScreenPixmap); + xglLeaveServer(); + #ifdef RENDER int i; @@ -781,3 +784,19 @@ glucoseCloseScreen (int index, return (*pScreen->CloseScreen) (index, pScreen); } + +static ClientPtr pOldGlxClient = NULL; + +void xglLeaveServer(void) { + assert(pOldGlxClient == NULL); + __glXleaveServer(TRUE); + pOldGlxClient = __pGlxClient; + __pGlxClient = serverClient; +} + +void xglEnterServer(void) { + assert(__pGlxClient == serverClient); + __pGlxClient = pOldGlxClient; + pOldGlxClient = NULL; + __glXenterServer(TRUE); +} diff --git a/glucose/glucose_context.c b/glucose/glucose_context.c index 1f6c4524f..dbb8a33bd 100644 --- a/glucose/glucose_context.c +++ b/glucose/glucose_context.c @@ -54,7 +54,7 @@ _glitz_glucose_context_create (glitz_glucose_screen_info_t *screen_info, __GLXscreen *screen = screen_info->display_info->display; __GLcontextModes *mode; - mode = _gl_context_modes_find_visual(screen->modes, visualid); + mode = _gl_context_modes_find_visual(screen->fbconfigs, visualid); context->context = screen->createContext (screen, mode, share_list); context->id = visualid; diff --git a/glucose/glucose_format.c b/glucose/glucose_format.c index fdfde0ae5..fb94a630e 100644 --- a/glucose/glucose_format.c +++ b/glucose/glucose_format.c @@ -140,7 +140,7 @@ _glitz_glucose_query_formats (glitz_glucose_screen_info_t *screen_info) format.d.id = 0; format.d.color.fourcc = GLITZ_FOURCC_RGB; - mode = screen->modes; + mode = screen->fbconfigs; for (i = 0; i < screen->numVisuals; i++) { |