This is an automated email from the git hooks/post-receive script. hjudt pushed a commit to branch master in repository panel-plugins/xfce4-weather-plugin.
commit 6229a7754b86d6f8f2b9fee192cecf8de8d45480 Author: Harald Judt <[email protected]> Date: Tue Sep 23 21:56:44 2014 +0200 Fix removing GSources. Check to see if a GSource exists before destroying it, since any GSource may be destroyed early in the main event loop if its dispatch callback returns FALSE. --- panel-plugin/weather.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/panel-plugin/weather.c b/panel-plugin/weather.c index e8866ee..61395bd 100644 --- a/panel-plugin/weather.c +++ b/panel-plugin/weather.c @@ -706,10 +706,14 @@ schedule_next_wakeup(plugin_data *data) time_t now_t = time(NULL), next_day_t; gdouble diff; gchar *date; + GSource *source; if (data->update_timer) { - g_source_remove(data->update_timer); - data->update_timer = 0; + source = g_main_context_find_source_by_id(NULL, data->update_timer); + if (source) { + g_source_destroy(source); + data->update_timer = 0; + } } next_day_t = day_at_midnight(now_t, 1); @@ -1379,6 +1383,7 @@ void update_weatherdata_with_reset(plugin_data *data) { time_t now_t; + GSource *source; weather_debug("Update weatherdata with reset."); g_assert(data != NULL); @@ -1386,8 +1391,11 @@ update_weatherdata_with_reset(plugin_data *data) return; if (data->update_timer) { - g_source_remove(data->update_timer); - data->update_timer = 0; + source = g_main_context_find_source_by_id(NULL, data->update_timer); + if (source) { + g_source_destroy(source); + data->update_timer = 0; + } } /* set location timezone */ @@ -1443,6 +1451,7 @@ close_summary(GtkWidget *widget, gpointer *user_data) { plugin_data *data = (plugin_data *) user_data; + GSource *source; if (data->summary_details) summary_details_free(data->summary_details); @@ -1451,8 +1460,12 @@ close_summary(GtkWidget *widget, /* deactivate the summary window update timer */ if (data->summary_update_timer) { - g_source_remove(data->summary_update_timer); - data->summary_update_timer = 0; + source = g_main_context_find_source_by_id(NULL, + data->summary_update_timer); + if (source) { + g_source_destroy(source); + data->summary_update_timer = 0; + } } /* sync toggle button state */ @@ -1943,12 +1956,17 @@ static void xfceweather_free(XfcePanelPlugin *plugin, plugin_data *data) { + GSource *source; + weather_debug("Freeing plugin data."); g_assert(data != NULL); if (data->update_timer) { - g_source_remove(data->update_timer); - data->update_timer = 0; + source = g_main_context_find_source_by_id(NULL, data->update_timer); + if (source) { + g_source_destroy(source); + data->update_timer = 0; + } } #ifdef HAVE_UPOWER_GLIB -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list [email protected] https://mail.xfce.org/mailman/listinfo/xfce4-commits
