File:  [RetroPC.NET] / np2 / sdl / win32s / SDLevent.c
Revision 1.1: download - view: text, annotated - select for diffs
Fri Nov 21 15:51:13 2003 JST (21 years, 11 months ago) by yui
Branches: MAIN
CVS tags: VER_0_82_x64, VER_0_82, VER_0_81A, VER_0_81, VER_0_80, VER_0_79, VER_0_78, VER_0_77, VER_0_76, VER_0_75, VER_0_74, VER_0_73, VER_0_72, HEAD
debuneko- (T.Yui)

#include	"compiler.h"

#define	EVENT_MAX	128

extern	BOOL	__sdl_avail;
extern	int		__sdl_mousex;
extern	int		__sdl_mousey;

static	SDL_Event	events[EVENT_MAX];
static	UINT		eventp = 0;
static	UINT		eventc = 0;


int SDL_PushEvent(SDL_Event *event) {

	if (eventc < (sizeof(events)/sizeof(SDL_Event))) {
		events[(eventp + eventc) % EVENT_MAX] = *event;
		eventc++;
		return(1);
	}
	else {
		return(0);
	}
}

int SDL_PollEvent(SDL_Event *event) {

	MSG		msg;

	if (__sdl_avail) {
		while(PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) {
			if (!GetMessage(&msg, NULL, 0, 0)) {
				SDL_Event quitevent;
				ZeroMemory(&quitevent, sizeof(quitevent));
				quitevent.type = SDL_QUIT;
				SDL_PushEvent(&quitevent);
				__sdl_avail = FALSE;
				break;
			}
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}
	if (eventc) {
		eventc--;
		if (event) {
			*event = events[eventp];
		}
		eventp = (eventp + 1) % EVENT_MAX;
		return(1);
	}
	else {
		return(0);
	}
}

BYTE SDL_GetMouseState(int *x, int *y) {

	if (x) {
		*x = __sdl_mousex;
	}
	if (y) {
		*y = __sdl_mousey;
	}
	return(0);
}


RetroPC.NET-CVS <cvs@retropc.net>