summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/video/cocoa/cocoa_v.h2
-rw-r--r--src/video/cocoa/event.mm2
-rw-r--r--src/video/cocoa/fullscreen.mm2
-rw-r--r--src/video/cocoa/wnd_quartz.mm10
-rw-r--r--src/video/cocoa/wnd_quickdraw.mm4
5 files changed, 11 insertions, 9 deletions
diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h
index a2dbc1395..66818dddb 100644
--- a/src/video/cocoa/cocoa_v.h
+++ b/src/video/cocoa/cocoa_v.h
@@ -47,7 +47,7 @@ class CocoaSubdriver {
public:
virtual ~CocoaSubdriver() {}
- virtual void Draw() = 0;
+ virtual void Draw(bool force_update = false) = 0;
virtual void MakeDirty(int left, int top, int width, int height) = 0;
virtual void UpdatePalette(uint first_color, uint num_colors) = 0;
diff --git a/src/video/cocoa/event.mm b/src/video/cocoa/event.mm
index 702b73d09..fef866f53 100644
--- a/src/video/cocoa/event.mm
+++ b/src/video/cocoa/event.mm
@@ -606,7 +606,7 @@ void QZ_GameLoop()
_screen.dst_ptr = _cocoa_subdriver->GetPixelBuffer();
DisplaySplashImage();
QZ_CheckPaletteAnim();
- _cocoa_subdriver->Draw();
+ _cocoa_subdriver->Draw(true);
CSleep(1);
for (int i = 0; i < 2; i++) GameLoop();
diff --git a/src/video/cocoa/fullscreen.mm b/src/video/cocoa/fullscreen.mm
index d6ec8f4e0..631ef09d4 100644
--- a/src/video/cocoa/fullscreen.mm
+++ b/src/video/cocoa/fullscreen.mm
@@ -420,7 +420,7 @@ public:
this->RestoreVideoMode();
}
- virtual void Draw()
+ virtual void Draw(bool force_update)
{
const uint8 *src = (uint8 *)this->pixel_buffer;
uint8 *dst = (uint8 *)this->screen_buffer;
diff --git a/src/video/cocoa/wnd_quartz.mm b/src/video/cocoa/wnd_quartz.mm
index 9d3201f08..d99a1877b 100644
--- a/src/video/cocoa/wnd_quartz.mm
+++ b/src/video/cocoa/wnd_quartz.mm
@@ -129,7 +129,7 @@ public:
WindowQuartzSubdriver(int bpp);
virtual ~WindowQuartzSubdriver();
- virtual void Draw();
+ virtual void Draw(bool force_update);
virtual void MakeDirty(int left, int top, int width, int height);
virtual void UpdatePalette(uint first_color, uint num_colors);
@@ -552,7 +552,7 @@ WindowQuartzSubdriver::~WindowQuartzSubdriver()
free(this->pixel_buffer);
}
-void WindowQuartzSubdriver::Draw()
+void WindowQuartzSubdriver::Draw(bool force_update)
{
/* Check if we need to do anything */
if (this->num_dirty_rects == 0 || [ this->window isMiniaturized ]) return;
@@ -583,8 +583,10 @@ void WindowQuartzSubdriver::Draw()
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;
- /* drawRect will be automatically called by Mac OS X during next update cycle, and then blitting will occur */
- [ qzview setNeedsDisplayInRect:dirtyrect ];
+ /* 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. */
+ [ this->qzview setNeedsDisplayInRect:dirtyrect ];
+ if (force_update) [ this->qzview displayIfNeeded ];
}
//DrawResizeIcon();
diff --git a/src/video/cocoa/wnd_quickdraw.mm b/src/video/cocoa/wnd_quickdraw.mm
index d7d1ba611..ffea0bfe7 100644
--- a/src/video/cocoa/wnd_quickdraw.mm
+++ b/src/video/cocoa/wnd_quickdraw.mm
@@ -144,7 +144,7 @@ public:
WindowQuickdrawSubdriver(int bpp);
virtual ~WindowQuickdrawSubdriver();
- virtual void Draw();
+ virtual void Draw(bool force_update);
virtual void MakeDirty(int left, int top, int width, int height);
virtual void UpdatePalette(uint first_color, uint num_colors);
@@ -547,7 +547,7 @@ WindowQuickdrawSubdriver::~WindowQuickdrawSubdriver()
free(this->pixel_buffer);
}
-void WindowQuickdrawSubdriver::Draw()
+void WindowQuickdrawSubdriver::Draw(bool force_update)
{
/* Check if we need to do anything */
if (this->num_dirty_rects == 0 || [ this->window isMiniaturized ]) return;