OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/ecos-2.0/packages/services/gfx/mw/v2_0/src/demos/test
    from Rev 27 to Rev 174
    Reverse comparison

Rev 27 → Rev 174

/test.c
0,0 → 1,165
/*
* Copyright (c) 1999 Greg Haerr <greg@censoft.com>
*
* Test for select()
*/
#include <stdio.h>
#include <stdlib.h>
 
#ifndef __PACIFIC__
#include <errno.h>
#include <sys/types.h>
#endif
 
#if UNIX
#include <unistd.h>
#include <sys/time.h>
#endif
#if ELKS
#include <linuxmt/posix_types.h>
#include <linuxmt/time.h>
#endif
#include "windows.h"
#include "wintern.h"
 
int keyb_fd; /* the keyboard file descriptor */
int mouse_fd; /* the mouse file descriptor */
 
int
main(int ac,char **av)
{
if ((keyb_fd = GdOpenKeyboard()) < 0) {
PRINT_ERROR("Cannot initialise keyboard");
return -1;
}
 
if ((mouse_fd = GdOpenMouse()) < 0) {
PRINT_ERROR("Cannot initialise mouse");
GdCloseKeyboard();
return -1;
}
 
for(;;)
GsSelect();
 
return 0;
}
 
void
GsTerminate(void)
{
GdCloseMouse();
GdCloseKeyboard();
exit(0);
}
 
#if MSDOS
void
GsSelect(void)
{
/* If mouse data present, service it*/
if(mousedev.Poll())
GsCheckMouseEvent();
 
/* If keyboard data present, service it*/
if(kbddev.Poll())
GsCheckKeyboardEvent();
 
}
#endif
 
#if UNIX && defined(HAVESELECT)
void
GsSelect(void)
{
fd_set rfds;
int e;
struct timeval to;
int n;
 
/* Set up the FDs for use in the main select(): */
FD_ZERO(&rfds);
FD_SET(mouse_fd, &rfds);
n = mouse_fd;
FD_SET(keyb_fd, &rfds);
if(keyb_fd > n)
n = keyb_fd;
 
/* Set up the timeout for the main select(). If
* the mouse is captured we're probably moving a window,
* so poll quickly to allow other windows to repaint while
* checking for more event input.
*/
to.tv_sec = 0L;
to.tv_sec = 1L;
to.tv_usec = 0L;
to.tv_usec = 10000L;
 
/* Wait for some input on any of the fds in the set or a timeout: */
if((e = select(n+1, &rfds, NULL, NULL, &to)) > 0) {
/* If data is present on the mouse fd, service it: */
if(FD_ISSET(mouse_fd, &rfds))
GsCheckMouseEvent();
 
/* If data is present on the keyboard fd, service it: */
if(FD_ISSET(keyb_fd, &rfds))
GsCheckKeyboardEvent();
 
}
else if(!e) {
printf("select() timeout\n");
} else
if(errno != EINTR)
PRINT_ERROR("Select() call in main failed");
}
#endif
 
/*
* Update mouse status and issue events on it if necessary.
* This function doesn't block, but is normally only called when
* there is known to be some data waiting to be read from the mouse.
*/
BOOL GsCheckMouseEvent(void)
{
COORD rootx; /* latest mouse x position */
COORD rooty; /* latest mouse y position */
BUTTON newbuttons; /* latest buttons */
int mousestatus; /* latest mouse status */
 
/* Read the latest mouse status: */
mousestatus = GdReadMouse(&rootx, &rooty, &newbuttons);
if(mousestatus < 0) {
printf("Mouse error\n");
return FALSE;
} else if(mousestatus) { /* Deliver events as appropriate: */
printf("mouse %d,%d,%d\n", rootx, rooty, newbuttons);
return TRUE;
}
return FALSE;
}
 
/*
* Update keyboard status and issue events on it if necessary.
* This function doesn't block, but is normally only called when
* there is known to be some data waiting to be read from the keyboard.
*/
BOOL GsCheckKeyboardEvent(void)
{
unsigned char ch; /* latest character */
MODIFIER modifiers; /* latest modifiers */
int keystatus; /* latest keyboard status */
 
/* Read the latest keyboard status: */
keystatus = GdReadKeyboard(&ch, &modifiers);
if(keystatus < 0) {
if(keystatus == -2) /* special case for ESC pressed*/
GsTerminate();
printf("Kbd error\n");
return FALSE;
} else if(keystatus) { /* Deliver events as appropriate: */
printf("kbd '%c',%d\n", ch, modifiers);
return TRUE;
}
return FALSE;
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.