<p dir="ltr">Looks good to me. Ship it!  This was part of some of my defunct dispatcher patches at one point.  I think this is a lot cleaner than casting all the time anyway.<br>
--Jason</p>
<div class="gmail_quote">On Mar 28, 2013 8:58 AM, "Giulio Camuffo" <<a href="mailto:giuliocamuffo@gmail.com">giuliocamuffo@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This is needed to make C++ programs that include wayland-server.h build:<br>
C++ does not allow conversions from data pointers to function pointers.<br>
---<br>
This is the cleanest solution, imho. But if there are problems related to<br>
Wayland internals, or libffi, or something else, there are two other<br>
options:<br>
use a union { void *obj; void (* const *func)(); }; in wl_resource_init()<br>
in wayland-server.h to convert between the two (really ugly imho) or<br>
uninline wl_resource_init() and put the implementation somewhere the c++<br>
compiler doesn't see.<br>
<br>
 src/wayland-util.h | 2 +-<br>
 1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/src/wayland-util.h b/src/wayland-util.h<br>
index 257a5d1..4728aaa 100644<br>
--- a/src/wayland-util.h<br>
+++ b/src/wayland-util.h<br>
@@ -56,7 +56,7 @@ struct wl_interface {<br>
<br>
 struct wl_object {<br>
        const struct wl_interface *interface;<br>
-       void (* const * implementation)(void);<br>
+       const void *implementation;<br>
        uint32_t id;<br>
 };<br>
<br>
--<br>
1.8.2<br>
<br>
_______________________________________________<br>
wayland-devel mailing list<br>
<a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/wayland-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/wayland-devel</a><br>
</blockquote></div>