premake/config/SDL_config_macosx.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_macosx_h
icculus@7925
    23
#define _SDL_config_macosx_h
icculus@7925
    24
icculus@7925
    25
#include "SDL_platform.h"
icculus@7925
    26
icculus@7925
    27
/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */
icculus@7925
    28
#include <AvailabilityMacros.h>
icculus@7925
    29
icculus@7925
    30
/* This is a set of defines to configure the SDL features */
icculus@7925
    31
icculus@7925
    32
#ifdef __LP64__
icculus@7925
    33
    #define SIZEOF_VOIDP 8
icculus@7925
    34
#else
icculus@7925
    35
    #define SIZEOF_VOIDP 4
icculus@7925
    36
#endif
icculus@7925
    37
icculus@7925
    38
/* Useful headers */
icculus@7925
    39
/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */
icculus@7925
    40
#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) )
icculus@7925
    41
#define HAVE_ALLOCA_H       1
icculus@7925
    42
#endif
icculus@7925
    43
#define HAVE_SYS_TYPES_H    1
icculus@7925
    44
#define HAVE_STDIO_H    1
icculus@7925
    45
#define STDC_HEADERS    1
icculus@7925
    46
#define HAVE_STRING_H   1
icculus@7925
    47
#define HAVE_INTTYPES_H 1
icculus@7925
    48
#define HAVE_STDINT_H   1
icculus@7925
    49
#define HAVE_CTYPE_H    1
icculus@7925
    50
#define HAVE_MATH_H 1
icculus@7925
    51
#define HAVE_SIGNAL_H   1
icculus@7925
    52
icculus@7925
    53
/* C library functions */
icculus@7925
    54
#define HAVE_MALLOC 1
icculus@7925
    55
#define HAVE_CALLOC 1
icculus@7925
    56
#define HAVE_REALLOC    1
icculus@7925
    57
#define HAVE_FREE   1
icculus@7925
    58
#define HAVE_ALLOCA 1
icculus@7925
    59
#define HAVE_GETENV 1
icculus@7925
    60
#define HAVE_SETENV 1
icculus@7925
    61
#define HAVE_PUTENV 1
icculus@7925
    62
#define HAVE_UNSETENV   1
icculus@7925
    63
#define HAVE_QSORT  1
icculus@7925
    64
#define HAVE_ABS    1
icculus@7925
    65
#define HAVE_BCOPY  1
icculus@7925
    66
#define HAVE_MEMSET 1
icculus@7925
    67
#define HAVE_MEMCPY 1
icculus@7925
    68
#define HAVE_MEMMOVE    1
icculus@7925
    69
#define HAVE_MEMCMP 1
icculus@7925
    70
#define HAVE_STRLEN 1
icculus@7925
    71
#define HAVE_STRLCPY    1
icculus@7925
    72
#define HAVE_STRLCAT    1
icculus@7925
    73
#define HAVE_STRDUP 1
icculus@7925
    74
#define HAVE_STRCHR 1
icculus@7925
    75
#define HAVE_STRRCHR    1
icculus@7925
    76
#define HAVE_STRSTR 1
icculus@7925
    77
#define HAVE_STRTOL 1
icculus@7925
    78
#define HAVE_STRTOUL    1
icculus@7925
    79
#define HAVE_STRTOLL    1
icculus@7925
    80
#define HAVE_STRTOULL   1
icculus@7925
    81
#define HAVE_STRTOD 1
icculus@7925
    82
#define HAVE_ATOI   1
icculus@7925
    83
#define HAVE_ATOF   1
icculus@7925
    84
#define HAVE_STRCMP 1
icculus@7925
    85
#define HAVE_STRNCMP    1
icculus@7925
    86
#define HAVE_STRCASECMP 1
icculus@7925
    87
#define HAVE_STRNCASECMP 1
icculus@8089
    88
#define HAVE_VSSCANF 1
icculus@7925
    89
#define HAVE_VSNPRINTF  1
icculus@7925
    90
#define HAVE_CEIL   1
icculus@7925
    91
#define HAVE_COPYSIGN   1
icculus@7925
    92
#define HAVE_COS    1
icculus@7925
    93
#define HAVE_COSF   1
icculus@7925
    94
#define HAVE_FABS   1
icculus@7925
    95
#define HAVE_FLOOR  1
icculus@7925
    96
#define HAVE_LOG    1
icculus@7925
    97
#define HAVE_POW    1
icculus@7925
    98
#define HAVE_SCALBN 1
icculus@7925
    99
#define HAVE_SIN    1
icculus@7925
   100
#define HAVE_SINF   1
icculus@7925
   101
#define HAVE_SQRT   1
icculus@7925
   102
#define HAVE_SIGACTION  1
icculus@7925
   103
#define HAVE_SETJMP 1
icculus@7925
   104
#define HAVE_NANOSLEEP  1
icculus@7925
   105
#define HAVE_SYSCONF    1
icculus@7925
   106
#define HAVE_SYSCTLBYNAME 1
icculus@7925
   107
#define HAVE_ATAN 1
icculus@7925
   108
#define HAVE_ATAN2 1
icculus@7925
   109
icculus@7925
   110
/* Paste generated code here */
icculus@7925
   111
icculus@7925
   112
/* Enable various video drivers */
icculus@7925
   113
#undef SDL_VIDEO_DRIVER_X11
icculus@7925
   114
#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/usr/X11R6/lib/libX11.6.dylib"
icculus@7925
   115
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/usr/X11R6/lib/libXext.6.dylib"
icculus@7925
   116
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "/usr/X11R6/lib/libXinerama.1.dylib"
icculus@7925
   117
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/usr/X11R6/lib/libXi.6.dylib"
icculus@7925
   118
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/usr/X11R6/lib/libXrandr.2.dylib"
icculus@7925
   119
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/usr/X11R6/lib/libXss.1.dylib"
icculus@7925
   120
#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "/usr/X11R6/lib/libXxf86vm.1.dylib"
icculus@7925
   121
#define SDL_VIDEO_DRIVER_X11_XINERAMA 1
icculus@7925
   122
#define SDL_VIDEO_DRIVER_X11_XRANDR 1
icculus@7925
   123
#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1
icculus@7925
   124
#define SDL_VIDEO_DRIVER_X11_XSHAPE 1
icculus@7925
   125
#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1
icculus@7925
   126
#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1
icculus@7925
   127
icculus@7925
   128
#ifdef MAC_OS_X_VERSION_10_8
icculus@7925
   129
/*
icculus@7925
   130
 * No matter the versions targeted, this is the 10.8 or later SDK, so you have
icculus@7925
   131
 *  to use the external Xquartz, which is a more modern Xlib. Previous SDKs
icculus@7925
   132
 *  used an older Xlib.
icculus@7925
   133
 */
icculus@7925
   134
#define SDL_VIDEO_DRIVER_X11_XINPUT2 1
icculus@7925
   135
#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1
icculus@7925
   136
#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1
icculus@7925
   137
#endif
icculus@7925
   138
icculus@7925
   139
#ifndef SDL_VIDEO_RENDER_OGL
icculus@7925
   140
#define SDL_VIDEO_RENDER_OGL    1
icculus@7925
   141
#endif
icculus@7925
   142
icculus@7925
   143
/* Enable OpenGL support */
icculus@7925
   144
#ifndef SDL_VIDEO_OPENGL
icculus@7925
   145
#define SDL_VIDEO_OPENGL    1
icculus@7925
   146
#endif
icculus@7925
   147
#ifndef SDL_VIDEO_OPENGL_CGL
icculus@7925
   148
#define SDL_VIDEO_OPENGL_CGL    1
icculus@7925
   149
#endif
icculus@7925
   150
#ifndef SDL_VIDEO_OPENGL_GLX
icculus@7925
   151
#define SDL_VIDEO_OPENGL_GLX    1
icculus@7925
   152
#endif
icculus@7925
   153
icculus@7925
   154
/* Enable assembly routines */
icculus@7925
   155
#define SDL_ASSEMBLY_ROUTINES   1
icculus@7925
   156
#ifdef __ppc__
icculus@7925
   157
#define SDL_ALTIVEC_BLITTERS    1
icculus@7925
   158
#endif
icculus@7925
   159
icculus@7925
   160
#endif /* _SDL_config_macosx_h */