From 03071c388be1d4e55b1105b020001273408bcd86 Mon Sep 17 00:00:00 2001 From: Eric Koegel Date: Tue, 26 Aug 2014 20:18:41 +0300 Subject: [PATCH] Try to pinpoint where it crashes --- .../power-manager-plugin/power-manager-button.c | 79 +++++++++++++++------- 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/panel-plugins/power-manager-plugin/power-manager-button.c b/panel-plugins/power-manager-plugin/power-manager-button.c index 1a95da2..5dcb46d 100644 --- a/panel-plugins/power-manager-plugin/power-manager-button.c +++ b/panel-plugins/power-manager-plugin/power-manager-button.c @@ -118,35 +118,52 @@ get_display_device (PowerManagerButton *button) gdouble highest_percentage = 0; BatteryDevice *display_device = NULL; + TRACE("entering"); + + g_return_val_if_fail ( POWER_MANAGER_IS_BUTTON(button), NULL ); + if (button->priv->display_device) { - item = find_device_in_list (button, up_device_get_object_path (button->priv->display_device)); - if (item) - return item->data; + item = find_device_in_list (button, up_device_get_object_path (button->priv->display_device)); + if (item) + { + DBG("display_device found in list"); + return item->data; + } + else + { + DBG("display_device not in list"); + } } /* We want to find the battery or ups device with the highest percentage * and use that to get our tooltip from */ for (item = g_list_first (button->priv->devices); item != NULL; item = g_list_next (item)) { - BatteryDevice *battery_device = item->data; - guint type = 0; - gdouble percentage; + BatteryDevice *battery_device = item->data; + guint type = 0; + gdouble percentage; - g_object_get (battery_device->device, - "kind", &type, - "percentage", &percentage, - NULL); + if (!battery_device->device) + { + DBG("!battery_device->device"); + continue; + } - if ( type == UP_DEVICE_KIND_BATTERY || type == UP_DEVICE_KIND_UPS) - { - if ( highest_percentage < percentage ) - { - /* found something better */ - display_device = battery_device; - highest_percentage = percentage; - } - } + g_object_get (battery_device->device, + "kind", &type, + "percentage", &percentage, + NULL); + + if ( type == UP_DEVICE_KIND_BATTERY || type == UP_DEVICE_KIND_UPS) + { + if ( highest_percentage < percentage ) + { + DBG("better device found"); + display_device = battery_device; + highest_percentage = percentage; + } + } } return display_device; @@ -157,16 +174,28 @@ power_manager_button_set_tooltip (PowerManagerButton *button) { BatteryDevice *display_device = get_display_device (button); - if ( display_device ) + TRACE("entering"); + + if (!GTK_IS_WIDGET (button)) { - /* if we have something, display it */ - gtk_widget_set_tooltip_markup (GTK_WIDGET (button), display_device->details); + g_critical ("power_manager_button_set_tooltip: !GTK_IS_WIDGET (button)"); + return; } - else + + if ( display_device ) { - /* how did we get here? */ - gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Display battery levels for attached devices")); + /* if we have something, display it */ + if( display_device->details ) + { + DBG("setting tooltip"); + gtk_widget_set_tooltip_markup (GTK_WIDGET (button), display_device->details); + return; + } } + + /* Odds are this is a desktop without any batteries attached */ + DBG("setting generic tooltip"); + gtk_widget_set_tooltip_text (GTK_WIDGET (button), _("Display battery levels for attached devices")); } static GList* -- 2.0.4