With GCC 8.0.1 (Fedora 28), cast to different function pointer can lead to warnings, like: event-loop.c: In function ‘watch_update_mask’: event-loop.c:146:42: error: cast between incompatible function types from ‘gboolean (*)(GIOChannel *, GIOCondition, void *)’ {aka ‘int (*)(struct _GIOChannel *, enum <anonymous>, void *)’} to ‘gboolean (*)(void *)’ {aka ‘int (*)(void *)’} [-Werror=cast-function-type] g_source_set_callback(watch->source, (GSourceFunc)watch_func, watch, NULL); ^ cc1: all warnings being treated as errors As g_source_set_callback expect a function pointer which type changes based on the type of source (so is expected) silent the possible warning. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/event-loop.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/event-loop.c b/server/event-loop.c index 582782e1..d3b7de1b 100644 --- a/server/event-loop.c +++ b/server/event-loop.c @@ -143,7 +143,12 @@ static void watch_update_mask(const SpiceCoreInterfaceInternal *iface, return; watch->source = g_io_create_watch(watch->channel, spice_event_to_giocondition(event_mask)); - g_source_set_callback(watch->source, (GSourceFunc)watch_func, watch, NULL); + /* g_source_set_callback() documentation says: + * "The exact type of func depends on the type of source; ie. you should + * not count on func being called with data as its first parameter." + * In this case is a GIOFunc. First cast (GIOFunc) make sure is the right type, + * other casts make possible warning silent */ + g_source_set_callback(watch->source, (GSourceFunc)(void*)(GIOFunc)watch_func, watch, NULL); g_source_attach(watch->source, watch->context); } -- 2.17.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel