From: Faheem Pervez Date: Mon, 22 Mar 2010 16:52:37 +0000 (+0000) Subject: Cleanup "keep display on" funcs X-Git-Url: http://git.maemo.org/git/?p=sbrightapplet;a=commitdiff_plain;h=b3679c5fa7f98c37f958a6803e22d28cc819597c Cleanup "keep display on" funcs --- diff --git a/src/simple-brightness-applet.c b/src/simple-brightness-applet.c index 8dba3ee..b32268d 100644 --- a/src/simple-brightness-applet.c +++ b/src/simple-brightness-applet.c @@ -58,7 +58,7 @@ struct _SimpleBrightnessAppletPrivate guint gconfnotify_id; guint display_keepalive_timeout; - gboolean dispchkbtn_active; + gboolean keepdispon_active; osso_context_t *osso_context; }; @@ -66,12 +66,25 @@ struct _SimpleBrightnessAppletPrivate static void simple_brightness_applet_finalize (GObject *object); /* Callbacks: */ -static gboolean simple_brightness_applet_keep_backlight_alive (SimpleBrightnessApplet *plugin) +static inline void simple_brightness_applet_show_fail_msg (void) { - g_return_val_if_fail (plugin->priv->osso_context, FALSE); + hildon_banner_show_information (NULL, NULL, "Failed to keep backlight on"); +} +static gboolean simple_brightness_applet_keep_backlight_alive (SimpleBrightnessApplet *plugin) +{ osso_display_state_on (plugin->priv->osso_context); - return (osso_display_blanking_pause (plugin->priv->osso_context) == OSSO_OK); + if (osso_display_blanking_pause (plugin->priv->osso_context) != OSSO_OK) + { + simple_brightness_applet_show_fail_msg (); + plugin->priv->display_keepalive_timeout = 0; + g_signal_handler_block (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id); + plugin->priv->keepdispon_active = FALSE; + hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), FALSE); + g_signal_handler_unblock (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id); + return FALSE; + } + return TRUE; } static void simple_brightness_applet_on_gconf_value_changed (GConfClient *gconf_client G_GNUC_UNUSED, guint cnxn_id G_GNUC_UNUSED, GConfEntry *entry G_GNUC_UNUSED, SimpleBrightnessApplet *plugin) @@ -98,51 +111,48 @@ static void simple_brightness_applet_on_settings_button_clicked (GtkWidget *butt static void simple_brightness_applet_on_dispchkbtn_toggled (GtkWidget *button G_GNUC_UNUSED, SimpleBrightnessApplet *plugin) { - GdkPixbuf *pixbuf = NULL; - - plugin->priv->dispchkbtn_active = hildon_check_button_get_active (HILDON_CHECK_BUTTON(plugin->priv->dispchkbtn)); + GdkPixbuf *pixbuf; + plugin->priv->keepdispon_active = hildon_check_button_get_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn)); g_signal_handler_block (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id); - gtk_widget_hide(plugin->priv->settings_dialog); - if (plugin->priv->dispchkbtn_active) - { - simple_brightness_applet_keep_backlight_alive(plugin); - plugin->priv->display_keepalive_timeout = g_timeout_add_seconds(50, (GSourceFunc) simple_brightness_applet_keep_backlight_alive, plugin); - if (plugin->priv->display_keepalive_timeout == 0) + if (plugin->priv->keepdispon_active) { - hildon_banner_show_information(NULL, NULL, "Failed to keep backlight on"); - plugin->priv->dispchkbtn_active = FALSE; - hildon_check_button_set_active(HILDON_CHECK_BUTTON(plugin->priv->dispchkbtn), plugin->priv->dispchkbtn_active); - g_signal_handler_unblock (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id); - return; - } + simple_brightness_applet_keep_backlight_alive (plugin); + plugin->priv->display_keepalive_timeout = g_timeout_add_seconds (50, (GSourceFunc) simple_brightness_applet_keep_backlight_alive, plugin); + if (plugin->priv->display_keepalive_timeout == 0) + { + plugin->priv->keepdispon_active = FALSE; + hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), FALSE); + simple_brightness_applet_show_fail_msg (); + goto finish; + } - gtk_widget_set_name(plugin->priv->applet_button, "hildon-reject-button-finger"); - pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default(), "general_brightness", 18, 0, NULL); + gtk_widget_set_name (plugin->priv->applet_button, "hildon-reject-button-finger"); + pixbuf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), "general_brightness", 18, 0, NULL); if (pixbuf) { - hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), pixbuf); + hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), pixbuf); g_object_unref (pixbuf); - pixbuf = NULL; } } else { - if(g_source_remove(plugin->priv->display_keepalive_timeout)) - { - gtk_widget_set_name(plugin->priv->applet_button, "GtkButton-finger"); - hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), NULL); - plugin->priv->display_keepalive_timeout = 0; - } - else - { - plugin->priv->dispchkbtn_active = TRUE; - hildon_check_button_set_active(HILDON_CHECK_BUTTON(plugin->priv->dispchkbtn), plugin->priv->dispchkbtn_active); - } + if (g_source_remove (plugin->priv->display_keepalive_timeout)) + { + gtk_widget_set_name (plugin->priv->applet_button, "GtkButton-finger"); + hd_status_plugin_item_set_status_area_icon (HD_STATUS_PLUGIN_ITEM (plugin), NULL); + plugin->priv->display_keepalive_timeout = 0; + } + else + { + plugin->priv->keepdispon_active = TRUE; + hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), plugin->priv->keepdispon_active); + } } +finish: g_signal_handler_unblock (plugin->priv->dispchkbtn, plugin->priv->dispchkbtn_toggled_id); gtk_widget_destroy(plugin->priv->settings_dialog); } @@ -167,7 +177,7 @@ static void simple_brightness_applet_on_button_clicked (GtkWidget *button, Simpl plugin->priv->dispchkbtn = hildon_check_button_new (HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH); gtk_button_set_label (GTK_BUTTON (plugin->priv->dispchkbtn), "Keep display on"); gtk_button_set_alignment (GTK_BUTTON (plugin->priv->dispchkbtn), 0.5f, 0.5f); - hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), plugin->priv->dispchkbtn_active); + hildon_check_button_set_active (HILDON_CHECK_BUTTON (plugin->priv->dispchkbtn), plugin->priv->keepdispon_active); gtk_box_pack_start (GTK_BOX (GTK_DIALOG (plugin->priv->settings_dialog)->vbox), plugin->priv->dispchkbtn, TRUE, TRUE, 0); plugin->priv->dispchkbtn_toggled_id = g_signal_connect (plugin->priv->dispchkbtn, "toggled", G_CALLBACK (simple_brightness_applet_on_dispchkbtn_toggled), plugin); @@ -204,9 +214,7 @@ static void simple_brightness_applet_class_init (SimpleBrightnessAppletClass *kl g_type_class_add_private (klass, sizeof (SimpleBrightnessAppletPrivate)); } -static void simple_brightness_applet_class_finalize (SimpleBrightnessAppletClass *klass G_GNUC_UNUSED) -{ -} +static void simple_brightness_applet_class_finalize (SimpleBrightnessAppletClass *klass G_GNUC_UNUSED) {} static void simple_brightness_applet_init (SimpleBrightnessApplet *plugin) { @@ -215,7 +223,7 @@ static void simple_brightness_applet_init (SimpleBrightnessApplet *plugin) return; memset (plugin->priv, 0, sizeof (SimpleBrightnessAppletPrivate)); - plugin->priv->dispchkbtn_active = FALSE; + plugin->priv->keepdispon_active = FALSE; plugin->priv->osso_context = osso_initialize (PACKAGE, PACKAGE_VERSION, TRUE, NULL); if (G_UNLIKELY (!plugin->priv->osso_context)) @@ -238,7 +246,7 @@ static void simple_brightness_applet_finalize (GObject *object) g_signal_handler_disconnect (plugin->priv->brightness_ctrlbar, plugin->priv->brightness_ctrlbar_valchanged_id); if (plugin->priv->display_keepalive_timeout != 0) - g_source_remove(plugin->priv->display_keepalive_timeout); + g_source_remove (plugin->priv->display_keepalive_timeout); if (plugin->priv->gconfnotify_id != 0) { @@ -253,7 +261,7 @@ static void simple_brightness_applet_finalize (GObject *object) } if (plugin->priv->osso_context) - osso_deinitialize(plugin->priv->osso_context); + osso_deinitialize (plugin->priv->osso_context); G_OBJECT_CLASS (simple_brightness_applet_parent_class)->finalize (object); }