Ticket #7996: screenshot5.diff

File screenshot5.diff, 3.1 KB (added by eriktorbjorn, 21 years ago)

Patch against an August 10 CVS snapshot

  • scummvm/backends/sdl/sdl-common.cpp

    diff -ur ScummVM-cvs20030810/scummvm/backends/sdl/sdl-common.cpp ScummVM-cvs20030810+hack/scummvm/backends/sdl/sdl-common.cpp
    old new  
    554554                                break;
    555555                        }
    556556
     557                        if (b == KBD_ALT && ev.key.keysym.sym == 's') {
     558                                char filename[20];
     559
     560                                for (int n = 0;; n++) {
     561                                        SDL_RWops *file;
     562
     563                                        sprintf(filename, "scummvm%05d.bmp", n);
     564                                        file = SDL_RWFromFile(filename, "r");
     565                                        if (!file)
     566                                                break;
     567                                        SDL_RWclose(file);
     568                                }
     569                                if (save_screenshot(filename))
     570                                        printf("Saved '%s'\n", filename);
     571                                else
     572                                        printf("Could not save screenshot!\n");
     573                                break;
     574                        }
     575
    557576#ifdef MACOSX
    558577                        // On Macintosh', Cmd-Q quits
    559578                        if ((ev.key.keysym.mod & KMOD_META) && ev.key.keysym.sym=='q') {
  • scummvm/backends/sdl/sdl-common.h

    diff -ur ScummVM-cvs20030810/scummvm/backends/sdl/sdl-common.h ScummVM-cvs20030810+hack/scummvm/backends/sdl/sdl-common.h
    old new  
    225225        virtual void load_gfx_mode() = 0;
    226226        virtual void unload_gfx_mode() = 0;
    227227
     228        virtual bool save_screenshot(const char *filename) = 0;
     229
    228230        void setup_icon();
    229231        void kbd_mouse();
    230232        void init_joystick() { _joystick = SDL_JoystickOpen(0); }
  • scummvm/backends/sdl/sdl.cpp

    diff -ur ScummVM-cvs20030810/scummvm/backends/sdl/sdl.cpp ScummVM-cvs20030810+hack/scummvm/backends/sdl/sdl.cpp
    old new  
    4242
    4343        virtual void load_gfx_mode();
    4444        virtual void unload_gfx_mode();
     45        virtual bool save_screenshot(const char *filename);
    4546        void hotswap_gfx_mode();
    4647};
    4748
     
    376377        return OSystem_SDL_Common::property(param, value);
    377378}
    378379
     380bool OSystem_SDL::save_screenshot(const char *filename) {
     381        assert(_hwscreen != NULL);
     382
     383        StackLock lock(_graphicsMutex, this);   // Lock the mutex until this function ends
     384        SDL_SaveBMP(_hwscreen, filename);
     385        return true;
     386}
  • scummvm/backends/sdl/sdl_gl.cpp

    diff -ur ScummVM-cvs20030810/scummvm/backends/sdl/sdl_gl.cpp ScummVM-cvs20030810+hack/scummvm/backends/sdl/sdl_gl.cpp
    old new  
    6464       
    6565        virtual void load_gfx_mode();
    6666        virtual void unload_gfx_mode();
     67        virtual bool save_screenshot(const char *filename);
    6768        void hotswap_gfx_mode();
    6869};
    6970
     
    668669
    669670        return OSystem_SDL_Common::property(param, value);
    670671}
     672
     673bool OSystem_SDL_OpenGL::save_screenshot(const char *filename) {
     674        // FIXME: I don't know how to do this yet.
     675        if (_usingOpenGL)
     676                return false;
     677
     678        StackLock lock(_graphicsMutex, this);   // Lock the mutex until this function ends
     679
     680        assert(_hwscreen != NULL);
     681        SDL_SaveBMP(_hwscreen, filename);
     682        return true;
     683}