# HG changeset patch # User Ryan C. Gordon # Date 1136205460 0 # Node ID 9a7a016d5a713747a1e2c2c052322c10f7fd9777 # Parent 057d313e36a283d3ae3cb03b195a3fa7bfc45432 Quartz driver: Correctly handle SDL_DOUBLEBUF|SDL_FULLSCREEN when the resolution is too small and thus emulated by SDL. Fixes http://www.devolution.com/pipermail/sdl/2005-December/071765.html ... diff -r 057d313e36a2 -r 9a7a016d5a71 src/video/quartz/SDL_QuartzVideo.m --- a/src/video/quartz/SDL_QuartzVideo.m Mon Jan 02 10:49:37 2006 +0000 +++ b/src/video/quartz/SDL_QuartzVideo.m Mon Jan 02 12:37:40 2006 +0000 @@ -975,8 +975,14 @@ if (quit_thread) return 0; - dst = CGDisplayBaseAddress (display_id); - src = current_buffer; + /* + * We have to add SDL_VideoSurface->offset here, since we might be a + * smaller surface in the center of the framebuffer (you asked for + * a fullscreen resolution smaller than the hardware could supply + * so SDL is centering it in a bigger resolution)... + */ + dst = CGDisplayBaseAddress (display_id) + SDL_VideoSurface->offset; + src = current_buffer + SDL_VideoSurface->offset; len = SDL_VideoSurface->w * SDL_VideoSurface->format->BytesPerPixel; h = SDL_VideoSurface->h; skip = SDL_VideoSurface->pitch;