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 }