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