diff -ur ScummVM-cvs20030423/scummvm/sky/intro.cpp ScummVM-cvs20030423+hack/scummvm/sky/intro.cpp
old
|
new
|
|
277 | 277 | |
278 | 278 | void SkyState::showScreen(void) { |
279 | 279 | |
| 280 | _system->lock_mutex(_mutex); |
280 | 281 | _system->copy_rect(_workScreen, 320, 0, 0, 320, 200); |
281 | 282 | _system->update_screen(); |
| 283 | _system->unlock_mutex(_mutex); |
282 | 284 | } |
283 | 285 | |
284 | 286 | void prepare_text(void) |
diff -ur ScummVM-cvs20030423/scummvm/sky/screen.cpp ScummVM-cvs20030423+hack/scummvm/sky/screen.cpp
old
|
new
|
|
110 | 110 | do { |
111 | 111 | palette_fadedown_helper((uint32 *)_palette, 256); |
112 | 112 | _system->set_palette(_palette, 0, 256); |
| 113 | _system->lock_mutex(_mutex); |
113 | 114 | _system->update_screen(); |
| 115 | _system->unlock_mutex(_mutex); |
114 | 116 | delay(10); |
115 | 117 | |
116 | 118 | } while (--i); |
… |
… |
|
152 | 154 | |
153 | 155 | palette_fadeup_helper((uint32 *)_palette, (uint32 *)tmpPal, 256); |
154 | 156 | _system->set_palette(_palette, 0, 256); |
| 157 | _system->lock_mutex(_mutex); |
155 | 158 | _system->update_screen(); |
| 159 | _system->unlock_mutex(_mutex); |
156 | 160 | delay(10); |
157 | 161 | } while (--i); |
158 | 162 | |
diff -ur ScummVM-cvs20030423/scummvm/sky/sky.cpp ScummVM-cvs20030423+hack/scummvm/sky/sky.cpp
old
|
new
|
|
51 | 51 | SkyState::SkyState(GameDetector *detector, OSystem *syst) |
52 | 52 | : Engine(detector, syst) { |
53 | 53 | |
| 54 | _mutex = _system->create_mutex(); |
54 | 55 | _game = detector->_gameId; |
55 | 56 | |
56 | 57 | if (!_mixer->bindToSystem(syst)) |
… |
… |
|
65 | 66 | |
66 | 67 | SkyState::~SkyState() { |
67 | 68 | |
| 69 | if (_mutex) |
| 70 | _system->delete_mutex(_mutex); |
68 | 71 | } |
69 | 72 | |
70 | 73 | void SkyState::errorString(const char *buf1, char *buf2) { |
… |
… |
|
146 | 149 | _rnd.getRandomNumber(2); |
147 | 150 | |
148 | 151 | 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 | |
150 | 162 | switch (event.event_code) { |
151 | 163 | case OSystem::EVENT_KEYDOWN: |
152 | 164 | // Make sure backspace works right (this fixes a small issue on OS X) |
diff -ur ScummVM-cvs20030423/scummvm/sky/sky.h ScummVM-cvs20030423+hack/scummvm/sky/sky.h
old
|
new
|
|
118 | 118 | |
119 | 119 | RandomSource _rnd; |
120 | 120 | SkyText *_skyText; |
| 121 | |
| 122 | private: |
| 123 | void *_mutex; |
121 | 124 | }; |
122 | 125 | |
123 | 126 | #endif |