diff options
author | Federico Mena Quintero <federico@novell.com> | 2008-12-04 00:28:39 +0000 |
---|---|---|
committer | Federico Mena Quintero <federico@src.gnome.org> | 2008-12-04 00:28:39 +0000 |
commit | 781c2139e9bc7cdf0f69ae10d9fe6454dc22c808 (patch) | |
tree | 0eabd663116c774cf3ebe66d3defda39144b9f3f | |
parent | 1969c3410d7caa77e73cc3ebecedf1e0155ea101 (diff) | |
download | gnome-desktop-781c2139e9bc7cdf0f69ae10d9fe6454dc22c808.tar.gz |
Basic error reporting from gnome_rr_config_apply_stored()
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=5310
-rw-r--r-- | libgnome-desktop/gnome-rr-config.c | 19 | ||||
-rw-r--r-- | libgnome-desktop/gnome-rr.c | 27 |
2 files changed, 35 insertions, 11 deletions
diff --git a/libgnome-desktop/gnome-rr-config.c b/libgnome-desktop/gnome-rr-config.c index 5581e14b..5123a75b 100644 --- a/libgnome-desktop/gnome-rr-config.c +++ b/libgnome-desktop/gnome-rr-config.c @@ -1110,6 +1110,8 @@ gnome_rr_config_new_stored (GnomeRRScreen *screen) GnomeRRConfig **configs; GnomeRRConfig *result; + /* FMQ: return error */ + if (!screen) return NULL; @@ -1167,14 +1169,23 @@ gnome_rr_config_apply (GnomeRRConfig *config, } gboolean -gnome_rr_config_apply_stored (GnomeRRScreen *screen) +gnome_rr_config_apply_stored (GnomeRRScreen *screen, GError **error) { GnomeRRConfig *stored; + GError *my_error; - if (!screen) - return FALSE; + g_return_val_if_fail (screen != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - gnome_rr_screen_refresh (screen); + my_error = NULL; + if (!gnome_rr_screen_refresh (screen, &my_error)) { + if (my_error) { + g_propagate_error (error, my_error); + return FALSE; /* This is a genuine error */ + } + + /* This means the screen didn't change, so just proceed */ + } stored = gnome_rr_config_new_stored (screen); diff --git a/libgnome-desktop/gnome-rr.c b/libgnome-desktop/gnome-rr.c index bb9470cb..a400837e 100644 --- a/libgnome-desktop/gnome-rr.c +++ b/libgnome-desktop/gnome-rr.c @@ -478,16 +478,16 @@ screen_update (GnomeRRScreen *screen, gboolean force_callback, GError **error) g_assert (screen != NULL); info = screen_info_new (screen, error); - if (info) - { - if (info->resources->configTimestamp != screen->info->resources->configTimestamp) + if (!info) + return FALSE; + + if (info->resources->configTimestamp != screen->info->resources->configTimestamp) changed = TRUE; - screen_info_free (screen->info); + screen_info_free (screen->info); - screen->info = info; - } - + screen->info = info; + if ((changed || force_callback) && screen->callback) screen->callback (screen, screen->data); @@ -630,6 +630,19 @@ gnome_rr_screen_get_ranges (GnomeRRScreen *screen, *max_height = screen->info->max_height; } +/** + * gnome_rr_screen_refresh + * @screen: a #GnomeRRScreen + * @error: location to store error, or %NULL + * + * Refreshes the screen configuration, and calls the screen's callback if it + * exists and if the screen's configuration changed. + * + * Return value: TRUE if the screen's configuration changed; otherwise, the + * function returns FALSE and a NULL error if the configuration didn't change, + * or FALSE and a non-NULL error if there was an error while refreshing the + * configuration. + */ gboolean gnome_rr_screen_refresh (GnomeRRScreen *screen, GError **error) |