From 9ee1c0355a779d4a927f28d20c5efb70213c0cbd Mon Sep 17 00:00:00 2001 From: Dan Egnor <egnor@ofb.net> Date: Sun, 4 May 2003 13:48:02 +0000 Subject: [PATCH] Start supporting glib 2.0 --- Makefile.am | 13 ++++++++++--- configure.ac | 4 ++++ glib.c | 22 ++++++++++++++-------- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/Makefile.am b/Makefile.am index de0fc46..e9b7d00 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,9 +6,8 @@ # terms of the GNU Lesser General Public License, version 2.1 or later. # See the file COPYING for details. -AUTOMAKE_OPTIONS = foreign 1.2 -lib_LTLIBRARIES = liboop-adns.la liboop-glib.la liboop-tcl.la liboop-www.la liboop-rl.la liboop.la -INCLUDES = $(GLIB_INCLUDES) $(TCL_INCLUDES) $(WWW_INCLUDES) +AUTOMAKE_OPTIONS = foreign 1.7 +lib_LTLIBRARIES = liboop-adns.la liboop-glib.la liboop-glib2.la liboop-tcl.la liboop-www.la liboop-rl.la liboop.la # versions updated as of 0.8 liboop_la_LDFLAGS = -version-info 4:0:0 # version:revision:age @@ -20,14 +19,22 @@ liboop_adns_la_SOURCES = adns.c liboop_glib_la_LDFLAGS = -version-info 1:0:0 liboop_glib_la_LIBADD = $(GLIB_LIBS) +liboop_glib_la_CFLAGS = $(GLIB_INCLUDES) liboop_glib_la_SOURCES = glib.c +liboop_glib2_la_LDFLAGS = -version-info 0:0:0 +liboop_glib2_la_LIBADD = $(GLIB2_LIBS) +liboop_glib2_la_CFLAGS = $(GLIB2_CFLAGS) +liboop_glib2_la_SOURCES = glib.c + liboop_tcl_la_LDFLAGS = -version-info 0:0:0 liboop_tcl_la_LIBADD = $(TCL_LIBS) +liboop_tcl_la_CFLAGS = $(TCL_INCLUDES) liboop_tcl_la_SOURCES = tcl.c liboop_www_la_LDFLAGS = -version-info 0:0:0 liboop_www_la_LIBADD = $(WWW_LIBS) +liboop_www_la_CFLAGS = $(WWW_INCLUDES) liboop_www_la_SOURCES = www.c liboop_rl_la_LDFLAGS = -version-info 0:0:0 diff --git a/configure.ac b/configure.ac index 5fec673..b993492 100644 --- a/configure.ac +++ b/configure.ac @@ -52,6 +52,8 @@ fi LIBS="$save_libs" CPPFLAGS="$save_cppflags" +PKG_CHECK_MODULES(GLIB2,glib-2.0 >= 2.0,AC_DEFINE(HAVE_GLIB),[:]) + for version in 8.4 8.3 8.2 8.1 8.0 ; do CPPFLAGS="$save_cppflags -I/usr/include/tcl$version" AC_CHECK_LIB(tcl$version,Tcl_Main,[ @@ -86,6 +88,8 @@ CFLAGS="-Wall -Wno-comment -Wmissing-prototypes -Wstrict-prototypes -Wpointer-ar AC_SUBST(PROG_LDCONFIG) AC_SUBST(GLIB_INCLUDES) AC_SUBST(GLIB_LIBS) +AC_SUBST(GLIB2_CFLAGS) +AC_SUBST(GLIB2_LIBS) AC_SUBST(TCL_INCLUDES) AC_SUBST(TCL_LIBS) AC_SUBST(ADNS_LIBS) diff --git a/glib.c b/glib.c index 47160a6..57d1949 100644 --- a/glib.c +++ b/glib.c @@ -85,19 +85,18 @@ static gint on_poll(GPollFD *array,guint num,gint timeout) { return count; } -#ifdef HAVE_POLL_H -static gint real_poll(GPollFD *array,guint num,gint timeout) { - assert(sizeof(GPollFD) == sizeof(struct pollfd)); - return poll((struct pollfd *) array,num,timeout); -} -#endif - oop_source *oop_glib_new(void) { if (use_count++) return oop_sys_source(sys); sys = oop_sys_new(); sel = oop_select_new(oop_sys_source(sys),on_select,NULL); - g_main_set_poll_func(on_poll); + +#if GLIB_MAJOR_VERSION >= 2 + g_main_context_set_poll_func(g_main_context_default(), on_poll); +#else + g_main_set_poll_func(on_poll); +#endif + return oop_sys_source(sys); } @@ -107,6 +106,11 @@ void *oop_glib_return(void) { } #ifdef HAVE_POLL_H +static gint real_poll(GPollFD *array,guint num,gint timeout) { + assert(sizeof(GPollFD) == sizeof(struct pollfd)); + return poll((struct pollfd *) array,num,timeout); +} + void oop_glib_delete(void) { assert(use_count > 0 && "oop_glib_delete() called too much"); if (0 != --use_count) return; @@ -115,6 +119,8 @@ void oop_glib_delete(void) { oop_sys_delete(sys); g_main_set_poll_func(real_poll); } +#else +void oop_glib_delete(void) { /* sigh */ } #endif #endif -- GitLab