Mercurial > projects > pk-update-icon
comparison pkui-backend.c @ 45:a29fbf0a7f6c
Prevent calling g_source_remove() on an invalid source ID
author | Guido Berhoerster <gber@opensuse.org> |
---|---|
date | Thu, 18 Jun 2015 13:35:55 +0200 |
parents | f6edbee6441f |
children | 7de92a24e86c |
comparison
equal
deleted
inserted
replaced
44:cf2421217491 | 45:a29fbf0a7f6c |
---|---|
73 | 73 |
74 switch (property_id) { | 74 switch (property_id) { |
75 case PROP_STARTUP_DELAY: | 75 case PROP_STARTUP_DELAY: |
76 self->priv->startup_delay = g_value_get_uint(value); | 76 self->priv->startup_delay = g_value_get_uint(value); |
77 | 77 |
78 g_source_remove(self->priv->periodic_check_id); | 78 if (self->priv->periodic_check_id != 0) { |
79 g_source_remove(self->priv->periodic_check_id); | |
80 } | |
79 self->priv->periodic_check_id = | 81 self->priv->periodic_check_id = |
80 g_timeout_add_seconds(self->priv->startup_delay, | 82 g_timeout_add_seconds(self->priv->startup_delay, |
81 (GSourceFunc)periodic_check, self); | 83 (GSourceFunc)periodic_check, self); |
82 break; | 84 break; |
83 case PROP_CHECK_INTERVAL: | 85 case PROP_CHECK_INTERVAL: |
92 time_to_check = g_get_real_time() - | 94 time_to_check = g_get_real_time() - |
93 self->priv->last_check; | 95 self->priv->last_check; |
94 if (time_to_check <= 0) | 96 if (time_to_check <= 0) |
95 pkui_backend_check_now(self); | 97 pkui_backend_check_now(self); |
96 else { | 98 else { |
97 g_source_remove(self->priv->periodic_check_id); | 99 if (self->priv->periodic_check_id != 0) { |
100 g_source_remove(self->priv->periodic_check_id); | |
101 } | |
98 self->priv->periodic_check_id = | 102 self->priv->periodic_check_id = |
99 g_timeout_add_seconds(time_to_check, | 103 g_timeout_add_seconds(time_to_check, |
100 periodic_check, self); | 104 periodic_check, self); |
101 } | 105 } |
102 } | 106 } |
236 PkuiBackend *self = PKUI_BACKEND(data); | 240 PkuiBackend *self = PKUI_BACKEND(data); |
237 | 241 |
238 pkui_backend_check_now(self); | 242 pkui_backend_check_now(self); |
239 | 243 |
240 /* rescheduling happens after results are available */ | 244 /* rescheduling happens after results are available */ |
245 self->priv->periodic_check_id = 0; | |
241 return (FALSE); | 246 return (FALSE); |
242 } | 247 } |
243 | 248 |
244 static void | 249 static void |
245 process_pk_package_info(PkPackage *pkg, gpointer *user_data) | 250 process_pk_package_info(PkPackage *pkg, gpointer *user_data) |
308 g_ptr_array_unref(list); | 313 g_ptr_array_unref(list); |
309 | 314 |
310 self->priv->last_check = g_get_real_time(); | 315 self->priv->last_check = g_get_real_time(); |
311 | 316 |
312 if (!self->priv->inhibit_check) { | 317 if (!self->priv->inhibit_check) { |
313 if (self->priv->periodic_check_id != 0) | 318 if (self->priv->periodic_check_id != 0) { |
314 g_source_remove(self->priv->periodic_check_id); | 319 g_source_remove(self->priv->periodic_check_id); |
320 } | |
315 self->priv->periodic_check_id = | 321 self->priv->periodic_check_id = |
316 g_timeout_add_seconds(self->priv->check_interval, | 322 g_timeout_add_seconds(self->priv->check_interval, |
317 (GSourceFunc)periodic_check, self); | 323 (GSourceFunc)periodic_check, self); |
318 } | 324 } |
319 } | 325 } |