On Fri, Apr 23, 2010 at 9:39 PM, Chris Wilson <span dir="ltr">&lt;<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On Fri, 23 Apr 2010 11:59:12 +1200, &quot;Robert O&#39;Callahan&quot; &lt;<a href="mailto:robert@ocallahan.org">robert@ocallahan.org</a>&gt; wrote:<br>
&gt; How would people feel about introducing some kind of &quot;context backend&quot; that<br>
&gt; lets pretty much all of the functionality of a cairo_t be passed straight<br>
&gt; through to a platform context backend?<br>
<br>
</div>The name I picked for this was cairo_gstate_backend_t, mostly to avoid the<br>
confusion that I think arises from cairo_backend_t/cairo_surface_backend_t.<br></blockquote><div><br>Does you mean you&#39;d have cairo_save/cairo_restore manage a stack of cairo_gstate_backend_t? Because I was thinking they should be backend functions instead...<br>
<br>How about &#39;cairo_context_backend_t&#39;?<br><br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
The goal is to then to pass the information to the backend immediately,<br>
and convert the existing implementation into a library of core helpers<br>
that the backends may choose to use or to assist them in their task.</blockquote><div><br>That&#39;s one way to do it. With that approach, the existing backends would fill their function tables with pointers to the &quot;default implementation&quot;.<br>
<br>Another way to do it would be more like the surface backends; make the default be NULL and have cairo_ functions call through to the backend function if it&#39;s non-NULL, otherwise continue on with the default implementation.<br>
<br>Any particular reason to favour one approach over the other? Without having thought about it much, the latter approach seems to me slightly easier and less likely to regress performance (even a tiny bit) for existing backends.<br>
<br></div>Rob <br></div>-- <br>&quot;He was pierced for our transgressions, he was crushed for our iniquities; the punishment that brought us peace was upon him, and by his wounds we are healed. We all, like sheep, have gone astray, each of us has turned to his own way; and the LORD has laid on him the iniquity of us all.&quot; [Isaiah 53:5-6]<br>