mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-12 09:09:09 +00:00
(svn r4082) -Fix: [OSX] FS#80 Crash when switching from windowed to fullscreen
this bug was introduced in rev 3670, but when undetected for a long time since it was resolution specific this is likely the issue with x86 OSX in fullscreen, so I removed the really slow workaround and will clean it up once I get positive feedback from a x86 mac this means that x86 OSX should now get the 1000% video driver speed boost as well this fix is written by eglandil
This commit is contained in:
@@ -1470,7 +1470,7 @@ static void QZ_DrawScreen(void)
|
|||||||
width = _cocoa_video_data.width;
|
width = _cocoa_video_data.width;
|
||||||
pitch = _cocoa_video_data.pitch;
|
pitch = _cocoa_video_data.pitch;
|
||||||
|
|
||||||
#ifdef __POWERPC__
|
#if 1
|
||||||
// PPC appears to handle updating of rectangles right
|
// PPC appears to handle updating of rectangles right
|
||||||
{
|
{
|
||||||
uint num_dirty_rects;
|
uint num_dirty_rects;
|
||||||
@@ -1497,9 +1497,9 @@ static void QZ_DrawScreen(void)
|
|||||||
|
|
||||||
y = _cocoa_video_data.dirty_rects[i].top;
|
y = _cocoa_video_data.dirty_rects[i].top;
|
||||||
left = _cocoa_video_data.dirty_rects[i].left;
|
left = _cocoa_video_data.dirty_rects[i].left;
|
||||||
length_drawn = _cocoa_video_data.dirty_rects[i].right - left + 1;
|
length_drawn = _cocoa_video_data.dirty_rects[i].right - left;
|
||||||
height = _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 < height; y++) memcpy(dst + y * pitch + left, src + y * width +left, length_drawn);
|
||||||
}
|
}
|
||||||
|
|
||||||
_cocoa_video_data.num_dirty_rects = 0;
|
_cocoa_video_data.num_dirty_rects = 0;
|
||||||
@@ -1649,8 +1649,8 @@ static void QZ_UpdateVideoModes(void)
|
|||||||
|
|
||||||
for (i = 0, j = 0; j < lengthof(_resolutions) && i < count; i++) {
|
for (i = 0, j = 0; j < lengthof(_resolutions) && i < count; i++) {
|
||||||
if (_cocoa_video_data.fullscreen || (
|
if (_cocoa_video_data.fullscreen || (
|
||||||
(uint)current_modes[i].x <= _cocoa_video_data.device_width &&
|
(uint)current_modes[i].x < _cocoa_video_data.device_width &&
|
||||||
(uint)current_modes[i].y <= _cocoa_video_data.device_height)
|
(uint)current_modes[i].y < _cocoa_video_data.device_height)
|
||||||
) {
|
) {
|
||||||
_resolutions[j][0] = current_modes[i].x;
|
_resolutions[j][0] = current_modes[i].x;
|
||||||
_resolutions[j][1] = current_modes[i].y;
|
_resolutions[j][1] = current_modes[i].y;
|
||||||
|
Reference in New Issue
Block a user