Add screenshot option for sdl backends, patch #590233

svn-id: r9821
This commit is contained in:
Travis Howell 2003-08-22 07:40:40 +00:00
parent 8a87b25fdc
commit ab59623930
4 changed files with 42 additions and 0 deletions

View file

@ -554,6 +554,25 @@ bool OSystem_SDL_Common::poll_event(Event *event) {
break;
}
if (b == KBD_ALT && ev.key.keysym.sym == 's') {
char filename[20];
for (int n = 0;; n++) {
SDL_RWops *file;
sprintf(filename, "scummvm%05d.bmp", n);
file = SDL_RWFromFile(filename, "r");
if (!file)
break;
SDL_RWclose(file);
}
if (save_screenshot(filename))
printf("Saved '%s'\n", filename);
else
printf("Could not save screenshot!\n");
break;
}
#ifdef MACOSX
// On Macintosh', Cmd-Q quits
if ((ev.key.keysym.mod & KMOD_META) && ev.key.keysym.sym=='q') {

View file

@ -225,6 +225,8 @@ protected:
virtual void load_gfx_mode() = 0;
virtual void unload_gfx_mode() = 0;
virtual bool save_screenshot(const char *filename) = 0;
void setup_icon();
void kbd_mouse();
void init_joystick() { _joystick = SDL_JoystickOpen(0); }

View file

@ -42,6 +42,7 @@ protected:
virtual void load_gfx_mode();
virtual void unload_gfx_mode();
virtual bool save_screenshot(const char *filename);
void hotswap_gfx_mode();
};
@ -376,3 +377,10 @@ uint32 OSystem_SDL::property(int param, Property *value) {
return OSystem_SDL_Common::property(param, value);
}
bool OSystem_SDL::save_screenshot(const char *filename) {
assert(_hwscreen != NULL);
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
SDL_SaveBMP(_hwscreen, filename);
return true;
}

View file

@ -64,6 +64,7 @@ protected:
virtual void load_gfx_mode();
virtual void unload_gfx_mode();
virtual bool save_screenshot(const char *filename);
void hotswap_gfx_mode();
};
@ -668,3 +669,15 @@ uint32 OSystem_SDL_OpenGL::property(int param, Property *value) {
return OSystem_SDL_Common::property(param, value);
}
bool OSystem_SDL_OpenGL::save_screenshot(const char *filename) {
// FIXME: I don't know how to do this yet.
if (_usingOpenGL)
return false;
StackLock lock(_graphicsMutex, this); // Lock the mutex until this function ends
assert(_hwscreen != NULL);
SDL_SaveBMP(_hwscreen, filename);
return true;
}