summaryrefslogtreecommitdiff
path: root/glucose
diff options
context:
space:
mode:
authorAlan Hourihane <alanh@tungstengraphics.com>2007-10-19 11:46:01 +0100
committerAlan Hourihane <alanh@tungstengraphics.com>2007-10-19 11:46:01 +0100
commitb45d236590764837643e2e9d4e941de7d0ffeb88 (patch)
treef8f21ca951f20b765a9806c68855fc731eeeaa0b /glucose
parent69f5760aec6f2eccc639f00bd32c5a4059eb3013 (diff)
Fix recent merge problems and add enter/leave wrapper
from Jose's code.
Diffstat (limited to 'glucose')
-rw-r--r--glucose/glucose.c39
-rw-r--r--glucose/glucose_context.c2
-rw-r--r--glucose/glucose_format.c2
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++)
{