This commit is contained in:
Andrew Pamment 2016-02-13 18:09:39 +10:00
parent 8038efbcbc
commit 896d6a14da
2 changed files with 3645 additions and 48 deletions

3589
config.log Normal file

File diff suppressed because it is too large Load Diff

View File

@ -140,65 +140,72 @@ void QUINN_recv_event(struct window_update_req *req) {
void QUINN_PumpEvents(_THIS) {
int i;
int l;
if (this->hidden->doexit == 1) {
SDL_PrivateQuit();
}
if (current_req_current) {
if (current_req.lclick != _lmstate) {
if (current_req.lclick) {
SDL_PrivateMouseButton(SDL_PRESSED, 1, current_req.mousex, current_req.mousey);
} else {
SDL_PrivateMouseButton(SDL_RELEASED, 1, current_req.mousex, current_req.mousey);
}
}
if (current_req.rclick != _rmstate) {
if (current_req.rclick) {
SDL_PrivateMouseButton(SDL_PRESSED, 3, current_req.mousex, current_req.mousey);
} else {
SDL_PrivateMouseButton(SDL_RELEASED, 3, current_req.mousex, current_req.mousey);
}
}
if (current_req.mclick != _mmstate) {
if (current_req.mclick) {
SDL_PrivateMouseButton(SDL_PRESSED, 2, current_req.mousex, current_req.mousey);
} else {
SDL_PrivateMouseButton(SDL_RELEASED, 2, current_req.mousex, current_req.mousey);
}
}
_lmstate = current_req.lclick;
_rmstate = current_req.rclick;
_mmstate = current_req.mclick;
SDL_PrivateMouseMotion(0, 0, current_req.mousex, current_req.mousey);
for (l=0;l<current_req.event_msgs_count;l++) {
if (current_req.event_msgs[l].type == 1) {
// keyboard
SDL_keysym keysym;
for (i=0;i<88;i++) {
if (_k_last_state[i] != current_req.key_codes[i]) {
keysym.scancode = i;
if (current_req.key_codes[42] == 1 || current_req.key_codes[54] == 1) {
keysym.unicode = sdl_unicode_shift[i];
if (_k_last_state[current_req.event_msgs[l].code] != current_req.event_msgs[l].state) {
keysym.scancode = current_req.event_msgs[l].code;
if (_k_last_state[42] == 1 || _k_last_state[54] == 1) {
keysym.unicode = sdl_unicode_shift[current_req.event_msgs[l].code];
} else {
keysym.unicode = sdl_unicode[i];
keysym.unicode = sdl_unicode[current_req.event_msgs[l].code];
}
keysym.mod = make_mod(current_req.key_codes);
if (current_req.key_codes[i] == 1) {
// key down
keysym.sym = sdl_keyset[i];
keysym.mod = make_mod(_k_last_state);
if (current_req.event_msgs[l].state == 1) {
keysym.sym = sdl_keyset[current_req.event_msgs[l].code];
SDL_PrivateKeyboard(SDL_PRESSED, &keysym);
} else {
// key up
keysym.sym = sdl_keyset[i];
keysym.sym = sdl_keyset[current_req.event_msgs[l].code];
SDL_PrivateKeyboard(SDL_RELEASED, &keysym);
}
_k_last_state[i] = current_req.key_codes[i];
}
_k_last_state[current_req.event_msgs[l].code] = current_req.event_msgs[l].state;
} else if (current_req.event_msgs[l].type == 2) {
// mouse
if (current_req.event_msgs[l].code == 1) {
if (current_req.event_msgs[l].state != _lmstate) {
if (current_req.event_msgs[l].state == 1) {
SDL_PrivateMouseButton(SDL_PRESSED, 1, current_req.event_msgs[l].x, current_req.event_msgs[l].y);
} else {
SDL_PrivateMouseButton(SDL_RELEASED, 1, current_req.event_msgs[l].x, current_req.event_msgs[l].y);
}
}
_lmstate = current_req.event_msgs[l].state;
} else if (current_req.event_msgs[l].code == 2) {
if (current_req.event_msgs[l].state != _mmstate) {
if (current_req.event_msgs[l].state == 1) {
SDL_PrivateMouseButton(SDL_PRESSED, 2, current_req.event_msgs[l].x, current_req.event_msgs[l].y);
} else {
SDL_PrivateMouseButton(SDL_RELEASED, 2, current_req.event_msgs[l].x, current_req.event_msgs[l].y);
}
}
_mmstate = current_req.event_msgs[l].state;
} else if (current_req.event_msgs[l].code == 3) {
if (current_req.event_msgs[l].state != _rmstate) {
if (current_req.event_msgs[l].state == 1) {
SDL_PrivateMouseButton(SDL_PRESSED, 3, current_req.event_msgs[l].x, current_req.event_msgs[l].y);
} else {
SDL_PrivateMouseButton(SDL_RELEASED, 3, current_req.event_msgs[l].x, current_req.event_msgs[l].y);
}
}
_rmstate = current_req.event_msgs[l].state;
}
}
}
SDL_PrivateMouseMotion(0, 0, current_req.mousex, current_req.mousey);
current_req_current = 0;
}
@ -208,6 +215,7 @@ void QUINN_PumpEvents(_THIS) {
void QUINN_InitOSKeymap(_THIS)
{
/* do nothing. */
memset(_k_last_state, 0, 256);
}
/* end of SDL_nullevents.c ... */