From 12751e3fc02e45da1198b82dadf83fe861ebfd1e Mon Sep 17 00:00:00 2001 From: drouin Date: Wed, 1 Sep 2004 15:54:51 +0000 Subject: replaced the gtk mainloop with a glib one. added -Wall compile directive . fixed some warnings --- examples/Makefile | 11 ++-- examples/gtkIvyButton.c | 38 ++++++------- examples/motifButtonIvy.c | 1 + src/Makefile | 54 +++++++++---------- src/ivy.c | 5 +- src/ivyglibloop.c | 127 +++++++++++++++++++++++++++++++++++++++++++ src/ivyglibloop.h | 50 +++++++++++++++++ src/ivygtkloop.c | 133 ---------------------------------------------- src/ivygtkloop.h | 55 ------------------- src/ivyprobe.c | 26 +++++---- src/ivysocket.c | 2 +- src/ivytcl.c | 22 ++++---- src/list.h | 2 +- 13 files changed, 260 insertions(+), 266 deletions(-) create mode 100644 src/ivyglibloop.c create mode 100644 src/ivyglibloop.h delete mode 100644 src/ivygtkloop.c delete mode 100644 src/ivygtkloop.h diff --git a/examples/Makefile b/examples/Makefile index 659c8a0..d119c1e 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -1,18 +1,19 @@ .SUFFIXES: .c .o - CC = gcc -g + CC = gcc -g -Wall TARGETS = motifButtonIvy gtkIvyButton testUnbind SRCS = motifButtonIvy.c gtkIvyButton.c testUnbind.c OBJS = $(SRCS:.c=.o) PCRELIB = `pcre-config --libs` EXTRALIB= -L../src +EXTRAINC=-I../src GTKLIB = `pkg-config gtk+-x11-2.0 --libs` GTKINC = `pkg-config gtk+-x11-2.0 --cflags` MOTIFINC= MOTIFLIB= -L/usr/X11R6/lib -lXm -lXt -lX11 #MOTIFINC= -I/sw/include #MOTIFLIB= -L/sw/lib -L/usr/X11R6/lib -lXm -lXt -lX11 - + all: $(TARGETS) @@ -20,10 +21,10 @@ testUnbind: testUnbind.o $(CC) -o $@ $< -livy $(PCRELIB) $(EXTRALIB) gtkIvyButton.o: gtkIvyButton.c - $(CC) -c $< $(GTKINC) + $(CC) -c $< $(GTKINC) $(EXTRAINC) gtkIvyButton: gtkIvyButton.o - $(CC) -o $@ $< $(GTKLIB) -lgivy $(EXTRALIB) + $(CC) -o $@ $< $(GTKLIB) $(EXTRALIB) $(PCRELIB) -lglibivy motifButtonIvy.o: motifButtonIvy.c $(CC) -c $< $(MOTIFINC) $(EXTRALIB) @@ -32,4 +33,4 @@ motifButtonIvy: motifButtonIvy.o $(CC) -o $@ $< $(MOTIFLIB) -lxtivy -lpcre $(EXTRALIB) clean: - rm -fR $(OBJS) $(TARGETS) + rm -fR $(OBJS) $(TARGETS) *~ diff --git a/examples/gtkIvyButton.c b/examples/gtkIvyButton.c index be8cc4a..aba5ea7 100644 --- a/examples/gtkIvyButton.c +++ b/examples/gtkIvyButton.c @@ -1,34 +1,34 @@ #include #include -#include +#include #include #include -void hello( GtkWidget *widget, gpointer data ) { - fprintf(stderr,"%s\n",*((char**)data)); - IvySendMsg(*((char**)data)); + + + +void sendText( GtkWidget *widget, gpointer user_data ) { + IvySendMsg(gtk_label_get_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(widget))))); } -void textCallback(IvyClientPtr app, void *user_data, int argc, char *argv[]){ - *((char **)user_data)=argv[0]; +void setText(IvyClientPtr app, void *user_data, int argc, char *argv[]){ + gtk_label_set_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(user_data))), argv[0]); } int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *button; char *bus=getenv("IVYBUS"); - char *tosend="foo"; - gtk_init (&argc, &argv); - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_container_set_border_width (GTK_CONTAINER (window), 10); - button = gtk_button_new_with_label ("send message"); - g_signal_connect (G_OBJECT(button),"clicked",G_CALLBACK(hello),&tosend); - gtk_container_add (GTK_CONTAINER(window),button); - gtk_widget_show (button); - gtk_widget_show (window); - IvyInit ("IvyGtkButton", "IvyGtkButton READY",NULL,NULL,NULL,NULL); - IvyBindMsg(textCallback,&tosend,"^Ivy Button text=(.*)"); - IvyStart (bus); - gtk_main (); + gtk_init(&argc, &argv); + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width(GTK_CONTAINER (window), 10); + button = gtk_button_new_with_label("ivy is cool"); + gtk_container_add (GTK_CONTAINER(window), button); + g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(sendText), NULL); + gtk_widget_show_all (window); + IvyInit ("IvyGtkButton", "IvyGtkButton READY", NULL, NULL, NULL, NULL); + IvyBindMsg(setText, button, "^Ivy Button text=(.*)"); + IvyStart(bus); + gtk_main(); return 0; } diff --git a/examples/motifButtonIvy.c b/examples/motifButtonIvy.c index f4336aa..084359f 100644 --- a/examples/motifButtonIvy.c +++ b/examples/motifButtonIvy.c @@ -34,4 +34,5 @@ int main(int argc,char *argv[]){ IvyBindMsg(textCallback,&tosend,"^Ivy Button text=(.*)"); IvyStart(bus); XtAppMainLoop(app_context); + return 0; } diff --git a/src/Makefile b/src/Makefile index 7b14a4c..3a89714 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,8 +7,8 @@ # Makefile # # Authors: François-Régis Colin -# Stéphane Chatty -# Yannick Jestin +# Stéphane Chatty +# Yannick Jestin # # Please refer to file version.h for the # copyright notice regarding this software @@ -21,8 +21,8 @@ MINOR=6 XTINC = -I/usr/X11R6/include XTLIB = -L/usr/X11R6/lib -lXt -lX11 -lSM -lICE -GTKINC = `gtk-config --cflags` -GTKLIB = `gtk-config --libs` +GLIBINC = `pkg-config --cflags glib-2.0` +GLIBLIB = `pkg-config --libs glib-2.0` GLUTINC = -I/usr/include -I. GLUTLIB = -L. -lglut -lGLU -lGL -lX11 -lXmu # use these if you want standard Tcl ( 8.3 on debian woody ... ) @@ -50,17 +50,17 @@ REGEXP = -DUSE_PCRE_REGEX # on activeTCL , set #define CHANNEL to null, and add ivyloop.o in the ivytcl target, # see below CHANNEL = -DTCL_CHANNEL_INTEGRATION -CFLAGS = -g +CFLAGS = -g -Wall OBJ = ivyloop.o timer.o ivysocket.o ivy.o GOBJ = ivyloop.o timer.o ivysocket.o givy.o XTOBJ = ivyxtloop.o ivysocket.o ivy.o -GTKOBJ = ivygtkloop.o ivysocket.o ivy.o +GLIBOBJ = ivyglibloop.o ivysocket.o ivy.o GLUTOBJ = ivyglutloop.o ivysocket.o ivy.o TCLOBJ = ivytcl.o timer.o ivysocket.o givy.o # WINDOWS add ivyloop.o if TCL_CHANNEL_INTEGRATION is not set -TARGETS = ivyprobe ivygtkprobe ivyxtprobe -TARGETLIBS=libivy.so.$(MAJOR).$(MINOR) libgivy.so.$(MAJOR).$(MINOR) libxtivy.so.$(MAJOR).$(MINOR) libgtkivy.so.$(MAJOR).$(MINOR) libtclivy.so.$(MAJOR).$(MINOR) +TARGETS = ivyprobe ivyglibprobe ivyxtprobe +TARGETLIBS=libivy.so.$(MAJOR).$(MINOR) libgivy.so.$(MAJOR).$(MINOR) libxtivy.so.$(MAJOR).$(MINOR) libglibivy.so.$(MAJOR).$(MINOR) libtclivy.so.$(MAJOR).$(MINOR) # not yet need Modified Glut ivyglutprobe .c.o: @@ -68,7 +68,7 @@ TARGETLIBS=libivy.so.$(MAJOR).$(MINOR) libgivy.so.$(MAJOR).$(MINOR) libxtivy.so. all: static-libs commands shared-libs -static-libs: libivy.a libgivy.a libxtivy.a libgtkivy.a libtclivy.a +static-libs: libivy.a libgivy.a libxtivy.a libglibivy.a libtclivy.a # not yet need Modified Glut libglutivy.a shared-libs: $(TARGETLIBS) @@ -88,8 +88,8 @@ givy.o: ivy.c ivyglutloop.o: ivyglutloop.c ivyglutloop.h $(CC) -c $(CFLAGS) $(GLUTINC) ivyglutloop.c -ivygtkloop.o: ivygtkloop.c ivygtkloop.h - $(CC) -c $(CFLAGS) $(GTKINC) ivygtkloop.c +ivyglibloop.o: ivyglibloop.c ivyglibloop.h + $(CC) -c $(CFLAGS) $(GLIBINC) ivyglibloop.c ivyprobe: ivyprobe.o $(CC) $(CFLAGS) -o $@ ivyprobe.o -L. -livy $(PCRELIB) $(EXTRALIB) @@ -103,11 +103,11 @@ ivyxtprobe.o : ivyprobe.c ivyxtprobe: ivyxtprobe.o libxtivy.a $(CC) -o $@ ivyxtprobe.o -L. $(XTLIB) -lxtivy $(PCRELIB) $(EXTRALIB) -ivygtkprobe.o : ivyprobe.c - $(CC) $(CFLAGS) $(REGEXP) -DGTKMAINLOOP -c ivyprobe.c -o ivygtkprobe.o $(XTINC) +ivyglibprobe.o : ivyprobe.c + $(CC) $(CFLAGS) $(REGEXP) -DGLIBMAINLOOP -c ivyprobe.c -o ivyglibprobe.o $(GLIBINC) -ivygtkprobe: ivygtkprobe.o libgtkivy.a - $(CC) -o ivygtkprobe ivygtkprobe.o -L. $(GTKLIB) -lgtkivy $(PCRELIB) $(EXTRALIB) +ivyglibprobe: ivyglibprobe.o libglibivy.a + $(CC) -o ivyglibprobe ivyglibprobe.o -L. $(GLIBLIB) -lglibivy $(PCRELIB) $(EXTRALIB) ivyglutprobe.o : ivyprobe.c $(CC) $(CFLAGS) $(REGEXP) -DGLUTMAINLOOP -c ivyprobe.c -o ivyglutprobe.o $(GLUTINC) @@ -127,9 +127,9 @@ libxtivy.a: $(XTOBJ) rm -f $@ $(LIBTOOL) $@ $(XTOBJ) -libgtkivy.a: $(GTKOBJ) +libglibivy.a: $(GLIBOBJ) rm -f $@ - $(LIBTOOL) $@ $(GTKOBJ) + $(LIBTOOL) $@ $(GLIBOBJ) libglutivy.a: $(GLUTOBJ) rm -f $@ @@ -155,12 +155,12 @@ libxtivy.so.$(MAJOR).$(MINOR): $(XTOBJ) # $(CC) -G -Wl,-h,libxtivy.so.$(MAJOR) -o $@ $(XTOBJ) $(XTLIB) #solaris # libtool -dynamic -o $@ $(XTOBJ) $(XTLIB) $(PCRELIB) -lc -libgtkivy.so.$(MAJOR).$(MINOR): $(GTKOBJ) - $(CC) -shared -Wl,-soname,libgtkivy.so.$(MAJOR) -o $@ $(GTKOBJ) $(GTKLIB) $(PCRELIB) -# $(CC) -G -Wl,-h,libgtkivy.so.$(MAJOR) -o $@ $(GTKOBJ) $(GTKLIB) #solaris -# libtool -dynamic -o $@ $(GTKOBJ) $(GTKLIB) $(PCRELIB) -lc +libglibivy.so.$(MAJOR).$(MINOR): $(GLIBOBJ) + $(CC) -shared -Wl,-soname,libglibivy.so.$(MAJOR) -o $@ $(GLIBOBJ) $(GLIBLIB) $(PCRELIB) +# $(CC) -G -Wl,-h,libglibivy.so.$(MAJOR) -o $@ $(GLIBOBJ) $(GLIBLIB) #solaris +# libtool -dynamic -o $@ $(GLIBOBJ) $(GLIBLIB) $(PCRELIB) -lc -libglutivy.so.$(MAJOR).$(MINOR): $(GTKOBJ) +libglutivy.so.$(MAJOR).$(MINOR): $(GLIBOBJ) $(CC) -shared -Wl,-soname,libglutivy.so.$(MAJOR) -o $@ $(GLUTOBJ) $(GLUTLIB) $(PCRELIB) # $(CC) -G -Wl,-h,libglutivy.so.$(MAJOR) -o $@ $(GLUTOBJ) $(GLUTLIB) # solaris # libtool -dynamic -o $@ $(GLUTOBJ) $(GLUTLIB) $(PCRELIB) -lc @@ -181,13 +181,13 @@ installlibs: static-libs shared-libs install -m644 libgivy.a $(PREFIX)/usr/lib install -m644 libxtivy.a $(PREFIX)/usr/X11R6/lib install -m644 libtclivy.a $(PREFIX)/usr/lib - install -m644 libgtkivy.a $(PREFIX)/usr/X11R6/lib + install -m644 libglibivy.a $(PREFIX)/usr/lib install -m644 libivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib install -m644 libgivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib install -m644 libxtivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib install -m644 libtclivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib - install -m644 libgtkivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib + install -m644 libglibivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib install -m644 *.h $(PREFIX)/usr/include @@ -199,8 +199,8 @@ installliblinks: installlibs ln -s /usr/lib/libgivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/lib/libgivy.so.$(MAJOR) ln -s /usr/X11R6/lib/libxtivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libxtivy.so ln -s /usr/X11R6/lib/libxtivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libxtivy.so.$(MAJOR) - ln -s /usr/X11R6/lib/libgtkivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libgtkivy.so - ln -s /usr/X11R6/lib/libgtkivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libgtkivy.so.$(MAJOR) + ln -s /usr/X11R6/lib/libglibivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libglibivy.so + ln -s /usr/X11R6/lib/libglibivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libglibivy.so.$(MAJOR) ln -s /usr/X11R6/lib/libtclivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libtclivy.so ln -s /usr/X11R6/lib/libtclivy.so.$(MAJOR).$(MINOR) $(PREFIX)/usr/X11R6/lib/libtclivy.so.$(MAJOR) @@ -209,7 +209,7 @@ installbins: commands test -d $(PREFIX)/usr/X11R6/bin || mkdirhier $(PREFIX)/usr/X11R6/bin install -m755 ivyprobe $(PREFIX)/usr/bin #install -m755 ivyxtprobe $(PREFIX)/usr/X11R6/bin - #install -m755 ivygtkprobe $(PREFIX)/usr/X11R6/bin + #install -m755 ivyglibprobe $(PREFIX)/usr/bin #install -m755 ivyglutprobe $(PREFIX)/usr/X11R6/bin installdocs: diff --git a/src/ivy.c b/src/ivy.c index 1a019c8..548f9f8 100644 --- a/src/ivy.c +++ b/src/ivy.c @@ -17,7 +17,7 @@ */ #include - +#include #include #include #include @@ -322,7 +322,7 @@ static int CheckConnected( IvyClientPtr clnt ) static void Receive( Client client, void *data, char *line ) { IvyClientPtr clnt; - int err,id,reg; + int err,id; MsgSndPtr snd; MsgRcvPtr rcv; int argc = 0; @@ -331,6 +331,7 @@ static void Receive( Client client, void *data, char *line ) int kind_of_msg = Bye; #ifndef USE_PCRE_REGEX regex_t regexp; + int reg; #else pcre *regexp; const char *errbuf; diff --git a/src/ivyglibloop.c b/src/ivyglibloop.c new file mode 100644 index 0000000..968824a --- /dev/null +++ b/src/ivyglibloop.c @@ -0,0 +1,127 @@ +/* + * Ivy, C interface + * + * Copyright (C) 1997-2000 + * Centre d'Études de la Navigation Aérienne + * + * Main loop based on the Gtk Toolkit + * + * Authors: François-Régis Colin + * + * $Id$ + * + * Please refer to file version.h for the + * copyright notice regarding this software + */ + +#ifdef WIN32 +#include +#include +#include +#include +#include +#include +#else +#include +#endif + +#include + +#include "ivyglibloop.h" + +struct _channel { + guint id_read; + guint id_delete; + gpointer data; + ChannelHandleDelete handle_delete; + ChannelHandleRead handle_read; + }; + +static int channel_initialized = 0; + +ChannelInit channel_init = IvyGlibChannelInit; +ChannelSetUp channel_setup = IvyGlibChannelSetUp; +ChannelClose channel_close = IvyGlibChannelClose; + +static gboolean IvyGlibHandleChannelRead(GIOChannel *source, + GIOCondition condition, + gpointer data); + +static gboolean IvyGlibHandleChannelDelete(GIOChannel *source, + GIOCondition condition, + gpointer data); + + +void IvyGlibChannelInit(void) { + if ( channel_initialized ) return; + /* fixes bug when another app coredumps */ +#ifndef WIN32 + signal( SIGPIPE, SIG_IGN); +#endif + channel_initialized = 1; +} + + + +Channel IvyGlibChannelSetUp(HANDLE fd, void *data, + ChannelHandleDelete handle_delete, + ChannelHandleRead handle_read + ) { + Channel channel; + channel = (Channel)g_new(struct _channel, 1); + + channel->handle_delete = handle_delete; + channel->handle_read = handle_read; + channel->data = data; + + { + GIOChannel* io_channel = g_io_channel_unix_new(fd); + + channel->id_read = g_io_add_watch( io_channel, G_IO_IN, + IvyGlibHandleChannelRead, channel); + channel->id_delete = g_io_add_watch( io_channel, G_IO_ERR | G_IO_HUP, + IvyGlibHandleChannelDelete, channel); + } + return channel; +} + + + + +void IvyGlibChannelClose( Channel channel ) { + if ( channel->handle_delete ) + (*channel->handle_delete)( channel->data ); + g_source_remove( channel->id_read ); + g_source_remove( channel->id_delete ); +} + + +static gboolean IvyGlibHandleChannelRead(GIOChannel *source, + GIOCondition condition, + gpointer data) { + Channel channel = (Channel)data; +#ifdef DEBUG + printf("Handle Channel read %d\n",source ); +#endif + (*channel->handle_read)(channel, g_io_channel_unix_get_fd(source), channel->data); + return TRUE; +} + +static gboolean IvyGlibHandleChannelDelete(GIOChannel *source, + GIOCondition condition, + gpointer data) { + Channel channel = (Channel)data; +#ifdef DEBUG + printf("Handle Channel delete %d\n",source ); +#endif + (*channel->handle_delete)(channel->data); + return TRUE; +} + + +void +IvyStop () +{ + /* To be implemented */ +} + diff --git a/src/ivyglibloop.h b/src/ivyglibloop.h new file mode 100644 index 0000000..6941069 --- /dev/null +++ b/src/ivyglibloop.h @@ -0,0 +1,50 @@ +/* +* Ivy, C interface +* +* Copyright (C) 1997-2000 +* Centre d'Études de la Navigation Aérienne +* +* Main loop based on the GTK Toolkit +* +* Authors: François-Régis Colin +* +* $Id$ +* +* Please refer to file version.h for the +* copyright notice regarding this software +*/ + +#ifndef IVYGLIBLOOP_H +#define IVYGLIBLOOP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ANYPORT 0 + +#ifdef WIN32 +#include +#define HANDLE SOCKET +#else +#define HANDLE int +#endif + +#include "ivychannel.h" + +extern void IvyGlibChannelInit(void); + +extern Channel IvyGlibChannelSetUp( + HANDLE fd, + void *data, + ChannelHandleDelete handle_delete, + ChannelHandleRead handle_read + ); + +extern void IvyGlibChannelClose( Channel channel ); + +#ifdef __cplusplus +} +#endif + +#endif /* IVYGLIBLOOP_H */ diff --git a/src/ivygtkloop.c b/src/ivygtkloop.c deleted file mode 100644 index 45722d5..0000000 --- a/src/ivygtkloop.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Ivy, C interface - * - * Copyright (C) 1997-2000 - * Centre d'Études de la Navigation Aérienne - * - * Main loop based on the Gtk Toolkit - * - * Authors: François-Régis Colin - * - * $Id$ - * - * Please refer to file version.h for the - * copyright notice regarding this software - */ - -#ifdef WIN32 -#include -#endif -#include -#include -#include -#include -#include - -#ifdef WIN32 -#else -#include -#include -#include -#include -#include -#include -#include -#include -#endif - - -#include - -#include "ivychannel.h" -#include "ivygtkloop.h" - -struct _channel { - guint id_read; - guint id_delete; - gpointer data; - ChannelHandleDelete handle_delete; - ChannelHandleRead handle_read; - }; - - -static int channel_initialized = 0; - - -ChannelInit channel_init = IvyGtkChannelInit; -ChannelSetUp channel_setup = IvyGtkChannelSetUp; -ChannelClose channel_close = IvyGtkChannelClose; - - -void IvyGtkChannelInit(void) -{ - - if ( channel_initialized ) return; - - /* pour eviter les plantages quand les autres applis font core-dump */ -#ifndef WIN32 - signal( SIGPIPE, SIG_IGN); -#endif - channel_initialized = 1; -} - -void IvyGtkChannelClose( Channel channel ) -{ - - if ( channel->handle_delete ) - (*channel->handle_delete)( channel->data ); - gdk_input_remove( channel->id_read ); - gdk_input_remove( channel->id_delete ); -} - - -static void IvyGtkHandleChannelRead(gpointer data, gint source, GdkInputCondition condition) -{ - Channel channel = (Channel)data; -#ifdef DEBUG - printf("Handle Channel read %d\n",source ); -#endif - (*channel->handle_read)(channel,source,channel->data); -} - -static void IvyGtkHandleChannelDelete(gpointer data, gint source, GdkInputCondition condition) -{ - Channel channel = (Channel)data; -#ifdef DEBUG - printf("Handle Channel delete %d\n",source ); -#endif - (*channel->handle_delete)(channel->data); -} - - - -Channel IvyGtkChannelSetUp(HANDLE fd, void *data, - ChannelHandleDelete handle_delete, - ChannelHandleRead handle_read - ) -{ - Channel channel; - - channel = (Channel)malloc( sizeof(struct _channel) ); - if ( !channel ) - { - fprintf(stderr,"NOK Memory Alloc Error\n"); - exit(0); - } - - channel->handle_delete = handle_delete; - channel->handle_read = handle_read; - channel->data = data; - - channel->id_read = gdk_input_add( fd, GDK_INPUT_READ, IvyGtkHandleChannelRead, channel); - channel->id_delete = gdk_input_add( fd, GDK_INPUT_EXCEPTION, IvyGtkHandleChannelDelete, channel); - - return channel; -} - - -void -IvyStop () -{ - /* To be implemented */ -} - diff --git a/src/ivygtkloop.h b/src/ivygtkloop.h deleted file mode 100644 index 78d747a..0000000 --- a/src/ivygtkloop.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Ivy, C interface - * - * Copyright (C) 1997-2000 - * Centre d'Études de la Navigation Aérienne - * - * Main loop based on the GTK Toolkit - * - * Authors: François-Régis Colin - * - * $Id$ - * - * Please refer to file version.h for the - * copyright notice regarding this software - */ - -#ifndef IVYGTKLOOP_H -#define IVYGTKLOOP_H - -#ifdef __cplusplus -extern "C" { -#endif - - -/* general Handle */ - -#define ANYPORT 0 - -#ifdef WIN32 -#include -#define HANDLE SOCKET -#else -#define HANDLE int -#endif - -#include "ivychannel.h" - -extern void IvyGtkChannelInit(void); - -extern Channel IvyGtkChannelSetUp( - HANDLE fd, - void *data, - ChannelHandleDelete handle_delete, - ChannelHandleRead handle_read -); - -extern void IvyGtkChannelClose( Channel channel ); - - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/src/ivyprobe.c b/src/ivyprobe.c index c054be9..1cd3a52 100644 --- a/src/ivyprobe.c +++ b/src/ivyprobe.c @@ -21,7 +21,7 @@ #ifdef XTMAINLOOP #undef IVYMAINLOOP #endif -#ifdef GTKMAINLOOP +#ifdef GLIBMAINLOOP #undef IVYMAINLOOP #endif @@ -57,8 +57,9 @@ extern int optind; #ifdef XTMAINLOOP #include "ivyxtloop.h" #endif -#ifdef GTKMAINLOOP -#include "ivygtkloop.h" +#ifdef GLIBMAINLOOP +#include +#include "ivyglibloop.h" #endif #ifdef GLUTMAINLOOP #include "ivyglutloop.h" @@ -114,8 +115,8 @@ void HandleStdin (Channel channel, HANDLE fd, void *data) #ifdef XTMAINLOOP IvyXtChannelClose (channel); #endif -#ifdef GTKMAINLOOP - IvyGtkChannelClose(channel); +#ifdef GLIBMAINLOOP + IvyGlibChannelClose(channel); #endif #ifdef GLUTMAINLOOP IvyGlutChannelClose(channel); @@ -240,8 +241,8 @@ void ApplicationCallback (IvyClientPtr app, void *user_data, IvyApplicationEvent #ifdef XTMAINLOOP IvyXtChannelSetUp (0, NULL, NULL, HandleStdin); #endif -#ifdef GTKMAINLLOP - IvyGtkChannelSetUp( 0, NULL, NULL, HandleStdin); +#ifdef GLIBMAINLLOP + IvyGlibChannelSetUp( 0, NULL, NULL, HandleStdin); #endif #ifdef GLUTMAINLLOP IvyGlutChannelSetUp( 0, NULL, NULL, HandleStdin); @@ -336,8 +337,8 @@ int main(int argc, char *argv[]) #ifdef XTMAINLOOP IvyXtChannelSetUp (0, NULL, NULL, HandleStdin); #endif -#ifdef GTKMAINLOOP - IvyGtkChannelSetUp (0, NULL, NULL, HandleStdin); +#ifdef GLIBMAINLOOP + IvyGlibChannelSetUp (0, NULL, NULL, HandleStdin); #endif #ifdef GLUTMAINLOOP IvyGlutChannelSetUp (0, NULL, NULL, HandleStdin); @@ -361,8 +362,11 @@ int main(int argc, char *argv[]) #ifdef XTMAINLOOP XtAppMainLoop (cntx); #endif -#ifdef GTKMAINLOOP - gtk_main(); +#ifdef GLIBMAINLOOP + { + GMainLoop *ml = g_main_loop_new(NULL, FALSE); + g_main_loop_run(ml); + } #endif #ifdef GLUTMAINLOOP glutMainLoop(); diff --git a/src/ivysocket.c b/src/ivysocket.c index c6a398e..7565015 100644 --- a/src/ivysocket.c +++ b/src/ivysocket.c @@ -142,7 +142,7 @@ static void HandleSocket (Channel channel, HANDLE fd, void *data) *ptr_nl = '\0'; if (client->interpretation ) (*client->interpretation) (client, client->data, ptr ); - else fprintf (stderr,"Socket No interpretation function ???!\n"); + else fprintf (stderr,"Socket No interpretation function ???\n"); ptr = ++ptr_nl; } if (*ptr != '\0' ) diff --git a/src/ivytcl.c b/src/ivytcl.c index c59937f..74ed129 100755 --- a/src/ivytcl.c +++ b/src/ivytcl.c @@ -108,7 +108,6 @@ Channel IvyTclChannelSetUp(HANDLE fd, void *data, ChannelHandleRead handle_read ) { - char channelName[16 + TCL_INTEGER_SPACE]; Channel channel; channel = (Channel)ckalloc( sizeof (struct _channel) ); @@ -331,7 +330,6 @@ IvyInitCmd(ClientData clientData, int argc, const char **argv) { - char *end; filter_struct *app; filter_struct *die; @@ -621,16 +619,16 @@ int Tclivy_Init(Tcl_Interp *interp) { - Tcl_CreateCommand(interp, "Ivy::init", IvyInitCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::start", IvyStartCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::bind", IvyBindCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::unbind", IvyUnbindCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::send", IvySendCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::senddirect", IvySendDirectCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::binddirect", IvyBindDirectCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::applist", IvyApplicationListCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::apphost", IvyApplicationHostCmd, NULL, NULL); - Tcl_CreateCommand(interp, "Ivy::appmsgs", IvyApplicationMsgsCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::init", (Tcl_CmdProc*)IvyInitCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::start", (Tcl_CmdProc*)IvyStartCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::bind", (Tcl_CmdProc*)IvyBindCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::unbind", (Tcl_CmdProc*)IvyUnbindCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::send", (Tcl_CmdProc*)IvySendCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::senddirect", (Tcl_CmdProc*)IvySendDirectCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::binddirect", (Tcl_CmdProc*)IvyBindDirectCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::applist", (Tcl_CmdProc*)IvyApplicationListCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::apphost", (Tcl_CmdProc*)IvyApplicationHostCmd, NULL, NULL); + Tcl_CreateCommand(interp, "Ivy::appmsgs", (Tcl_CmdProc*)IvyApplicationMsgsCmd, NULL, NULL); #ifndef TCL_CHANNEL_INTEGRATION Tcl_DoWhenIdle(IvyIdleProc,0); #endif diff --git a/src/list.h b/src/list.h index 78eb07e..472d2fc 100644 --- a/src/list.h +++ b/src/list.h @@ -52,7 +52,7 @@ } #define IVY_LIST_ADD(list, p ) \ - if ( p = (TYPEOF(p)) (malloc( sizeof( *p ))))\ + if ((p = (TYPEOF(p)) (malloc( sizeof( *p ))))) \ { \ memset( p, 0 , sizeof( *p ));\ p->next = list; \ -- cgit v1.1