<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div>
> > > > > In short, instead of<br>
> > > > ><br>
> > > > >         bar = wl_foo_get_bar(foo);<br>
> > > > >         wl_proxy_set_queue((struct wl_proxy *) bar, queue);<br>
> > > > >         wl_bar_add_listener(bar, ...);<br>
> > > > ><br>
> > > > > with this RFC a client does<br>
> > > > ><br>
> > > > >         foo_wrapper = wl_proxy_create_wrapper((struct wl_proxy *)<br>
> > foo);<br>
> > > > >         wl_proxy_set_queue((struct wl_proxy *) foo_wrapper, queue);<br>
> > > > ><br>
> > > > >         bar = wl_foo_get(foo_wrapper);<br>
> > > > >         wl_bar_add_listener(bar, ...);<br>
> > > > ><br>
> > > > > and the with other idea that is implemented anywhere yet AFAIK<br>
> > > > ><br>
> > > > >         bar = wl_foo_get_bar_with_queue(foo, queue)<br>
> > > > >         wl_bar_add_listener(bar, ...);<br>
</div><div><br></div><div>
> > > wl_proxy_create_full(..., queue, listener)<br></div></div></blockquote></div></div></div></div></div></blockquote><div><br></div><div>I would worry that there will be more things that can be done to a proxy besides setting it's queue and listener. So instead of adding lots of arguments to the get_bar wrapper, allow the proxy to be created and everything set up *before* the server object is created:<br><br></div><div>    bar = wl_new_bar();<br></div><div>    wl_proxy_set_queue((struct wl_proxy*)bar, queue); // default queue if this not done<br></div><div>    wl_bar_add_listener(bar, ...);<br></div>    wl_foo_get_bar(foo, bar);<br><div><br></div><div>Note the last function will have to be renamed to avoid a collision in C but I don't have any good ideas what to name it.<br><br><br></div></div></div></div>