gnome-desktop r5300 - in trunk/libgnome-desktop: . libgnomeui



Author: federico
Date: Thu Dec  4 00:26:25 2008
New Revision: 5300
URL: http://svn.gnome.org/viewvc/gnome-desktop?rev=5300&view=rev

Log:
Return errors from gnome_rr_screen_new()

Signed-off-by: Federico Mena Quintero <federico novell com>

Modified:
   trunk/libgnome-desktop/gnome-rr.c
   trunk/libgnome-desktop/libgnomeui/gnome-rr.h

Modified: trunk/libgnome-desktop/gnome-rr.c
==============================================================================
--- trunk/libgnome-desktop/gnome-rr.c	(original)
+++ trunk/libgnome-desktop/gnome-rr.c	Thu Dec  4 00:26:25 2008
@@ -24,6 +24,7 @@
 
 #define GNOME_DESKTOP_USE_UNSTABLE_API
 
+#include <glib/gi18n-lib.h>
 #include "libgnomeui/gnome-rr.h"
 #include <string.h>
 #include <X11/Xlib.h>
@@ -449,7 +450,7 @@
     else
     {
 	g_free (info);
-	return NULL;
+	return NULL; /* FMQ: return error */
     }
 }
 
@@ -512,11 +513,14 @@
 GnomeRRScreen *
 gnome_rr_screen_new (GdkScreen *gdk_screen,
 		     GnomeRRScreenChanged callback,
-		     gpointer data)
+		     gpointer data,
+		     GError **error)
 {
     Display *dpy = GDK_SCREEN_XDISPLAY (gdk_screen);
     int event_base;
     int ignore;
+
+    g_return_val_if_fail (error == NULL || *error == NULL, NULL);
     
     if (XRRQueryExtension (dpy, &event_base, &ignore))
     {
@@ -538,6 +542,7 @@
 	if (!screen->info) {
 	    g_free (screen);
 	    return NULL;
+	    /* FMQ: return error */
 	}
 	
 	XRRSelectInput (screen->xdisplay,
@@ -554,8 +559,13 @@
 	gdk_window_add_filter (screen->gdk_root, screen_on_event, screen);
 	return screen;
     }
-    
-    return NULL;
+    else
+    {
+	g_set_error (error, GNOME_RR_ERROR, GNOME_RR_ERROR_NO_RANDR_EXTENSION,
+		     _("RANDR extension is not present"));
+	
+	return NULL;
+   }
 }
 
 void

Modified: trunk/libgnome-desktop/libgnomeui/gnome-rr.h
==============================================================================
--- trunk/libgnome-desktop/libgnomeui/gnome-rr.h	(original)
+++ trunk/libgnome-desktop/libgnomeui/gnome-rr.h	Thu Dec  4 00:26:25 2008
@@ -56,12 +56,14 @@
 
 typedef enum {
     GNOME_RR_ERROR_UNKNOWN,		/* generic "fail" */
+    GNOME_RR_ERROR_NO_RANDR_EXTENSION,	/* RANDR extension is not present */
 } GnomeRRError;
 
 /* GnomeRRScreen */
 GnomeRRScreen * gnome_rr_screen_new                (GdkScreen             *screen,
 						    GnomeRRScreenChanged   callback,
-						    gpointer               data);
+						    gpointer               data,
+						    GError               **error);
 void            gnome_rr_screen_destroy            (GnomeRRScreen         *screen);
 GnomeRROutput **gnome_rr_screen_list_outputs       (GnomeRRScreen         *screen);
 GnomeRRCrtc **  gnome_rr_screen_list_crtcs         (GnomeRRScreen         *screen);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]