long PADclose(void) { if (g.Opened) { if (g.cfg.Threaded) { TerminateThread = 1; pthread_join(ThreadID, NULL); } DestroySDLJoy(); DestroyKeyboard(); if (SDL_WasInit(SDL_INIT_EVERYTHING & ~SDL_INIT_JOYSTICK)) { SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } else { SDL_Quit(); } } g.Opened = 0; return PSE_PAD_ERR_SUCCESS; }
int maemo_x11_update_keys() { XEvent evt; XClientMessageEvent *xce; int leave = 0; Display *disp = (Display *)gpuDisp; if (!disp) return 0; if (!initialized) { initialized++; InitKeyboard(); } while (XPending(disp)>0) { XNextEvent(disp, &evt); switch (evt.type) { case KeyPress: case KeyRelease: key_press_event(evt.xkey.keycode, evt.type==KeyPress ? 1 : (evt.type==KeyRelease ? 2 : 0) ); break; case ClientMessage: xce = (XClientMessageEvent *)&evt; if (xce->message_type == wmprotocols && (Atom)xce->data.l[0] == wmdelwindow) leave = 1; break; } } if (leave) { DestroyKeyboard(); exit(1); } return 0; }