Use more g_signal_connect_object()

Most of these are probably paranoid, not bugs. I haven't done an
exhaustive review to see what really needs it: that would be
time-consuming and require significant familiarity with the Calendar
codebase. This was just a quick check. Anyway, I vote for paranoid
when it comes to using g_signal_connect() regardless. It's dangerous,
and there's no reason to ever leave a signal connected after the user
data object has been destroyed.

Fixes #423
This commit is contained in:
Michael Catanzaro
2019-09-14 23:28:42 +00:00
committed by Georges Basile Stavracas Neto
parent 9644c30eee
commit 18ae67cb59
15 changed files with 87 additions and 74 deletions
+5 -4
View File
@@ -173,10 +173,11 @@ login_proxy_acquired_cb (GObject *source,
return;
}
g_signal_connect (self->proxy,
"g-signal",
G_CALLBACK (logind_signal_received_cb),
self);
g_signal_connect_object (self->proxy,
"g-signal",
G_CALLBACK (logind_signal_received_cb),
self,
0);
g_debug ("Successfully acquired logind DBus proxy");
}
+9 -8
View File
@@ -883,10 +883,11 @@ gcal_manager_setup_shell_search (GcalManager *self,
return;
self->shell_search_data_model = e_cal_data_model_new (gcal_thread_submit_job);
g_signal_connect_swapped (self->shell_search_data_model,
"view-state-changed",
G_CALLBACK (model_state_changed),
self);
g_signal_connect_object (self->shell_search_data_model,
"view-state-changed",
G_CALLBACK (model_state_changed),
self,
G_CONNECT_SWAPPED);
e_cal_data_model_set_expand_recurrences (self->shell_search_data_model, TRUE);
e_cal_data_model_set_timezone (self->shell_search_data_model, e_cal_util_get_system_timezone ());
@@ -1608,13 +1609,13 @@ gcal_manager_startup (GcalManager *self)
/* The eds_credentials_prompter responses to REQUIRED and REJECTED reasons,
the SSL_FAILED should be handled elsewhere. */
g_signal_connect (self->source_registry, "credentials-required", G_CALLBACK (source_credentials_required_cb), self);
g_signal_connect_object (self->source_registry, "credentials-required", G_CALLBACK (source_credentials_required_cb), self, 0);
e_credentials_prompter_process_awaiting_credentials (self->credentials_prompter);
g_signal_connect_swapped (self->source_registry, "source-added", G_CALLBACK (load_source), self);
g_signal_connect_swapped (self->source_registry, "source-removed", G_CALLBACK (remove_source), self);
g_signal_connect_swapped (self->source_registry, "source-changed", G_CALLBACK (source_changed), self);
g_signal_connect_object (self->source_registry, "source-added", G_CALLBACK (load_source), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->source_registry, "source-removed", G_CALLBACK (remove_source), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->source_registry, "source-changed", G_CALLBACK (source_changed), self, G_CONNECT_SWAPPED);
/* create data model */
self->e_data_model = e_cal_data_model_new (gcal_thread_submit_job);
+6 -6
View File
@@ -428,7 +428,7 @@ gcal_shell_search_provider_set_property (GObject *object,
GcalManager *manager = gcal_context_get_manager (self->context);
gcal_manager_setup_shell_search (manager, E_CAL_DATA_MODEL_SUBSCRIBER (self));
g_signal_connect_swapped (manager, "query-completed", G_CALLBACK (query_completed_cb), self);
g_signal_connect_object (manager, "query-completed", G_CALLBACK (query_completed_cb), self, G_CONNECT_SWAPPED);
g_object_notify_by_pspec (object, properties[PROP_CONTEXT]);
}
@@ -463,11 +463,11 @@ gcal_shell_search_provider_init (GcalShellSearchProvider *self)
self->events = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
self->skel = gcal_shell_search_provider2_skeleton_new ();
g_signal_connect_swapped (self->skel, "handle-get-initial-result-set", G_CALLBACK (get_initial_result_set_cb), self);
g_signal_connect_swapped (self->skel, "handle-get-subsearch-result-set", G_CALLBACK (get_subsearch_result_set_cb), self);
g_signal_connect_swapped (self->skel, "handle-get-result-metas", G_CALLBACK (get_result_metas_cb), self);
g_signal_connect_swapped (self->skel, "handle-activate-result", G_CALLBACK (activate_result_cb), self);
g_signal_connect_swapped (self->skel, "handle-launch-search", G_CALLBACK (launch_search_cb), self);
g_signal_connect_object (self->skel, "handle-get-initial-result-set", G_CALLBACK (get_initial_result_set_cb), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->skel, "handle-get-subsearch-result-set", G_CALLBACK (get_subsearch_result_set_cb), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->skel, "handle-get-result-metas", G_CALLBACK (get_result_metas_cb), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->skel, "handle-activate-result", G_CALLBACK (activate_result_cb), self, G_CONNECT_SWAPPED);
g_signal_connect_object (self->skel, "handle-launch-search", G_CALLBACK (launch_search_cb), self, G_CONNECT_SWAPPED);
}
GcalShellSearchProvider*