premake/config/SDL_config_minimal.template.h
author Sam Lantinga <slouken@libsdl.org>
Sun, 17 Aug 2014 14:57:52 -0700
changeset 9086 c5e33f9a0d03
parent 8149 681eb46b8ac4
child 9619 b94b6d0bff0f
permissions -rw-r--r--
Fixed bug 2655 - OSX: Window position and global mouse coord spaces are different

Tim McDaniel

On OSX, with revision 8729, the coordinate space for window position and the coordinate space for global mouse position don't match. For a non-fullscreen window, the window position is global relative to the bottom of the menubar. The global mouse position is relative to the top of the screen. This affects Cocoa_WarpMouse and potentially other things as well. Further, the coordinate system for window position is now affected by what screen it is on. For example, if I have two equal size screens oriented side by side such that the tops of the screens are equal in global space, with the menubar on one screen, and a window straddles the two screens, the window's y position makes no sense. The window's y position depends on what screen "most" of the window is on. So if I move the window horizontally just a bit, the y position of my window is now different by the size of the menubar, even though the window was not moved vertically.

I'd like to reiterate that this was a fairly fundamental change (and a breaking change for us). If SDL OSX is to really support multi-display configurations, this is especially problematic.

If the real concern is preventing windows from going under the menubar, then perhaps a solution involving something like overriding [NSWindow constrainFrameRect] would be less problematic than redefining the global window coord space for the main display.
icculus@7925
     1
/*
icculus@7925
     2
  Simple DirectMedia Layer
slouken@8149
     3
  Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org>
icculus@7925
     4
icculus@7925
     5
  This software is provided 'as-is', without any express or implied
icculus@7925
     6
  warranty.  In no event will the authors be held liable for any damages
icculus@7925
     7
  arising from the use of this software.
icculus@7925
     8
icculus@7925
     9
  Permission is granted to anyone to use this software for any purpose,
icculus@7925
    10
  including commercial applications, and to alter it and redistribute it
icculus@7925
    11
  freely, subject to the following restrictions:
icculus@7925
    12
icculus@7925
    13
  1. The origin of this software must not be misrepresented; you must not
icculus@7925
    14
     claim that you wrote the original software. If you use this software
icculus@7925
    15
     in a product, an acknowledgment in the product documentation would be
icculus@7925
    16
     appreciated but is not required.
icculus@7925
    17
  2. Altered source versions must be plainly marked as such, and must not be
icculus@7925
    18
     misrepresented as being the original software.
icculus@7925
    19
  3. This notice may not be removed or altered from any source distribution.
icculus@7925
    20
*/
icculus@7925
    21
icculus@7925
    22
#ifndef _SDL_config_minimal_h
icculus@7925
    23
#define _SDL_config_minimal_h
icculus@7925
    24
icculus@7925
    25
#include "SDL_platform.h"
icculus@7925
    26
icculus@7925
    27
/**
icculus@7925
    28
 *  \file SDL_config_minimal.h
icculus@7925
    29
 *
icculus@7925
    30
 *  This is the minimal configuration that can be used to build SDL.
icculus@7925
    31
 */
icculus@7925
    32
icculus@7925
    33
#define HAVE_STDARG_H   1
icculus@7925
    34
#define HAVE_STDDEF_H   1
icculus@7925
    35
icculus@7925
    36
/* Most everything except Visual Studio 2008 and earlier has stdint.h now */
icculus@7925
    37
#if defined(_MSC_VER) && (_MSC_VER < 1600)
icculus@7925
    38
/* Here are some reasonable defaults */
icculus@7925
    39
typedef unsigned int size_t;
icculus@7925
    40
typedef signed char int8_t;
icculus@7925
    41
typedef unsigned char uint8_t;
icculus@7925
    42
typedef signed short int16_t;
icculus@7925
    43
typedef unsigned short uint16_t;
icculus@7925
    44
typedef signed int int32_t;
icculus@7925
    45
typedef unsigned int uint32_t;
icculus@7925
    46
typedef signed long long int64_t;
icculus@7925
    47
typedef unsigned long long uint64_t;
icculus@7925
    48
typedef unsigned long uintptr_t;
icculus@7925
    49
#else
icculus@7925
    50
#define HAVE_STDINT_H 1
icculus@7925
    51
#endif /* Visual Studio 2008 */
icculus@7925
    52
icculus@7925
    53
#ifdef __GNUC__
icculus@7925
    54
#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1
icculus@7925
    55
#endif
icculus@7925
    56
icculus@7925
    57
/* Enable the dummy audio driver (src/audio/dummy/\*.c) */
icculus@7925
    58
#define SDL_AUDIO_DRIVER_DUMMY  1
icculus@7925
    59
icculus@7925
    60
/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
icculus@7925
    61
#define SDL_JOYSTICK_DISABLED   1
icculus@7925
    62
icculus@7925
    63
/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */
icculus@7925
    64
#define SDL_HAPTIC_DISABLED 1
icculus@7925
    65
icculus@7925
    66
/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
icculus@7925
    67
#define SDL_LOADSO_DISABLED 1
icculus@7925
    68
icculus@7925
    69
/* Enable the stub thread support (src/thread/generic/\*.c) */
icculus@7925
    70
#define SDL_THREADS_DISABLED    1
icculus@7925
    71
icculus@7925
    72
/* Enable the stub timer support (src/timer/dummy/\*.c) */
icculus@7925
    73
#define SDL_TIMERS_DISABLED 1
icculus@7925
    74
icculus@7925
    75
/* Enable the dummy video driver (src/video/dummy/\*.c) */
icculus@7925
    76
#define SDL_VIDEO_DRIVER_DUMMY  1
icculus@7925
    77
icculus@7925
    78
#endif /* _SDL_config_minimal_h */