|
|
@ -1455,51 +1455,44 @@ static void QZ_WaitForVerticalBlank(void)
|
|
|
|
CSleep((uint32)(adjustment * 1000));
|
|
|
|
CSleep((uint32)(adjustment * 1000));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void QZ_DrawScreen(void)
|
|
|
|
static void QZ_DrawScreen(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
const uint8* src;
|
|
|
|
const uint8* src = _cocoa_video_data.pixels;
|
|
|
|
uint8* dst;
|
|
|
|
uint8* dst = (uint8*)_cocoa_video_data.realpixels;
|
|
|
|
uint height;
|
|
|
|
uint pitch = _cocoa_video_data.pitch;
|
|
|
|
uint width;
|
|
|
|
uint width = _cocoa_video_data.width;
|
|
|
|
uint pitch;
|
|
|
|
uint num_dirty = _cocoa_video_data.num_dirty_rects;
|
|
|
|
uint y;
|
|
|
|
|
|
|
|
uint num_dirty_rects;
|
|
|
|
|
|
|
|
uint length_drawn;
|
|
|
|
|
|
|
|
uint left;
|
|
|
|
|
|
|
|
uint i;
|
|
|
|
uint i;
|
|
|
|
|
|
|
|
|
|
|
|
src = _cocoa_video_data.pixels;
|
|
|
|
|
|
|
|
dst = (uint8*)_cocoa_video_data.realpixels;
|
|
|
|
|
|
|
|
width = _cocoa_video_data.width;
|
|
|
|
|
|
|
|
pitch = _cocoa_video_data.pitch;
|
|
|
|
|
|
|
|
num_dirty_rects = _cocoa_video_data.num_dirty_rects;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Check if we need to do anything */
|
|
|
|
/* Check if we need to do anything */
|
|
|
|
if (num_dirty_rects == 0 ) return;
|
|
|
|
if (num_dirty == 0) return;
|
|
|
|
|
|
|
|
|
|
|
|
if (num_dirty_rects >= MAX_DIRTY_RECTS) {
|
|
|
|
if (num_dirty >= MAX_DIRTY_RECTS) {
|
|
|
|
num_dirty_rects = 1;
|
|
|
|
num_dirty = 1;
|
|
|
|
_cocoa_video_data.dirty_rects[0].left = 0;
|
|
|
|
_cocoa_video_data.dirty_rects[0].left = 0;
|
|
|
|
_cocoa_video_data.dirty_rects[0].top = 0;
|
|
|
|
_cocoa_video_data.dirty_rects[0].top = 0;
|
|
|
|
_cocoa_video_data.dirty_rects[0].right = _cocoa_video_data.width;
|
|
|
|
_cocoa_video_data.dirty_rects[0].right = _cocoa_video_data.width;
|
|
|
|
_cocoa_video_data.dirty_rects[0].bottom = _cocoa_video_data.height;
|
|
|
|
_cocoa_video_data.dirty_rects[0].bottom = _cocoa_video_data.height;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QZ_WaitForVerticalBlank();
|
|
|
|
QZ_WaitForVerticalBlank();
|
|
|
|
/* Build the region of dirty rectangles */
|
|
|
|
/* Build the region of dirty rectangles */
|
|
|
|
for (i = 0; i < num_dirty_rects; i++) {
|
|
|
|
for (i = 0; i < num_dirty; i++) {
|
|
|
|
|
|
|
|
uint y = _cocoa_video_data.dirty_rects[i].top;
|
|
|
|
y = _cocoa_video_data.dirty_rects[i].top;
|
|
|
|
uint left = _cocoa_video_data.dirty_rects[i].left;
|
|
|
|
left = _cocoa_video_data.dirty_rects[i].left;
|
|
|
|
uint length = _cocoa_video_data.dirty_rects[i].right - left;
|
|
|
|
length_drawn = _cocoa_video_data.dirty_rects[i].right - left;
|
|
|
|
uint bottom = _cocoa_video_data.dirty_rects[i].bottom;
|
|
|
|
height = _cocoa_video_data.dirty_rects[i].bottom;
|
|
|
|
|
|
|
|
for (; y < height; y++) memcpy(dst + y * pitch + left, src + y * width +left, length_drawn);
|
|
|
|
for (; y < bottom; y++) {
|
|
|
|
|
|
|
|
memcpy(dst + y * pitch + left, src + y * width + left, length);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_cocoa_video_data.num_dirty_rects = 0;
|
|
|
|
_cocoa_video_data.num_dirty_rects = 0;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static int QZ_ListFullscreenModes(OTTDPoint* mode_list, int max_modes)
|
|
|
|
static int QZ_ListFullscreenModes(OTTDPoint* mode_list, int max_modes)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CFIndex num_modes;
|
|
|
|
CFIndex num_modes;
|
|
|
|