summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2006-03-04 03:36:47 +0000
committerSergey Udaltsov <svu@gnome.org>2006-03-04 03:36:47 +0000
commit007ea5286a597f654fac6e3eabc70270d0d7666c (patch)
tree48d5927d2063698078b5f23a5ef563dcc6efa0c9
parent96f7f1fc9c3401f77db12058e4e55a11d5df7ae6 (diff)
downloadlibxklavier-007ea5286a597f654fac6e3eabc70270d0d7666c.tar.gz
now, signals are really emmitted (checked)
-rw-r--r--libxklavier/Makefile.am6
-rw-r--r--libxklavier/marshal.list3
-rw-r--r--libxklavier/xkl_engine_marshal.c131
-rw-r--r--libxklavier/xkl_engine_marshal.h31
-rw-r--r--libxklavier/xklavier.c14
5 files changed, 178 insertions, 7 deletions
diff --git a/libxklavier/Makefile.am b/libxklavier/Makefile.am
index 68bd7cd..64378e4 100644
--- a/libxklavier/Makefile.am
+++ b/libxklavier/Makefile.am
@@ -14,6 +14,8 @@ else
ENABLE_XMM_SUPPORT_CFLAG = -DDISABLE_XMM_SUPPORT=1
endif
+EXTRA_DIST=marshal.list
+
AM_CFLAGS=-Wall -Werror -DDATA_DIR=\"$(datadir)/$(PACKAGE)\" \
-I. -I$(includedir) -I$(x_includes) -I$(top_srcdir) \
$(XML_CFLAGS) $(GLIB_CFLAGS) \
@@ -26,12 +28,12 @@ noinst_HEADERS = xklavier_private.h xklavier_private_xkb.h xklavier_private_xmm.
xklavierincdir = $(includedir)/libxklavier
xklavierinc_HEADERS = xklavier.h xkl_config_registry.h xkl_engine.h \
- xkl_config_rec.h xkl_config_item.h
+ xkl_config_rec.h xkl_config_item.h xkl_engine_marshal.h
libxklavier_la_SOURCES = xklavier.c xklavier_evt.c xklavier_config.c \
xklavier_xkb.c xklavier_evt_xkb.c xklavier_config_xkb.c xklavier_toplevel.c \
xklavier_xmm.c xklavier_xmm_opts.c xklavier_evt_xmm.c xklavier_config_xmm.c \
- xklavier_util.c xklavier_config_i18n.c xklavier_props.c xklavier_dump.c \
+ xklavier_util.c xklavier_config_i18n.c xklavier_props.c xklavier_dump.c xkl_engine_marshal.c \
$(noinst_HEADERS) $(xklavierinc_HEADERS)
libxklavier_la_LDFLAGS = -version-info @VERSION_INFO@ \
$(XML_LIBS) $(GLIB_LIBS) \
diff --git a/libxklavier/marshal.list b/libxklavier/marshal.list
new file mode 100644
index 0000000..3fcda01
--- /dev/null
+++ b/libxklavier/marshal.list
@@ -0,0 +1,3 @@
+VOID:VOID
+INT:LONG,LONG
+VOID:FLAGS,INT,BOOLEAN
diff --git a/libxklavier/xkl_engine_marshal.c b/libxklavier/xkl_engine_marshal.c
new file mode 100644
index 0000000..6cd987b
--- /dev/null
+++ b/libxklavier/xkl_engine_marshal.c
@@ -0,0 +1,131 @@
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* VOID:VOID (marshal.list:1) */
+
+/* INT:LONG,LONG (marshal.list:2) */
+void
+g_cclosure_user_marshal_INT__LONG_LONG (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef gint (*GMarshalFunc_INT__LONG_LONG) (gpointer data1,
+ glong arg_1,
+ glong arg_2,
+ gpointer data2);
+ register GMarshalFunc_INT__LONG_LONG 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 == 3);
+
+ 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__LONG_LONG) (marshal_data ? marshal_data : cc->callback);
+
+ v_return = callback (data1,
+ g_marshal_value_peek_long (param_values + 1),
+ g_marshal_value_peek_long (param_values + 2),
+ data2);
+
+ g_value_set_int (return_value, v_return);
+}
+
+/* VOID:FLAGS,INT,BOOLEAN (marshal.list:3) */
+void
+g_cclosure_user_marshal_VOID__FLAGS_INT_BOOLEAN (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__FLAGS_INT_BOOLEAN) (gpointer data1,
+ guint arg_1,
+ gint arg_2,
+ gboolean arg_3,
+ gpointer data2);
+ register GMarshalFunc_VOID__FLAGS_INT_BOOLEAN callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ 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_VOID__FLAGS_INT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_flags (param_values + 1),
+ g_marshal_value_peek_int (param_values + 2),
+ g_marshal_value_peek_boolean (param_values + 3),
+ data2);
+}
+
diff --git a/libxklavier/xkl_engine_marshal.h b/libxklavier/xkl_engine_marshal.h
new file mode 100644
index 0000000..f0cd56d
--- /dev/null
+++ b/libxklavier/xkl_engine_marshal.h
@@ -0,0 +1,31 @@
+
+#ifndef __g_cclosure_user_marshal_MARSHAL_H__
+#define __g_cclosure_user_marshal_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* VOID:VOID (marshal.list:1) */
+#define g_cclosure_user_marshal_VOID__VOID g_cclosure_marshal_VOID__VOID
+
+/* INT:LONG,LONG (marshal.list:2) */
+extern void g_cclosure_user_marshal_INT__LONG_LONG (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+/* VOID:FLAGS,INT,BOOLEAN (marshal.list:3) */
+extern void g_cclosure_user_marshal_VOID__FLAGS_INT_BOOLEAN (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+G_END_DECLS
+
+#endif /* __g_cclosure_user_marshal_MARSHAL_H__ */
+
diff --git a/libxklavier/xklavier.c b/libxklavier/xklavier.c
index 4af77e8..8221d61 100644
--- a/libxklavier/xklavier.c
+++ b/libxklavier/xklavier.c
@@ -6,6 +6,7 @@
#include <X11/Xlibint.h>
#include "xklavier_private.h"
+#include "xkl_engine_marshal.h"
static GObjectClass *parent_class = NULL;
@@ -856,19 +857,22 @@ xkl_engine_class_init(XklEngineClass * klass)
g_signal_new("X-config-changed", XKL_TYPE_ENGINE,
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(XklEngineClass,
config_notify),
- NULL, NULL, NULL, G_TYPE_NONE, 0);
+ NULL, NULL, g_cclosure_user_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
g_signal_new("new-toplevel-window", XKL_TYPE_ENGINE,
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(XklEngineClass,
new_window_notify),
- NULL, NULL, NULL, G_TYPE_INT, 2, G_TYPE_LONG,
- G_TYPE_LONG);
+ NULL, NULL, g_cclosure_user_marshal_INT__LONG_LONG,
+ G_TYPE_INT, 2, G_TYPE_LONG, G_TYPE_LONG);
g_signal_new("X-state-changed", XKL_TYPE_ENGINE,
G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(XklEngineClass,
state_notify),
- NULL, NULL, NULL, G_TYPE_NONE, 3, state_change_type,
- G_TYPE_INT, G_TYPE_BOOLEAN);
+ NULL, NULL,
+ g_cclosure_user_marshal_VOID__FLAGS_INT_BOOLEAN,
+ G_TYPE_NONE, 3, state_change_type, G_TYPE_INT,
+ G_TYPE_BOOLEAN);
/* 2 Windows passed */
/* static stuff initialized */