DEFINE_DEVICE_TYPE:  movie_camera2
  DEFAULT_ICON( topwindow.gif );
  /* Local shared variables. */
  float x, y;

  DEFINE_THREAD: start_up
   {
    /* Use thread with larger stack-size. */
    TRIGGER_THREAD_STCKSZ( movie_camera, 0.0, 0, 262144 );
   }
  END_DEFINE_THREAD.


  DEFINE_THREAD: movie_camera
   {
    void snap_image( char *image_file_name );
    int j, movie_frame=0;
    char *filename, *wrd, wrd2[50];

    x = 8.5;
    y = 0.1;
    wrd2[0] = '\0';
    filename = (char *)malloc(100);
    wrd = (char *)malloc(500);
    sprintf(filename,"frame_");
    while (1)
     {
	/* Annotate the time display. */
      if (wrd2[0] != '\0')  Annotate( wrd2, 189, x, y );
      if (CSIM_TIME==0.0) strcpy(wrd2,"Time = 0.0"); else
      sprintf(wrd2,"Time = %g", CSIM_TIME);
      Annotate( wrd2, 16, x, y );

	/* Snap the canvas. */
      sprintf(wrd,"%5d.ppm", movie_frame++ );
      j = 0;  while (wrd[j]==' ') wrd[j++] = '0';
      filename[6] = '\0';
      strcat(filename,wrd);
      snap_image( filename );
      DELAY( 0.5 );
    }
  }
 END_DEFINE_THREAD.

END_DEFINE_DEVICE_TYPE.




DEFINE_DEVICE_TYPE:  dummy
  PORT_LIST( xxxx );
  DEFAULT_ICON( sidewindow.gif );
  /* Local shared variables. */
  int xxxx;

  DEFINE_THREAD:   start_up
   {
   }
  END_DEFINE_THREAD.

END_DEFINE_DEVICE_TYPE.

