pidgin/pidgin

2ee19fb5fb0d
Parents 9918b8ed5203
Children 68c94444252e
libpurple: Use default marshaller for GObject signals

Since 2.30 it's been possible to use a default c_marshaller by
passing NULL to g_signal_new(). It has since become the recommended
way of creating signals.
https://developer.gnome.org/gobject/stable/howto-signals.html

This patch ports libpurple to use this method instead of generating
its own marshallers with glib-genmarshal.
--- a/.hgignore Sun Jun 04 22:05:28 2017 -0500
+++ b/.hgignore Thu Jun 01 21:35:39 2017 -0500
@@ -75,7 +75,6 @@
libpurple/example/nullclient
libpurple/data/purple-url-handler.desktop$
libpurple/data/purple-url-handler.desktop.in$
-libpurple/marshallers.[ch]
libpurple/plugins/dbus-example-bindings.c
libpurple/purple-client-bindings.[ch]
libpurple/purple-client-example
--- a/libpurple/Makefile.am Sun Jun 04 22:05:28 2017 -0500
+++ b/libpurple/Makefile.am Thu Jun 01 21:35:39 2017 -0500
@@ -5,7 +5,6 @@
enums.c.in \
enums.h.in \
glibcompat.h \
- marshallers.list \
purple-notifications-example \
purple-remote \
purple-send \
@@ -123,8 +122,7 @@
xmlnode.c
purple_builtsources = \
- enums.c \
- marshallers.c
+ enums.c
purple_coreheaders = \
account.h \
@@ -245,7 +243,7 @@
pbkdf2cipher.h \
rc4cipher.h
-purple_builtheaders = purple.h version.h enums.h marshallers.h
+purple_builtheaders = purple.h version.h enums.h
purple_enumheaders = \
$(srcdir)/account.h \
@@ -267,13 +265,6 @@
$(srcdir)/xmlnode.h
-marshallers.h: marshallers.list
- $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --header > marshallers.h
-
-marshallers.c: marshallers.list marshallers.h
- $(AM_V_GEN)echo "#include \"marshallers.h\"" > marshallers.c
- $(AM_V_at)$(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --body >> marshallers.c
-
# glib-mkenums doesn't handle VPATHs well, sed is used here to fix the
# include paths and documentation.
# Escaping possible . in $(srcdir) to \. for sed pattern.
@@ -287,9 +278,7 @@
CLEANFILES = \
enums.c \
- enums.h \
- marshallers.c \
- marshallers.h
+ enums.h
DISTCLEANFILES = \
data/purple-url-handler.desktop
@@ -318,14 +307,14 @@
prefs.h presence.h roomlist.h savedstatuses.h smiley.h smiley-list.h \
status.h server.h util.h xmlnode.h protocol.h protocols.h
-# Filter out enums.h and marshallers.h as they don't actually generate
-# anything. This way making from a VPATH and distcheck doesn't fail due
-# to not being able to find the enums.h or marshallers.h files if
-# they've already been generated in the $(srcdir).
+# Filter out enums.h as it doesn't actually generate anything.
+# This way making from a VPATH and distcheck doesn't fail due
+# to not being able to find the enums.h file if it's already
+# been generated in the $(srcdir).
purple_build_coreheaders = $(addprefix $(srcdir)/, $(purple_coreheaders)) \
$(addprefix $(srcdir)/ciphers/, $(purple_cipherheaders)) \
$(addprefix $(srcdir)/media/, $(purple_mediaheaders)) \
- $(filter-out: enums.h marshallers.h, $(purple_builtheaders))
+ $(filter-out: enums.h, $(purple_builtheaders))
dbus_build_exported = $(addprefix $(srcdir)/, $(dbus_exported))
# We should probably make this better
dbus_signals = $(addprefix $(srcdir)/, $(purple_coresources)) \
@@ -349,7 +338,7 @@
# Declare these as dependencies so they're built even if `make distcheck`
# is run immediately after configuring.
-$(libpurple_la_OBJECTS): dbus-types.h enums.h marshallers.h
+$(libpurple_la_OBJECTS): dbus-types.h enums.h
# libpurple-client
@@ -402,7 +391,7 @@
# Declare these as dependencies so they're built even if `make distcheck`
# is run immediately after configuring.
-$(libpurple_la_OBJECTS): enums.h marshallers.h
+$(libpurple_la_OBJECTS): enums.h
endif
--- a/libpurple/Makefile.mingw Sun Jun 04 22:05:28 2017 -0500
+++ b/libpurple/Makefile.mingw Thu Jun 01 21:35:39 2017 -0500
@@ -56,7 +56,7 @@
VV_SRC =
endif
-BUILT_SRC = marshallers.c enums.c
+BUILT_SRC = enums.c
C_SRC = \
$(BUILT_SRC) \
@@ -211,15 +211,6 @@
$(OBJECTS): $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H) $(PURPLE_PURPLE_H)
-marshallers.h: marshallers.list
- @echo -e " GEN\t$@"
- @$(GLIB_GENMARSHAL) --prefix=purple_smarshal $< --header > marshallers.h
-
-marshallers.c: marshallers.list marshallers.h
- @echo -e " GEN\t$@"
- @echo "#include \"marshallers.h\"" > marshallers.c
- @$(GLIB_GENMARSHAL) --prefix=purple_smarshal $< --body >> marshallers.c
-
enums.h: enums.h.in $(ENUM_HEADERS)
@echo -e " GEN\t$@"
@$(GLIB_MKENUMS) --template enums.h.in $(ENUM_HEADERS) > enums.h
@@ -235,7 +226,7 @@
## CLEAN RULES
##
clean:
- rm -f $(OBJECTS) $(RC_SRC) $(PURPLE_VERSION_H) $(PURPLE_PURPLE_H) marshallers.h marshallers.c enums.h enums.c
+ rm -f $(OBJECTS) $(RC_SRC) $(PURPLE_VERSION_H) $(PURPLE_PURPLE_H) enums.h enums.c
rm -f $(TARGET).dll $(TARGET).dll.a $(TARGET).def
$(MAKE_at) $(MAKE) -C $(PURPLE_PROTOS_TOP) -f $(MINGW_MAKEFILE) clean
$(MAKE_at) $(MAKE) -C $(PURPLE_PLUGINS_TOP) -f $(MINGW_MAKEFILE) clean
--- a/libpurple/marshallers.list Sun Jun 04 22:05:28 2017 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-VOID:POINTER,POINTER,OBJECT
-BOOLEAN:OBJECT,POINTER,STRING
-VOID:STRING,STRING
-VOID:STRING,STRING,DOUBLE
-VOID:ENUM,STRING,STRING
-VOID:ENUM,STRING,STRING,BOOLEAN
-VOID:FLAGS,FLAGS
-VOID:STRING,STRING,OBJECT,OBJECT
-BOOLEAN:OBJECT
-VOID:POINTER,POINTER,OBJECT,OBJECT
--- a/libpurple/media.c Sun Jun 04 22:05:28 2017 -0500
+++ b/libpurple/media.c Thu Jun 01 21:35:39 2017 -0500
@@ -29,7 +29,6 @@
#ifdef USE_GSTREAMER
#include "media/backend-fs2.h"
-#include "marshallers.h"
#include "media-gst.h"
#endif /* USE_GSTREAMER */
@@ -224,41 +223,33 @@
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
purple_media_signals[S_ERROR] = g_signal_new("error", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
purple_media_signals[CANDIDATES_PREPARED] = g_signal_new("candidates-prepared", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__STRING_STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 2, G_TYPE_STRING,
G_TYPE_STRING);
purple_media_signals[CODECS_CHANGED] = g_signal_new("codecs-changed", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
purple_media_signals[LEVEL] = g_signal_new("level", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__STRING_STRING_DOUBLE,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_DOUBLE);
purple_media_signals[NEW_CANDIDATE] = g_signal_new("new-candidate", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__POINTER_POINTER_OBJECT,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_POINTER,
G_TYPE_POINTER, PURPLE_TYPE_MEDIA_CANDIDATE);
purple_media_signals[STATE_CHANGED] = g_signal_new("state-changed", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__ENUM_STRING_STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, PURPLE_MEDIA_TYPE_STATE,
G_TYPE_STRING, G_TYPE_STRING);
purple_media_signals[STREAM_INFO] = g_signal_new("stream-info", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__ENUM_STRING_STRING_BOOLEAN,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 4, PURPLE_MEDIA_TYPE_INFO_TYPE,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
purple_media_signals[CANDIDATE_PAIR_ESTABLISHED] = g_signal_new("candidate-pair-established", G_TYPE_FROM_CLASS(klass),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__POINTER_POINTER_OBJECT_OBJECT,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 4, G_TYPE_POINTER, G_TYPE_POINTER,
PURPLE_TYPE_MEDIA_CANDIDATE, PURPLE_TYPE_MEDIA_CANDIDATE);
g_type_class_add_private(klass, sizeof(PurpleMediaPrivate));
--- a/libpurple/media/backend-iface.c Sun Jun 04 22:05:28 2017 -0500
+++ b/libpurple/media/backend-iface.c Thu Jun 01 21:35:39 2017 -0500
@@ -23,8 +23,6 @@
#include "backend-iface.h"
-#include "marshallers.h"
-
enum {
S_ERROR,
CANDIDATES_PREPARED,
@@ -67,34 +65,29 @@
G_PARAM_STATIC_STRINGS));
purple_media_backend_signals[S_ERROR] =
g_signal_new("error", G_TYPE_FROM_CLASS(iface),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
purple_media_backend_signals[CANDIDATES_PREPARED] =
g_signal_new("candidates-prepared",
G_TYPE_FROM_CLASS(iface),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__STRING_STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 2, G_TYPE_STRING,
G_TYPE_STRING);
purple_media_backend_signals[CODECS_CHANGED] =
g_signal_new("codecs-changed",
G_TYPE_FROM_CLASS(iface),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- g_cclosure_marshal_VOID__STRING,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_STRING);
purple_media_backend_signals[NEW_CANDIDATE] =
g_signal_new("new-candidate",
G_TYPE_FROM_CLASS(iface),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__POINTER_POINTER_OBJECT,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 3, G_TYPE_POINTER,
G_TYPE_POINTER, PURPLE_TYPE_MEDIA_CANDIDATE);
purple_media_backend_signals[ACTIVE_CANDIDATE_PAIR] =
g_signal_new("active-candidate-pair",
G_TYPE_FROM_CLASS(iface),
- G_SIGNAL_RUN_LAST, 0, NULL, NULL,
- purple_smarshal_VOID__STRING_STRING_OBJECT_OBJECT,
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 4, G_TYPE_STRING, G_TYPE_STRING,
PURPLE_TYPE_MEDIA_CANDIDATE,
PURPLE_TYPE_MEDIA_CANDIDATE);
--- a/libpurple/mediamanager.c Sun Jun 04 22:05:28 2017 -0500
+++ b/libpurple/mediamanager.c Thu Jun 01 21:35:39 2017 -0500
@@ -27,7 +27,6 @@
#include "mediamanager.h"
#ifdef USE_GSTREAMER
-#include "marshallers.h"
#include "media-gst.h"
#include <media/backend-fs2.h>
#endif /* USE_GSTREAMER */
@@ -172,8 +171,7 @@
purple_media_manager_signals[INIT_MEDIA] = g_signal_new ("init-media",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- purple_smarshal_BOOLEAN__OBJECT_POINTER_STRING,
+ 0, NULL, NULL, NULL,
G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
G_TYPE_POINTER, G_TYPE_STRING);
@@ -181,16 +179,14 @@
g_signal_new ("init-private-media",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- purple_smarshal_BOOLEAN__OBJECT_POINTER_STRING,
+ 0, NULL, NULL, NULL,
G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
G_TYPE_POINTER, G_TYPE_STRING);
purple_media_manager_signals[UI_CAPS_CHANGED] = g_signal_new ("ui-caps-changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- purple_smarshal_VOID__FLAGS_FLAGS,
+ 0, NULL, NULL, NULL,
G_TYPE_NONE, 2, PURPLE_MEDIA_TYPE_CAPS,
PURPLE_MEDIA_TYPE_CAPS);
@@ -198,8 +194,7 @@
g_signal_new("elements-changed",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
- 0, NULL, NULL,
- g_cclosure_marshal_VOID__VOID,
+ 0, NULL, NULL, NULL,
G_TYPE_NONE, 0);
g_type_class_add_private(klass, sizeof(PurpleMediaManagerPrivate));
--- a/pidgin/gtkwebview.c Sun Jun 04 22:05:28 2017 -0500
+++ b/pidgin/gtkwebview.c Thu Jun 01 21:35:39 2017 -0500
@@ -24,7 +24,6 @@
#include "debug.h"
#include "glibcompat.h"
#include "image-store.h"
-#include "marshallers.h"
#include "pidgin.h"
#include "pidginstock.h"
@@ -1344,45 +1343,44 @@
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(PidginWebViewClass, buttons_update),
- NULL, 0, g_cclosure_marshal_VOID__INT,
+ NULL, 0, NULL,
G_TYPE_NONE, 1, G_TYPE_INT);
signals[TOGGLE_FORMAT] = g_signal_new("format-toggled",
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(PidginWebViewClass, toggle_format),
- NULL, 0, g_cclosure_marshal_VOID__INT,
+ NULL, 0, NULL,
G_TYPE_NONE, 1, G_TYPE_INT);
signals[CLEAR_FORMAT] = g_signal_new("format-cleared",
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(PidginWebViewClass, clear_format),
- NULL, 0, g_cclosure_marshal_VOID__VOID,
+ NULL, 0, NULL,
G_TYPE_NONE, 0);
signals[UPDATE_FORMAT] = g_signal_new("format-updated",
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(PidginWebViewClass, update_format),
- NULL, 0, g_cclosure_marshal_VOID__VOID,
+ NULL, 0, NULL,
G_TYPE_NONE, 0);
signals[CHANGED] = g_signal_new("changed",
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(PidginWebViewClass, changed),
- NULL, NULL, g_cclosure_marshal_VOID__VOID,
+ NULL, NULL, NULL,
G_TYPE_NONE, 0);
signals[HTML_APPENDED] = g_signal_new("html-appended",
G_TYPE_FROM_CLASS(gobject_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET(PidginWebViewClass, html_appended),
- NULL, NULL,
- g_cclosure_marshal_VOID__OBJECT,
+ NULL, NULL, NULL,
G_TYPE_NONE, 1, WEBKIT_TYPE_DOM_RANGE,
NULL);
signals[INSERT_IMAGE] = g_signal_new("insert-image",
G_TYPE_FROM_CLASS(gobject_class), G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(PidginWebViewClass, insert_image),
- pidgin_webview_insert_image_accu, NULL,
- purple_smarshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1,
+ pidgin_webview_insert_image_accu, NULL, NULL,
+ G_TYPE_BOOLEAN, 1,
PURPLE_TYPE_IMAGE);
/* Class Methods */