|
@@ -462,16 +462,16 @@ void VideoDriver_Cocoa::BlitIndexedToVie
|
|
|
dst[y * pitch + x] = pal[src[y * width + x]];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Draw window.
|
|
|
* Paint window.
|
|
|
* @param force_update Whether to redraw unconditionally
|
|
|
*/
|
|
|
void VideoDriver_Cocoa::Draw(bool force_update)
|
|
|
void VideoDriver_Cocoa::Paint()
|
|
|
{
|
|
|
PerformanceMeasurer framerate(PFE_VIDEO);
|
|
|
|
|
|
/* Check if we need to do anything */
|
|
|
if (this->num_dirty_rects == 0 || [ this->window isMiniaturized ]) return;
|
|
|
|
|
@@ -499,15 +499,14 @@ void VideoDriver_Cocoa::Draw(bool force_
|
|
|
dirtyrect.origin.x = this->dirty_rects[i].left;
|
|
|
dirtyrect.origin.y = this->window_height - this->dirty_rects[i].bottom;
|
|
|
dirtyrect.size.width = this->dirty_rects[i].right - this->dirty_rects[i].left;
|
|
|
dirtyrect.size.height = this->dirty_rects[i].bottom - this->dirty_rects[i].top;
|
|
|
|
|
|
/* Normally drawRect will be automatically called by Mac OS X during next update cycle,
|
|
|
* and then blitting will occur. If force_update is true, it will be done right now. */
|
|
|
* and then blitting will occur. */
|
|
|
[ this->cocoaview setNeedsDisplayInRect:[ this->cocoaview getVirtualRect:dirtyrect ] ];
|
|
|
if (force_update) [ this->cocoaview displayIfNeeded ];
|
|
|
}
|
|
|
|
|
|
this->num_dirty_rects = 0;
|
|
|
}
|
|
|
|
|
|
/** Update the palette. */
|
|
@@ -705,13 +704,13 @@ void VideoDriver_Cocoa::GameLoop()
|
|
|
|
|
|
this->InputLoop();
|
|
|
::InputLoop();
|
|
|
UpdateWindows();
|
|
|
this->CheckPaletteAnim();
|
|
|
|
|
|
this->Draw();
|
|
|
this->Paint();
|
|
|
}
|
|
|
|
|
|
/* If we are not in fast-forward, create some time between calls to ease up CPU usage. */
|
|
|
if (!_fast_forward || _pause_mode) {
|
|
|
/* See how much time there is till we have to process the next event, and try to hit that as close as possible. */
|
|
|
auto next_tick = std::min(next_draw_tick, next_game_tick);
|