On Wed, 28 Nov 2012 09:49:18 -0500 Kristian Høgsberg <[email protected]> wrote:
> On Fri, Nov 23, 2012 at 03:56:51PM +0200, Pekka Paalanen wrote: > > The wl_buffer reference counting API has been inconsistent. You would > > manually increment the refcount and register a destroy listener, as > > opposed to calling weston_buffer_post_release(), which internally > > decremented the refcount, and then removing a list item. > > > > Replace both cases with a single function: > > weston_buffer_reference(wl_buffer **ref, wl_buffer *buffer, listener) > > > > Buffer is assigned to *ref, while taking care of all the refcounting and > > release posting. You take a reference by passing a non-NULL buffer, and > > release a reference by passing NULL as buffer. Registering and > > de-registering the destroy listener is included. > > > > This is inspired by the pipe_resource_reference() of Mesa. > > > > Additionally, when a surface gets destroyed, the associated wl_buffer > > will send a release event. Usually the buffer is already destroyed on > > client side, so the event will be discarded by libwayland-client. > > > > Signed-off-by: Pekka Paalanen <[email protected]> > > I think this is fine, but can we make it a struct > weston_buffer_reference instead, that includes the struct wl_listener > and buffer pointer? All users just set up a listener that NULLs the > buffer pointers so we should pull that logic into the reference and > reduce the required boilerplate code. Cool, I can do that. Though I might have some urgent stuff to do, so may take till next week. Thanks, pq _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
