aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-12 23:31:27 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-12 23:31:27 +0200
commitad79032d86616166cb4b60618577a797a7afb9a5 (patch)
tree02bce9ba6908489a93d6d47f45056e556fcfcc6f
parentc5a44c82919edb92ffbd59252013f533fe61a2bf (diff)
downloadexperiment-player-ad79032d86616166cb4b60618577a797a7afb9a5.tar.gz
use proper CClosure marshallers for vlc-player and experiment-navigator signals
the ...VOID__LONG standard marshaller used worked for INT64 but this wasn't guaranteed (size of LONG is platform-dependant) * now, required marshallers are generated if they don't already exist in gobject, if they do, only an alias is defined * every widget has its own marshaller namespace * exclude marshallers from Doxygen docs
-rw-r--r--.gitignore1
-rw-r--r--configure.ac6
-rw-r--r--doc/Doxyfile.in2
-rw-r--r--lib/gtk-experiment-widgets/Makefile.am14
-rw-r--r--lib/gtk-experiment-widgets/cclosure-marshallers.list2
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-navigator.c6
-rw-r--r--lib/gtk-vlc-player/Makefile.am14
-rw-r--r--lib/gtk-vlc-player/cclosure-marshallers.list2
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.c10
9 files changed, 48 insertions, 9 deletions
diff --git a/.gitignore b/.gitignore
index 24fe18e..2a97f8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,6 +19,7 @@ Makefile.in
stamp-*
# Generated
+cclosure-marshallers.[ch]
/doc/Doxyfile
/doc/doxygen
/doc/experiment-player.html
diff --git a/configure.ac b/configure.ac
index 19bd684..867076c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,6 +27,12 @@ if [[ $ac_cv_prog_cc_c99 = no ]]; then
fi
AM_PROG_CC_C_O
+# might not be used if built from source distro
+AC_CHECK_PROG(GLIB_GENMARSHAL, glib-genmarshal, glib-genmarshal)
+if [[ x$GLIB_GENMARSHAL = x ]]; then
+ AC_MSG_ERROR([glib-genmarshal not found!])
+fi
+
AC_CHECK_PROG(DOXYGEN, doxygen, doxygen)
AC_CHECK_PROG(XSLTPROC, xsltproc, xsltproc)
XSLT_FLAGS="--xinclude"
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 6deff10..88e0f24 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -618,7 +618,7 @@ EXCLUDE_SYMLINKS = NO
# against the file with absolute path, so to exclude all test directories
# for example use the pattern */test/*
-EXCLUDE_PATTERNS =
+EXCLUDE_PATTERNS = */cclosure-marshallers.[ch]
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
diff --git a/lib/gtk-experiment-widgets/Makefile.am b/lib/gtk-experiment-widgets/Makefile.am
index 1ff6564..2e1934e 100644
--- a/lib/gtk-experiment-widgets/Makefile.am
+++ b/lib/gtk-experiment-widgets/Makefile.am
@@ -1,8 +1,11 @@
AM_CFLAGS = -Wall
+BUILT_SOURCES = cclosure-marshallers.c cclosure-marshallers.h
+
lib_LTLIBRARIES = libgtk-experiment-widgets.la
libgtk_experiment_widgets_la_SOURCES = gtk-experiment-navigator.c \
gtk-experiment-navigator.h
+nodist_libgtk_experiment_widgets_la_SOURCES = $(BUILT_SOURCES)
libgtk_experiment_widgets_la_CFLAGS = $(AM_CFLAGS)
libgtk_experiment_widgets_la_CPPFLAGS =
@@ -19,3 +22,14 @@ libgtk_experiment_widgets_la_LIBADD += @top_srcdir@/lib/experiment-reader/libexp
include_HEADERS = gtk-experiment-navigator.h
dist_player_data_DATA = gtk-experiment-widgets-catalog.xml
+
+dist_noinst_DATA = cclosure-marshallers.list
+CLEANFILES = $(BUILT_SOURCES)
+
+MARSHAL_PREFIX = gtk_experiment_navigator_marshal
+
+cclosure-marshallers.c : cclosure-marshallers.list
+ @GLIB_GENMARSHAL@ --prefix $(MARSHAL_PREFIX) --body $< >$@
+
+cclosure-marshallers.h : cclosure-marshallers.list
+ @GLIB_GENMARSHAL@ --prefix $(MARSHAL_PREFIX) --header $< >$@
diff --git a/lib/gtk-experiment-widgets/cclosure-marshallers.list b/lib/gtk-experiment-widgets/cclosure-marshallers.list
new file mode 100644
index 0000000..c3ecc04
--- /dev/null
+++ b/lib/gtk-experiment-widgets/cclosure-marshallers.list
@@ -0,0 +1,2 @@
+# Standard marshallers for "time-selected" signal callbacks
+VOID:INT64
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-navigator.c b/lib/gtk-experiment-widgets/gtk-experiment-navigator.c
index 412c90a..6d76979 100644
--- a/lib/gtk-experiment-widgets/gtk-experiment-navigator.c
+++ b/lib/gtk-experiment-widgets/gtk-experiment-navigator.c
@@ -17,6 +17,7 @@
#include <gtk/gtk.h>
#include <experiment-reader.h>
+#include "cclosure-marshallers.h"
#include "gtk-experiment-navigator.h"
static void gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass);
@@ -58,15 +59,14 @@ G_DEFINE_TYPE(GtkExperimentNavigator, gtk_experiment_navigator, GTK_TYPE_TREE_VI
static void
gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass)
{
- /** @todo use correct marshal, this one could fail on 32-bit platforms */
gtk_experiment_navigator_signals[TIME_SELECTED_SIGNAL] =
g_signal_new("time-selected",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(GtkExperimentNavigatorClass, time_selected),
NULL, NULL,
- g_cclosure_marshal_VOID__LONG, G_TYPE_NONE,
- 1, G_TYPE_INT64);
+ gtk_experiment_navigator_marshal_VOID__INT64,
+ G_TYPE_NONE, 1, G_TYPE_INT64);
}
/**
diff --git a/lib/gtk-vlc-player/Makefile.am b/lib/gtk-vlc-player/Makefile.am
index 467c630..1f27aa5 100644
--- a/lib/gtk-vlc-player/Makefile.am
+++ b/lib/gtk-vlc-player/Makefile.am
@@ -2,8 +2,11 @@ AM_CFLAGS = -Wall
vlcplayer_datadir = @datarootdir@/gtk-vlc-player
+BUILT_SOURCES = cclosure-marshallers.c cclosure-marshallers.h
+
lib_LTLIBRARIES = libgtk-vlc-player.la
libgtk_vlc_player_la_SOURCES = gtk-vlc-player.c gtk-vlc-player.h
+nodist_libgtk_vlc_player_la_SOURCES = $(BUILT_SOURCES)
libgtk_vlc_player_la_CFLAGS = $(AM_CFLAGS) \
@LIBGTK_CFLAGS@ @LIBVLC_CFLAGS@
@@ -14,3 +17,14 @@ libgtk_vlc_player_la_LDFLAGS = -no-undefined -shared -bindir @bindir@ \
include_HEADERS = gtk-vlc-player.h
dist_vlcplayer_data_DATA = gtk-vlc-player-catalog.xml
+
+dist_noinst_DATA = cclosure-marshallers.list
+CLEANFILES = $(BUILT_SOURCES)
+
+MARSHAL_PREFIX = gtk_vlc_player_marshal
+
+cclosure-marshallers.c : cclosure-marshallers.list
+ @GLIB_GENMARSHAL@ --prefix $(MARSHAL_PREFIX) --body $< >$@
+
+cclosure-marshallers.h : cclosure-marshallers.list
+ @GLIB_GENMARSHAL@ --prefix $(MARSHAL_PREFIX) --header $< >$@
diff --git a/lib/gtk-vlc-player/cclosure-marshallers.list b/lib/gtk-vlc-player/cclosure-marshallers.list
new file mode 100644
index 0000000..6ed01a2
--- /dev/null
+++ b/lib/gtk-vlc-player/cclosure-marshallers.list
@@ -0,0 +1,2 @@
+# Standard marshallers for "time-changed" and "length-changed" signal callbacks
+VOID:INT64
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.c b/lib/gtk-vlc-player/gtk-vlc-player.c
index a3bc3d8..431dad4 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.c
+++ b/lib/gtk-vlc-player/gtk-vlc-player.c
@@ -13,6 +13,7 @@
#include <vlc/vlc.h>
+#include "cclosure-marshallers.h"
#include "gtk-vlc-player.h"
static void gtk_vlc_player_class_init(GtkVlcPlayerClass *klass);
@@ -83,15 +84,14 @@ gtk_vlc_player_class_init(GtkVlcPlayerClass *klass)
gobject_class->dispose = gtk_vlc_player_dispose;
gobject_class->finalize = gtk_vlc_player_finalize;
- /** @todo use correct marshal, this one could fail on 32-bit platforms */
gtk_vlc_player_signals[TIME_CHANGED_SIGNAL] =
g_signal_new("time-changed",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(GtkVlcPlayerClass, time_changed),
NULL, NULL,
- g_cclosure_marshal_VOID__LONG, G_TYPE_NONE,
- 1, G_TYPE_INT64);
+ gtk_vlc_player_marshal_VOID__INT64,
+ G_TYPE_NONE, 1, G_TYPE_INT64);
gtk_vlc_player_signals[LENGTH_CHANGED_SIGNAL] =
g_signal_new("length-changed",
@@ -99,8 +99,8 @@ gtk_vlc_player_class_init(GtkVlcPlayerClass *klass)
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET(GtkVlcPlayerClass, length_changed),
NULL, NULL,
- g_cclosure_marshal_VOID__LONG, G_TYPE_NONE,
- 1, G_TYPE_INT64);
+ gtk_vlc_player_marshal_VOID__INT64,
+ G_TYPE_NONE, 1, G_TYPE_INT64);
g_type_class_add_private(klass, sizeof(GtkVlcPlayerPrivate));
}