nanogui: rtems timer patch


Previous by date: 20 Jun 2009 17:16:55 -0000 webkit on Nano-X, Bajimohanreddy Bandi
Next by date: 20 Jun 2009 17:16:55 -0000 How to specify the position of of window, Michael Schmid
Previous in thread:
Next in thread:

Subject: rtems timer patch
From: Allan Hessenflow ####@####.####
Date: 20 Jun 2009 17:16:55 -0000
Message-Id: <20090620171652.GA31853@kallisti.com>

The attached patch enables timer support in the nanox api for RTEMS (while
I haven't tried it, it looks like timers should already work from the mwin
api).  The patch is generated with "cvs diff -c3p"; let me know if you'd
prefer some other format.

allan

-- 
Allan N. Hessenflow      ####@####.####

Index: src/nanox/srvmain.c
===================================================================
RCS file: /usr/cvs/microwin/src/nanox/srvmain.c,v
retrieving revision 1.27
diff -c -3 -p -r1.27 srvmain.c
*** src/nanox/srvmain.c	24 Jun 2005 00:26:57 -0000	1.27
--- src/nanox/srvmain.c	20 Jun 2009 17:09:43 -0000
*************** void
*** 939,944 ****
--- 939,949 ----
  GsSelect (GR_TIMEOUT timeout)
  {
          struct MW_UID_MESSAGE m;
+ 	unsigned long uid_timeout;
+ #if MW_FEATURE_TIMERS
+ 	struct timeval tout;
+ #endif
+ 	GR_EVENT_GENERAL *gp;
  	int rc;
  
  	/* perform pre-select duties, if any*/
*************** GsSelect (GR_TIMEOUT timeout)
*** 949,955 ****
  	m.type = MV_UID_INVALID;
  
  	/* wait up for events */
! 	rc = uid_read_message (&m, timeout);
  
  	/* return if timed-out or something went wrong */
  	if (rc < 0) {
--- 954,976 ----
  	m.type = MV_UID_INVALID;
  
  	/* wait up for events */
! 	if (timeout == (GR_TIMEOUT) -1)
! 		uid_timeout = 0;
! 	else {
! #if MW_FEATURE_TIMERS
! 		if (GdGetNextTimeout(&tout, timeout)) {
! 			uid_timeout = tout.tv_sec * 1000 +
! 			              (tout.tv_usec + 500) / 1000;
! 		} else
! #endif
! 		{
! 			if (timeout == 0)
! 				uid_timeout = (unsigned long) -1;
! 			else
! 				uid_timeout = timeout;
! 		}
! 	}
! 	rc = uid_read_message (&m, uid_timeout);
  
  	/* return if timed-out or something went wrong */
  	if (rc < 0) {
*************** GsSelect (GR_TIMEOUT timeout)
*** 957,962 ****
--- 978,998 ----
  		        EPRINTF (" rc= %d, errno=%d\n", rc, errno);
  		else {
  		        /* timeout handling */
+ #if MW_FEATURE_TIMERS
+ 			if (GdTimeout())
+ #else
+ 			if (timeout != 0)
+ #endif
+ 			{
+ 				/* Timeout has occured.
+ 				** Currently return a timeout event regardless of whether client
+ 				**   has selected for it.
+ 				*/
+ 				if ((gp = (GR_EVENT_GENERAL *)GsAllocEvent(curclient)) != NULL)
+ 				{
+ 					gp->type = GR_EVENT_TYPE_TIMEOUT;
+ 				}
+ 			}
  		}
  		return;
  	}

Previous by date: 20 Jun 2009 17:16:55 -0000 webkit on Nano-X, Bajimohanreddy Bandi
Next by date: 20 Jun 2009 17:16:55 -0000 How to specify the position of of window, Michael Schmid
Previous in thread:
Next in thread:


Powered by ezmlm-browse 0.20.