just forget to start the time beat:
===================================
  unsigned int t;

  t = /* what you want in micro seconds */

  itv.it_value.tv_sec  = t / 1000000;
  itv.it_value.tv_usec = t % 1000000;

  itv.it_interval.tv_sec  = itv.it_value.tv_sec;
  itv.it_interval.tv_usec = itv.it_value.tv_usec;
  setitimer( ITIMER_REAL, &itv, 0 );

On Fri, May 19, 2000 at 10:14:09AM +0800, Reed Lai wrote:
> I just do a timer event as following:
> 
> to initial a time beat and handler
> ==================================
> 
> #include <signal.h>
> #include <uinstd.h>
> #include <sys/time.h>
> 
> #include <gnome.h>
> 
> enum {
>   BEAT,
>   LAST_SIGNAL
> };
> 
> struct itimerval itv, oitv;
> guint time_signals[LAST_SIGNAL];
> 
> void beat_close()
> {
>   setitimer( ITIMER_REAL, &oitv, &itv );
> }
> 
> void beat_handler( int sig )
> {
>   /**************************
>    * emit signal to objects *
>    **************************/
>   gtk_signal_emit( /* gtk object */, time_signals[BEAT] );
>   ...
> }
> 
> int beat_init()
> {
>   static struct sigatcion act;
> 
>   /******************
>    * clear old beat *
>    ******************/
>   itv.it_interval.tv_sec  = 0;
>   itv.it_interval.tv_usec = 0;
> 
>   it.it_value.tv_sec  = 0;
>   it.it_value.tv_usec = 0;
> 
>   setitimer( ITIMER_REAL, &itv, &oitv );
> 
>   /****************************
>    * create new signal "beat" *
>    ****************************/ 
>   time_signals[BEAT] = gtk_signal_new( "beat",
>                                        GTK_RUN_LAST | GTK_RUN_ACTION,
>                                        GTK_TYPE_OBJECT,
>                                        0,
>                                        gtk_marshall_NONE__NONE,
>                                        GTK_TYPE_NONE, 0 );
> 
>   /************************
>    * set action for alarm *
>    ************************/
>   act.sa_handler = beat_handler;
>   sigemptyset( &act.sa_mask );
>   sigaddset( &act.sa_mask, SIGALRM );
>   return( sigaction( SIGALRM, &act, NULL ) );
> }
> 
> 
> to connect to signal "beat"
> ===========================
> ...
> gtk_object_class_add_signals( GTK_OBJECT(widget)->klass,
>                               time_signals, LAST_SIGNAL );
> 
> gtk_signal_connect( GTK_OBJECT(widget), "beat"
>                     GTK_SIGNAL_FUNC(on_what_object_handler_when_beat),
>                     NULL );
> ...
> 
> 
> HTH
> 
> On Thu, May 18, 2000 at 06:41:35PM -0700, Dominique Nerriere wrote:
> > Hi all,
> > 
> > I didn't find a way to generate an event with a timer, does gtk/gtk/glib provide 
>such a thing?
> > 
> > I need a function to be called every 1/33 seconde
> > 
> > Thanks for your help :)
> > 
> > Dominique
> > 
> > 
> > Get your FREE Email at http://mailcity.lycos.com
> > Get your PERSONALIZED START PAGE at http://my.lycos.com
> > 
> > _______________________________________________
> > gtk-app-devel-list mailing list
> > [EMAIL PROTECTED]
> > http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
> 
> -- 
> Reed Lai http://w3.icpdas.com/reed/ | ICPDAS http://www.icpdas.com
> GnuPG (DSA/ElGamal) 0x7199EAD3 Reed Lai (key #1) <[EMAIL PROTECTED]>
> KeyServer: search.keyserver.net |  HAM: BV4QO | NIC-handle: RL7000
> ICQ 64518529
> 

-- 
Reed Lai http://w3.icpdas.com/reed/ | ICPDAS http://www.icpdas.com
GnuPG (DSA/ElGamal) 0x7199EAD3 Reed Lai (key #1) <[EMAIL PROTECTED]>
KeyServer: search.keyserver.net |  HAM: BV4QO | NIC-handle: RL7000
ICQ 64518529

Reply via email to