summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2011-07-24 10:51:08 +1000
committerRobert Ancell <robert.ancell@canonical.com>2011-07-24 10:51:08 +1000
commit5c667b02eb582350673bc9672cb40c4acf2dafbd (patch)
tree3ae7d3fa42cf7d7949d1b9a00bc032a56d1c7781
parent545bb9deb2281e390e32128743929473db51819b (diff)
downloadlightdm-5c667b02eb582350673bc9672cb40c4acf2dafbd.tar.gz
Add GErrors to liblightdm-gobject
-rw-r--r--doc/tmpl/greeter.sgml6
-rw-r--r--doc/tmpl/power.sgml12
-rw-r--r--greeters/gtk/lightdm-gtk-greeter.c16
-rw-r--r--liblightdm-gobject/greeter.c6
-rw-r--r--liblightdm-gobject/liblightdm-gobject-1.vapi12
-rw-r--r--liblightdm-gobject/lightdm/greeter.h4
-rw-r--r--liblightdm-gobject/lightdm/power.h8
-rw-r--r--liblightdm-gobject/power.c74
-rw-r--r--tests/src/test-gobject-greeter.c4
9 files changed, 75 insertions, 67 deletions
diff --git a/doc/tmpl/greeter.sgml b/doc/tmpl/greeter.sgml
index 07777f5b..b72e8fd8 100644
--- a/doc/tmpl/greeter.sgml
+++ b/doc/tmpl/greeter.sgml
@@ -24,7 +24,7 @@ int main ()
g_object_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
// Connect to LightDM daemon
- if (!lightdm_greeter_connect_sync (LIGHTDM_GREETER (greeter)))
+ if (!lightdm_greeter_connect_sync (greeter, NULL))
return EXIT_FAILURE;
// Start authentication
@@ -48,7 +48,7 @@ static void authentication_complete_cb (LightDMGreeter *greeter)
{
// Start the session
if (!lightdm_greeter_get_is_authenticated (greeter) ||
- !lightdm_greeter_start_session_sync (greeter))
+ !lightdm_greeter_start_session_sync (greeter, NULL))
{
// Failed authentication, try again
lightdm_greeter_authenticate (greeter, NULL);
@@ -136,6 +136,7 @@ static void authentication_complete_cb (LightDMGreeter *greeter)
</para>
@greeter:
+@error:
@Returns:
@@ -297,6 +298,7 @@ static void authentication_complete_cb (LightDMGreeter *greeter)
@greeter:
@session:
+@error:
@Returns:
diff --git a/doc/tmpl/power.sgml b/doc/tmpl/power.sgml
index 2d1f5ff5..057d35a4 100644
--- a/doc/tmpl/power.sgml
+++ b/doc/tmpl/power.sgml
@@ -34,7 +34,8 @@ Shutdown, restart, sleep the system
</para>
-@void:
+@error:
+@Returns:
<!-- ##### FUNCTION lightdm_get_can_hibernate ##### -->
@@ -51,7 +52,8 @@ Shutdown, restart, sleep the system
</para>
-@void:
+@error:
+@Returns:
<!-- ##### FUNCTION lightdm_get_can_restart ##### -->
@@ -68,7 +70,8 @@ Shutdown, restart, sleep the system
</para>
-@void:
+@error:
+@Returns:
<!-- ##### FUNCTION lightdm_get_can_shutdown ##### -->
@@ -85,6 +88,7 @@ Shutdown, restart, sleep the system
</para>
-@void:
+@error:
+@Returns:
diff --git a/greeters/gtk/lightdm-gtk-greeter.c b/greeters/gtk/lightdm-gtk-greeter.c
index 86ac4cae..7394ac31 100644
--- a/greeters/gtk/lightdm-gtk-greeter.c
+++ b/greeters/gtk/lightdm-gtk-greeter.c
@@ -125,8 +125,10 @@ cancel_authentication (void)
static void
start_session (void)
{
- gchar *session = get_session ();
- if (!lightdm_greeter_start_session_sync (greeter, session))
+ gchar *session;
+
+ session = get_session ();
+ if (!lightdm_greeter_start_session_sync (greeter, session, NULL))
{
set_message_label (_("Failed to start session"));
start_authentication (lightdm_greeter_get_authentication_user (greeter));
@@ -289,7 +291,7 @@ G_MODULE_EXPORT
void
suspend_cb (GtkWidget *widget, LightDMGreeter *greeter)
{
- lightdm_suspend ();
+ lightdm_suspend (NULL);
}
void hibernate_cb (GtkWidget *widget, LightDMGreeter *greeter);
@@ -297,7 +299,7 @@ G_MODULE_EXPORT
void
hibernate_cb (GtkWidget *widget, LightDMGreeter *greeter)
{
- lightdm_hibernate ();
+ lightdm_hibernate (NULL);
}
void restart_cb (GtkWidget *widget, LightDMGreeter *greeter);
@@ -319,7 +321,7 @@ restart_cb (GtkWidget *widget, LightDMGreeter *greeter)
center_window (GTK_WINDOW (dialog));
if (gtk_dialog_run (GTK_DIALOG (dialog)))
- lightdm_restart ();
+ lightdm_restart (NULL);
gtk_widget_destroy (dialog);
gtk_widget_show (GTK_WIDGET (login_window));
@@ -344,7 +346,7 @@ shutdown_cb (GtkWidget *widget, LightDMGreeter *greeter)
center_window (GTK_WINDOW (dialog));
if (gtk_dialog_run (GTK_DIALOG (dialog)))
- lightdm_shutdown ();
+ lightdm_shutdown (NULL);
gtk_widget_destroy (dialog);
gtk_widget_show (GTK_WIDGET (login_window));
@@ -603,7 +605,7 @@ main(int argc, char **argv)
g_signal_connect (greeter, "show-message", G_CALLBACK (show_message_cb), NULL);
g_signal_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
g_signal_connect (greeter, "autologin-timer-expired", G_CALLBACK (autologin_timer_expired_cb), NULL);
- if (!lightdm_greeter_connect_sync (greeter))
+ if (!lightdm_greeter_connect_sync (greeter, NULL))
return EXIT_FAILURE;
/* Set default cursor */
diff --git a/liblightdm-gobject/greeter.c b/liblightdm-gobject/greeter.c
index 12c54d87..f6ceaee6 100644
--- a/liblightdm-gobject/greeter.c
+++ b/liblightdm-gobject/greeter.c
@@ -440,13 +440,14 @@ from_server_cb (GIOChannel *source, GIOCondition condition, gpointer data)
/**
* lightdm_greeter_connect_sync:
* @greeter: The greeter to connect
+ * @error: return location for a #GError, or %NULL
*
* Connects the greeter to the display manager. Will block until connected.
*
* Return value: #TRUE if successfully connected
**/
gboolean
-lightdm_greeter_connect_sync (LightDMGreeter *greeter)
+lightdm_greeter_connect_sync (LightDMGreeter *greeter, GError **error)
{
LightDMGreeterPrivate *priv;
const gchar *fd;
@@ -841,13 +842,14 @@ lightdm_greeter_get_authentication_user (LightDMGreeter *greeter)
* lightdm_greeter_start_session_sync:
* @greeter: A #LightDMGreeter
* @session: (allow-none): The session to log into or #NULL to use the default.
+ * @error: return location for a #GError, or %NULL
*
* Start a session for the authenticated user.
*
* Return value: TRUE if the session was started.
**/
gboolean
-lightdm_greeter_start_session_sync (LightDMGreeter *greeter, const gchar *session)
+lightdm_greeter_start_session_sync (LightDMGreeter *greeter, const gchar *session, GError **error)
{
LightDMGreeterPrivate *priv;
guint8 message[MAX_MESSAGE_LENGTH];
diff --git a/liblightdm-gobject/liblightdm-gobject-1.vapi b/liblightdm-gobject/liblightdm-gobject-1.vapi
index 241d8e7c..ff61d0e3 100644
--- a/liblightdm-gobject/liblightdm-gobject-1.vapi
+++ b/liblightdm-gobject/liblightdm-gobject-1.vapi
@@ -8,13 +8,13 @@ namespace LightDM {
public static void set_layout (Layout layout);
public static unowned Layout get_layout ();
public static bool get_can_suspend ();
- public static void suspend ();
+ public static bool suspend () throws GLib.Error;
public static bool get_can_hibernate ();
- public static void hibernate ();
+ public static bool hibernate () throws GLib.Error;
public static bool get_can_restart ();
- public static void restart ();
+ public static bool restart () throws GLib.Error;
public static bool get_can_shutdown ();
- public static void shutdown ();
+ public static bool shutdown () throws GLib.Error;
public class Greeter : GLib.Object {
public Greeter ();
@@ -23,7 +23,7 @@ namespace LightDM {
public signal void authentication_complete ();
public signal void autologin_timer_expired ();
- public bool connect_sync ();
+ public bool connect_sync () throws GLib.Error;
public unowned string get_hint (string name);
public unowned string default_session_hint { get; }
public bool hide_users_hint { get; }
@@ -41,7 +41,7 @@ namespace LightDM {
public bool in_authentication { get; }
public bool is_authenticated { get; }
public unowned string authentication_user { get; }
- public void start_session_sync (string? session = null);
+ public void start_session_sync (string? session = null) throws GLib.Error;
}
public enum MessageType {
INFO,
diff --git a/liblightdm-gobject/lightdm/greeter.h b/liblightdm-gobject/lightdm/greeter.h
index 7b834bb9..52b43311 100644
--- a/liblightdm-gobject/lightdm/greeter.h
+++ b/liblightdm-gobject/lightdm/greeter.h
@@ -72,7 +72,7 @@ GType lightdm_greeter_get_type (void);
LightDMGreeter *lightdm_greeter_new (void);
-gboolean lightdm_greeter_connect_sync (LightDMGreeter *greeter);
+gboolean lightdm_greeter_connect_sync (LightDMGreeter *greeter, GError **error);
const gchar *lightdm_greeter_get_hint (LightDMGreeter *greeter, const gchar *name);
@@ -108,7 +108,7 @@ gboolean lightdm_greeter_get_is_authenticated (LightDMGreeter *greeter);
const gchar *lightdm_greeter_get_authentication_user (LightDMGreeter *greeter);
-gboolean lightdm_greeter_start_session_sync (LightDMGreeter *greeter, const gchar *session);
+gboolean lightdm_greeter_start_session_sync (LightDMGreeter *greeter, const gchar *session, GError **error);
G_END_DECLS
diff --git a/liblightdm-gobject/lightdm/power.h b/liblightdm-gobject/lightdm/power.h
index 7d37c1c6..284382b2 100644
--- a/liblightdm-gobject/lightdm/power.h
+++ b/liblightdm-gobject/lightdm/power.h
@@ -14,19 +14,19 @@
gboolean lightdm_get_can_suspend (void);
-void lightdm_suspend (void);
+gboolean lightdm_suspend (GError **error);
gboolean lightdm_get_can_hibernate (void);
-void lightdm_hibernate (void);
+gboolean lightdm_hibernate (GError **error);
gboolean lightdm_get_can_restart (void);
-void lightdm_restart (void);
+gboolean lightdm_restart (GError **error);
gboolean lightdm_get_can_shutdown (void);
-void lightdm_shutdown (void);
+gboolean lightdm_shutdown (GError **error);
G_END_DECLS
diff --git a/liblightdm-gobject/power.c b/liblightdm-gobject/power.c
index fff8943e..9b88b87d 100644
--- a/liblightdm-gobject/power.c
+++ b/liblightdm-gobject/power.c
@@ -20,11 +20,10 @@ static GDBusProxy *upower_proxy = NULL;
static GDBusProxy *ck_proxy = NULL;
static gboolean
-upower_call_function (const gchar *function, gboolean has_result)
+upower_call_function (const gchar *function, gboolean default_result, GError **error)
{
GVariant *result;
gboolean function_result = FALSE;
- GError *error = NULL;
if (!upower_proxy)
{
@@ -35,10 +34,7 @@ upower_call_function (const gchar *function, gboolean has_result)
"/org/freedesktop/UPower",
"org.freedesktop.UPower",
NULL,
- &error);
- if (!upower_proxy)
- g_warning ("Error getting UPower proxy: %s", error->message);
- g_clear_error (&error);
+ error);
if (!upower_proxy)
return FALSE;
}
@@ -49,12 +45,9 @@ upower_call_function (const gchar *function, gboolean has_result)
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
- &error);
- if (!result)
- g_warning ("Error calling UPower function %s: %s", function, error->message);
- g_clear_error (&error);
+ error);
if (!result)
- return FALSE;
+ return default_result;
if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)")))
g_variant_get (result, "(b)", &function_result);
@@ -73,18 +66,21 @@ upower_call_function (const gchar *function, gboolean has_result)
gboolean
lightdm_get_can_suspend (void)
{
- return upower_call_function ("SuspendAllowed", TRUE);
+ return upower_call_function ("SuspendAllowed", FALSE, NULL);
}
/**
* lightdm_suspend:
+ * @error: return location for a #GError, or %NULL
*
* Triggers a system suspend.
+ *
+ * Return value: #TRUE if suspend initiated.
**/
-void
-lightdm_suspend (void)
+gboolean
+lightdm_suspend (GError **error)
{
- upower_call_function ("Suspend", FALSE);
+ return upower_call_function ("Suspend", TRUE, error);
}
/**
@@ -97,26 +93,28 @@ lightdm_suspend (void)
gboolean
lightdm_get_can_hibernate (void)
{
- return upower_call_function ("HibernateAllowed", TRUE);
+ return upower_call_function ("HibernateAllowed", FALSE, NULL);
}
/**
* lightdm_hibernate:
+ * @error: return location for a #GError, or %NULL
*
* Triggers a system hibernate.
+ *
+ * Return value: #TRUE if hibernate initiated.
**/
-void
-lightdm_hibernate (void)
+gboolean
+lightdm_hibernate (GError **error)
{
- upower_call_function ("Hibernate", FALSE);
+ return upower_call_function ("Hibernate", TRUE, error);
}
static gboolean
-ck_call_function (const gchar *function, gboolean has_result)
+ck_call_function (const gchar *function, gboolean default_result, GError **error)
{
GVariant *result;
gboolean function_result = FALSE;
- GError *error = NULL;
if (!ck_proxy)
{
@@ -127,10 +125,7 @@ ck_call_function (const gchar *function, gboolean has_result)
"/org/freedesktop/ConsoleKit/Manager",
"org.freedesktop.ConsoleKit.Manager",
NULL,
- &error);
- if (!ck_proxy)
- g_warning ("Error getting ConsoleKit proxy: %s", error->message);
- g_clear_error (&error);
+ error);
if (!ck_proxy)
return FALSE;
}
@@ -141,13 +136,10 @@ ck_call_function (const gchar *function, gboolean has_result)
G_DBUS_CALL_FLAGS_NONE,
-1,
NULL,
- &error);
+ error);
if (!result)
- g_warning ("Error calling ConsoleKit function %s: %s", function, error->message);
- g_clear_error (&error);
- if (!result)
- return FALSE;
+ return default_result;
if (g_variant_is_of_type (result, G_VARIANT_TYPE ("(b)")))
g_variant_get (result, "(b)", &function_result);
@@ -166,18 +158,21 @@ ck_call_function (const gchar *function, gboolean has_result)
gboolean
lightdm_get_can_restart (void)
{
- return ck_call_function ("CanRestart", TRUE);
+ return ck_call_function ("CanRestart", FALSE, NULL);
}
/**
* lightdm_restart:
+ * @error: return location for a #GError, or %NULL
*
* Triggers a system restart.
+ *
+ * Return value: #TRUE if restart initiated.
**/
-void
-lightdm_restart (void)
+gboolean
+lightdm_restart (GError **error)
{
- ck_call_function ("Restart", FALSE);
+ return ck_call_function ("Restart", TRUE, error);
}
/**
@@ -190,16 +185,19 @@ lightdm_restart (void)
gboolean
lightdm_get_can_shutdown (void)
{
- return ck_call_function ("CanStop", TRUE);
+ return ck_call_function ("CanStop", FALSE, NULL);
}
/**
* lightdm_shutdown:
+ * @error: return location for a #GError, or %NULL
*
* Triggers a system shutdown.
+ *
+ * Return value: #TRUE if shutdown initiated.
**/
-void
-lightdm_shutdown (void)
+gboolean
+lightdm_shutdown (GError **error)
{
- ck_call_function ("Stop", FALSE);
+ return ck_call_function ("Stop", TRUE, error);
}
diff --git a/tests/src/test-gobject-greeter.c b/tests/src/test-gobject-greeter.c
index 9a970093..7e8ccd6d 100644
--- a/tests/src/test-gobject-greeter.c
+++ b/tests/src/test-gobject-greeter.c
@@ -53,7 +53,7 @@ authentication_complete_cb (LightDMGreeter *greeter)
if (!lightdm_greeter_get_is_authenticated (greeter))
return;
- if (!lightdm_greeter_start_session_sync (greeter, NULL))
+ if (!lightdm_greeter_start_session_sync (greeter, NULL, NULL))
notify_status ("GREETER SESSION-FAILED");
}
@@ -98,7 +98,7 @@ main (int argc, char **argv)
g_signal_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
notify_status ("GREETER CONNECT-TO-DAEMON");
- if (!lightdm_greeter_connect_sync (greeter))
+ if (!lightdm_greeter_connect_sync (greeter, NULL))
{
notify_status ("GREETER FAIL-CONNECT-DAEMON");
return EXIT_FAILURE;