<html><head></head><body><div class="ydpdb26dceayahoo-style-wrap" style="font-family: Helvetica Neue, Helvetica, Arial, sans-serif; font-size: 13px;"><div></div>
        <div dir="ltr" data-setdir="false">Thank you very much for the explanation, Alan!<br></div><div><br></div>
        
        </div><div id="yahoo_quoted_8069990656" class="yahoo_quoted">
            <div style="font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:13px;color:#26282a;">
                
                <div>
                    On Saturday, July 31, 2021, 9:36:07 AM PDT, Alan Coopersmith <alan.coopersmith@oracle.com> wrote:
                </div>
                <div><br></div>
                <div><br></div>
                <div><div dir="ltr">On 7/30/21 10:49 PM, Chuanlong Du wrote:<br clear="none">> I was reading the source code of the file GetImage.c <br clear="none">> <<a shape="rect" href="https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/GetImage.c" target="_blank">https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/GetImage.c</a>> and got <br clear="none">> confused about the function XGetImage. Specifically, I'm confused about where <br clear="none">> the defined variable registerxGetImageReq*req; is used. The function never uses <br clear="none">> it again after setting values for req at line 83 <br clear="none">> <<a shape="rect" href="https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/GetImage.c#L83" target="_blank">https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/GetImage.c#L83</a>>. <br clear="none"><br clear="none">The GetReq() call at line 73 sets up req to be in the Xlib buffer of requests to<br clear="none">send to the X server.  The _XReply call at line 85 causes everything in that<br clear="none">buffer, including req, to be sent to the X server for processing, so it<br clear="none">implicitly processes the contents of req.<br clear="none"><br clear="none">> At line 85 <br clear="none">> <<a shape="rect" href="https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/GetImage.c#L85" target="_blank">https://gitlab.freedesktop.org/xorg/lib/libx11/-/blob/master/src/GetImage.c#L85</a>>, <div class="yqt2729942560" id="yqtfd84185"><br clear="none">> does the function _XReply copy the whole display/screen's data to rep or just <br clear="none">> the specified rectangle defined by req? If _XReply copies the whole <br clear="none">> display/screen's data, where does the function XGetImage crop the image to keep <br clear="none">> the specified rectangle only?</div><br clear="none"><br clear="none">The function _XReply simply sends the message to the X server, who does all the<br clear="none">processing and returns the reply.  The X server is responsible for copying just<br clear="none">the specified area, not the whole screen, so Xlib does not need to do any<br clear="none">cropping on its own.<br clear="none"><br clear="none">-- <br clear="none">    -Alan Coopersmith-               <a shape="rect" ymailto="mailto:alan.coopersmith@oracle.com" href="mailto:alan.coopersmith@oracle.com">alan.coopersmith@oracle.com</a><br clear="none">     Oracle Solaris Engineering - <a shape="rect" href="https://blogs.oracle.com/alanc" target="_blank">https://blogs.oracle.com/alanc</a><div class="yqt2729942560" id="yqtfd61631"><br clear="none"></div></div></div>
            </div>
        </div></body></html>