<html>
    <head>
      <base href="https://bugzilla.gnome.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - memory leak"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=761312#c9">Comment # 9</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - memory leak"
   href="https://bugzilla.gnome.org/show_bug.cgi?id=761312">bug 761312</a>
              from <span class="vcard"><a href="page.cgi?id=describeuser.html&login=rstrode%40redhat.com" title="Ray Strode [halfline] <rstrode@redhat.com>"> <span class="fn">Ray Strode [halfline]</span></a>
</span></b>
        <pre>Review of <span class=""><a href="attachment.cgi?id=320153&action=diff" name="attach_320153" title="wayland: stage uncommited changes to dedicated buffer">attachment 320153</a> <a href="attachment.cgi?id=320153&action=edit" title="wayland: stage uncommited changes to dedicated buffer">[details]</a></span> <a href='review?bug=761312&attachment=320153'>[review]</a>:

::: gdk/wayland/gdkwindow-wayland.c
@@ +685,3 @@
+          cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
+          cairo_paint (cr);
+          cairo_destroy (cr);

So this is costly.  It won't happen much in practice now that mutter releases
the buffer before the frame callback, but we could optimize this by avoiding
the copy up front, only doing incremental changes into the staging buffer, and
then compositing the read back buffer on top of the incremental changes using
the DEST_OUT operator.

Another idea would be to use memcpy instead of cairo to do the copy.  We know
the buffers are linear with width == rowstride, so we can get by with one
memcpy call. It could be that cairo/pixman already fall back to a memcpy in
this situation though.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>