glib r6282 - trunk/gio
- From: alexl svn gnome org
- To: svn-commits-list gnome org
- Subject: glib r6282 - trunk/gio
- Date: Wed, 9 Jan 2008 14:43:41 +0000 (GMT)
Author: alexl
Date: Wed Jan 9 14:43:41 2008
New Revision: 6282
URL: http://svn.gnome.org/viewvc/glib?rev=6282&view=rev
Log:
2008-01-09 Alexander Larsson <alexl redhat com>
* gio-marshal.list:
* gmountoperation.[ch]:
Change the API a bit so that unhandled methods
get reported via the reply, rather than by
the signal emission return value. This is because
some handlers can't know this immediately without
doing I/O, and this is an async operation that
should not block.
Modified:
trunk/gio/ChangeLog
trunk/gio/gio-marshal.list
trunk/gio/gmountoperation.c
trunk/gio/gmountoperation.h
Modified: trunk/gio/gio-marshal.list
==============================================================================
--- trunk/gio/gio-marshal.list (original)
+++ trunk/gio/gio-marshal.list Wed Jan 9 14:43:41 2008
@@ -1,4 +1,4 @@
-BOOLEAN:STRING,STRING,STRING,FLAGS
-BOOLEAN:STRING,BOXED
+VOID:STRING,STRING,STRING,FLAGS
+VOID:STRING,BOXED
VOID:BOOLEAN,POINTER
VOID:OBJECT,OBJECT,ENUM
Modified: trunk/gio/gmountoperation.c
==============================================================================
--- trunk/gio/gmountoperation.c (original)
+++ trunk/gio/gmountoperation.c Wed Jan 9 14:43:41 2008
@@ -193,37 +193,36 @@
}
static gboolean
-boolean_handled_accumulator (GSignalInvocationHint *ihint,
- GValue *return_accu,
- const GValue *handler_return,
- gpointer dummy)
+reply_non_handled_in_idle (gpointer data)
{
- gboolean continue_emission;
- gboolean signal_handled;
-
- signal_handled = g_value_get_boolean (handler_return);
- g_value_set_boolean (return_accu, signal_handled);
- continue_emission = !signal_handled;
-
- return continue_emission;
+ GMountOperation *op = data;
+
+ g_mount_operation_reply (op, G_MOUNT_OPERATION_UNHANDLED);
+ return FALSE;
}
-static gboolean
+static void
ask_password (GMountOperation *op,
const char *message,
const char *default_user,
const char *default_domain,
GAskPasswordFlags flags)
{
- return FALSE;
+ g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
+ reply_non_handled_in_idle,
+ g_object_ref (op),
+ g_object_unref);
}
-static gboolean
+static void
ask_question (GMountOperation *op,
const char *message,
const char *choices[])
{
- return FALSE;
+ g_idle_add_full (G_PRIORITY_DEFAULT_IDLE,
+ reply_non_handled_in_idle,
+ g_object_ref (op),
+ g_object_unref);
}
static void
@@ -256,9 +255,9 @@
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GMountOperationClass, ask_password),
- boolean_handled_accumulator, NULL,
- _gio_marshal_BOOLEAN__STRING_STRING_STRING_FLAGS,
- G_TYPE_BOOLEAN, 4,
+ NULL, NULL,
+ _gio_marshal_VOID__STRING_STRING_STRING_FLAGS,
+ G_TYPE_NONE, 4,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_ASK_PASSWORD_FLAGS);
/**
@@ -275,9 +274,9 @@
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GMountOperationClass, ask_question),
- boolean_handled_accumulator, NULL,
- _gio_marshal_BOOLEAN__STRING_BOXED,
- G_TYPE_BOOLEAN, 2,
+ NULL, NULL,
+ _gio_marshal_VOID__STRING_BOXED,
+ G_TYPE_NONE, 2,
G_TYPE_STRING, G_TYPE_STRV);
/**
@@ -293,9 +292,9 @@
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GMountOperationClass, reply),
NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
+ g_cclosure_marshal_VOID__ENUM,
G_TYPE_NONE, 1,
- G_TYPE_BOOLEAN);
+ G_TYPE_MOUNT_OPERATION_RESULT);
/**
* GMountOperation:username:
@@ -628,10 +627,10 @@
**/
void
g_mount_operation_reply (GMountOperation *op,
- gboolean abort)
+ GMountOperationResult result)
{
g_return_if_fail (G_IS_MOUNT_OPERATION (op));
- g_signal_emit (op, signals[REPLY], 0, abort);
+ g_signal_emit (op, signals[REPLY], 0, result);
}
#define __G_MOUNT_OPERATION_C__
Modified: trunk/gio/gmountoperation.h
==============================================================================
--- trunk/gio/gmountoperation.h (original)
+++ trunk/gio/gmountoperation.h Wed Jan 9 14:43:41 2008
@@ -92,24 +92,39 @@
G_PASSWORD_SAVE_PERMANENTLY
} GPasswordSave;
+/**
+ * GMountOperationResult:
+ * @G_MOUNT_OPERATION_HANDLED: The request was fulfilled and the user specified data is now availible
+ * @G_MOUNT_OPERATION_ABORTED: The user requested the mount operation to be aborted
+ * @G_MOUNT_OPERATION_UNHANDLED: The request was unhandled (i.e. not implemented)
+ *
+ * #GMountOperationResult is returned as a result when a request for information
+ * is send by the mounting operation.
+ **/
+typedef enum {
+ G_MOUNT_OPERATION_HANDLED,
+ G_MOUNT_OPERATION_ABORTED,
+ G_MOUNT_OPERATION_UNHANDLED
+} GMountOperationResult;
+
struct _GMountOperationClass
{
GObjectClass parent_class;
/* signals: */
- gboolean (* ask_password) (GMountOperation *op,
- const char *message,
- const char *default_user,
- const char *default_domain,
- GAskPasswordFlags flags);
-
- gboolean (* ask_question) (GMountOperation *op,
- const char *message,
- const char *choices[]);
+ void (* ask_password) (GMountOperation *op,
+ const char *message,
+ const char *default_user,
+ const char *default_domain,
+ GAskPasswordFlags flags);
+
+ void (* ask_question) (GMountOperation *op,
+ const char *message,
+ const char *choices[]);
- void (* reply) (GMountOperation *op,
- gboolean abort);
+ void (* reply) (GMountOperation *op,
+ GMountOperationResult result);
/*< private >*/
/* Padding for future expansion */
@@ -150,7 +165,7 @@
void g_mount_operation_set_choice (GMountOperation *op,
int choice);
void g_mount_operation_reply (GMountOperation *op,
- gboolean abort);
+ GMountOperationResult result);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]