Improvements for SDL & Quinn
This commit is contained in:
parent
a7a7ed17b0
commit
418f03c4de
@ -80,6 +80,11 @@ static const int SDLK_unicode[] = {
|
|||||||
0, 0, 0, 0, 0
|
0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define KEYBOARD_KEY_ARROW_UP 0x48
|
||||||
|
#define KEYBOARD_KEY_ARROW_LEFT 0x4B
|
||||||
|
#define KEYBOARD_KEY_ARROW_RIGHT 0x4D
|
||||||
|
#define KEYBOARD_KEY_ARROW_DOWN 0x50
|
||||||
|
|
||||||
static const int SDLK_keyset[] = {
|
static const int SDLK_keyset[] = {
|
||||||
0, SDLK_ESCAPE, SDLK_1, SDLK_2,
|
0, SDLK_ESCAPE, SDLK_1, SDLK_2,
|
||||||
SDLK_3, SDLK_4, SDLK_5, SDLK_6,
|
SDLK_3, SDLK_4, SDLK_5, SDLK_6,
|
||||||
@ -191,20 +196,35 @@ void QUINN_PumpEvents(_THIS) {
|
|||||||
}
|
}
|
||||||
keysym.mod = make_mod(_k_last_state);
|
keysym.mod = make_mod(_k_last_state);
|
||||||
|
|
||||||
|
switch (current_req.event_msgs[l].code) {
|
||||||
|
case KEYBOARD_KEY_ARROW_UP:
|
||||||
|
keysym.sym = SDLK_UP;
|
||||||
|
break;
|
||||||
|
case KEYBOARD_KEY_ARROW_DOWN:
|
||||||
|
keysym.sym = SDLK_DOWN;
|
||||||
|
break;
|
||||||
|
case KEYBOARD_KEY_ARROW_LEFT:
|
||||||
|
keysym.sym = SDLK_LEFT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KEYBOARD_KEY_ARROW_RIGHT:
|
||||||
|
keysym.sym = SDLK_RIGHT;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (current_req.event_msgs[l].code < 0x57) {
|
||||||
|
if (_k_e0) {
|
||||||
|
keysym.sym = SDLK_keyset_e0[current_req.event_msgs[l].code];
|
||||||
|
} else {
|
||||||
|
keysym.sym = SDLK_keyset[current_req.event_msgs[l].code];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (current_req.event_msgs[l].state == 1) {
|
if (current_req.event_msgs[l].state == 1) {
|
||||||
if (_k_e0) {
|
|
||||||
keysym.sym = SDLK_keyset_e0[current_req.event_msgs[l].code];
|
|
||||||
} else {
|
|
||||||
keysym.sym = SDLK_keyset[current_req.event_msgs[l].code];
|
|
||||||
}
|
|
||||||
SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
|
SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
|
||||||
} else {
|
} else {
|
||||||
// key up
|
// key up
|
||||||
if (_k_e0) {
|
|
||||||
keysym.sym = SDLK_keyset_e0[current_req.event_msgs[l].code];
|
|
||||||
} else {
|
|
||||||
keysym.sym = SDLK_keyset[current_req.event_msgs[l].code];
|
|
||||||
}
|
|
||||||
SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
|
SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#define QUINNVID_DRIVER_NAME "quinn"
|
#define QUINNVID_DRIVER_NAME "quinn"
|
||||||
|
|
||||||
|
unsigned char *QUINN_Icon = NULL;
|
||||||
|
|
||||||
extern QUINN_recv_event(struct window_req_t *req);
|
extern QUINN_recv_event(struct window_req_t *req);
|
||||||
|
|
||||||
struct SDL_VideoDevice *__quinn_device;
|
struct SDL_VideoDevice *__quinn_device;
|
||||||
@ -167,7 +169,6 @@ SDL_Rect **QUINN_ListModes(_THIS, SDL_PixelFormat *format, Uint32 flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void QUINN_WinExit(int wh) {
|
void QUINN_WinExit(int wh) {
|
||||||
fprintf(stderr, "I Should Quit\n");
|
|
||||||
__quinn_device->hidden->doexit = 1;
|
__quinn_device->hidden->doexit = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,7 +176,6 @@ SDL_Surface *QUINN_SetVideoMode(_THIS, SDL_Surface *current,
|
|||||||
int width, int height, int bpp, Uint32 flags)
|
int width, int height, int bpp, Uint32 flags)
|
||||||
{
|
{
|
||||||
if ( this->hidden->wh != -1) {
|
if ( this->hidden->wh != -1) {
|
||||||
fprintf(stderr, "Resize request to %d x %d.\n", width, height);
|
|
||||||
// close window and open a new one the requested sizeo
|
// close window and open a new one the requested sizeo
|
||||||
quinn_remove_window(this->hidden->wh);
|
quinn_remove_window(this->hidden->wh);
|
||||||
}
|
}
|
||||||
@ -184,32 +184,36 @@ SDL_Surface *QUINN_SetVideoMode(_THIS, SDL_Surface *current,
|
|||||||
|
|
||||||
req = (struct window_req_t *)malloc(sizeof(struct window_req_t));
|
req = (struct window_req_t *)malloc(sizeof(struct window_req_t));
|
||||||
if (flags & SDL_NOFRAME) {
|
if (flags & SDL_NOFRAME) {
|
||||||
fprintf(stderr, "Initializing without borders.\n");
|
|
||||||
req->flags = WIN_REQ_FLAG_NO_TITLE;
|
req->flags = WIN_REQ_FLAG_NO_TITLE;
|
||||||
req->x = 0;
|
req->x = 0;
|
||||||
req->y = 0;
|
req->y = 0;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Initializing with borders.\n");
|
|
||||||
req->flags = 0;
|
req->flags = 0;
|
||||||
req->x = 0;
|
req->x = 0;
|
||||||
req->y = 25;
|
req->y = 25;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "Initializing window %dx%d (%d bpp)\n", width, height, bpp);
|
|
||||||
|
|
||||||
sprintf(req->name, "SDL Window");
|
sprintf(req->name, "SDL Window");
|
||||||
|
|
||||||
req->width = width;
|
req->width = width;
|
||||||
req->height = height;
|
req->height = height;
|
||||||
req->icon = NULL;
|
if (QUINN_Icon == NULL) {
|
||||||
|
req->icon = NULL;
|
||||||
|
} else {
|
||||||
|
req->icon = QUINN_Icon;
|
||||||
|
}
|
||||||
|
|
||||||
this->hidden->bpp = bpp;
|
this->hidden->bpp = bpp;
|
||||||
this->hidden->doexit = 0;
|
this->hidden->doexit = 0;
|
||||||
this->hidden->wh = quinn_req_window(req, QUINN_WinExit);
|
this->hidden->wh = quinn_req_window(req, QUINN_WinExit);
|
||||||
|
|
||||||
this->hidden->surface = quinn_add_sdl_surface(this->hidden->wh, 0, 0, width, height, QUINN_recv_event);
|
if (QUINN_Icon == NULL) {
|
||||||
|
free(QUINN_Icon);
|
||||||
|
QUINN_Icon = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
fprintf(stderr, "Window output initialized...\n");
|
this->hidden->surface = quinn_add_sdl_surface(this->hidden->wh, 0, 0, width, height, QUINN_recv_event);
|
||||||
|
|
||||||
/* Set up the new mode framebuffer */
|
/* Set up the new mode framebuffer */
|
||||||
current->flags = flags;
|
current->flags = flags;
|
||||||
@ -246,7 +250,7 @@ static void QUINN_UnlockHWSurface(_THIS, SDL_Surface *surface)
|
|||||||
static void QUINN_UpdateRects(_THIS, int numrects, SDL_Rect *rects)
|
static void QUINN_UpdateRects(_THIS, int numrects, SDL_Rect *rects)
|
||||||
{
|
{
|
||||||
quinn_update_window();
|
quinn_update_window();
|
||||||
quinn_yield();
|
// quinn_yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
int QUINN_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
|
int QUINN_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color *colors)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user