Xnest: replace XCreateWindow() by use xcb_create_window()
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
		
							parent
							
								
									04c6cc145e
								
							
						
					
					
						commit
						646ced96b1
					
				| 
						 | 
				
			
			@ -13,6 +13,9 @@ is" without express or implied warranty.
 | 
			
		|||
*/
 | 
			
		||||
#include <dix-config.h>
 | 
			
		||||
 | 
			
		||||
#include <xcb/xcb.h>
 | 
			
		||||
#include <xcb/xcb_aux.h>
 | 
			
		||||
 | 
			
		||||
#include <X11/X.h>
 | 
			
		||||
#include <X11/Xdefs.h>
 | 
			
		||||
#include <X11/Xproto.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -137,7 +140,6 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
 | 
			
		|||
    int numVisuals, numDepths;
 | 
			
		||||
    int i, j, depthIndex;
 | 
			
		||||
    unsigned long valuemask;
 | 
			
		||||
    XSetWindowAttributes attributes;
 | 
			
		||||
    XWindowAttributes gattributes;
 | 
			
		||||
    XSizeHints sizeHints;
 | 
			
		||||
    VisualID defaultVisual;
 | 
			
		||||
| 
						 | 
				
			
			@ -360,29 +362,35 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
 | 
			
		|||
 | 
			
		||||
    if (xnestDoFullGeneration) {
 | 
			
		||||
 | 
			
		||||
        xcb_params_cw_t attributes = {
 | 
			
		||||
            .back_pixel = xnestUpstreamInfo.screenInfo->white_pixel,
 | 
			
		||||
            .event_mask = xnestEventMask,
 | 
			
		||||
            .colormap = xnestDefaultVisualColormap(xnestDefaultVisual(pScreen)),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        valuemask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK | XCB_CW_COLORMAP;
 | 
			
		||||
        attributes.background_pixel = xnestUpstreamInfo.screenInfo->white_pixel;
 | 
			
		||||
        attributes.event_mask = xnestEventMask;
 | 
			
		||||
        attributes.colormap =
 | 
			
		||||
            xnestDefaultVisualColormap(xnestDefaultVisual(pScreen));
 | 
			
		||||
 | 
			
		||||
        if (xnestParentWindow != 0) {
 | 
			
		||||
            xnestDefaultWindows[pScreen->myNum] = xnestParentWindow;
 | 
			
		||||
            XSelectInput(xnestDisplay, xnestDefaultWindows[pScreen->myNum],
 | 
			
		||||
                         xnestEventMask);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
            xnestDefaultWindows[pScreen->myNum] =
 | 
			
		||||
                XCreateWindow(xnestDisplay,
 | 
			
		||||
                              xnestUpstreamInfo.screenInfo->root,
 | 
			
		||||
                              xnestX + POSITION_OFFSET,
 | 
			
		||||
                              xnestY + POSITION_OFFSET,
 | 
			
		||||
                              xnestWidth, xnestHeight,
 | 
			
		||||
                              xnestBorderWidth,
 | 
			
		||||
                              pScreen->rootDepth,
 | 
			
		||||
                              InputOutput,
 | 
			
		||||
                              xnestDefaultVisual(pScreen),
 | 
			
		||||
                              valuemask, &attributes);
 | 
			
		||||
        else {
 | 
			
		||||
            xnestDefaultWindows[pScreen->myNum] = xcb_generate_id(xnestUpstreamInfo.conn);
 | 
			
		||||
            xcb_aux_create_window(xnestUpstreamInfo.conn,
 | 
			
		||||
                                  pScreen->rootDepth,
 | 
			
		||||
                                  xnestDefaultWindows[pScreen->myNum],
 | 
			
		||||
                                  xnestUpstreamInfo.screenInfo->root,
 | 
			
		||||
                                  xnestX + POSITION_OFFSET,
 | 
			
		||||
                                  xnestY + POSITION_OFFSET,
 | 
			
		||||
                                  xnestWidth,
 | 
			
		||||
                                  xnestHeight,
 | 
			
		||||
                                  xnestBorderWidth,
 | 
			
		||||
                                  XCB_WINDOW_CLASS_INPUT_OUTPUT,
 | 
			
		||||
                                  xnestDefaultVisual(pScreen)->visualid,
 | 
			
		||||
                                  valuemask,
 | 
			
		||||
                                  &attributes);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!xnestWindowName)
 | 
			
		||||
            xnestWindowName = argv[0];
 | 
			
		||||
| 
						 | 
				
			
			@ -405,17 +413,23 @@ xnestOpenScreen(ScreenPtr pScreen, int argc, char *argv[])
 | 
			
		|||
        XMapWindow(xnestDisplay, xnestDefaultWindows[pScreen->myNum]);
 | 
			
		||||
 | 
			
		||||
        valuemask = XCB_CW_BACK_PIXMAP | XCB_CW_COLORMAP;
 | 
			
		||||
        attributes.background_pixmap = xnestScreenSaverPixmap;
 | 
			
		||||
        attributes.back_pixmap = xnestScreenSaverPixmap;
 | 
			
		||||
        attributes.colormap = xnestUpstreamInfo.screenInfo->default_colormap;
 | 
			
		||||
        xnestScreenSaverWindows[pScreen->myNum] =
 | 
			
		||||
            XCreateWindow(xnestDisplay,
 | 
			
		||||
                          xnestDefaultWindows[pScreen->myNum],
 | 
			
		||||
                          0, 0, xnestWidth, xnestHeight, 0,
 | 
			
		||||
                          xnestUpstreamInfo.screenInfo->root_depth,
 | 
			
		||||
                          InputOutput, DefaultVisual(xnestDisplay,
 | 
			
		||||
                                                     xnestUpstreamInfo.screenId),
 | 
			
		||||
                          valuemask,
 | 
			
		||||
                          &attributes);
 | 
			
		||||
 | 
			
		||||
        xnestScreenSaverWindows[pScreen->myNum] = xcb_generate_id(xnestUpstreamInfo.conn);
 | 
			
		||||
        xcb_aux_create_window(xnestUpstreamInfo.conn,
 | 
			
		||||
                              xnestUpstreamInfo.screenInfo->root_depth,
 | 
			
		||||
                              xnestScreenSaverWindows[pScreen->myNum],
 | 
			
		||||
                              xnestDefaultWindows[pScreen->myNum],
 | 
			
		||||
                              0,
 | 
			
		||||
                              0,
 | 
			
		||||
                              xnestWidth,
 | 
			
		||||
                              xnestHeight,
 | 
			
		||||
                              0,
 | 
			
		||||
                              XCB_WINDOW_CLASS_INPUT_OUTPUT,
 | 
			
		||||
                              xnestUpstreamInfo.screenInfo->root_visual,
 | 
			
		||||
                              valuemask,
 | 
			
		||||
                              &attributes);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!xnestCreateDefaultColormap(pScreen))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,9 @@ is" without express or implied warranty.
 | 
			
		|||
*/
 | 
			
		||||
#include <dix-config.h>
 | 
			
		||||
 | 
			
		||||
#include <xcb/xcb.h>
 | 
			
		||||
#include <xcb/xcb_aux.h>
 | 
			
		||||
 | 
			
		||||
#include <X11/X.h>
 | 
			
		||||
#include <X11/Xdefs.h>
 | 
			
		||||
#include <X11/Xproto.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -27,6 +30,7 @@ is" without express or implied warranty.
 | 
			
		|||
#include "region.h"
 | 
			
		||||
 | 
			
		||||
#include "Xnest.h"
 | 
			
		||||
#include "xnest-xcb.h"
 | 
			
		||||
 | 
			
		||||
#include "Display.h"
 | 
			
		||||
#include "Screen.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +78,7 @@ Bool
 | 
			
		|||
xnestCreateWindow(WindowPtr pWin)
 | 
			
		||||
{
 | 
			
		||||
    unsigned long mask;
 | 
			
		||||
    XSetWindowAttributes attributes;
 | 
			
		||||
    xcb_params_cw_t attributes = { 0 };
 | 
			
		||||
    Visual *visual;
 | 
			
		||||
    ColormapPtr pCmap;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -114,18 +118,21 @@ xnestCreateWindow(WindowPtr pWin)
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    xnestWindowPriv(pWin)->window = XCreateWindow(xnestDisplay,
 | 
			
		||||
                                                  xnestWindowParent(pWin),
 | 
			
		||||
                                                  pWin->origin.x -
 | 
			
		||||
                                                  wBorderWidth(pWin),
 | 
			
		||||
                                                  pWin->origin.y -
 | 
			
		||||
                                                  wBorderWidth(pWin),
 | 
			
		||||
                                                  pWin->drawable.width,
 | 
			
		||||
                                                  pWin->drawable.height,
 | 
			
		||||
                                                  pWin->borderWidth,
 | 
			
		||||
                                                  pWin->drawable.depth,
 | 
			
		||||
                                                  pWin->drawable.class,
 | 
			
		||||
                                                  visual, mask, &attributes);
 | 
			
		||||
    xnestWindowPriv(pWin)->window = xcb_generate_id(xnestUpstreamInfo.conn);
 | 
			
		||||
    xcb_aux_create_window(xnestUpstreamInfo.conn,
 | 
			
		||||
                          pWin->drawable.depth,
 | 
			
		||||
                          xnestWindowPriv(pWin)->window,
 | 
			
		||||
                          xnestWindowParent(pWin),
 | 
			
		||||
                          pWin->origin.x - wBorderWidth(pWin),
 | 
			
		||||
                          pWin->origin.y - wBorderWidth(pWin),
 | 
			
		||||
                          pWin->drawable.width,
 | 
			
		||||
                          pWin->drawable.height,
 | 
			
		||||
                          pWin->borderWidth,
 | 
			
		||||
                          pWin->drawable.class,
 | 
			
		||||
                          (visual ? visual->visualid : 0),
 | 
			
		||||
                          mask,
 | 
			
		||||
                          &attributes);
 | 
			
		||||
 | 
			
		||||
    xnestWindowPriv(pWin)->parent = xnestWindowParent(pWin);
 | 
			
		||||
    xnestWindowPriv(pWin)->x = pWin->origin.x - wBorderWidth(pWin);
 | 
			
		||||
    xnestWindowPriv(pWin)->y = pWin->origin.y - wBorderWidth(pWin);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,7 @@ srcs = [
 | 
			
		|||
 | 
			
		||||
x11_xcb_dep = dependency('x11-xcb', required: true)
 | 
			
		||||
xcb_dep = dependency('xcb', required: true)
 | 
			
		||||
xcb_aux_dep = dependency('xcb-aux', required: true)
 | 
			
		||||
 | 
			
		||||
executable(
 | 
			
		||||
    'Xnest',
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +32,7 @@ executable(
 | 
			
		|||
        common_dep,
 | 
			
		||||
        xnest_dep,
 | 
			
		||||
        xcb_dep,
 | 
			
		||||
        xcb_aux_dep,
 | 
			
		||||
        x11_xcb_dep,
 | 
			
		||||
    ],
 | 
			
		||||
    link_with: [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue