summaryrefslogtreecommitdiff
path: root/hw/kdrive/ephyr/ephyrdriext.c
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@openedhand.com>2007-09-04 18:28:16 +0200
committerDodji Seketeli <dodji@openedhand.com>2007-10-02 16:55:16 +0200
commit6d1e44d3d53b451d466d43197be589d0ecc4b9f6 (patch)
tree66c2f565272bdcea3c9be4b987bedc3b6e0d411b /hw/kdrive/ephyr/ephyrdriext.c
parenta39b57d2f784f14e3198c8506f5eb865bacc2440 (diff)
Xephyr: fix a host X hang.
* hw/kdrive/ephyr/ephyrdri.c: (ephyrDRIGetDrawableInfo): quickly hook this into getting the drawable info from the host X server. For the time being, this only gets the drawable info of the Xephyr main window in the host. It should really get the info of a the peer drawable in the host X. So there should be a peer drawable to begin with. * hw/kdrive/ephyr/ephyrdriext.c: (ProcXF86DRIGetDrawableInfo): some cleanups. Properly get the the drawable info otherwise there is a host X hang. * hw/kdrive/ephyr/ephyrhostglx.c: do not (ephyrHostGLXQueryVersion): do not use C bindings of the glx protocol calls. Some of those actually access DRI context directly, resulting in the context having three clients. Instead all XF86DRI proto fowarding request should be coded by hand and only forward the protocol requests
Diffstat (limited to 'hw/kdrive/ephyr/ephyrdriext.c')
-rw-r--r--hw/kdrive/ephyr/ephyrdriext.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/hw/kdrive/ephyr/ephyrdriext.c b/hw/kdrive/ephyr/ephyrdriext.c
index d54da2164..443fe9d57 100644
--- a/hw/kdrive/ephyr/ephyrdriext.c
+++ b/hw/kdrive/ephyr/ephyrdriext.c
@@ -446,13 +446,14 @@ ProcXF86DRIDestroyDrawable (register ClientPtr client)
static int
ProcXF86DRIGetDrawableInfo (register ClientPtr client)
{
- xXF86DRIGetDrawableInfoReply rep;
+ xXF86DRIGetDrawableInfoReply rep;
DrawablePtr drawable;
- int X, Y, W, H, backX, backY, rc;
- drm_clip_rect_t * pClipRects, *pClippedRects;
- drm_clip_rect_t * pBackClipRects;
+ int X=0, Y=0, W=0, H=0, backX=0, backY=0, rc=0;
+ drm_clip_rect_t *pClipRects=NULL, *pClippedRects=NULL;
+ drm_clip_rect_t *pBackClipRects=NULL;
EPHYR_LOG ("enter\n") ;
+ memset (&rep, 0, sizeof (rep)) ;
REQUEST(xXF86DRIGetDrawableInfoReq);
REQUEST_SIZE_MATCH(xXF86DRIGetDrawableInfoReq);
if (stuff->screen >= screenInfo.numScreens) {