diff --git a/.gitignore b/.gitignore
index a82e37f5..c63a691d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,10 +41,10 @@ osx/Info.plist
data/pkgconfig/hexchat-plugin.pc
data/misc/hexchat.appdata.xml
src/common/dbus/example
-src/common/dbus/marshallers.h
src/common/dbus/org.hexchat.service.service
src/common/dbus/remote-object-glue.h
src/common/make-te
+src/common/marshal.*
src/common/textenums.h
src/common/textevents.h
src/fe-gtk/hexchat
diff --git a/src/common/Makefile.am b/src/common/Makefile.am
index 9c2d443e..8a177fa9 100644
--- a/src/common/Makefile.am
+++ b/src/common/Makefile.am
@@ -62,7 +62,7 @@ endif
noinst_PROGRAMS = make-te
libhexchatcommon_a_SOURCES = cfgfiles.c chanopt.c ctcp.c dcc.c hexchat.c \
- history.c ignore.c inbound.c modes.c $(msproxy_c) network.c notify.c \
+ history.c ignore.c inbound.c marshal.c modes.c $(msproxy_c) network.c notify.c \
outbound.c plugin.c plugin-timer.c proto-irc.c server.c servlist.c \
$(ssl_c) text.c tree.c url.c userlist.c util.c
libhexchatcommon_a_CFLAGS = $(LIBPROXY_CFLAGS)
@@ -72,4 +72,13 @@ textenums.h: textevents.h
textevents.h: textevents.in make-te
$(AM_V_GEN) ./make-te < textevents.in > textevents.h 2> textenums.h
-BUILT_SOURCES = textenums.h textevents.h
+marshal.h: marshalers.list
+ $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_hexchat_marshal --header $(srcdir)/marshalers.list > $@
+
+marshal.c: marshalers.list
+ $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_hexchat_marshal --body $(srcdir)/marshalers.list > $@
+
+
+BUILT_SOURCES = textenums.h textevents.h marshal.c marshal.h
+
+CLEANFILES = $(BUILT_SOURCES)
diff --git a/src/common/common.vcxproj b/src/common/common.vcxproj
index 720faae7..17a8d829 100644
--- a/src/common/common.vcxproj
+++ b/src/common/common.vcxproj
@@ -24,6 +24,7 @@
+
@@ -56,6 +57,7 @@
+
@@ -156,15 +158,16 @@
-
-
-
+"$(DepsRoot)\bin\glib-genmarshal.exe" --prefix=_hexchat_marshal --header "$(ProjectDir)marshalers.list" > "$(ProjectDir)marshal.h"
+"$(DepsRoot)\bin\glib-genmarshal.exe" --prefix=_hexchat_marshal --body "$(ProjectDir)marshalers.list" > "$(ProjectDir)marshal.c"
+
+ ]]>
\ No newline at end of file
diff --git a/src/common/common.vcxproj.filters b/src/common/common.vcxproj.filters
index d543992d..800d8daa 100644
--- a/src/common/common.vcxproj.filters
+++ b/src/common/common.vcxproj.filters
@@ -110,6 +110,9 @@
Header Files
+
+ Header Files
+
@@ -187,5 +190,11 @@
Source Files
+
+ Source Files
+
+
+
+
\ No newline at end of file
diff --git a/src/common/dbus/Makefile.am b/src/common/dbus/Makefile.am
index bad6f611..4fa30452 100644
--- a/src/common/dbus/Makefile.am
+++ b/src/common/dbus/Makefile.am
@@ -7,12 +7,10 @@ libhexchatdbus_a_SOURCES = \
EXTRA_DIST = \
remote-object.xml \
- marshallers.list \
example.py \
org.hexchat.service.service.in
BUILT_SOURCES = \
- marshallers.h \
remote-object-glue.h
CLEANFILES = $(BUILT_SOURCES)
@@ -20,15 +18,12 @@ CLEANFILES = $(BUILT_SOURCES)
AM_CPPFLAGS = $(COMMON_CFLAGS) $(DBUS_CFLAGS)
noinst_PROGRAMS = example
-example_SOURCES = example.c
+example_SOURCES = example.c
example_LDADD = $(DBUS_LIBS) $(GLIB_LIBS)
remote-object-glue.h: remote-object.xml
$(AM_V_GEN) $(LIBTOOL) --mode=execute $(DBUS_BINDING_TOOL) --prefix=remote_object --mode=glib-server --output=$@ $<
-marshallers.h: marshallers.list
- $(AM_V_GEN) $(LIBTOOL) --mode=execute $(GLIB_GENMARSHAL) --header --body $< > $@
-
# Dbus service file
servicedir = $(DBUS_SERVICES_DIR)
service_in_files = org.hexchat.service.service.in
diff --git a/src/common/dbus/dbus-plugin.c b/src/common/dbus/dbus-plugin.c
index 62b83bb1..ce079982 100644
--- a/src/common/dbus/dbus-plugin.c
+++ b/src/common/dbus/dbus-plugin.c
@@ -241,7 +241,7 @@ static gboolean remote_object_send_modes (RemoteObject *obj,
GError **error);
#include "remote-object-glue.h"
-#include "marshallers.h"
+#include "../marshal.h"
/* Useful functions */
@@ -317,7 +317,7 @@ remote_object_class_init (RemoteObjectClass *klass)
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT,
+ _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT,
G_TYPE_NONE,
4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT);
@@ -327,7 +327,7 @@ remote_object_class_init (RemoteObjectClass *klass)
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT,
+ _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT,
G_TYPE_NONE,
4, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT);
@@ -337,7 +337,7 @@ remote_object_class_init (RemoteObjectClass *klass)
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT,
+ _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT,
G_TYPE_NONE,
3, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT);
diff --git a/src/common/dbus/example.c b/src/common/dbus/example.c
index ee1833d3..c3ad4ff3 100644
--- a/src/common/dbus/example.c
+++ b/src/common/dbus/example.c
@@ -22,7 +22,7 @@
#include
#include
#include
-#include "marshallers.h"
+#include "../marshal.c"
#define DBUS_SERVICE "org.hexchat.service"
#define DBUS_REMOTE "/org/hexchat/Remote"
@@ -159,7 +159,7 @@ main (int argc, char **argv)
g_print ("Server hook id=%d\n", server_id);
dbus_g_object_register_marshaller (
- g_cclosure_user_marshal_VOID__POINTER_POINTER_UINT_UINT,
+ _hexchat_marshal_VOID__POINTER_POINTER_UINT_UINT,
G_TYPE_NONE,
G_TYPE_STRV, G_TYPE_STRV, G_TYPE_UINT, G_TYPE_UINT,
G_TYPE_INVALID);
diff --git a/src/common/dbus/marshallers.list b/src/common/dbus/marshallers.list
deleted file mode 100644
index bc3c4ad5..00000000
--- a/src/common/dbus/marshallers.list
+++ /dev/null
@@ -1 +0,0 @@
-VOID:POINTER,POINTER,UINT,UINT
diff --git a/src/common/marshalers.list b/src/common/marshalers.list
new file mode 100644
index 00000000..0cafca81
--- /dev/null
+++ b/src/common/marshalers.list
@@ -0,0 +1,8 @@
+# xtext
+VOID:OBJECT,OBJECT
+VOID:POINTER,POINTER
+# sexy-entry
+BOOLEAN:STRING
+OBJECT:OBJECT,OBJECT
+# dbus-plugin & dbus-example
+VOID:POINTER,POINTER,UINT,UINT
diff --git a/src/fe-gtk/Makefile.am b/src/fe-gtk/Makefile.am
index 07f2ffc0..4ce02dbc 100644
--- a/src/fe-gtk/Makefile.am
+++ b/src/fe-gtk/Makefile.am
@@ -11,10 +11,10 @@ EXTRA_DIST = \
chanview-tree.c custom-list.h editlist.h fe-gtk.h fkeys.h gtkutil.h joind.h \
maingui.h menu.h notifygui.h palette.h pixmaps.h \
plugin-tray.h plugingui.c plugingui.h rawlog.h sexy-iso-codes.h \
- sexy-spell-entry.h sexy-marshal.h textgui.h urlgrab.h userlistgui.h xtext.h \
+ sexy-spell-entry.h textgui.h urlgrab.h userlistgui.h xtext.h \
../../data/hexchat.gresource.xml
-BUILT_SOURCES = resources.c xtext_marshalers.h xtext_marshalers.c
+BUILT_SOURCES = resources.c
CLEANFILES = $(BUILT_SOURCES)
@@ -29,14 +29,8 @@ endif
hexchat_SOURCES = ascii.c banlist.c chanlist.c chanview.c custom-list.c \
dccgui.c editlist.c fe-gtk.c fkeys.c gtkutil.c ignoregui.c joind.c menu.c \
maingui.c notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \
- rawlog.c resources.c servlistgui.c setup.c $(iso_codes_c) sexy-marshal.c \
- sexy-spell-entry.c textgui.c urlgrab.c userlistgui.c xtext.c xtext_marshalers.c
+ rawlog.c resources.c servlistgui.c setup.c $(iso_codes_c) \
+ sexy-spell-entry.c textgui.c urlgrab.c userlistgui.c xtext.c
resources.c: ../../data/hexchat.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=../../data --generate-dependencies ../../data/hexchat.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=../../data --generate-source $<
-
-xtext_marshalers.h: xtext_marshalers.list
- $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_xtext_marshal --header $(srcdir)/xtext_marshalers.list > $@
-
-xtext_marshalers.c: xtext_marshalers.list
- $(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_xtext_marshal --body $(srcdir)/xtext_marshalers.list > $@
diff --git a/src/fe-gtk/fe-gtk.vcxproj b/src/fe-gtk/fe-gtk.vcxproj
index 6b6301b2..f5e2dace 100644
--- a/src/fe-gtk/fe-gtk.vcxproj
+++ b/src/fe-gtk/fe-gtk.vcxproj
@@ -97,15 +97,13 @@
-
-
-
+ ]]>
Build hexchat.rc and gresource file
@@ -131,7 +129,6 @@ powershell "Get-Content -Encoding UTF8 '$(SolutionDir)..\src\fe-gtk\hexchat.rc.u
-
@@ -163,7 +160,6 @@ powershell "Get-Content -Encoding UTF8 '$(SolutionDir)..\src\fe-gtk\hexchat.rc.u
-
diff --git a/src/fe-gtk/fe-gtk.vcxproj.filters b/src/fe-gtk/fe-gtk.vcxproj.filters
index eb6e2281..4598b1f2 100644
--- a/src/fe-gtk/fe-gtk.vcxproj.filters
+++ b/src/fe-gtk/fe-gtk.vcxproj.filters
@@ -72,9 +72,6 @@
Header Files
-
- Header Files
-
Header Files
@@ -167,9 +164,6 @@
Source Files
-
- Source Files
-
Source Files
@@ -203,6 +197,7 @@
Resource Files
+
diff --git a/src/fe-gtk/sexy-marshal.c b/src/fe-gtk/sexy-marshal.c
deleted file mode 100644
index 363842ca..00000000
--- a/src/fe-gtk/sexy-marshal.c
+++ /dev/null
@@ -1,146 +0,0 @@
-/* libsexy
- * Copyright (C) 2005-2006 Christian Hammond.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include
-
-
-#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 */
-
-
-/* BOOLEAN:STRING (./marshal.list:1) */
-void
-sexy_marshal_BOOLEAN__STRING (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef gboolean (*GMarshalFunc_BOOLEAN__STRING) (gpointer data1,
- gpointer arg_1,
- gpointer data2);
- register GMarshalFunc_BOOLEAN__STRING callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
- gboolean 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_BOOLEAN__STRING) (marshal_data ? marshal_data : cc->callback);
-
- v_return = callback (data1,
- g_marshal_value_peek_string (param_values + 1),
- data2);
-
- g_value_set_boolean (return_value, v_return);
-}
-
-/* OBJECT:OBJECT,OBJECT (./marshal.list:2) */
-void
-sexy_marshal_OBJECT__OBJECT_OBJECT (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
-{
- typedef GObject* (*GMarshalFunc_OBJECT__OBJECT_OBJECT) (gpointer data1,
- gpointer arg_1,
- gpointer arg_2,
- gpointer data2);
- register GMarshalFunc_OBJECT__OBJECT_OBJECT callback;
- register GCClosure *cc = (GCClosure*) closure;
- register gpointer data1, data2;
- GObject* 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_OBJECT__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
-
- v_return = callback (data1,
- g_marshal_value_peek_object (param_values + 1),
- g_marshal_value_peek_object (param_values + 2),
- data2);
-
- g_value_take_object (return_value, v_return);
-}
-
diff --git a/src/fe-gtk/sexy-marshal.h b/src/fe-gtk/sexy-marshal.h
deleted file mode 100644
index aa560767..00000000
--- a/src/fe-gtk/sexy-marshal.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* libsexy
- * Copyright (C) 2005-2006 Christian Hammond.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __sexy_marshal_MARSHAL_H__
-#define __sexy_marshal_MARSHAL_H__
-
-#include
-
-G_BEGIN_DECLS
-
-/* BOOLEAN:STRING (./marshal.list:1) */
-extern void sexy_marshal_BOOLEAN__STRING (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
-
-/* OBJECT:OBJECT,OBJECT (./marshal.list:2) */
-extern void sexy_marshal_OBJECT__OBJECT_OBJECT (GClosure *closure,
- GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data);
-
-G_END_DECLS
-
-#endif /* __sexy_marshal_MARSHAL_H__ */
-
diff --git a/src/fe-gtk/sexy-spell-entry.c b/src/fe-gtk/sexy-spell-entry.c
index e7d54777..db52eecb 100644
--- a/src/fe-gtk/sexy-spell-entry.c
+++ b/src/fe-gtk/sexy-spell-entry.c
@@ -31,7 +31,7 @@
#include
#include
#include "sexy-iso-codes.h"
-#include "sexy-marshal.h"
+#include "../common/marshal.h"
#ifdef WIN32
#include "../common/typedef.h"
@@ -237,7 +237,7 @@ sexy_spell_entry_class_init(SexySpellEntryClass *klass)
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(SexySpellEntryClass, word_check),
(GSignalAccumulator) spell_accumulator, NULL,
- sexy_marshal_BOOLEAN__STRING,
+ _hexchat_marshal_BOOLEAN__STRING,
G_TYPE_BOOLEAN,
1, G_TYPE_STRING);
}
diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c
index 53658b09..6a6b1215 100644
--- a/src/fe-gtk/xtext.c
+++ b/src/fe-gtk/xtext.c
@@ -42,10 +42,10 @@
#include "../common/util.h"
#include "../common/hexchatc.h"
#include "../common/url.h"
+#include "../common/marshal.h"
#include "fe-gtk.h"
#include "xtext.h"
#include "fkeys.h"
-#include "xtext_marshalers.h"
#define charlen(str) g_utf8_skip[*(guchar *)(str)]
@@ -2260,7 +2260,7 @@ gtk_xtext_class_init (GtkXTextClass * class)
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkXTextClass, word_click),
NULL, NULL,
- _xtext_marshal_VOID__POINTER_POINTER,
+ _hexchat_marshal_VOID__POINTER_POINTER,
G_TYPE_NONE,
2, G_TYPE_POINTER, G_TYPE_POINTER);
xtext_signals[SET_SCROLL_ADJUSTMENTS] =
@@ -2269,7 +2269,7 @@ gtk_xtext_class_init (GtkXTextClass * class)
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkXTextClass, set_scroll_adjustments),
NULL, NULL,
- _xtext_marshal_VOID__OBJECT_OBJECT,
+ _hexchat_marshal_VOID__OBJECT_OBJECT,
G_TYPE_NONE,
2, GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
diff --git a/src/fe-gtk/xtext_marshalers.list b/src/fe-gtk/xtext_marshalers.list
deleted file mode 100644
index 2f708bb3..00000000
--- a/src/fe-gtk/xtext_marshalers.list
+++ /dev/null
@@ -1,2 +0,0 @@
-VOID:OBJECT,OBJECT
-VOID:POINTER,POINTER