Mac and Linux SDL2 binary snapshots
Edward Rudd
2014-03-08 e2b6e957100030b4c9e8d720157b0a34195e6dcb
source/src/video/windows/SDL_windowsmodes.c
@@ -1,6 +1,6 @@
/*
  Simple DirectMedia Layer
  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
@@ -18,7 +18,7 @@
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_config.h"
#include "../../SDL_internal.h"
#if SDL_VIDEO_DRIVER_WINDOWS
@@ -50,6 +50,8 @@
    data->DeviceMode.dmFields =
        (DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY |
         DM_DISPLAYFLAGS);
   data->ScaleX = 1.0f;
   data->ScaleY = 1.0f;
    /* Fill in the mode information */
    mode->format = SDL_PIXELFORMAT_UNKNOWN;
@@ -63,6 +65,13 @@
        char bmi_data[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)];
        LPBITMAPINFO bmi;
        HBITMAP hbm;
      int logical_width = GetDeviceCaps( hdc, HORZRES );
      int logical_height = GetDeviceCaps( hdc, VERTRES );
      data->ScaleX = (float)logical_width / devmode.dmPelsWidth;
      data->ScaleY = (float)logical_height / devmode.dmPelsHeight;
      mode->w = logical_width;
      mode->h = logical_height;
        SDL_zero(bmi_data);
        bmi = (LPBITMAPINFO) bmi_data;
@@ -93,7 +102,7 @@
        } else if (bmi->bmiHeader.biBitCount == 4) {
            mode->format = SDL_PIXELFORMAT_INDEX4LSB;
        }
    } else {
   } else {
        /* FIXME: Can we tell what this will be? */
        if ((devmode.dmFields & DM_BITSPERPEL) == DM_BITSPERPEL) {
            switch (devmode.dmBitsPerPel) {
@@ -224,10 +233,10 @@
{
    SDL_DisplayModeData *data = (SDL_DisplayModeData *) display->current_mode.driverdata;
    rect->x = (int)data->DeviceMode.dmPosition.x;
    rect->y = (int)data->DeviceMode.dmPosition.y;
    rect->w = data->DeviceMode.dmPelsWidth;
    rect->h = data->DeviceMode.dmPelsHeight;
    rect->x = (int)SDL_ceil(data->DeviceMode.dmPosition.x * data->ScaleX);
    rect->y = (int)SDL_ceil(data->DeviceMode.dmPosition.y * data->ScaleY);
    rect->w = (int)SDL_ceil(data->DeviceMode.dmPelsWidth * data->ScaleX);
    rect->h = (int)SDL_ceil(data->DeviceMode.dmPelsHeight * data->ScaleY);
    return 0;
}
@@ -252,8 +261,7 @@
            if (!SDL_AddDisplayMode(display, &mode)) {
                SDL_free(mode.driverdata);
            }
        }
        else {
        } else {
            SDL_free(mode.driverdata);
        }
    }