Hi Asalle and all, I am Asalle's OPW-mentor.
Asalle, Thank you for your intro and for posting the result of your past 2+ months of work. The newest code in Asalle's repo at https://webmail.all-inkl.com/bitbucket.org/AsalleKim/gen_swap_check is in the branch "basic_swapping", so please check out that branch for testing/reviewing. For now, I have a comment to your question 2, and a quick review of the integration into Xext/shape.c, and one comment about the dispatch functions. ( I know most of the other code already... though I didn't test your latest changes.) Asal Mirzaieva wrote on 16.02.2015 20:46: > 2. To test the code I need to integrate it to the xserver. > I already made some changes into Xext/shape.c so it uses the generated code > now. > The Xext/shape.h must include the swapcheck_shape.h (generated one). > Would it be okay if I copy all generated headers to {installdir}/include/xcb, > mixing the genswap-generated code and the regular code, generated by > c_client.py? > And copy the compiled swapcheck_* files to {installdir}/lib. You do not need to go via {installdir} for these files because everything is internal to xorg/xserver. Actually, these files should not be installed because they do not represent an external API. I think it will be sufficient to add the directory containing the generated headers to the includepath for those *.c files which include them. ( the headers are generated into subdirectory "proto/gen" of xorg/xserver ) Or put the generated headers in the "include" directory of the xorg/xserver source (or a subdirectory of it.) In general, I cannot provide good help for the build-specific issues because Automake is not yet an area of strength. (I learned most of my Xserver stuff when imake was still used...) I'd appreciate help in this area from people on this list who are more knowledgeable with the Automake based build system. *** Here's my review of your changes to Xext/shape.c: > diff --git a/Xext/shape.c b/Xext/shape.c > index bb479b1..54e71d6 100644 > --- a/Xext/shape.c > +++ b/Xext/shape.c > @@ -1025,9 +1025,25 @@ ProcShapeGetRectangles(ClientPtr client) > return Success; > } > > +#include "xcb/swapcheck_shape.h" > + > static int > ProcShapeDispatch(ClientPtr client) > { > + REQUEST(xReq); > + if(xcb_shape_Check_dispatch(client) == Success) This should be "stuff" instead of "client" because your function processes a request-ptr directly. The return-type of xcb_shape_Check_dispatch is not a BOOL but a status. So you'd need to add "== Success". > + { > + return ProcShapeDispatch_Unchecked(client); > + } > + else > + { > + return BadLength; > + } > +} > + > +static int > +ProcShapeDispatch_Unchecked(ClientPtr client) > +{ > REQUEST(xReq); > switch (stuff->data) { > case X_ShapeQueryVersion: > @@ -1073,6 +1089,22 @@ ProcShapeDispatch(ClientPtr client) > } > } > > +static int > +SProcShapeDispatch(ClientPtr client) > +{ > + REQUEST(xReq); > + > + if(xcb_shape_SwapFromClient_dispatch(client)) This should be "stuff" instead of "client". The return-type of xcb_shape_SwapFromClient_dispatch is not a BOOL but a status. So you'd need to add "== Success". > + { > + return ProcShapeDispatch_Unchecked(client); > + } > + else > + { > + return BadLength; > + } > +} > + > + > static void > SShapeNotifyEvent(xShapeNotifyEvent * from, xShapeNotifyEvent * to) > { > -- > 2.1.1 You'll need to remove the original function SProcShapeDispatch, and all the other SProc functions. *** In the generated dispatch functions, there should be a "default:" label in the switch statements. For "default:", return a "BadRequest" error code. Best regards, Chris _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
