--- Begin Message ---
- From: Matt Davey <matt corvil com>
- To: gnome-pilot-list gnome org
- Subject: Re: trying to track down memo-file conduit bug
- Date: Tue, 26 Aug 2003 18:08:39 +0100
Ok,
I've come up with a patch to fix the memo-file conduit problem.
It works for me. I don't use evolution, etc., so this needs
further testing. Other conduit code was already using the
new marshalling stuff (see gpmarshal*), so the fix was
pretty straightforward.
The patched files are:
gpilotd/gnome-pilot-conduit-standard-abs.c
gpilotd/gnome-pilot-conduit-standard-abs.h
gpilotd/gpmarshal.c
gpilotd/gpmarshal.h
gpilotd/gpmarshal.list
Matt
--- /tmp/gnome-pilot-2.0.10/gpilotd/gpmarshal.c 2003-07-14 18:32:23.000000000 +0100
+++ gpmarshal.c 2003-08-26 15:39:46.000000000 +0100
@@ -209,2 +209,121 @@
}
+/* INT:POINTER,INT,INT (./gpmarshal.list:5) */
+void
+gp_marshal_INT__POINTER_INT_INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__POINTER_INT_INT) (gpointer data1,
+ gpointer arg_1,
+ gint arg_2,
+ gint arg_3,
+ gpointer data2);
+ register GMarshalFunc_INT__POINTER_INT_INT callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 4);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_INT__POINTER_INT_INT) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_pointer (param_values + 1),
+ g_marshal_value_peek_int (param_values + 2),
+ g_marshal_value_peek_int (param_values + 3),
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
+/* INT:POINTER (./gpmarshal.list:6) */
+void
+gp_marshal_INT__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__POINTER) (gpointer data1,
+ gpointer arg_1,
+ gpointer data2);
+ register GMarshalFunc_INT__POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_INT__POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_pointer (param_values + 1),
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
+/* INT:NONE (./gpmarshal.list:7) */
+void
+gp_marshal_INT__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__VOID) (gpointer data1,
+ gpointer data2);
+ register GMarshalFunc_INT__VOID callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+ gint v_return;
+
+ g_return_if_fail (return_value != NULL);
+ g_return_if_fail (n_param_values == 1);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
--- /tmp/gnome-pilot-2.0.10/gpilotd/gnome-pilot-conduit-standard-abs.c 2002-11-22 16:03:59.000000000 +0000
+++ gnome-pilot-conduit-standard-abs.c 2003-08-26 17:36:20.000000000 +0100
@@ -143,85 +143,4 @@
}
-/* We have a bunch of marshalling functions that we need to declare.
- * We do so here */
-typedef gint (*GtkSignal_INT__POINTER_POINTER) (GtkObject * object,
- gpointer arg1,
- gpointer arg2,
- gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_POINTER (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__POINTER_POINTER rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[2]);
- rfunc = (GtkSignal_INT__POINTER_POINTER) func;
- *return_val = (*rfunc) (object,
- GTK_VALUE_POINTER (args[0]),
- GTK_VALUE_POINTER (args[1]),
- func_data);
-}
-
-typedef gint (*GtkSignal_INT__POINTER_INT) (GtkObject * object,
- gpointer arg1,
- gint arg2,
- gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_INT (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__POINTER_INT rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[2]);
- rfunc = (GtkSignal_INT__POINTER_INT) func;
- *return_val = (*rfunc) (object,
- GTK_VALUE_POINTER (args[0]),
- GTK_VALUE_INT (args[1]),
- func_data);
-}
-
-typedef gint (*GtkSignal_INT__POINTER_INT_INT) (GtkObject * object,
- gpointer arg1,
- gint arg2,
- gint arg3,
- gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_INT_INT (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__POINTER_INT_INT rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[3]);
- rfunc = (GtkSignal_INT__POINTER_INT_INT) func;
- *return_val = (*rfunc) (object,
- GTK_VALUE_POINTER (args[0]),
- GTK_VALUE_INT (args[1]),
- GTK_VALUE_INT (args[2]),
- func_data);
-}
-
-
-typedef gint (*GtkSignal_INT__NONE) (GtkObject * object,
- gpointer user_data);
-static void
-gtk_marshal_INT__NONE (GtkObject * object,
- GtkSignalFunc func,
- gpointer func_data,
- GtkArg * args)
-{
- GtkSignal_INT__NONE rfunc;
- gint *return_val;
- return_val = GTK_RETLOC_INT (args[0]);
- rfunc = (GtkSignal_INT__NONE) func;
- *return_val = (*rfunc) (object,
- func_data);
-}
-
static void
gnome_pilot_conduit_standard_abs_class_init (GnomePilotConduitStandardAbsClass *klass)
@@ -240,5 +159,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, match_record),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -248,5 +167,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, free_match),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
@@ -256,5 +175,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, archive_local),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
@@ -264,5 +183,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, archive_remote),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -272,5 +191,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, store_remote),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
@@ -280,5 +199,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, iterate),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
@@ -288,5 +207,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, iterate_specific),
- gtk_marshal_INT__POINTER_INT_INT,
+ gp_marshal_INT__POINTER_INT_INT,
GTK_TYPE_INT, 3, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_INT);
@@ -296,5 +215,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, purge),
- gtk_marshal_INT__NONE,
+ gp_marshal_INT__NONE,
GTK_TYPE_INT, 0);
@@ -304,5 +223,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, set_status),
- gtk_marshal_INT__POINTER_INT,
+ gp_marshal_INT__POINTER_INT,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
@@ -312,5 +231,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, set_pilot_id),
- gtk_marshal_INT__POINTER_INT,
+ gp_marshal_INT__POINTER_INT,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
@@ -320,5 +239,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, compare),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -328,5 +247,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, compare_backup),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -336,5 +255,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, free_transmit),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -344,5 +263,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, delete_all),
- gtk_marshal_INT__NONE,
+ gp_marshal_INT__NONE,
GTK_TYPE_INT, 0);
@@ -352,5 +271,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, transmit),
- gtk_marshal_INT__POINTER_POINTER,
+ gp_marshal_INT__POINTER_POINTER,
GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
@@ -360,5 +279,5 @@
GTK_CLASS_TYPE (object_class),
GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, pre_sync),
- gtk_marshal_INT__POINTER,
+ gp_marshal_INT__POINTER,
GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
--- /tmp/gnome-pilot-2.0.10/gpilotd/gnome-pilot-conduit-standard-abs.h 2001-06-19 03:06:23.000000000 +0100
+++ gnome-pilot-conduit-standard-abs.h 2003-08-26 17:36:28.000000000 +0100
@@ -28,4 +28,5 @@
#include <gnome.h>
#include "gnome-pilot-conduit-standard.h"
+#include "gpmarshal.h"
#ifdef __cplusplus
--- /tmp/gnome-pilot-2.0.10/gpilotd/gpmarshal.list 2002-12-03 22:57:12.000000000 +0000
+++ gpmarshal.list 2003-08-26 15:33:18.000000000 +0100
@@ -3,2 +3,5 @@
INT:POINTER,POINTER
INT:POINTER,BOOL
+INT:POINTER,INT,INT
+INT:POINTER
+INT:NONE
--- /tmp/gnome-pilot-2.0.10/gpilotd/gpmarshal.h 2003-07-14 18:32:23.000000000 +0100
+++ gpmarshal.h 2003-08-26 15:36:39.000000000 +0100
@@ -7,5 +7,5 @@
G_BEGIN_DECLS
-/* VOID:INT,POINTER (./gpmarshal.list:1) */
+/* VOID:INT,POINTER (gpmarshal.list:1) */
extern void gp_marshal_VOID__INT_POINTER (GClosure *closure,
GValue *return_value,
@@ -15,5 +15,5 @@
gpointer marshal_data);
-/* INT:POINTER,INT (./gpmarshal.list:2) */
+/* INT:POINTER,INT (gpmarshal.list:2) */
extern void gp_marshal_INT__POINTER_INT (GClosure *closure,
GValue *return_value,
@@ -23,5 +23,5 @@
gpointer marshal_data);
-/* INT:POINTER,POINTER (./gpmarshal.list:3) */
+/* INT:POINTER,POINTER (gpmarshal.list:3) */
extern void gp_marshal_INT__POINTER_POINTER (GClosure *closure,
GValue *return_value,
@@ -31,5 +31,5 @@
gpointer marshal_data);
-/* INT:POINTER,BOOL (./gpmarshal.list:4) */
+/* INT:POINTER,BOOL (gpmarshal.list:4) */
extern void gp_marshal_INT__POINTER_BOOLEAN (GClosure *closure,
GValue *return_value,
@@ -40,4 +40,29 @@
#define gp_marshal_INT__POINTER_BOOL gp_marshal_INT__POINTER_BOOLEAN
+/* INT:POINTER,INT,INT (gpmarshal.list:5) */
+extern void gp_marshal_INT__POINTER_INT_INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* INT:POINTER (gpmarshal.list:6) */
+extern void gp_marshal_INT__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* INT:NONE (gpmarshal.list:7) */
+extern void gp_marshal_INT__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+#define gp_marshal_INT__NONE gp_marshal_INT__VOID
+
G_END_DECLS
--- End Message ---