view: Auto disconnect weather-changed signal handler
Use g_signal_connect_object in order to auto disconnect the weather-changed signal handler when the view object is finalized. https://gitlab.gnome.org/GNOME/gnome-calendar/issues/271
This commit is contained in:
committed by
Andrea Azzarone
parent
a83e119e34
commit
9d0b44d4e3
@@ -1795,9 +1795,6 @@ gcal_month_view_finalize (GObject *object)
|
||||
{
|
||||
GcalMonthView *self = GCAL_MONTH_VIEW (object);
|
||||
|
||||
if (self->weather_service)
|
||||
g_signal_handlers_disconnect_by_func (self->weather_service, weather_changed_cb, self);
|
||||
|
||||
g_clear_pointer (&self->date, g_free);
|
||||
g_clear_pointer (&self->children, g_hash_table_destroy);
|
||||
g_clear_pointer (&self->single_cell_children, g_hash_table_destroy);
|
||||
|
||||
@@ -218,7 +218,7 @@ gcal_view_set_weather_service_impl_helper (GcalWeatherService **old_service,
|
||||
g_set_object (old_service, new_service);
|
||||
|
||||
if (*old_service)
|
||||
g_signal_connect (*old_service, "weather-changed", weather_changed_cb, data);
|
||||
g_signal_connect_object (*old_service, "weather-changed", weather_changed_cb, data, 0);
|
||||
|
||||
update_func (data);
|
||||
g_object_notify (G_OBJECT (data), "weather-service");
|
||||
|
||||
@@ -1095,13 +1095,7 @@ gcal_week_header_finalize (GObject *object)
|
||||
for (i = 0; i < 7; i++)
|
||||
g_list_free (self->events[i]);
|
||||
|
||||
if (self->weather_service != NULL)
|
||||
{
|
||||
g_signal_handlers_disconnect_by_func (self->weather_service,
|
||||
(GCallback) on_weather_update,
|
||||
self);
|
||||
g_clear_object (&self->weather_service);
|
||||
}
|
||||
g_clear_object (&self->weather_service);
|
||||
|
||||
for (i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
|
||||
wid_clear (&self->weather_infos[i]);
|
||||
|
||||
Reference in New Issue
Block a user