diff options
author | Oystein Eftevaag | 2011-06-04 23:34:12 -0400 |
---|---|---|
committer | Oystein Eftevaag | 2011-06-05 00:03:15 -0400 |
commit | 1d3be279fce1f9af7e4db3ec1e8b3b9e18acb419 (patch) | |
tree | 13aefb24dc241c58683d0816f12ec908ed331bee | |
parent | 66c982b38ce9463daad621f8129dd97e0bb1a6ce (diff) | |
download | scummvm-rg350-1d3be279fce1f9af7e4db3ec1e8b3b9e18acb419.tar.gz scummvm-rg350-1d3be279fce1f9af7e4db3ec1e8b3b9e18acb419.tar.bz2 scummvm-rg350-1d3be279fce1f9af7e4db3ec1e8b3b9e18acb419.zip |
IPHONE: Fixed a COMI crash and some minor gfx glitches
-rw-r--r-- | backends/platform/iphone/iphone_video.h | 1 | ||||
-rw-r--r-- | backends/platform/iphone/iphone_video.m | 18 | ||||
-rw-r--r-- | backends/platform/iphone/osys_video.cpp | 3 |
3 files changed, 15 insertions, 7 deletions
diff --git a/backends/platform/iphone/iphone_video.h b/backends/platform/iphone/iphone_video.h index 8e0ffc19cb..223f025978 100644 --- a/backends/platform/iphone/iphone_video.h +++ b/backends/platform/iphone/iphone_video.h @@ -67,6 +67,7 @@ - (void)updateMainSurface; - (void)updateOverlaySurface; - (void)updateMouseSurface; +- (void)clearColorBuffer; -(void)updateMouseCursor; diff --git a/backends/platform/iphone/iphone_video.m b/backends/platform/iphone/iphone_video.m index 006603df64..04d25cebf8 100644 --- a/backends/platform/iphone/iphone_video.m +++ b/backends/platform/iphone/iphone_video.m @@ -85,6 +85,8 @@ void iPhone_setMouseCursor(short* buffer, int width, int height) { void iPhone_enableOverlay(int state) { _overlayIsEnabled = state; + + [sharedInstance performSelectorOnMainThread:@selector(clearColorBuffer) withObject:nil waitUntilDone: YES]; } int iPhone_getScreenHeight() { @@ -478,12 +480,7 @@ bool getLocalMouseCoords(CGPoint *point) { glBindRenderbufferOES(GL_RENDERBUFFER_OES, _viewRenderbuffer); printOpenGLError(); - // The color buffer is triple-buffered, so we clear it multiple times right away to avid doing any glClears later. - int clearCount = 5; - while (clearCount-- > 0) { - glClear(GL_COLOR_BUFFER_BIT); printOpenGLError(); - [_context presentRenderbuffer:GL_RENDERBUFFER_OES]; - } + [self clearColorBuffer]; if (_keyboardView != nil) { [_keyboardView removeFromSuperview]; @@ -535,6 +532,15 @@ bool getLocalMouseCoords(CGPoint *point) { } } +- (void)clearColorBuffer { + // The color buffer is triple-buffered, so we clear it multiple times right away to avid doing any glClears later. + int clearCount = 5; + while (clearCount-- > 0) { + glClear(GL_COLOR_BUFFER_BIT); printOpenGLError(); + [_context presentRenderbuffer:GL_RENDERBUFFER_OES]; + } +} + - (id)getEvent { if (_events == nil || [_events count] == 0) { return nil; diff --git a/backends/platform/iphone/osys_video.cpp b/backends/platform/iphone/osys_video.cpp index 263cbd2bcc..fa425b108a 100644 --- a/backends/platform/iphone/osys_video.cpp +++ b/backends/platform/iphone/osys_video.cpp @@ -349,6 +349,7 @@ void OSystem_IPHONE::showOverlay() { //printf("showOverlay()\n"); _overlayVisible = true; dirtyFullOverlayScreen(); + updateScreen(); iPhone_enableOverlay(true); } @@ -368,7 +369,7 @@ void OSystem_IPHONE::clearOverlay() { void OSystem_IPHONE::grabOverlay(OverlayColor *buf, int pitch) { //printf("grabOverlay()\n"); - int h = _screenHeight; + int h = _overlayHeight; OverlayColor *src = _overlayBuffer; do { |