<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Problem solved.<br>
<br>
The "values[]" variable was too small to store all values.<br>
<strike>&nbsp; CARD32&nbsp;&nbsp; values[2];&nbsp;&nbsp; <br>
<br>
</strike>&nbsp; CARD32&nbsp;&nbsp; values[10];&nbsp;&nbsp; <br>
<br>
Thanks.<br>
<br>
-------------------------------------------------------------<br>
This code is OK.<br>
<br>
<br>
sel_rect = XCBGCONTEXTNew (c);
<br>
<br>
mask = XCBGCFunction/*0*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | XCBGCForeground/*2*/&nbsp;&nbsp; |
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XCBGCBackground/*3*/ | XCBGCLineWidth/*4*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XCBGCLineStyle/*5*/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | XCBGCGraphicsExposures/*16*/;
<br>
<br>
// In same order as the mask.
<br>
values[0] = XCBGXxor;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; // XCBGCFunction
<br>
values[1] = screen-&gt;white_pixel;&nbsp;&nbsp;&nbsp;&nbsp; // XCBGCForeground
<br>
values[2] = 0x1ecf48;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // XCBGCBackground (light
green)
<br>
values[3] = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // XCBGCLineWidth
<br>
values[4] = XCBLineStyleOnOffDash;&nbsp; // XCBGCLineStyle
<br>
values[5] = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; //
XCBGCGraphicsExposures
<br>
<br>
XCBCreateGC (c, sel_rect, win, mask, values);
<br>
....<br>
<br>
// Draw using the XOR (XCBGXxor) pen.
<br>
<br>
case XCBExpose:
<br>
&nbsp; {
<br>
&nbsp;&nbsp;&nbsp;&nbsp;XCBPolyLine (c, CoordModeOrigin, win, sel_rect, 4, polyline);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;XCBPolyRectangle (c, win, sel_rect, 2, rectangles);
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;XCBSync (c, 0);
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;break;
<br>
&nbsp; }
<br>
<br>
case XCBButtonPress:
<br>
&nbsp;{
<br>
&nbsp;&nbsp;&nbsp; // Each second click will make the lines visible (XOR'ing pixels).<br>
&nbsp;&nbsp;&nbsp;&nbsp;XCBPolyLine (c, CoordModeOrigin, win, sel_rect, 4, polyline);
<br>
&nbsp;&nbsp;&nbsp;&nbsp;XCBPolyRectangle (c, win, sel_rect, 2, rectangles);
<br>
&nbsp;}
<br>
<br>
...<br>
<br>
<br>
<br>
<br>
Osmo Maatta wrote:
<blockquote cite="mid446C38B3.7010606@gmail.com" type="cite">Hello, <br>
  <br>
I try to create a GC (graphic context) to draw some rubber lines using
the XOR pen. <br>
  <br>
I do this: <br>
  <br>
&nbsp;XCBGCONTEXT&nbsp;&nbsp;&nbsp; sel_rect; <br>
&nbsp;.... <br>
  <br>
&nbsp;sel_rect = XCBGCONTEXTNew (c); <br>
&nbsp;mask =&nbsp;&nbsp; XCBGCFunction | XCBGCForeground | XCBGCLineStyle |
XCBGCGraphicsExposures; <br>
&nbsp;values[0] = XCBGXxor; &nbsp;values[1] = screen-&gt;black_pixel; <br>
&nbsp;values[2] = XCBLineStyleOnOffDash; <br>
&nbsp;values[3] = 0; <br>
&nbsp;XCBCreateGC (c, sel_rect,&nbsp; win, mask, values); <br>
  <br>
  <br>
and later in <br>
  <br>
case XCBExpose: <br>
{ <br>
&nbsp;&nbsp;&nbsp; printf("Debug expose\n"); <br>
  <br>
&nbsp;&nbsp;&nbsp; XCBPolyRectangle (c, win, sel_rect, 2, rectangles); <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; XCBPolyLine (c, CoordModeOrigin, win, sel_rect, 4, polyline);
  <br>
  <br>
&nbsp;&nbsp;&nbsp; break; <br>
} <br>
--------------------------------- <br>
&nbsp; But it does not draw anything. Only the debug line appears on the
console. <br>
------------------- <br>
  <br>
I have even tried with&nbsp; XCBGXcopy&nbsp; value as XCBGCFunction. <br>
  <br>
values[0] = XCBGXcopy; <br>
Xlib manual says that GXcopy is the default GCFunction. I suppose it's
the same in XCB. <br>
But it does not work. <br>
  <br>
It works (draws lines in a window) if I remove XCBGCFunction from the
mask and remove the value[0]= line. <br>
How to use the values for XCBGCFunction mask ? <br>
------------------------------------------------------------------- <br>
  <br>
I follow this tutorial <br>
  <a class="moz-txt-link-freetext"
 href="http://www.iecn.u-nancy.fr/%7Etorri/files/xcb/doc/">http://www.iecn.u-nancy.fr/~torri/files/xcb/doc/</a>
  <br>
  <br>
Many TIA. <br>
&nbsp;Osmo <br>
  <br>
_______________________________________________ <br>
Xcb mailing list <br>
  <a class="moz-txt-link-abbreviated"
 href="mailto:Xcb@lists.freedesktop.org">Xcb@lists.freedesktop.org</a> <br>
  <a class="moz-txt-link-freetext"
 href="http://lists.freedesktop.org/mailman/listinfo/xcb">http://lists.freedesktop.org/mailman/listinfo/xcb</a>
  <br>
  <br>
</blockquote>
<br>
<br>
</body>
</html>