libXt add example for XtAppAddSignal man page add specs for XtSignalCallbackProc
Signed-off-by: walter harms <[email protected]> --- man/XtAppAddSignal.man | 89 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 88 insertions(+), 1 deletions(-) diff --git a/man/XtAppAddSignal.man b/man/XtAppAddSignal.man index 13fa09b..91fca3e 100644 --- a/man/XtAppAddSignal.man +++ b/man/XtAppAddSignal.man @@ -1,3 +1,5 @@ +.\" $Xorg: XtAppASig.man,v 1.3 2000/08/17 19:41:57 cpqbld Exp $ +.\" .\" Copyright (c) 1993, 1994 X Consortium .\" .\" Permission is hereby granted, free of charge, to any person obtaining a @@ -23,6 +25,8 @@ .\" dealing in this Software without prior written authorization from the .\" X Consortium. .\" +.\" $XFree86: xc/doc/man/Xt/XtAppASig.man,v 1.2 2001/01/27 18:20:23 dawes Exp $ +.\" .ds tk X Toolkit .ds xT X Toolkit Intrinsics \- C Language Interface .ds xI Intrinsics @@ -181,13 +185,96 @@ and the flag is set to .ZN False just before the callback is invoked. .LP +the \fBXtSignalCallbackProc\fP is defined as follows: +.nf + typedef void (*XtSignalCallbackProc)( + XtPointer /* closure */, + XtSignalId* /* id */ + ); +.fi + +.LP The .ZN XtRemoveSignal function is called to remove the specified Intrinsics signal handler. The client should disable the source of the signal before calling .ZN XtRemoveSignal . +.Sh EXAMPLE +The example counts the signal SIGUSR1. You can send the signal +either by pressing the widget or via the kill command. +.nf + +#include <stdio.h> +#include <unistd.h> +#include <signal.h> + +#include <Intrinsic.h> +#include <StringDefs.h> +#include <Xaw/Command.h> +#include <Shell.h> +/* gcc -I /usr/include/X11/ sample.c -lX11 -lXaw */ + + +static XtSignalId sigId; + +static void +catchsig(int signal) +{ + XtNoticeSignal(sigId); +} + + +void signal_cb(XtPointer data, XtSignalId *Id) +{ + char buf[40]; + static int i; + i++; + snprintf(buf,sizeof(buf),"got:%ld ",i); + XtVaSetValues(data,XtNlabel,buf,NULL); +} + + +void sendsignal(Widget w, XtPointer c_data, XtPointer calld) +{ + raise(SIGUSR1); +} + + +int main(int argc, char *argv[]) +{ + Widget top,cmd; + XtAppContext app; + char buf[40]; + + top=XtOpenApplication(&app,"Xtdemo", + NULL,0, + &argc,argv, + NULL, + applicationShellWidgetClass, + NULL,0); + + snprintf(buf,sizeof(buf),"PID:%ld ",getpid()); + + cmd=XtVaCreateManagedWidget + ("commando", commandWidgetClass, top, + XtNlabel,buf, + NULL); + + XtAddCallback(cmd,XtNcallback,sendsignal,NULL); + signal(SIGUSR1,catchsig); + + sigId=XtAppAddSignal(app,signal_cb,cmd); + + XtRealizeWidget(top); + XtAppMainLoop(app); + return 0; +} + +.fi .SH "SEE ALSO" -XtAppAddTimeOut(3Xt),XtAppAddInput(3Xt),XtAppAddWorkProc(3Xt) +.BR XtAppAddTimeOut (3Xt) , +.BR XtAppAddInput (3Xt) , +.BR XtAppAddWorkProc (3Xt) .br \fI\*(xT\fP .br -- 1.6.0.2 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
