Home | History | Annotate | Line # | Download | only in dmx
      1 /*
      2  * Copyright 2001 Red Hat Inc., Durham, North Carolina.
      3  *
      4  * All Rights Reserved.
      5  *
      6  * Permission is hereby granted, free of charge, to any person obtaining
      7  * a copy of this software and associated documentation files (the
      8  * "Software"), to deal in the Software without restriction, including
      9  * without limitation on the rights to use, copy, modify, merge,
     10  * publish, distribute, sublicense, and/or sell copies of the Software,
     11  * and to permit persons to whom the Software is furnished to do so,
     12  * subject to the following conditions:
     13  *
     14  * The above copyright notice and this permission notice (including the
     15  * next paragraph) shall be included in all copies or substantial
     16  * portions of the Software.
     17  *
     18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     19  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     21  * NON-INFRINGEMENT.  IN NO EVENT SHALL RED HAT AND/OR THEIR SUPPLIERS
     22  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
     23  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
     24  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
     25  * SOFTWARE.
     26  */
     27 
     28 /*
     29  * Authors:
     30  *   Kevin E. Martin <kem (at) redhat.com>
     31  *   David H. Dawes <dawes (at) xfree86.org>
     32  *
     33  */
     34 
     35 #ifdef HAVE_DMX_CONFIG_H
     36 #include <dmx-config.h>
     37 #endif
     38 
     39 #include "dmx.h"
     40 #include "dmxsync.h"
     41 #include "dmxshadow.h"
     42 
     43 /** \file
     44  * This file provides support for the shadow frame buffer. */
     45 
     46 /** Update the screen from the shadow frame buffer. */
     47 void dmxShadowUpdateProc(ScreenPtr pScreen, shadowBufPtr pBuf)
     48 {
     49     RegionPtr      damage = &pBuf->damage;
     50     int            nbox = RegionNumRects(damage);
     51     BoxPtr         pbox = RegionRects(damage);
     52     DMXScreenInfo *dmxScreen = &dmxScreens[pScreen->myNum];
     53 
     54     if (!dmxScreen->beDisplay)
     55 	return;
     56 
     57     while (nbox--) {
     58 	XPutImage(dmxScreen->beDisplay,
     59 		  dmxScreen->scrnWin,
     60 		  dmxScreen->shadowGC,
     61 		  dmxScreen->shadowFBImage,
     62 		  pbox->x1, pbox->y1,
     63 		  pbox->x1, pbox->y1,
     64 		  pbox->x2 - pbox->x1,
     65 		  pbox->y2 - pbox->y1);
     66 
     67 	pbox++;
     68     }
     69 
     70     dmxSync(dmxScreen, FALSE);
     71 }
     72