summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@novell.com>2008-12-04 00:28:39 +0000
committerFederico Mena Quintero <federico@src.gnome.org>2008-12-04 00:28:39 +0000
commit781c2139e9bc7cdf0f69ae10d9fe6454dc22c808 (patch)
tree0eabd663116c774cf3ebe66d3defda39144b9f3f
parent1969c3410d7caa77e73cc3ebecedf1e0155ea101 (diff)
downloadgnome-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.c19
-rw-r--r--libgnome-desktop/gnome-rr.c27
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)