From: divverent Date: Tue, 5 Apr 2011 17:41:10 +0000 (+0000) Subject: only use ONE buffer for non-Xshm X-Git-Tag: xonotic-v0.6.0~163^2~519 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=728afed30f0ce949a9a62ef996e47288d6013d19;p=xonotic%2Fdarkplaces.git only use ONE buffer for non-Xshm git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11027 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/vid_glx.c b/vid_glx.c index c0a7efc8..26b63dba 100644 --- a/vid_glx.c +++ b/vid_glx.c @@ -518,7 +518,7 @@ static qboolean BuildXImages(int w, int h) } else { - for(i = 0; i < 2; ++i) + for(i = 0; i < 1; ++i) // we only need one buffer if we don't use Xshm { char *p = calloc(4, w * h); vidx11_shminfo[i].shmid = -1; @@ -894,11 +894,11 @@ void VID_Finish (void) switch(vid.renderpath) { case RENDERPATH_SOFT: - vidx11_ximage_pos = !vidx11_ximage_pos; - vid.softpixels = (unsigned int *) vidx11_ximage[vidx11_ximage_pos]->data; - DPSOFTRAST_SetRenderTargets(vid.width, vid.height, vid.softdepthpixels, vid.softpixels, NULL, NULL, NULL); - if(vidx11_shmevent >= 0) { + vidx11_ximage_pos = !vidx11_ximage_pos; + vid.softpixels = (unsigned int *) vidx11_ximage[vidx11_ximage_pos]->data; + DPSOFTRAST_SetRenderTargets(vid.width, vid.height, vid.softdepthpixels, vid.softpixels, NULL, NULL, NULL); + // save mouse motion so we can deal with it later in_mouse_x = 0; in_mouse_y = 0; @@ -912,7 +912,9 @@ void VID_Finish (void) ++vidx11_shmwait; XShmPutImage(vidx11_display, win, vidx11_gc, vidx11_ximage[!vidx11_ximage_pos], 0, 0, 0, 0, vid.width, vid.height, True); } else { - XPutImage(vidx11_display, win, vidx11_gc, vidx11_ximage[!vidx11_ximage_pos], 0, 0, 0, 0, vid.width, vid.height); + // no buffer switching here, we just flush the renderer + DPSOFTRAST_Finish(); + XPutImage(vidx11_display, win, vidx11_gc, vidx11_ximage[vidx11_ximage_pos], 0, 0, 0, 0, vid.width, vid.height); } break;