Ticket #8199: sky-mutex.diff

File sky-mutex.diff, 2.6 KB (added by eriktorbjorn, 21 years ago)

Patch against an April 23 CVS snapshot

  • scummvm/sky/intro.cpp

    diff -ur ScummVM-cvs20030423/scummvm/sky/intro.cpp ScummVM-cvs20030423+hack/scummvm/sky/intro.cpp
    old new  
    277277
    278278void SkyState::showScreen(void) {
    279279       
     280        _system->lock_mutex(_mutex);   
    280281        _system->copy_rect(_workScreen, 320, 0, 0, 320, 200);
    281282        _system->update_screen();
     283        _system->unlock_mutex(_mutex);
    282284}
    283285
    284286void prepare_text(void)
  • scummvm/sky/screen.cpp

    diff -ur ScummVM-cvs20030423/scummvm/sky/screen.cpp ScummVM-cvs20030423+hack/scummvm/sky/screen.cpp
    old new  
    110110                do {
    111111                        palette_fadedown_helper((uint32 *)_palette, 256);
    112112                        _system->set_palette(_palette, 0, 256);
     113                        _system->lock_mutex(_mutex);
    113114                        _system->update_screen();
     115                        _system->unlock_mutex(_mutex);
    114116                        delay(10);
    115117                       
    116118                } while (--i);
     
    152154
    153155                palette_fadeup_helper((uint32 *)_palette, (uint32 *)tmpPal, 256);
    154156                _system->set_palette(_palette, 0, 256);
     157                _system->lock_mutex(_mutex);
    155158                _system->update_screen();
     159                _system->unlock_mutex(_mutex);
    156160                delay(10);     
    157161        } while (--i);
    158162       
  • scummvm/sky/sky.cpp

    diff -ur ScummVM-cvs20030423/scummvm/sky/sky.cpp ScummVM-cvs20030423+hack/scummvm/sky/sky.cpp
    old new  
    5151SkyState::SkyState(GameDetector *detector, OSystem *syst)
    5252        : Engine(detector, syst) {
    5353       
     54        _mutex = _system->create_mutex();
    5455        _game = detector->_gameId;
    5556
    5657        if (!_mixer->bindToSystem(syst))
     
    6566
    6667SkyState::~SkyState() {
    6768       
     69        if (_mutex)
     70                _system->delete_mutex(_mutex);
    6871}
    6972
    7073void SkyState::errorString(const char *buf1, char *buf2) {
     
    146149        _rnd.getRandomNumber(2);
    147150
    148151        do {
    149                 while (_system->poll_event(&event)) {
     152                while (1) {
     153                        bool result;
     154
     155                        _system->lock_mutex(_mutex);
     156                        result = _system->poll_event(&event);
     157                        _system->unlock_mutex(_mutex);
     158
     159                        if (!result)
     160                                break;
     161
    150162                        switch (event.event_code) {
    151163                                case OSystem::EVENT_KEYDOWN:
    152164                                        // Make sure backspace works right (this fixes a small issue on OS X)
  • scummvm/sky/sky.h

    diff -ur ScummVM-cvs20030423/scummvm/sky/sky.h ScummVM-cvs20030423+hack/scummvm/sky/sky.h
    old new  
    118118
    119119        RandomSource _rnd;
    120120        SkyText *_skyText;
     121
     122private:
     123        void *_mutex;
    121124};
    122125
    123126#endif