diff --git a/src/gs-auth-pam.c b/src/gs-auth-pam.c
index 5600c06bbf6636235aa706e4b21d293ef32f6f78..d967ef5017b1fb48318da3816db5aa1235f97b93 100644
--- a/src/gs-auth-pam.c
+++ b/src/gs-auth-pam.c
@@ -176,7 +176,8 @@ auth_message_handler (GSAuthMessageStyle   style,
 }
 
 static gboolean
-gs_auth_queued_message_handler (GsAuthMessageHandlerData *data) {
+gs_auth_queued_message_handler (gpointer user_data) {
+    GsAuthMessageHandlerData *data = user_data;
     gboolean res;
 
     if (gs_auth_get_verbose ()) {
@@ -223,7 +224,7 @@ gs_auth_run_message_handler (struct pam_closure  *c,
 
     /* Queue the callback in the gui (the main) thread
      */
-    g_idle_add ((GSourceFunc) gs_auth_queued_message_handler, &data);
+    g_idle_add (gs_auth_queued_message_handler, &data);
 
     if (gs_auth_get_verbose ()) {
         g_message ("Waiting for respose to message style %d: '%s'", style, msg);
diff --git a/src/gs-manager.c b/src/gs-manager.c
index 965be08e0a129bb360aa49d903fc514422509086..0db2f32c4386eb39711559ca1cdabb3f6dff6bba 100644
--- a/src/gs-manager.c
+++ b/src/gs-manager.c
@@ -606,7 +606,8 @@ remove_timers (GSManager *manager) {
 }
 
 static gboolean
-window_deactivated_idle (GSManager *manager) {
+window_deactivated_idle (gpointer user_data) {
+    GSManager *manager = user_data;
     g_return_val_if_fail (manager != NULL, FALSE);
     g_return_val_if_fail (GS_IS_MANAGER (manager), FALSE);
 
@@ -623,7 +624,7 @@ window_deactivated_cb (GSWindow  *window,
     g_return_if_fail (manager != NULL);
     g_return_if_fail (GS_IS_MANAGER (manager));
 
-    g_idle_add ((GSourceFunc)window_deactivated_idle, manager);
+    g_idle_add (window_deactivated_idle, manager);
 }
 
 static GSWindow *
diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c
index 88bedb1af26fa00103a5e4c6ded419f17d70fa6d..4963087816e546c495a9db95ac036276d9681b86 100644
--- a/src/gs-window-x11.c
+++ b/src/gs-window-x11.c
@@ -47,7 +47,7 @@ static void     gs_window_class_init     (GSWindowClass *klass);
 static void     gs_window_init           (GSWindow      *window);
 static void     gs_window_finalize       (GObject       *object);
 
-static gboolean popup_dialog_idle        (GSWindow      *window);
+static gboolean popup_dialog_idle        (gpointer user_data);
 static void     gs_window_dialog_finish  (GSWindow      *window);
 static void     gs_window_set_obscured   (GSWindow      *window,
                                           gboolean       obscured);
@@ -554,11 +554,13 @@ remove_popup_dialog_idle (GSWindow *window) {
 
 static void
 add_popup_dialog_idle (GSWindow *window) {
-    window->priv->popup_dialog_idle_id = g_idle_add ((GSourceFunc)popup_dialog_idle, window);
+    window->priv->popup_dialog_idle_id = g_idle_add (popup_dialog_idle, window);
 }
 
 static gboolean
-emit_deactivated_idle (GSWindow *window) {
+emit_deactivated_idle (gpointer user_data) {
+    GSWindow *window = user_data;
+
     g_signal_emit (window, signals[DEACTIVATED], 0);
 
     return FALSE;
@@ -566,7 +568,7 @@ emit_deactivated_idle (GSWindow *window) {
 
 static void
 add_emit_deactivated_idle (GSWindow *window) {
-    g_idle_add ((GSourceFunc)emit_deactivated_idle, window);
+    g_idle_add (emit_deactivated_idle, window);
 }
 
 static void
@@ -1563,7 +1565,9 @@ popup_dialog (GSWindow *window) {
 }
 
 static gboolean
-popup_dialog_idle (GSWindow *window) {
+popup_dialog_idle (gpointer user_data) {
+    GSWindow *window = user_data;
+
     popup_dialog (window);
 
     window->priv->popup_dialog_idle_id = 0;
diff --git a/src/xfce4-screensaver-command.c b/src/xfce4-screensaver-command.c
index 503252210fac411c5af7241a78b74e217f8a5d4c..d1bed2ac7aa3afc6a418d155ac4cd01bff785e06 100644
--- a/src/xfce4-screensaver-command.c
+++ b/src/xfce4-screensaver-command.c
@@ -176,7 +176,8 @@ screensaver_is_running (GDBusConnection *connection)
 }
 
 static gboolean
-do_command (GDBusConnection *conn) {
+do_command (gpointer user_data) {
+    GDBusConnection *conn = user_data;
     GDBusMessage *reply;
 
     if (!screensaver_is_running (conn)) {
@@ -322,7 +323,7 @@ main (int    argc,
             g_error_free (error);
             return EXIT_FAILURE;
     }
-    g_idle_add ((GSourceFunc)do_command, conn);
+    g_idle_add (do_command, conn);
 
     loop = g_main_loop_new (NULL, FALSE);
     g_main_loop_run (loop);
diff --git a/src/xfce4-screensaver-dialog.c b/src/xfce4-screensaver-dialog.c
index bbb4b4c89650f2c2d76e15c85cf86e9d23888df0..7721df68522b644bfdfed3bcf286038ceb238260 100644
--- a/src/xfce4-screensaver-dialog.c
+++ b/src/xfce4-screensaver-dialog.c
@@ -118,7 +118,7 @@ static void response_ok(void) {
     fflush(stdout);
 }
 
-static gboolean quit_response_ok(void) {
+static gboolean quit_response_ok(gpointer user_data) {
     response_ok();
     gtk_main_quit();
     return FALSE;
@@ -330,7 +330,7 @@ static void response_cb(GSLockPlug *plug,
     }
 }
 
-static gboolean response_request_quit(void) {
+static gboolean response_request_quit(gpointer user_data) {
     printf("REQUEST QUIT\n");
     fflush(stdout);
     return FALSE;
@@ -341,7 +341,8 @@ static gboolean quit_timeout_cb(gpointer user_data) {
     return FALSE;
 }
 
-static gboolean auth_check_idle(GSLockPlug* plug) {
+static gboolean auth_check_idle(gpointer user_data) {
+    GSLockPlug* plug = user_data;
     gboolean     res;
     gboolean     again;
     static guint loop_counter = 0;
@@ -351,7 +352,7 @@ static gboolean auth_check_idle(GSLockPlug* plug) {
 
     if (res) {
         again = FALSE;
-        g_idle_add((GSourceFunc) quit_response_ok, NULL);
+        g_idle_add(quit_response_ok, NULL);
     } else {
         loop_counter++;
 
@@ -364,7 +365,7 @@ static gboolean auth_check_idle(GSLockPlug* plug) {
             /* Don't quit immediately, but rather request that xfce4-screensaver
              * terminates us after it has finished the dialog shake. Time out
              * after 5 seconds and quit anyway if this doesn't happen though */
-            g_idle_add((GSourceFunc) response_request_quit, NULL);
+            g_idle_add(response_request_quit, NULL);
             g_timeout_add_seconds(5, quit_timeout_cb, NULL);
         }
     }
@@ -377,7 +378,7 @@ static void show_cb(GtkWidget *widget,
     print_id(widget);
 }
 
-static gboolean popup_dialog_idle(void) {
+static gboolean popup_dialog_idle(gpointer user_data) {
     GtkWidget      *widget;
     GtkCssProvider *css_provider;
 
@@ -419,7 +420,7 @@ static gboolean popup_dialog_idle(void) {
     gtk_widget_realize(widget);
     gtk_widget_show(widget);
 
-    g_idle_add((GSourceFunc) auth_check_idle, widget);
+    g_idle_add(auth_check_idle, widget);
 
     gs_profile_end(NULL);
 
@@ -593,7 +594,7 @@ int main(int    argc,
 
     gs_debug_init(verbose, FALSE);
 
-    g_idle_add((GSourceFunc) popup_dialog_idle, NULL);
+    g_idle_add(popup_dialog_idle, NULL);
 
     gtk_main();
 
diff --git a/src/xfce4-screensaver-preferences.c b/src/xfce4-screensaver-preferences.c
index 53d919fae1f81851fa76233daf8425c9042932d9..20cb1d2d4c114629cfd46f4e54cf725e38cbaf97 100644
--- a/src/xfce4-screensaver-preferences.c
+++ b/src/xfce4-screensaver-preferences.c
@@ -1838,7 +1838,7 @@ widget_set_best_visual (GtkWidget *widget) {
 }
 
 static gboolean
-setup_treeview_idle (gpointer data) {
+setup_treeview_idle (gpointer user_data) {
     GtkWidget *preview;
     GtkWidget *treeview;
 
@@ -2133,7 +2133,7 @@ configure_capplet (void) {
     g_signal_connect (fullscreen_preview_next, "clicked",
                       G_CALLBACK (fullscreen_preview_next_cb), NULL);
 
-    g_idle_add ((GSourceFunc)setup_treeview_idle, NULL);
+    g_idle_add (setup_treeview_idle, NULL);
 }
 
 static void