[Scummvm-cvs-logs] CVS: scummvm/backends/sdl sdl-common.cpp,1.38,1.39
Max Horn
fingolfin at users.sourceforge.net
Wed Mar 26 13:57:16 CET 2003
Update of /cvsroot/scummvm/scummvm/backends/sdl
In directory sc8-pr-cvs1:/tmp/cvs-serv9306
Modified Files:
sdl-common.cpp
Log Message:
cleanup; added SDL_VIDEOEXPOSE
Index: sdl-common.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/sdl/sdl-common.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- sdl-common.cpp 10 Mar 2003 01:37:34 -0000 1.38
+++ sdl-common.cpp 26 Mar 2003 21:56:30 -0000 1.39
@@ -498,148 +498,146 @@
bool OSystem_SDL_Common::poll_event(Event *event) {
SDL_Event ev;
int axis;
+ byte b = 0;
+
kbd_mouse();
- for(;;) {
- if (!SDL_PollEvent(&ev))
- return false;
-
+ while(SDL_PollEvent(&ev)) {
switch(ev.type) {
- case SDL_KEYDOWN: {
- byte b = 0;
- if (ev.key.keysym.mod & KMOD_SHIFT)
- b |= KBD_SHIFT;
- if (ev.key.keysym.mod & KMOD_CTRL)
- b |= KBD_CTRL;
- if (ev.key.keysym.mod & KMOD_ALT)
- b |= KBD_ALT;
- event->kbd.flags = b;
+ case SDL_KEYDOWN:
+ if (ev.key.keysym.mod & KMOD_SHIFT)
+ b |= KBD_SHIFT;
+ if (ev.key.keysym.mod & KMOD_CTRL)
+ b |= KBD_CTRL;
+ if (ev.key.keysym.mod & KMOD_ALT)
+ b |= KBD_ALT;
+ event->kbd.flags = b;
- // Alt-Return toggles full screen mode
- if (b == KBD_ALT && ev.key.keysym.sym==SDLK_RETURN) {
- property(PROP_TOGGLE_FULLSCREEN, NULL);
- break;
- }
+ // Alt-Return toggles full screen mode
+ if (b == KBD_ALT && ev.key.keysym.sym == SDLK_RETURN) {
+ property(PROP_TOGGLE_FULLSCREEN, NULL);
+ break;
+ }
+
+ // Ctrl-z and Alt-X quit
+ if ((b == KBD_CTRL && ev.key.keysym.sym=='z') || (b == KBD_ALT && ev.key.keysym.sym=='x')) {
+ quit();
+ break;
+ }
- if ((b == KBD_CTRL && ev.key.keysym.sym=='z') || (b == KBD_ALT && ev.key.keysym.sym=='x')) {
- quit();
- break;
- }
- // Ctr-Alt-1 till Ctrl-Alt-9 will change the GFX mode
- if (b == (KBD_CTRL|KBD_ALT) &&
- (ev.key.keysym.sym>='1') && (ev.key.keysym.sym<='9')) {
- Property prop;
- prop.gfx_mode = ev.key.keysym.sym - '1';
- property(PROP_SET_GFX_MODE, &prop);
- break;
- }
#ifdef MACOSX
- // quit on Cmd-Q on Mac
- if ((ev.key.keysym.mod & KMOD_META) && ev.key.keysym.sym=='q') {
- quit();
- break;
- }
+ // On Macintosh', Cmd-Q quits
+ if ((ev.key.keysym.mod & KMOD_META) && ev.key.keysym.sym=='q') {
+ quit();
+ break;
+ }
#endif
+ // Ctr-Alt-1 till Ctrl-Alt-9 will change the GFX mode
+ if (b == (KBD_CTRL|KBD_ALT) &&
+ (ev.key.keysym.sym>='1') && (ev.key.keysym.sym<='9')) {
+ Property prop;
+ prop.gfx_mode = ev.key.keysym.sym - '1';
+ property(PROP_SET_GFX_MODE, &prop);
+ break;
+ }
#ifdef QTOPIA
- // quit on fn+backspace on zaurus
- if (ev.key.keysym.sym == 127) {
- quit();
- break;
- }
- // map menu key (f11) to f5 (scumm menu)
- if (ev.key.keysym.sym == SDLK_F11) {
- event->event_code = EVENT_KEYDOWN;
- event->kbd.keycode = SDLK_F5;
- event->kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
- }
- // map center (space) to tab (default action )
- // I wanted to map the calendar button but the calendar comes up
- //
- else if (ev.key.keysym.sym == SDLK_SPACE) {
- event->event_code = EVENT_KEYDOWN;
- event->kbd.keycode = SDLK_TAB;
- event->kbd.ascii = mapKey(SDLK_TAB, ev.key.keysym.mod, 0);
- }
- // since we stole space (pause) above we'll rebind it to the tab key on the keyboard
- else if (ev.key.keysym.sym == SDLK_TAB) {
- event->event_code = EVENT_KEYDOWN;
- event->kbd.keycode = SDLK_SPACE;
- event->kbd.ascii = mapKey(SDLK_SPACE, ev.key.keysym.mod, 0);
- }
- else {
- // let the events fall through if we didn't change them, this may not be the best way to
- // set it up, but i'm not sure how sdl would like it if we let if fall through then redid it though.
- // and yes i have an huge terminal size so i dont wrap soon enough.
- event->event_code = EVENT_KEYDOWN;
- event->kbd.keycode = ev.key.keysym.sym;
- event->kbd.ascii = mapKey(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode);
- }
-#else
+ // quit on fn+backspace on zaurus
+ if (ev.key.keysym.sym == 127) {
+ quit();
+ break;
+ }
+
+ // map menu key (f11) to f5 (scumm menu)
+ if (ev.key.keysym.sym == SDLK_F11) {
+ event->event_code = EVENT_KEYDOWN;
+ event->kbd.keycode = SDLK_F5;
+ event->kbd.ascii = mapKey(SDLK_F5, ev.key.keysym.mod, 0);
+ }
+ // map center (space) to tab (default action )
+ // I wanted to map the calendar button but the calendar comes up
+ //
+ else if (ev.key.keysym.sym == SDLK_SPACE) {
+ event->event_code = EVENT_KEYDOWN;
+ event->kbd.keycode = SDLK_TAB;
+ event->kbd.ascii = mapKey(SDLK_TAB, ev.key.keysym.mod, 0);
+ }
+ // since we stole space (pause) above we'll rebind it to the tab key on the keyboard
+ else if (ev.key.keysym.sym == SDLK_TAB) {
+ event->event_code = EVENT_KEYDOWN;
+ event->kbd.keycode = SDLK_SPACE;
+ event->kbd.ascii = mapKey(SDLK_SPACE, ev.key.keysym.mod, 0);
+ } else {
+ // let the events fall through if we didn't change them, this may not be the best way to
+ // set it up, but i'm not sure how sdl would like it if we let if fall through then redid it though.
+ // and yes i have an huge terminal size so i dont wrap soon enough.
event->event_code = EVENT_KEYDOWN;
event->kbd.keycode = ev.key.keysym.sym;
event->kbd.ascii = mapKey(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode);
+ }
+#else
+ event->event_code = EVENT_KEYDOWN;
+ event->kbd.keycode = ev.key.keysym.sym;
+ event->kbd.ascii = mapKey(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode);
#endif
-
- switch(ev.key.keysym.sym) {
- case SDLK_LEFT:
- km.x_vel = -1;
- km.x_down_count = 1;
- break;
- case SDLK_RIGHT:
- km.x_vel = 1;
- km.x_down_count = 1;
- break;
- case SDLK_UP:
- km.y_vel = -1;
- km.y_down_count = 1;
- break;
- case SDLK_DOWN:
- km.y_vel = 1;
- km.y_down_count = 1;
- break;
- default:
- break;
- }
-
- return true;
+
+ switch(ev.key.keysym.sym) {
+ case SDLK_LEFT:
+ km.x_vel = -1;
+ km.x_down_count = 1;
+ break;
+ case SDLK_RIGHT:
+ km.x_vel = 1;
+ km.x_down_count = 1;
+ break;
+ case SDLK_UP:
+ km.y_vel = -1;
+ km.y_down_count = 1;
+ break;
+ case SDLK_DOWN:
+ km.y_vel = 1;
+ km.y_down_count = 1;
+ break;
+ default:
+ break;
}
- case SDL_KEYUP: {
+ return true;
+
+ case SDL_KEYUP:
event->event_code = EVENT_KEYUP;
event->kbd.keycode = ev.key.keysym.sym;
event->kbd.ascii = mapKey(ev.key.keysym.sym, ev.key.keysym.mod, ev.key.keysym.unicode);
- switch(ev.key.keysym.sym){
- case SDLK_LEFT:
- if (km.x_vel < 0) {
- km.x_vel = 0;
- km.x_down_count = 0;
- }
- break;
- case SDLK_RIGHT:
- if (km.x_vel > 0) {
- km.x_vel = 0;
- km.x_down_count = 0;
- }
- break;
- case SDLK_UP:
- if (km.y_vel < 0) {
- km.y_vel = 0;
- km.y_down_count = 0;
- }
- break;
- case SDLK_DOWN:
- if (km.y_vel > 0) {
- km.y_vel = 0;
- km.y_down_count = 0;
- }
- break;
- default:
- break;
+ switch(ev.key.keysym.sym) {
+ case SDLK_LEFT:
+ if (km.x_vel < 0) {
+ km.x_vel = 0;
+ km.x_down_count = 0;
}
- return true;
+ break;
+ case SDLK_RIGHT:
+ if (km.x_vel > 0) {
+ km.x_vel = 0;
+ km.x_down_count = 0;
+ }
+ break;
+ case SDLK_UP:
+ if (km.y_vel < 0) {
+ km.y_vel = 0;
+ km.y_down_count = 0;
+ }
+ break;
+ case SDLK_DOWN:
+ if (km.y_vel > 0) {
+ km.y_vel = 0;
+ km.y_down_count = 0;
+ }
+ break;
+ default:
+ break;
}
+ return true;
case SDL_MOUSEMOTION:
event->event_code = EVENT_MOUSEMOVE;
@@ -656,12 +654,10 @@
event->event_code = EVENT_LBUTTONDOWN;
else if (ev.button.button == SDL_BUTTON_RIGHT)
event->event_code = EVENT_RBUTTONDOWN;
-#if defined(SDL_BUTTON_WHEELUP) && defined(SDL_BUTTON_WHEELDOWN)
else if (ev.button.button == SDL_BUTTON_WHEELUP)
event->event_code = EVENT_WHEELUP;
else if (ev.button.button == SDL_BUTTON_WHEELDOWN)
event->event_code = EVENT_WHEELDOWN;
-#endif
else
break;
km.x = event->mouse.x = ev.motion.x;
@@ -784,12 +780,18 @@
}
return true;
+ case SDL_VIDEOEXPOSE:
+ _forceFull = true;
+ break;
+
case SDL_QUIT:
quit();
+ break;
}
}
+ return false;
}
-
+
bool OSystem_SDL_Common::set_sound_proc(void *param, SoundProc *proc, byte format) {
SDL_AudioSpec desired;
More information about the Scummvm-git-logs
mailing list