From d942ec3207ad8cf93353a64dd2e934ab39475942 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 10 Aug 2006 14:54:23 +0000 Subject: [PATCH] MacOS Classic is no longer supported. --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%402025 --- CWprojects.sea.bin | Bin 476160 -> 0 bytes MPWmake.sea.bin | Bin 22144 -> 0 bytes Makefile.in | 2 +- include/SDL_config.h.default | 2 - include/SDL_config.h.in | 6 - include/SDL_config_macos.h | 112 -- include/SDL_main.h | 25 - include/SDL_opengl.h | 3 - include/begin_code.h | 3 - include/close_code.h | 5 - src/audio/SDL_audio.c | 4 - src/cdrom/SDL_cdrom.c | 2 - src/cdrom/SDL_syscdrom.h | 1 + src/cdrom/macos/SDL_syscdrom.c | 543 --------- src/cdrom/macos/SDL_syscdrom_c.h | 146 --- src/events/SDL_events.c | 4 - src/events/SDL_sysevents.h | 5 +- src/file/SDL_rwops.c | 53 - src/joystick/SDL_sysjoystick.h | 1 + src/joystick/macos/SDL_sysjoystick.c | 301 ----- src/loadso/macos/SDL_sysloadso.c | 110 -- src/main/macos/SDL.r | 58 - src/main/macos/SDL_main.c | 647 ----------- src/main/macos/SIZE.r | 24 - src/main/macos/exports/Makefile | 34 - src/main/macos/exports/SDL.x | 206 ---- src/main/macos/exports/gendef.pl | 43 - src/timer/macos/FastTimes.c | 348 ------ src/timer/macos/FastTimes.h | 28 - src/timer/macos/SDL_MPWtimer.c | 161 --- src/timer/macos/SDL_systimer.c | 195 ---- src/video/SDL_sysvideo.h | 6 - src/video/SDL_video.c | 6 - src/video/maccommon/SDL_lowvideo.h | 104 -- src/video/maccommon/SDL_macevents.c | 778 ------------- src/video/maccommon/SDL_macevents_c.h | 33 - src/video/maccommon/SDL_macgl.c | 203 ---- src/video/maccommon/SDL_macgl_c.h | 47 - src/video/maccommon/SDL_mackeys.h | 141 --- src/video/maccommon/SDL_macmouse.c | 136 --- src/video/maccommon/SDL_macmouse_c.h | 36 - src/video/maccommon/SDL_macwm.c | 47 - src/video/maccommon/SDL_macwm_c.h | 28 - src/video/macdsp/SDL_dspvideo.c | 1480 ------------------------- src/video/macdsp/SDL_dspvideo.h | 56 - src/video/macrom/SDL_romvideo.c | 762 ------------- src/video/macrom/SDL_romvideo.h | 30 - 47 files changed, 4 insertions(+), 6961 deletions(-) delete mode 100644 CWprojects.sea.bin delete mode 100644 MPWmake.sea.bin delete mode 100644 include/SDL_config_macos.h delete mode 100644 src/cdrom/macos/SDL_syscdrom.c delete mode 100644 src/cdrom/macos/SDL_syscdrom_c.h delete mode 100644 src/joystick/macos/SDL_sysjoystick.c delete mode 100644 src/loadso/macos/SDL_sysloadso.c delete mode 100644 src/main/macos/SDL.r delete mode 100644 src/main/macos/SDL_main.c delete mode 100644 src/main/macos/SIZE.r delete mode 100644 src/main/macos/exports/Makefile delete mode 100644 src/main/macos/exports/SDL.x delete mode 100644 src/main/macos/exports/gendef.pl delete mode 100644 src/timer/macos/FastTimes.c delete mode 100644 src/timer/macos/FastTimes.h delete mode 100644 src/timer/macos/SDL_MPWtimer.c delete mode 100644 src/timer/macos/SDL_systimer.c delete mode 100644 src/video/maccommon/SDL_lowvideo.h delete mode 100644 src/video/maccommon/SDL_macevents.c delete mode 100644 src/video/maccommon/SDL_macevents_c.h delete mode 100644 src/video/maccommon/SDL_macgl.c delete mode 100644 src/video/maccommon/SDL_macgl_c.h delete mode 100644 src/video/maccommon/SDL_mackeys.h delete mode 100644 src/video/maccommon/SDL_macmouse.c delete mode 100644 src/video/maccommon/SDL_macmouse_c.h delete mode 100644 src/video/maccommon/SDL_macwm.c delete mode 100644 src/video/maccommon/SDL_macwm_c.h delete mode 100644 src/video/macdsp/SDL_dspvideo.c delete mode 100644 src/video/macdsp/SDL_dspvideo.h delete mode 100644 src/video/macrom/SDL_romvideo.c delete mode 100644 src/video/macrom/SDL_romvideo.h diff --git a/CWprojects.sea.bin b/CWprojects.sea.bin deleted file mode 100644 index c7348848ee619d6df9a86fa301d521dff7c947fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476160 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�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 KwOYLm;C}#dGD5Ea diff --git a/MPWmake.sea.bin b/MPWmake.sea.bin deleted file mode 100644 index 734d4446dd686da1e2884ea8ee38262c2fcb46af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22144 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 A1^@s6 diff --git a/Makefile.in b/Makefile.in index e4372284d..4c07f9dd2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -38,7 +38,7 @@ SDLMAIN_TARGET = libSDLmain.a SDLMAIN_SOURCES = @SDLMAIN_SOURCES@ SDLMAIN_OBJECTS = @SDLMAIN_OBJECTS@ -DIST = acinclude.m4 autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS CWprojects.sea.bin docs docs.html EpocBuildFiles.zip include INSTALL Makefile.dc Makefile.minimal Makefile.in MPWmake.sea.bin README* sdl-config.in sdl.m4 sdl.pc.in SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualCE.zip VisualC.html VisualC.zip Watcom-OS2.zip Watcom-Win32.zip WhatsNew Xcode.tar.gz +DIST = acinclude.m4 autogen.sh Borland.html Borland.zip BUGS build-scripts configure configure.in COPYING CREDITS docs docs.html EpocBuildFiles.zip include INSTALL Makefile.dc Makefile.minimal Makefile.in README* sdl-config.in sdl.m4 sdl.pc.in SDL.qpg.in SDL.spec SDL.spec.in src test TODO VisualCE.zip VisualC.html VisualC.zip Watcom-OS2.zip Watcom-Win32.zip WhatsNew Xcode.tar.gz LT_AGE = @LT_AGE@ LT_CURRENT = @LT_CURRENT@ diff --git a/include/SDL_config.h.default b/include/SDL_config.h.default index 8970ec3d5..4614e1519 100644 --- a/include/SDL_config.h.default +++ b/include/SDL_config.h.default @@ -30,8 +30,6 @@ #include "SDL_config_amiga.h" #elif defined(__DREAMCAST__) #include "SDL_config_dreamcast.h" -#elif defined(__MACOS__) -#include "SDL_config_macos.h" #elif defined(__MACOSX__) #include "SDL_config_macosx.h" #elif defined(__WIN32__) diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 98d8ae52e..56084e746 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -184,7 +184,6 @@ #undef SDL_CDROM_DUMMY #undef SDL_CDROM_FREEBSD #undef SDL_CDROM_LINUX -#undef SDL_CDROM_MACOS #undef SDL_CDROM_MACOSX #undef SDL_CDROM_MINT #undef SDL_CDROM_OPENBSD @@ -203,7 +202,6 @@ #undef SDL_JOYSTICK_IOKIT #undef SDL_JOYSTICK_LINUX #undef SDL_JOYSTICK_LINUXEV -#undef SDL_JOYSTICK_MACOS #undef SDL_JOYSTICK_MINT #undef SDL_JOYSTICK_OS2 #undef SDL_JOYSTICK_RISCOS @@ -217,7 +215,6 @@ #undef SDL_LOADSO_DLOPEN #undef SDL_LOADSO_DUMMY #undef SDL_LOADSO_LDG -#undef SDL_LOADSO_MACOS #undef SDL_LOADSO_OS2 #undef SDL_LOADSO_WIN32 @@ -240,7 +237,6 @@ #undef SDL_TIMER_DC #undef SDL_TIMER_DUMMY #undef SDL_TIMER_EPOC -#undef SDL_TIMER_MACOS #undef SDL_TIMER_MINT #undef SDL_TIMER_OS2 #undef SDL_TIMER_RISCOS @@ -254,7 +250,6 @@ #undef SDL_VIDEO_DRIVER_CYBERGRAPHICS #undef SDL_VIDEO_DRIVER_DC #undef SDL_VIDEO_DRIVER_DIRECTFB -#undef SDL_VIDEO_DRIVER_DRAWSPROCKET #undef SDL_VIDEO_DRIVER_DUMMY #undef SDL_VIDEO_DRIVER_EPOC #undef SDL_VIDEO_DRIVER_FBCON @@ -268,7 +263,6 @@ #undef SDL_VIDEO_DRIVER_PS2GS #undef SDL_VIDEO_DRIVER_RISCOS #undef SDL_VIDEO_DRIVER_SVGALIB -#undef SDL_VIDEO_DRIVER_TOOLBOX #undef SDL_VIDEO_DRIVER_VGL #undef SDL_VIDEO_DRIVER_WIN32 #undef SDL_VIDEO_DRIVER_WSCONS diff --git a/include/SDL_config_macos.h b/include/SDL_config_macos.h deleted file mode 100644 index 37c87e4e9..000000000 --- a/include/SDL_config_macos.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -#ifndef _SDL_config_macos_h -#define _SDL_config_macos_h - -#include "SDL_platform.h" - -/* This is a set of defines to configure the SDL features */ - -#include - -typedef SInt8 int8_t; -typedef UInt8 uint8_t; -typedef SInt16 int16_t; -typedef UInt16 uint16_t; -typedef SInt32 int32_t; -typedef UInt32 uint32_t; -typedef SInt64 int64_t; -typedef UInt64 uint64_t; -typedef unsigned long uintptr_t; - -#define SDL_HAS_64BIT_TYPE 1 - -/* Useful headers */ -#define HAVE_STDIO_H 1 -#define STDC_HEADERS 1 -#define HAVE_STRING_H 1 -#define HAVE_CTYPE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_SIGNAL_H 1 - -/* C library functions */ -#define HAVE_MALLOC 1 -#define HAVE_CALLOC 1 -#define HAVE_REALLOC 1 -#define HAVE_FREE 1 -#define HAVE_ALLOCA 1 -#define HAVE_ABS 1 -#define HAVE_MEMSET 1 -#define HAVE_MEMCPY 1 -#define HAVE_MEMMOVE 1 -#define HAVE_MEMCMP 1 -#define HAVE_STRLEN 1 -#define HAVE_STRCHR 1 -#define HAVE_STRRCHR 1 -#define HAVE_STRSTR 1 -#define HAVE_ITOA 1 -#define HAVE_STRTOL 1 -#define HAVE_STRTOD 1 -#define HAVE_ATOI 1 -#define HAVE_ATOF 1 -#define HAVE_STRCMP 1 -#define HAVE_STRNCMP 1 -#define HAVE_SSCANF 1 - -/* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_SNDMGR 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 - -/* Enable various cdrom drivers */ -#if TARGET_API_MAC_CARBON -#define SDL_CDROM_DUMMY 1 -#else -#define SDL_CDROM_MACOS 1 -#endif - -/* Enable various input drivers */ -#if TARGET_API_MAC_CARBON -#define SDL_JOYSTICK_DUMMY 1 -#else -#define SDL_JOYSTICK_MACOS 1 -#endif - -/* Enable various shared object loading systems */ -#define SDL_LOADSO_MACOS 1 - -/* Enable various threading systems */ -#define SDL_THREADS_DISABLED 1 - -/* Enable various timer systems */ -#define SDL_TIMER_MACOS 1 - -/* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_DUMMY 1 -#define SDL_VIDEO_DRIVER_DRAWSPROCKET 1 -#define SDL_VIDEO_DRIVER_TOOLBOX 1 - -/* Enable OpenGL support */ -#define SDL_VIDEO_OPENGL 1 - -#endif /* _SDL_config_macos_h */ diff --git a/include/SDL_main.h b/include/SDL_main.h index fb27f0016..1b8f79c68 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -29,7 +29,6 @@ #if defined(__WIN32__) || \ (defined(__MWERKS__) && !defined(__BEOS__)) || \ - defined(__MACOS__) || \ defined(__SYMBIAN32__) || defined(QWS) #ifdef __cplusplus @@ -76,30 +75,6 @@ extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); #include "close_code.h" #endif -/* From the SDL library code -- needed for registering QuickDraw on MacOS */ -#if defined(__MACOS__) - -#include "begin_code.h" -#ifdef __cplusplus -/* *INDENT-OFF* */ -extern "C" { -/* *INDENT-ON* */ -#endif - -/* Forward declaration so we don't need to include QuickDraw.h */ -struct QDGlobals; - -/* This should be called from your main() function, if any */ -extern DECLSPEC void SDLCALL SDL_InitQuickDraw(struct QDGlobals *the_qd); - -#ifdef __cplusplus -/* *INDENT-OFF* */ -} -/* *INDENT-ON* */ -#endif -#include "close_code.h" -#endif - #endif /* Need to redefine main()? */ #endif /* _SDL_main_h */ diff --git a/include/SDL_opengl.h b/include/SDL_opengl.h index 32535473a..267e3b288 100644 --- a/include/SDL_opengl.h +++ b/include/SDL_opengl.h @@ -37,9 +37,6 @@ #if defined(__MACOSX__) #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ -#elif defined(__MACOS__) -#include /* Header File For The OpenGL Library */ -#include /* Header File For The GLU Library */ #else #include /* Header File For The OpenGL Library */ #include /* Header File For The GLU Library */ diff --git a/include/begin_code.h b/include/begin_code.h index 01f4088de..aa2f88487 100644 --- a/include/begin_code.h +++ b/include/begin_code.h @@ -102,9 +102,6 @@ #pragma nopackwarning #endif #pragma pack(push,4) -#elif (defined(__MWERKS__) && defined(__MACOS__)) -#pragma options align=mac68k4byte -#pragma enumsalwaysint on #endif /* Compiler needs structure packing set */ /* Set up compiler-specific options for inlining functions */ diff --git a/include/close_code.h b/include/close_code.h index bf609d88a..fc41957e2 100644 --- a/include/close_code.h +++ b/include/close_code.h @@ -31,10 +31,5 @@ #ifdef __BORLANDC__ #pragma nopackwarning #endif -#if (defined(__MWERKS__) && defined(__MACOS__)) -#pragma options align=reset -#pragma enumsalwaysint reset -#else #pragma pack(pop) -#endif #endif /* Compiler needs structure packing set */ diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index f2ef5143b..659628df4 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -532,9 +532,6 @@ SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained) SDL_SetError("SDL_OpenAudio() passed a NULL callback"); return (-1); } -#if defined(__MACOS__) || (defined(__RISCOS__) && SDL_THREADS_DISABLED) - /* FIXME: Need to implement PPC interrupt asm for SDL_LockAudio() */ -#else #if defined(__MINT__) && SDL_THREADS_DISABLED /* Uses interrupt driven audio, without thread */ #else @@ -546,7 +543,6 @@ SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained) return (-1); } #endif /* __MINT__ */ -#endif /* __MACOS__ */ /* Calculate the silence and size of the audio specification */ SDL_CalculateAudioSpec(desired); diff --git a/src/cdrom/SDL_cdrom.c b/src/cdrom/SDL_cdrom.c index 0ed81ef9a..afb75c9e3 100644 --- a/src/cdrom/SDL_cdrom.c +++ b/src/cdrom/SDL_cdrom.c @@ -26,9 +26,7 @@ #include "SDL_cdrom.h" #include "SDL_syscdrom.h" -#if !defined(__MACOS__) #define CLIP_FRAMES 10 /* Some CD-ROMs won't go all the way */ -#endif static int SDL_cdinitted = 0; static SDL_CD *default_cdrom; diff --git a/src/cdrom/SDL_syscdrom.h b/src/cdrom/SDL_syscdrom.h index ced2f63ab..feaaef2f3 100644 --- a/src/cdrom/SDL_syscdrom.h +++ b/src/cdrom/SDL_syscdrom.h @@ -74,4 +74,5 @@ extern int SDL_SYS_CDInit(void); /* Function to perform any system-specific CD-ROM related cleanup */ extern void SDL_SYS_CDQuit(void); + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/cdrom/macos/SDL_syscdrom.c b/src/cdrom/macos/SDL_syscdrom.c deleted file mode 100644 index 69a30510d..000000000 --- a/src/cdrom/macos/SDL_syscdrom.c +++ /dev/null @@ -1,543 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_CDROM_MACOS - -/* MacOS functions for system-level CD-ROM audio control */ - -#include -#include -#include /* Use entry table macros, not functions in InterfaceLib */ - -#include "SDL_cdrom.h" -#include "../SDL_syscdrom.h" -#include "SDL_syscdrom_c.h" - -/* Added by Matt Slot */ -#if !defined(LMGetUnitTableEntryCount) -#define LMGetUnitTableEntryCount() *(short *)0x01D2 -#endif - -/* The maximum number of CD-ROM drives we'll detect */ -#define MAX_DRIVES 26 - -/* A list of available CD-ROM drives */ -static long SDL_cdversion = 0; -static struct -{ - short dRefNum; - short driveNum; - long frames; - char name[256]; - Boolean hasAudio; -} SDL_cdlist[MAX_DRIVES]; -static StringPtr gDriverName = "\p.AppleCD"; - -/* The system-dependent CD control functions */ -static const char *SDL_SYS_CDName(int drive); -static int SDL_SYS_CDOpen(int drive); -static int SDL_SYS_CDGetTOC(SDL_CD * cdrom); -static CDstatus SDL_SYS_CDStatus(SDL_CD * cdrom, int *position); -static int SDL_SYS_CDPlay(SDL_CD * cdrom, int start, int length); -static int SDL_SYS_CDPause(SDL_CD * cdrom); -static int SDL_SYS_CDResume(SDL_CD * cdrom); -static int SDL_SYS_CDStop(SDL_CD * cdrom); -static int SDL_SYS_CDEject(SDL_CD * cdrom); -static void SDL_SYS_CDClose(SDL_CD * cdrom); - -static short -SDL_SYS_ShortToBCD(short value) -{ - return ((value % 10) + (value / 10) * 0x10); /* Convert value to BCD */ -} - -static short -SDL_SYS_BCDToShort(short value) -{ - return ((value % 0x10) + (value / 0x10) * 10); /* Convert value from BCD */ -} - -int -SDL_SYS_CDInit(void) -{ - SInt16 dRefNum = 0; - SInt16 first, last; - - SDL_numcds = 0; - - /* Check that the software is available */ - if (Gestalt(kGestaltAudioCDSelector, &SDL_cdversion) || !SDL_cdversion) - return (0); - - /* Fill in our driver capabilities */ - SDL_CDcaps.Name = SDL_SYS_CDName; - SDL_CDcaps.Open = SDL_SYS_CDOpen; - SDL_CDcaps.GetTOC = SDL_SYS_CDGetTOC; - SDL_CDcaps.Status = SDL_SYS_CDStatus; - SDL_CDcaps.Play = SDL_SYS_CDPlay; - SDL_CDcaps.Pause = SDL_SYS_CDPause; - SDL_CDcaps.Resume = SDL_SYS_CDResume; - SDL_CDcaps.Stop = SDL_SYS_CDStop; - SDL_CDcaps.Eject = SDL_SYS_CDEject; - SDL_CDcaps.Close = SDL_SYS_CDClose; - - /* Walk the list, count each AudioCD driver, and save the refnums */ - first = -1; - last = 0 - LMGetUnitTableEntryCount(); - for (dRefNum = first; dRefNum >= last; dRefNum--) { - Str255 driverName; - StringPtr namePtr; - DCtlHandle deviceEntry; - - deviceEntry = GetDCtlEntry(dRefNum); - if (!deviceEntry) - continue; - - /* Is this an .AppleCD ? */ - namePtr = (*deviceEntry)->dCtlFlags & (1L << dRAMBased) ? - ((StringPtr) ((DCtlPtr) deviceEntry)->dCtlDriver + 18) : - ((StringPtr) (*deviceEntry)->dCtlDriver + 18); - BlockMoveData(namePtr, driverName, namePtr[0] + 1); - if (driverName[0] > gDriverName[0]) - driverName[0] = gDriverName[0]; - if (!EqualString(driverName, gDriverName, false, false)) - continue; - - /* Record the basic info for each drive */ - SDL_cdlist[SDL_numcds].dRefNum = dRefNum; - BlockMoveData(namePtr + 1, SDL_cdlist[SDL_numcds].name, namePtr[0]); - SDL_cdlist[SDL_numcds].name[namePtr[0]] = 0; - SDL_cdlist[SDL_numcds].hasAudio = false; - SDL_numcds++; - } - return (0); -} - -static const char * -SDL_SYS_CDName(int drive) -{ - return (SDL_cdlist[drive].name); -} - -static int -get_drivenum(int drive) -{ - QHdr *driveQ = GetDrvQHdr(); - DrvQEl *driveElem; - - /* Update the drive number */ - SDL_cdlist[drive].driveNum = 0; - if (driveQ->qTail) { - driveQ->qTail->qLink = 0; - } - for (driveElem = (DrvQEl *) driveQ->qHead; driveElem; - driveElem = (DrvQEl *) driveElem->qLink) { - if (driveElem->dQRefNum == SDL_cdlist[drive].dRefNum) { - SDL_cdlist[drive].driveNum = driveElem->dQDrive; - break; - } - } - return (SDL_cdlist[drive].driveNum); -} - -static int -SDL_SYS_CDOpen(int drive) -{ - return (drive); -} - -static int -SDL_SYS_CDGetTOC(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - CDTrackData tracks[SDL_MAX_TRACKS]; - long i, leadout; - - /* Get the number of tracks on the CD by examining the TOC */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetTrackRange; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - cdrom->numtracks = - SDL_SYS_BCDToShort(cdpb.csParam.bytes[1]) - - SDL_SYS_BCDToShort(cdpb.csParam.bytes[0]) + 1; - if (cdrom->numtracks > SDL_MAX_TRACKS) - cdrom->numtracks = SDL_MAX_TRACKS; - cdrom->status = CD_STOPPED; - cdrom->cur_track = 0; /* Apparently these are set elsewhere */ - cdrom->cur_frame = 0; /* Apparently these are set elsewhere */ - - - /* Get the lead out area of the CD by examining the TOC */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetLeadOutArea; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - leadout = MSF_TO_FRAMES(SDL_SYS_BCDToShort(cdpb.csParam.bytes[0]), - SDL_SYS_BCDToShort(cdpb.csParam.bytes[1]), - SDL_SYS_BCDToShort(cdpb.csParam.bytes[2])); - - /* Get an array of track locations by examining the TOC */ - SDL_memset(tracks, 0, sizeof(tracks)); - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetTrackEntries; /* Type of Query */ - *((long *) (cdpb.csParam.words + 1)) = (long) tracks; - cdpb.csParam.words[3] = cdrom->numtracks * sizeof(tracks[0]); - *((char *) (cdpb.csParam.words + 4)) = 1; /* First track */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - /* Read all the track TOC entries */ - SDL_cdlist[cdrom->id].hasAudio = false; - for (i = 0; i < cdrom->numtracks; ++i) { - cdrom->track[i].id = i + 1; - if (tracks[i].entry.control & kDataTrackMask) - cdrom->track[i].type = SDL_DATA_TRACK; - else { - cdrom->track[i].type = SDL_AUDIO_TRACK; - SDL_cdlist[SDL_numcds].hasAudio = true; - } - - cdrom->track[i].offset = - MSF_TO_FRAMES(SDL_SYS_BCDToShort(tracks[i].entry.min), - SDL_SYS_BCDToShort(tracks[i].entry.min), - SDL_SYS_BCDToShort(tracks[i].entry.frame)); - cdrom->track[i].length = - MSF_TO_FRAMES(SDL_SYS_BCDToShort(tracks[i + 1].entry.min), - SDL_SYS_BCDToShort(tracks[i + 1].entry.min), - SDL_SYS_BCDToShort(tracks[i + 1].entry.frame)) - - cdrom->track[i].offset; - } - - /* Apparently SDL wants a fake last entry */ - cdrom->track[i].offset = leadout; - cdrom->track[i].length = 0; - - return (0); -} - -/* Get CD-ROM status */ -static CDstatus -SDL_SYS_CDStatus(SDL_CD * cdrom, int *position) -{ - CDCntrlParam cdpb; - CDstatus status = CD_ERROR; - Boolean spinning = false; - - if (position) - *position = 0; - - /* Get the number of tracks on the CD by examining the TOC */ - if (!get_drivenum(cdrom->id)) { - return (CD_TRAYEMPTY); - } - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kReadTOC; - cdpb.csParam.words[0] = kGetTrackRange; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (CD_ERROR); - } - - cdrom->numtracks = - SDL_SYS_BCDToShort(cdpb.csParam.bytes[1]) - - SDL_SYS_BCDToShort(cdpb.csParam.bytes[0]) + 1; - if (cdrom->numtracks > SDL_MAX_TRACKS) - cdrom->numtracks = SDL_MAX_TRACKS; - cdrom->cur_track = 0; /* Apparently these are set elsewhere */ - cdrom->cur_frame = 0; /* Apparently these are set elsewhere */ - - - if (1 || SDL_cdlist[cdrom->id].hasAudio) { - /* Get the current playback status */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStatus; - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - switch (cdpb.csParam.cd.status) { - case kStatusPlaying: - status = CD_PLAYING; - spinning = true; - break; - case kStatusPaused: - status = CD_PAUSED; - spinning = true; - break; - case kStatusMuted: - status = CD_PLAYING; /* What should I do here? */ - spinning = true; - break; - case kStatusDone: - status = CD_STOPPED; - spinning = true; - break; - case kStatusStopped: - status = CD_STOPPED; - spinning = false; - break; - case kStatusError: - default: - status = CD_ERROR; - spinning = false; - break; - } - - if (spinning && position) - *position = - MSF_TO_FRAMES(SDL_SYS_BCDToShort(cdpb.csParam.cd.minute), - SDL_SYS_BCDToShort(cdpb.csParam.cd.second), - SDL_SYS_BCDToShort(cdpb.csParam.cd.frame)); - } else - status = CD_ERROR; /* What should I do here? */ - - return (status); -} - -/* Start play */ -static int -SDL_SYS_CDPlay(SDL_CD * cdrom, int start, int length) -{ - CDCntrlParam cdpb; - - /* Pause the current audio playback to avoid audible artifacts */ - if (SDL_SYS_CDPause(cdrom) < 0) { - return (-1); - } - - /* Specify the AudioCD playback mode */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kSetPlayMode; - cdpb.csParam.bytes[0] = false; /* Repeat? */ - cdpb.csParam.bytes[1] = kPlayModeSequential; /* Play mode */ - /* ¥¥¥ÊTreat as soft error, NEC Drive doesnt support this call ¥¥¥ */ - PBControlSync((ParmBlkPtr) & cdpb); - -#if 1 - /* Specify the end of audio playback */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStop; - cdpb.csParam.words[0] = kBlockPosition; /* Position Mode */ - *(long *) (cdpb.csParam.words + 1) = start + length - 1; /* Search Address */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - /* Specify the start of audio playback, and start it */ - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPlay; - cdpb.csParam.words[0] = kBlockPosition; /* Position Mode */ - *(long *) (cdpb.csParam.words + 1) = start + 1; /* Search Address */ - cdpb.csParam.words[3] = false; /* Stop address? */ - cdpb.csParam.words[4] = kStereoPlayMode; /* Audio Play Mode */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } -#else - /* Specify the end of audio playback */ - FRAMES_TO_MSF(start + length, &m, &s, &f); - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStop; - cdpb.csParam.words[0] = kTrackPosition; /* Position Mode */ - cdpb.csParam.words[1] = 0; /* Search Address (hiword) */ - cdpb.csParam.words[2] = /* Search Address (loword) */ - SDL_SYS_ShortToBCD(cdrom->numtracks); - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - - /* Specify the start of audio playback, and start it */ - FRAMES_TO_MSF(start, &m, &s, &f); - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPlay; - cdpb.csParam.words[0] = kTrackPosition; /* Position Mode */ - cdpb.csParam.words[1] = 0; /* Search Address (hiword) */ - cdpb.csParam.words[2] = SDL_SYS_ShortToBCD(1); /* Search Address (loword) */ - cdpb.csParam.words[3] = false; /* Stop address? */ - cdpb.csParam.words[4] = kStereoPlayMode; /* Audio Play Mode */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } -#endif - - return (0); -} - -/* Pause play */ -static int -SDL_SYS_CDPause(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPause; - cdpb.csParam.words[0] = 0; /* Pause/Continue Flag (hiword) */ - cdpb.csParam.words[1] = 1; /* Pause/Continue Flag (loword) */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - return (0); -} - -/* Resume play */ -static int -SDL_SYS_CDResume(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioPause; - cdpb.csParam.words[0] = 0; /* Pause/Continue Flag (hiword) */ - cdpb.csParam.words[1] = 0; /* Pause/Continue Flag (loword) */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - return (0); -} - -/* Stop play */ -static int -SDL_SYS_CDStop(SDL_CD * cdrom) -{ - CDCntrlParam cdpb; - - SDL_memset(&cdpb, 0, sizeof(cdpb)); - cdpb.ioVRefNum = SDL_cdlist[cdrom->id].driveNum; - cdpb.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cdpb.csCode = kAudioStop; - cdpb.csParam.words[0] = 0; /* Position Mode */ - cdpb.csParam.words[1] = 0; /* Search Address (hiword) */ - cdpb.csParam.words[2] = 0; /* Search Address (loword) */ - if (PBControlSync((ParmBlkPtr) & cdpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - return (0); -} - -/* Eject the CD-ROM */ -static int -SDL_SYS_CDEject(SDL_CD * cdrom) -{ - Boolean disk = false; - QHdr *driveQ = GetDrvQHdr(); - DrvQEl *driveElem; - HParamBlockRec hpb; - ParamBlockRec cpb; - - for (driveElem = (DrvQEl *) driveQ->qHead; driveElem; driveElem = - (driveElem) ? ((DrvQEl *) driveElem->qLink) : - ((DrvQEl *) driveQ->qHead)) { - if (driveQ->qTail) { - driveQ->qTail->qLink = 0; - } - if (driveElem->dQRefNum != SDL_cdlist[cdrom->id].dRefNum) { - continue; - } - - /* Does drive contain mounted volume? If not, skip */ - SDL_memset(&hpb, 0, sizeof(hpb)); - hpb.volumeParam.ioVRefNum = driveElem->dQDrive; - if (PBHGetVInfoSync(&hpb) != noErr) { - continue; - } - if ((UnmountVol(0, driveElem->dQDrive) == noErr) && - (Eject(0, driveElem->dQDrive) == noErr)) { - driveElem = 0; /* Clear pointer to reset our loop */ - disk = true; - } - } - - /* If no disk is present, just eject the tray */ - if (!disk) { - SDL_memset(&cpb, 0, sizeof(cpb)); - cpb.cntrlParam.ioVRefNum = 0; /* No Drive */ - cpb.cntrlParam.ioCRefNum = SDL_cdlist[cdrom->id].dRefNum; - cpb.cntrlParam.csCode = kEjectTheDisc; - if (PBControlSync((ParmBlkPtr) & cpb) != noErr) { - SDL_SetError("PBControlSync() failed"); - return (-1); - } - } - return (0); -} - -/* Close the CD-ROM handle */ -static void -SDL_SYS_CDClose(SDL_CD * cdrom) -{ - return; -} - -void -SDL_SYS_CDQuit(void) -{ - while (SDL_numcds--) - SDL_memset(SDL_cdlist + SDL_numcds, 0, sizeof(SDL_cdlist[0])); -} - -#endif /* SDL_CDROM_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/cdrom/macos/SDL_syscdrom_c.h b/src/cdrom/macos/SDL_syscdrom_c.h deleted file mode 100644 index 07ea54d80..000000000 --- a/src/cdrom/macos/SDL_syscdrom_c.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2004 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* This is the MacOS specific header for the SDL CD-ROM API - Contributed by Matt Slot - */ - -/* AppleCD Control calls */ -#define kVerifyTheDisc 5 /* Returns noErr if there is disc inserted */ -#define kEjectTheDisc 7 /* Eject disc from drive */ -#define kUserEject 80 /* Enable/disable the CD-ROM eject button */ -#define kReadTOC 100 /* Extract various TOC information from the disc */ -#define kReadQ 101 /* Extract Q subcode info for the current track */ -#define kAudioTrackSearch 103 /* Start playback from the indicated position */ -#define kAudioPlay 104 /* Start playback from the indicated position */ -#define kAudioPause 105 /* Pause/continue the playback */ -#define kAudioStop 106 /* Stop playback at the indicated position */ -#define kAudioStatus 107 /* Return audio play status */ -#define kAudioControl 109 /* Set the output volume for the audio channels */ -#define kReadAudioVolume 112 /* Get the output volume for the audio channels */ -#define kSetTrackList 122 /* Set the track program for the audio CD to play */ -#define kGetTrackList 123 /* Get the track program the audio CD is playing */ -#define kGetTrackIndex 124 /* Get the track index the audio CD is playing */ -#define kSetPlayMode 125 /* Set the audio tracks play mode */ -#define kGetPlayMode 126 /* Get the audio tracks play mode */ - -/* AppleCD Status calls */ -#define kGetDriveType 96 /* Get the type of the physical CD-ROM drive */ -#define kWhoIsThere 97 /* Get a bitmap of SCSI IDs the driver controls */ -#define kGetBlockSize 98 /* Get current block size of the CD-ROM drive */ - -/* AppleCD other constants */ -#define kBlockPosition 0 /* Position at the specified logical block number */ -#define kAbsMSFPosition 1 /* Position at the specified Min/Sec/Frame (in BCD) */ -#define kTrackPosition 2 /* Position at the specified track number (in BCD) */ -#define kIndexPosition 3 /* Position at the nth track in program (in BCD) */ - -#define kMutedPlayMode 0 /* Play the audio track with no output */ -#define kStereoPlayMode 9 /* Play the audio track in normal stereo */ - -#define kControlFieldMask 0x0D /* Bits 3,2,0 in the nibble */ -#define kDataTrackMask 0x04 /* Indicates Data Track */ - -#define kGetTrackRange 1 /* Query TOC for track numbers */ -#define kGetLeadOutArea 2 /* Query TOC for "Lead Out" end of audio data */ -#define kGetTrackEntries 3 /* Query TOC for track starts and data types */ - -#define kStatusPlaying 0 /* Audio Play operation in progress */ -#define kStatusPaused 1 /* CD-ROM device in Hold Track ("Pause") state */ -#define kStatusMuted 2 /* MUTING-ON operation in progress */ -#define kStatusDone 3 /* Audio Play completed */ -#define kStatusError 4 /* Error occurred during audio play operation */ -#define kStatusStopped 5 /* Audio play operation not requested */ - -#define kPlayModeSequential 0 /* Play tracks in order */ -#define kPlayModeShuffled 1 /* Play tracks randomly */ -#define kPlayModeProgrammed 2 /* Use custom playlist */ - -/* AppleCD Gestalt selectors */ -#define kGestaltAudioCDSelector 'aucd' -#define kDriverVersion52 0x00000520 -#define kDriverVersion51 0x00000510 -#define kDriverVersion50 0x00000500 - -/* Drive type constants */ -#define kDriveAppleCD_SC 1 -#define kDriveAppleCD_SCPlus_or_150 2 -#define kDriveAppleCD_300_or_300Plus 3 - -/* Misc constants */ -#define kFirstSCSIDevice -33 -#define kLastSCSIDevice -40 - -#if PRAGMA_STRUCT_ALIGN -#pragma options align=mac68k -#endif - -/* AppleCD driver parameter block */ -typedef struct CDCntrlParam -{ - QElemPtr qLink; - short qType; - short ioTrap; - Ptr ioCmdAddr; - IOCompletionUPP ioCompletion; - OSErr ioResult; - StringPtr ioNamePtr; - short ioVRefNum; - short ioCRefNum; - short csCode; - - union - { - long longs[6]; - short words[11]; - unsigned char bytes[22]; - struct - { - unsigned char status; - unsigned char play; - unsigned char control; - unsigned char minute; - unsigned char second; - unsigned char frame; - } cd; - } csParam; - -} CDCntrlParam, *CDCntrlParamPtr; - -typedef union CDTrackData -{ - long value; /* Treat as a longword value */ - struct - { - unsigned char reserved:4; /* Unused by AppleCD driver */ - unsigned char control:4; /* Track flags (data track?) */ - unsigned char min; /* Start of track (BCD) */ - unsigned char sec; /* Start of track (BCD) */ - unsigned char frame; /* Start of track (BCD) */ - } entry; /* Broken into fields */ -} CDTrackData, *CDTrackPtr; - -#if PRAGMA_STRUCT_ALIGN -#pragma options align=reset -#endif -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 5b706fa41..ea96fdcc7 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -157,11 +157,7 @@ SDL_StartEventThread(Uint32 flags) #if !SDL_THREADS_DISABLED SDL_EventQ.lock = SDL_CreateMutex(); if (SDL_EventQ.lock == NULL) { -#ifdef __MACOS__ /* MacOS classic you can't multithread, so no lock needed */ - ; -#else return (-1); -#endif } #endif /* !SDL_THREADS_DISABLED */ SDL_EventQ.active = 1; diff --git a/src/events/SDL_sysevents.h b/src/events/SDL_sysevents.h index 8c515d9b5..dad59e859 100644 --- a/src/events/SDL_sysevents.h +++ b/src/events/SDL_sysevents.h @@ -37,11 +37,8 @@ #define CANT_THREAD_EVENTS #endif -#ifdef __MACOS__ /* MacOS 7/8 don't support preemptive multi-tasking */ -#define CANT_THREAD_EVENTS -#endif - #ifdef __OS2__ /* The OS/2 event loop runs in a separate thread */ #define MUST_THREAD_EVENTS #endif + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index 22c71007e..3bdb44152 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -349,51 +349,6 @@ mem_close(SDL_RWops * context) /* Functions to create SDL_RWops structures from various data sources */ -#ifdef __MACOS__ -/* - * translate unix-style slash-separated filename to mac-style colon-separated - * name; return malloced string - */ -static char * -unix_to_mac(const char *file) -{ - int flen = SDL_strlen(file); - char *path = SDL_malloc(flen + 2); - const char *src = file; - char *dst = path; - if (*src == '/') { - /* really depends on filesystem layout, hope for the best */ - src++; - } else { - /* Check if this is a MacOS path to begin with */ - if (*src != ':') - *dst++ = ':'; /* relative paths begin with ':' */ - } - while (src < file + flen) { - const char *end = SDL_strchr(src, '/'); - int len; - if (!end) - end = file + flen; /* last component */ - len = end - src; - if (len == 0 || (len == 1 && src[0] == '.')) { - /* remove repeated slashes and . */ - } else { - if (len == 2 && src[0] == '.' && src[1] == '.') { - /* replace .. with the empty string */ - } else { - SDL_memcpy(dst, src, len); - dst += len; - } - if (end < file + flen) - *dst++ = ':'; - } - src = end + 1; - } - *dst++ = '\0'; - return path; -} -#endif /* __MACOS__ */ - SDL_RWops * SDL_RWFromFile(const char *file, const char *mode) { @@ -421,15 +376,7 @@ SDL_RWFromFile(const char *file, const char *mode) #elif HAVE_STDIO_H -#ifdef __MACOS__ - { - char *mpath = unix_to_mac(file); - fp = fopen(mpath, mode); - SDL_free(mpath); - } -#else fp = fopen(file, mode); -#endif if (fp == NULL) { SDL_SetError("Couldn't open %s", file); } else { diff --git a/src/joystick/SDL_sysjoystick.h b/src/joystick/SDL_sysjoystick.h index 0baf934a9..40cd86fda 100644 --- a/src/joystick/SDL_sysjoystick.h +++ b/src/joystick/SDL_sysjoystick.h @@ -81,4 +81,5 @@ extern void SDL_SYS_JoystickClose(SDL_Joystick * joystick); /* Function to perform any system-specific joystick related cleanup */ extern void SDL_SYS_JoystickQuit(void); + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/joystick/macos/SDL_sysjoystick.c b/src/joystick/macos/SDL_sysjoystick.c deleted file mode 100644 index e4c476bdb..000000000 --- a/src/joystick/macos/SDL_sysjoystick.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_JOYSTICK_MACOS - -/* SDL stuff -- "SDL_sysjoystick.c" - MacOS joystick functions by Frederick Reitberger - - The code that follows is meant for SDL. Use at your own risk. -*/ - -#include - -#include "SDL_joystick.h" -#include "../SDL_sysjoystick.h" -#include "../SDL_joystick_c.h" - - -/* The max number of joysticks we will detect */ -#define MAX_JOYSTICKS 16 -/* Limit ourselves to 32 elements per device */ -#define kMaxReferences 32 - -#define ISpSymmetricAxisToFloat(axis) ((((float) axis) - kISpAxisMiddle) / (kISpAxisMaximum-kISpAxisMiddle)) -#define ISpAsymmetricAxisToFloat(axis) (((float) axis) / (kISpAxisMaximum)) - - -static ISpDeviceReference SYS_Joysticks[MAX_JOYSTICKS]; -static ISpElementListReference SYS_Elements[MAX_JOYSTICKS]; -static ISpDeviceDefinition SYS_DevDef[MAX_JOYSTICKS]; - -struct joystick_hwdata -{ - char name[64]; -/* Uint8 id;*/ - ISpElementReference refs[kMaxReferences]; - /* gonna need some sort of mapping info */ -}; - - -/* Function to scan the system for joysticks. - * Joystick 0 should be the system default joystick. - * This function should return the number of available joysticks, or -1 - * on an unrecoverable fatal error. - */ -int -SDL_SYS_JoystickInit(void) -{ - static ISpDeviceClass classes[4] = { - kISpDeviceClass_Joystick, -#if kISpDeviceClass_Gamepad - kISpDeviceClass_Gamepad, -#endif - kISpDeviceClass_Wheel, - 0 - }; - OSErr err; - int i; - UInt32 count, numJoysticks; - - if ((Ptr) 0 == (Ptr) ISpStartup) { - SDL_SetError("InputSprocket not installed"); - return -1; // InputSprocket not installed - } - - if ((Ptr) 0 == (Ptr) ISpGetVersion) { - SDL_SetError("InputSprocket not version 1.1 or newer"); - return -1; // old version of ISp (not at least 1.1) - } - - ISpStartup(); - - /* Get all the joysticks */ - numJoysticks = 0; - for (i = 0; classes[i]; ++i) { - count = 0; - err = ISpDevices_ExtractByClass(classes[i], - MAX_JOYSTICKS - numJoysticks, - &count, &SYS_Joysticks[numJoysticks]); - numJoysticks += count; - } - - for (i = 0; i < numJoysticks; i++) { - ISpDevice_GetDefinition(SYS_Joysticks[i], - sizeof(ISpDeviceDefinition), &SYS_DevDef[i]); - - err = ISpElementList_New(0, NULL, &SYS_Elements[i], 0); - - if (err) { - SDL_OutOfMemory(); - return -1; - } - - ISpDevice_GetElementList(SYS_Joysticks[i], &SYS_Elements[i]); - } - - ISpDevices_Deactivate(numJoysticks, SYS_Joysticks); - - return numJoysticks; -} - -/* Function to get the device-dependent name of a joystick */ -const char * -SDL_SYS_JoystickName(int index) -{ - static char name[64]; - int len; - - /* convert pascal string to c-string */ - len = SYS_DevDef[index].deviceName[0]; - if (len >= sizeof(name)) { - len = (sizeof(name) - 1); - } - SDL_memcpy(name, &SYS_DevDef[index].deviceName[1], len); - name[len] = '\0'; - - return name; -} - -/* Function to open a joystick for use. - The joystick to open is specified by the index field of the joystick. - This should fill the nbuttons and naxes fields of the joystick structure. - It returns 0, or -1 if there is an error. - */ -int -SDL_SYS_JoystickOpen(SDL_Joystick * joystick) -{ - int index; - UInt32 count, gotCount, count2; - long numAxis, numButtons, numHats, numBalls; - - count = kMaxReferences; - count2 = 0; - numAxis = numButtons = numHats = numBalls = 0; - - index = joystick->index; - - /* allocate memory for system specific hardware data */ - joystick->hwdata = - (struct joystick_hwdata *) SDL_malloc(sizeof(*joystick->hwdata)); - if (joystick->hwdata == NULL) { - SDL_OutOfMemory(); - return (-1); - } - SDL_memset(joystick->hwdata, 0, sizeof(*joystick->hwdata)); - SDL_strlcpy(joystick->hwdata->name, SDL_SYS_JoystickName(index), - SDL_arraysize(joystick->hwdata->name)); - joystick->name = joystick->hwdata->name; - - ISpElementList_ExtractByKind(SYS_Elements[index], - kISpElementKind_Axis, - count, &gotCount, joystick->hwdata->refs); - - numAxis = gotCount; - count -= gotCount; - count2 += gotCount; - - ISpElementList_ExtractByKind(SYS_Elements[index], - kISpElementKind_DPad, - count, - &gotCount, - &(joystick->hwdata->refs[count2])); - - numHats = gotCount; - count -= gotCount; - count2 += gotCount; - - ISpElementList_ExtractByKind(SYS_Elements[index], - kISpElementKind_Button, - count, - &gotCount, - &(joystick->hwdata->refs[count2])); - - numButtons = gotCount; - count -= gotCount; - count2 += gotCount; - - joystick->naxes = numAxis; - joystick->nhats = numHats; - joystick->nballs = numBalls; - joystick->nbuttons = numButtons; - - ISpDevices_Activate(1, &SYS_Joysticks[index]); - - return 0; -} - -/* Function to update the state of a joystick - called as a device poll. - * This function shouldn't update the joystick structure directly, - * but instead should call SDL_PrivateJoystick*() to deliver events - * and update joystick device state. - */ -void -SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) -{ - int i, j; - ISpAxisData a; - ISpDPadData b; - //ISpDeltaData c; - ISpButtonData d; - - for (i = 0, j = 0; i < joystick->naxes; i++, j++) { - Sint16 value; - - ISpElement_GetSimpleState(joystick->hwdata->refs[j], &a); - value = (ISpSymmetricAxisToFloat(a) * 32767.0); - if (value != joystick->axes[i]) { - SDL_PrivateJoystickAxis(joystick, i, value); - } - } - - for (i = 0; i < joystick->nhats; i++, j++) { - Uint8 pos; - - ISpElement_GetSimpleState(joystick->hwdata->refs[j], &b); - switch (b) { - case kISpPadIdle: - pos = SDL_HAT_CENTERED; - break; - case kISpPadLeft: - pos = SDL_HAT_LEFT; - break; - case kISpPadUpLeft: - pos = SDL_HAT_LEFTUP; - break; - case kISpPadUp: - pos = SDL_HAT_UP; - break; - case kISpPadUpRight: - pos = SDL_HAT_RIGHTUP; - break; - case kISpPadRight: - pos = SDL_HAT_RIGHT; - break; - case kISpPadDownRight: - pos = SDL_HAT_RIGHTDOWN; - break; - case kISpPadDown: - pos = SDL_HAT_DOWN; - break; - case kISpPadDownLeft: - pos = SDL_HAT_LEFTDOWN; - break; - } - if (pos != joystick->hats[i]) { - SDL_PrivateJoystickHat(joystick, i, pos); - } - } - - for (i = 0; i < joystick->nballs; i++, j++) { - /* ignore balls right now */ - } - - for (i = 0; i < joystick->nbuttons; i++, j++) { - ISpElement_GetSimpleState(joystick->hwdata->refs[j], &d); - if (d != joystick->buttons[i]) { - SDL_PrivateJoystickButton(joystick, i, d); - } - } -} - -/* Function to close a joystick after use */ -void -SDL_SYS_JoystickClose(SDL_Joystick * joystick) -{ - int index; - - index = joystick->index; - - ISpDevices_Deactivate(1, &SYS_Joysticks[index]); -} - -/* Function to perform any system-specific joystick related cleanup */ -void -SDL_SYS_JoystickQuit(void) -{ - ISpShutdown(); -} - -#endif /* SDL_JOYSTICK_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/loadso/macos/SDL_sysloadso.c b/src/loadso/macos/SDL_sysloadso.c deleted file mode 100644 index 344fd0d01..000000000 --- a/src/loadso/macos/SDL_sysloadso.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_LOADSO_MACOS - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* System dependent library loading routines */ - -#include -#include -#define OLDP2C 1 -#include -#include -#include - -#include "SDL_loadso.h" - -void * -SDL_LoadObject(const char *sofile) -{ - void *handle = NULL; - const char *loaderror = NULL; - CFragConnectionID library_id; - Ptr mainAddr; - Str255 errName; - OSErr error; - char psofile[512]; - - SDL_strlcpy(psofile, sofile, SDL_arraysize(psofile)); - error = GetSharedLibrary(C2PStr(psofile), kCompiledCFragArch, - kLoadCFrag, &library_id, &mainAddr, errName); - switch (error) { - case noErr: - loaderror = NULL; - break; - case cfragNoLibraryErr: - loaderror = "Library not found"; - break; - case cfragUnresolvedErr: - loaderror = "Unabled to resolve symbols"; - break; - case cfragNoPrivateMemErr: - case cfragNoClientMemErr: - loaderror = "Out of memory"; - break; - default: - loaderror = "Unknown Code Fragment Manager error"; - break; - } - if (loaderror == NULL) { - handle = (void *) (library_id); - } else { - SDL_SetError("Failed loading %s: %s", sofile, loaderror); - } - return (handle); -} - -void * -SDL_LoadFunction(void *handle, const char *name) -{ - void *symbol = NULL; - const char *loaderror = NULL; - CFragSymbolClass class; - CFragConnectionID library_id = (CFragConnectionID) handle; - char pname[512]; - - SDL_strlcpy(pname, name, SDL_arraysize(pname)); - if (FindSymbol(library_id, C2PStr(pname), - (char **) &symbol, &class) != noErr) { - loaderror = "Symbol not found"; - } - - if (symbol == NULL) { - SDL_SetError("Failed loading %s: %s", name, loaderror); - } - return (symbol); -} - -void -SDL_UnloadObject(void *handle) -{ - CFragConnectionID library_id; - if (handle != NULL) { - library_id = (CFragConnectionID) handle; - CloseConnection(&library_id); - } -} - -#endif /* SDL_LOADSO_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/main/macos/SDL.r b/src/main/macos/SDL.r deleted file mode 100644 index 104507a32..000000000 --- a/src/main/macos/SDL.r +++ /dev/null @@ -1,58 +0,0 @@ -data 'DLOG' (1000) { - $"0072 0040 00EA 01B3 0001 0100 0000 0000 0000 03E8 0C43 6F6D 6D61 6E64 204C 696E" /* .r.@.ê.³...........è.Command Lin */ - $"6500 280A" /* e.( */ -}; - -data 'DLOG' (1001) { - $"0072 0040 00DB 01AC 0001 0100 0000 0000 0000 03E9 0C45 7272 6F72 2057 696E 646F" /* .r.@.Û.¬...........é.Error Windo */ - $"7700 280A" /* w.( */ -}; - -data 'DLOG' (1002) { - $"00B8 00BE 0147 01D8 0005 0100 0000 0000 0000 03EA 1643 6F6E 6669 726D 2044 6973" /* .¸.¾.G.Ø...........ê.Confirm Dis */ - $"706C 6179 2043 6861 6E67 6510 280A" /* play Change.( */ -}; - -data 'DITL' (1000) { - $"0005 0000 0000 0052 0113 0066 0158 0402 4F4B 0000 0000 0052 00C2 0066 0107 0406" /* .......R...f.X..OK.....R.Â.f.... */ - $"4361 6E63 656C 0000 0000 000F 0084 001F 0155 1000 0000 0000 0054 0019 0066 007D" /* Cancel.......„...U.......T...f.} */ - $"050E 4F75 7470 7574 2074 6F20 6669 6C65 0000 0000 000F 0018 001F 007F 080D 436F" /* ..Output to file..............Co */ - $"6D6D 616E 6420 4C69 6E65 3A00 0000 0000 0030 0018 0040 0158 0702 0080" /* mmand Line:......0...@.X...€ */ -}; - -data 'DITL' (1001) { - $"0001 0000 0000 0046 0120 005A 015A 0402 4F4B 0000 0000 0010 000A 0038 0160 0800" /* .......F. .Z.Z..OK.......Â.8.`.. */ -}; - -data 'DITL' (1002) { - $"0002 0000 0000 006F 001E 0083 0058 0406 4361 6E63 656C 0000 0000 006E 00C0 0082" /* .......o...ƒ.X..Cancel.....n.À.‚ */ - $"00FA 0402 4F4B 0000 0000 000E 000F 005F 010C 88B3 5468 6520 7365 7474 696E 6720" /* .ú..OK........._..ˆ³The setting */ - $"666F 7220 796F 7572 206D 6F6E 6974 6F72 2068 6173 2062 6565 6E20 6368 616E 6765" /* for your monitor has been change */ - $"642C 2061 6E64 2069 7420 6D61 7920 6E6F 7420 6265 2064 6973 706C 6179 6564 2063" /* d, and it may not be displayed c */ - $"6F72 7265 6374 6C79 2E20 546F 2063 6F6E 6669 726D 2074 6865 2064 6973 706C 6179" /* orrectly. To confirm the display */ - $"2069 7320 636F 7272 6563 742C 2063 6C69 636B 204F 4B2E 2054 6F20 7265 7475 726E" /* is correct, click OK. To return */ - $"2074 6F20 7468 6520 6F72 6967 696E 616C 2073 6574 7469 6E67 2C20 636C 6963 6B20" /* to the original setting, click */ - $"4361 6E63 656C 2E00" /* Cancel.. */ -}; - -data 'MENU' (128, preload) { - $"0080 0000 0000 0000 0000 FFFF FFFB 0114 0C41 626F 7574 2053 444C 2E2E 2E00 0000" /* .€........ÿÿÿû...About SDL...... */ - $"0001 2D00 0000 0000" /* ..-..... */ -}; - -data 'MENU' (129) { - $"0081 0000 0000 0000 0000 FFFF FFFF 0C56 6964 656F 2044 7269 7665 7219 4472 6177" /* .........ÿÿÿÿ.Video Driver.Draw */ - $"5370 726F 636B 6574 2028 4675 6C6C 7363 7265 656E 2900 0000 001E 546F 6F6C 426F" /* Sprocket (Fullscreen).....ToolBo */ - $"7820 2028 4675 6C6C 7363 7265 656E 2F57 696E 646F 7765 6429 0000 0000 00" /* x (Fullscreen/Windowed)..... */ -}; - -data 'CNTL' (128) { - $"0000 0000 0010 0140 0000 0100 0064 0081 03F0 0000 0000 0D56 6964 656F 2044 7269" /* .......@.....d..ð.....Video Dri */ - $"7665 723A" /* ver: */ -}; - -data 'TMPL' (128, "CLne") { - $"0C43 6F6D 6D61 6E64 204C 696E 6550 5354 520C 5669 6465 6F20 4472 6976 6572 5053" /* .Command LinePSTR.Video DriverPS */ - $"5452 0C53 6176 6520 546F 2046 696C 6542 4F4F 4C" /* TR.Save To FileBOOL */ -}; - diff --git a/src/main/macos/SDL_main.c b/src/main/macos/SDL_main.c deleted file mode 100644 index 8f121bb0c..000000000 --- a/src/main/macos/SDL_main.c +++ /dev/null @@ -1,647 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* This file takes care of command line argument parsing, and stdio redirection - in the MacOS environment. (stdio/stderr is *not* directed for Mach-O builds) - */ - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#include -#include -#include -#endif - -/* Include the SDL main definition header */ -#include "SDL.h" -#include "SDL_main.h" -#ifdef main -#undef main -#endif - -#if !(defined(__APPLE__) && defined(__MACH__)) -/* The standard output files */ -#define STDOUT_FILE "stdout.txt" -#define STDERR_FILE "stderr.txt" -#endif - -#if !defined(__MWERKS__) && !TARGET_API_MAC_CARBON - /* In MPW, the qd global has been removed from the libraries */ -QDGlobals qd; -#endif - -/* Structure for keeping prefs in 1 variable */ -typedef struct -{ - Str255 command_line; - Str255 video_driver_name; - Boolean output_to_file; -} PrefsRecord; - -/* See if the command key is held down at startup */ -static Boolean -CommandKeyIsDown(void) -{ - KeyMap theKeyMap; - - GetKeys(theKeyMap); - - if (((unsigned char *) theKeyMap)[6] & 0x80) { - return (true); - } - return (false); -} - -#if !(defined(__APPLE__) && defined(__MACH__)) - -/* Parse a command line buffer into arguments */ -static int -ParseCommandLine(char *cmdline, char **argv) -{ - char *bufp; - int argc; - - argc = 0; - for (bufp = cmdline; *bufp;) { - /* Skip leading whitespace */ - while (SDL_isspace(*bufp)) { - ++bufp; - } - /* Skip over argument */ - if (*bufp == '"') { - ++bufp; - if (*bufp) { - if (argv) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while (*bufp && (*bufp != '"')) { - ++bufp; - } - } else { - if (*bufp) { - if (argv) { - argv[argc] = bufp; - } - ++argc; - } - /* Skip over word */ - while (*bufp && !SDL_isspace(*bufp)) { - ++bufp; - } - } - if (*bufp) { - if (argv) { - *bufp = '\0'; - } - ++bufp; - } - } - if (argv) { - argv[argc] = NULL; - } - return (argc); -} - -/* Remove the output files if there was no output written */ -static void -cleanup_output(void) -{ - FILE *file; - int empty; - - /* Flush the output in case anything is queued */ - fclose(stdout); - fclose(stderr); - - /* See if the files have any output in them */ - file = fopen(STDOUT_FILE, "rb"); - if (file) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if (empty) { - remove(STDOUT_FILE); - } - } - file = fopen(STDERR_FILE, "rb"); - if (file) { - empty = (fgetc(file) == EOF) ? 1 : 0; - fclose(file); - if (empty) { - remove(STDERR_FILE); - } - } -} - -#endif //!(defined(__APPLE__) && defined(__MACH__)) - -static int -getCurrentAppName(StrFileName name) -{ - - ProcessSerialNumber process; - ProcessInfoRec process_info; - FSSpec process_fsp; - - process.highLongOfPSN = 0; - process.lowLongOfPSN = kCurrentProcess; - process_info.processInfoLength = sizeof(process_info); - process_info.processName = NULL; - process_info.processAppSpec = &process_fsp; - - if (noErr != GetProcessInformation(&process, &process_info)) - return 0; - - SDL_memcpy(name, process_fsp.name, process_fsp.name[0] + 1); - return 1; -} - -static int -getPrefsFile(FSSpec * prefs_fsp, int create) -{ - - /* The prefs file name is the application name, possibly truncated, */ - /* plus " Preferences */ - -#define SUFFIX " Preferences" -#define MAX_NAME 19 /* 31 - strlen (SUFFIX) */ - - short volume_ref_number; - long directory_id; - StrFileName prefs_name; - StrFileName app_name; - - /* Get Preferences folder - works with Multiple Users */ - if (noErr != - FindFolder(kOnSystemDisk, kPreferencesFolderType, kDontCreateFolder, - &volume_ref_number, &directory_id)) - exit(-1); - - if (!getCurrentAppName(app_name)) - exit(-1); - - /* Truncate if name is too long */ - if (app_name[0] > MAX_NAME) - app_name[0] = MAX_NAME; - - SDL_memcpy(prefs_name + 1, app_name + 1, app_name[0]); - SDL_memcpy(prefs_name + app_name[0] + 1, SUFFIX, strlen(SUFFIX)); - prefs_name[0] = app_name[0] + strlen(SUFFIX); - - /* Make the file spec for prefs file */ - if (noErr != - FSMakeFSSpec(volume_ref_number, directory_id, prefs_name, prefs_fsp)) - { - if (!create) - return 0; - else { - /* Create the prefs file */ - SDL_memcpy(prefs_fsp->name, prefs_name, prefs_name[0] + 1); - prefs_fsp->parID = directory_id; - prefs_fsp->vRefNum = volume_ref_number; - - FSpCreateResFile(prefs_fsp, 0x3f3f3f3f, 'pref', 0); // '????' parsed as trigraph - - if (noErr != ResError()) - return 0; - } - } - return 1; -} - -static int -readPrefsResource(PrefsRecord * prefs) -{ - - Handle prefs_handle; - - prefs_handle = Get1Resource('CLne', 128); - - if (prefs_handle != NULL) { - int offset = 0; -// int j = 0; - - HLock(prefs_handle); - - /* Get command line string */ - SDL_memcpy(prefs->command_line, *prefs_handle, - (*prefs_handle)[0] + 1); - - /* Get video driver name */ - offset += (*prefs_handle)[0] + 1; - SDL_memcpy(prefs->video_driver_name, *prefs_handle + offset, - (*prefs_handle)[offset] + 1); - - /* Get save-to-file option (1 or 0) */ - offset += (*prefs_handle)[offset] + 1; - prefs->output_to_file = (*prefs_handle)[offset]; - - ReleaseResource(prefs_handle); - - return ResError() == noErr; - } - - return 0; -} - -static int -writePrefsResource(PrefsRecord * prefs, short resource_file) -{ - - Handle prefs_handle; - - UseResFile(resource_file); - - prefs_handle = Get1Resource('CLne', 128); - if (prefs_handle != NULL) - RemoveResource(prefs_handle); - - prefs_handle = - NewHandle(prefs->command_line[0] + prefs->video_driver_name[0] + 4); - if (prefs_handle != NULL) { - - int offset; - - HLock(prefs_handle); - - /* Command line text */ - offset = 0; - SDL_memcpy(*prefs_handle, prefs->command_line, - prefs->command_line[0] + 1); - - /* Video driver name */ - offset += prefs->command_line[0] + 1; - SDL_memcpy(*prefs_handle + offset, prefs->video_driver_name, - prefs->video_driver_name[0] + 1); - - /* Output-to-file option */ - offset += prefs->video_driver_name[0] + 1; - *(*((char **) prefs_handle) + offset) = (char) prefs->output_to_file; - *(*((char **) prefs_handle) + offset + 1) = 0; - - AddResource(prefs_handle, 'CLne', 128, "\pCommand Line"); - WriteResource(prefs_handle); - UpdateResFile(resource_file); - DisposeHandle(prefs_handle); - - return ResError() == noErr; - } - - return 0; -} - -static int -readPreferences(PrefsRecord * prefs) -{ - - int no_error = 1; - FSSpec prefs_fsp; - - /* Check for prefs file first */ - if (getPrefsFile(&prefs_fsp, 0)) { - - short prefs_resource; - - prefs_resource = FSpOpenResFile(&prefs_fsp, fsRdPerm); - if (prefs_resource == -1) /* this shouldn't happen, but... */ - return 0; - - UseResFile(prefs_resource); - no_error = readPrefsResource(prefs); - CloseResFile(prefs_resource); - } - - /* Fall back to application's resource fork (reading only, so this is safe) */ - else { - - no_error = readPrefsResource(prefs); - } - - return no_error; -} - -static int -writePreferences(PrefsRecord * prefs) -{ - - int no_error = 1; - FSSpec prefs_fsp; - - /* Get prefs file, create if it doesn't exist */ - if (getPrefsFile(&prefs_fsp, 1)) { - - short prefs_resource; - - prefs_resource = FSpOpenResFile(&prefs_fsp, fsRdWrPerm); - if (prefs_resource == -1) - return 0; - no_error = writePrefsResource(prefs, prefs_resource); - CloseResFile(prefs_resource); - } - - return no_error; -} - -/* This is where execution begins */ -int -main(int argc, char *argv[]) -{ - -#if !(defined(__APPLE__) && defined(__MACH__)) -#pragma unused(argc, argv) -#endif - -#define DEFAULT_ARGS "\p" /* pascal string for default args */ -#define DEFAULT_VIDEO_DRIVER "\ptoolbox" /* pascal string for default video driver name */ -#define DEFAULT_OUTPUT_TO_FILE 1 /* 1 == output to file, 0 == no output */ - -#define VIDEO_ID_DRAWSPROCKET 1 /* these correspond to popup menu choices */ -#define VIDEO_ID_TOOLBOX 2 - - PrefsRecord prefs = - { DEFAULT_ARGS, DEFAULT_VIDEO_DRIVER, DEFAULT_OUTPUT_TO_FILE }; - -#if !(defined(__APPLE__) && defined(__MACH__)) - int nargs; - char **args; - char *commandLine; - - StrFileName appNameText; -#endif - int videodriver = VIDEO_ID_TOOLBOX; - int settingsChanged = 0; - - long i; - - /* Kyle's SDL command-line dialog code ... */ -#if !TARGET_API_MAC_CARBON - InitGraf(&qd.thePort); - InitFonts(); - InitWindows(); - InitMenus(); - InitDialogs(nil); -#endif - InitCursor(); - FlushEvents(everyEvent, 0); -#if !TARGET_API_MAC_CARBON - MaxApplZone(); -#endif - MoreMasters(); - MoreMasters(); -#if 0 - /* Intialize SDL, and put up a dialog if we fail */ - if (SDL_Init(0) < 0) { - -#define kErr_OK 1 -#define kErr_Text 2 - - DialogPtr errorDialog; - short dummyType; - Rect dummyRect; - Handle dummyHandle; - short itemHit; - - errorDialog = GetNewDialog(1001, nil, (WindowPtr) - 1); - if (errorDialog == NULL) - return -1; - DrawDialog(errorDialog); - - GetDialogItem(errorDialog, kErr_Text, &dummyType, &dummyHandle, - &dummyRect); - SetDialogItemText(dummyHandle, "\pError Initializing SDL"); - -#if TARGET_API_MAC_CARBON - SetPort(GetDialogPort(errorDialog)); -#else - SetPort(errorDialog); -#endif - do { - ModalDialog(nil, &itemHit); - } - while (itemHit != kErr_OK); - - DisposeDialog(errorDialog); - exit(-1); - } - atexit(cleanup_output); - atexit(SDL_Quit); -#endif - -/* Set up SDL's QuickDraw environment */ -#if !TARGET_API_MAC_CARBON - SDL_InitQuickDraw(&qd); -#endif - - if (readPreferences(&prefs)) { - - if (SDL_memcmp(prefs.video_driver_name + 1, "DSp", 3) == 0) - videodriver = 1; - else if (SDL_memcmp(prefs.video_driver_name + 1, "toolbox", 7) == 0) - videodriver = 2; - } - - if (CommandKeyIsDown()) { - -#define kCL_OK 1 -#define kCL_Cancel 2 -#define kCL_Text 3 -#define kCL_File 4 -#define kCL_Video 6 - - DialogPtr commandDialog; - short dummyType; - Rect dummyRect; - Handle dummyHandle; - short itemHit; -#if TARGET_API_MAC_CARBON - ControlRef control; -#endif - - /* Assume that they will change settings, rather than do exhaustive check */ - settingsChanged = 1; - - /* Create dialog and display it */ - commandDialog = GetNewDialog(1000, nil, (WindowPtr) - 1); -#if TARGET_API_MAC_CARBON - SetPort(GetDialogPort(commandDialog)); -#else - SetPort(commandDialog); -#endif - - /* Setup controls */ -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_File, &control); - SetControlValue(control, prefs.output_to_file); -#else - GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - SetControlValue((ControlHandle) dummyHandle, prefs.output_to_file); -#endif - - GetDialogItem(commandDialog, kCL_Text, &dummyType, &dummyHandle, - &dummyRect); - SetDialogItemText(dummyHandle, prefs.command_line); - -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_Video, &control); - SetControlValue(control, videodriver); -#else - GetDialogItem(commandDialog, kCL_Video, &dummyType, &dummyHandle, - &dummyRect); - SetControlValue((ControlRef) dummyHandle, videodriver); -#endif - - SetDialogDefaultItem(commandDialog, kCL_OK); - SetDialogCancelItem(commandDialog, kCL_Cancel); - - do { - - ModalDialog(nil, &itemHit); /* wait for user response */ - - /* Toggle command-line output checkbox */ - if (itemHit == kCL_File) { -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_File, &control); - SetControlValue(control, !GetControlValue(control)); -#else - GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - SetControlValue((ControlHandle) dummyHandle, - !GetControlValue((ControlHandle) - dummyHandle)); -#endif - } - - } - while (itemHit != kCL_OK && itemHit != kCL_Cancel); - - /* Get control values, even if they did not change */ - GetDialogItem(commandDialog, kCL_Text, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - GetDialogItemText(dummyHandle, prefs.command_line); - -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_File, &control); - prefs.output_to_file = GetControlValue(control); -#else - GetDialogItem(commandDialog, kCL_File, &dummyType, &dummyHandle, &dummyRect); /* MJS */ - prefs.output_to_file = GetControlValue((ControlHandle) dummyHandle); -#endif - -#if TARGET_API_MAC_CARBON - GetDialogItemAsControl(commandDialog, kCL_Video, &control); - videodriver = GetControlValue(control); -#else - GetDialogItem(commandDialog, kCL_Video, &dummyType, &dummyHandle, - &dummyRect); - videodriver = GetControlValue((ControlRef) dummyHandle); -#endif - - DisposeDialog(commandDialog); - - if (itemHit == kCL_Cancel) { - exit(0); - } - } - - /* Set pseudo-environment variables for video driver, update prefs */ - switch (videodriver) { - case VIDEO_ID_DRAWSPROCKET: - SDL_putenv("SDL_VIDEODRIVER=DSp"); - SDL_memcpy(prefs.video_driver_name, "\pDSp", 4); - break; - case VIDEO_ID_TOOLBOX: - SDL_putenv("SDL_VIDEODRIVER=toolbox"); - SDL_memcpy(prefs.video_driver_name, "\ptoolbox", 8); - break; - } - -#if !(defined(__APPLE__) && defined(__MACH__)) - /* Redirect standard I/O to files */ - if (prefs.output_to_file) { - freopen(STDOUT_FILE, "w", stdout); - freopen(STDERR_FILE, "w", stderr); - } else { - fclose(stdout); - fclose(stderr); - } -#endif - - if (settingsChanged) { - /* Save the prefs, even if they might not have changed (but probably did) */ - if (!writePreferences(&prefs)) - fprintf(stderr, "WARNING: Could not save preferences!\n"); - } -#if !(defined(__APPLE__) && defined(__MACH__)) - appNameText[0] = 0; - getCurrentAppName(appNameText); /* check for error here ? */ - - commandLine = (char *) malloc(appNameText[0] + prefs.command_line[0] + 2); - if (commandLine == NULL) { - exit(-1); - } - - /* Rather than rewrite ParseCommandLine method, let's replace */ - /* any spaces in application name with underscores, */ - /* so that the app name is only 1 argument */ - for (i = 1; i < 1 + appNameText[0]; i++) - if (appNameText[i] == ' ') - appNameText[i] = '_'; - - /* Copy app name & full command text to command-line C-string */ - SDL_memcpy(commandLine, appNameText + 1, appNameText[0]); - commandLine[appNameText[0]] = ' '; - SDL_memcpy(commandLine + appNameText[0] + 1, prefs.command_line + 1, - prefs.command_line[0]); - commandLine[appNameText[0] + 1 + prefs.command_line[0]] = '\0'; - - /* Parse C-string into argv and argc */ - nargs = ParseCommandLine(commandLine, NULL); - args = (char **) malloc((nargs + 1) * (sizeof *args)); - if (args == NULL) { - exit(-1); - } - ParseCommandLine(commandLine, args); - - /* Run the main application code */ - SDL_main(nargs, args); - free(args); - free(commandLine); - - /* Remove useless stdout.txt and stderr.txt */ - cleanup_output(); -#else // defined(__APPLE__) && defined(__MACH__) - SDL_main(argc, argv); -#endif - - /* Exit cleanly, calling atexit() functions */ - exit(0); - - /* Never reached, but keeps the compiler quiet */ - return (0); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/main/macos/SIZE.r b/src/main/macos/SIZE.r deleted file mode 100644 index b9cd942c8..000000000 --- a/src/main/macos/SIZE.r +++ /dev/null @@ -1,24 +0,0 @@ - -#include "Processes.r" - -resource 'SIZE' (-1) { - reserved, - acceptSuspendResumeEvents, - reserved, - canBackground, - doesActivateOnFGSwitch, - backgroundAndForeground, - getFrontClicks, - ignoreAppDiedEvents, - is32BitCompatible, - isHighLevelEventAware, - onlyLocalHLEvents, - notStationeryAware, - useTextEditServices, - reserved, - reserved, - reserved, - 5242880, // 5 megs minimum - 5242880 // 5 megs maximum -}; - diff --git a/src/main/macos/exports/Makefile b/src/main/macos/exports/Makefile deleted file mode 100644 index 0fd79fddf..000000000 --- a/src/main/macos/exports/Makefile +++ /dev/null @@ -1,34 +0,0 @@ - -EXPORTS = SDL.x -HEADERS = \ - ../../../../include/SDL.h \ - ../../../../include/SDL_active.h \ - ../../../../include/SDL_audio.h \ - ../../../../include/SDL_cdrom.h \ - ../../../../include/SDL_copying.h \ - ../../../../include/SDL_cpuinfo.h \ - ../../../../include/SDL_endian.h \ - ../../../../include/SDL_error.h \ - ../../../../include/SDL_events.h \ - ../../../../include/SDL_joystick.h \ - ../../../../include/SDL_keyboard.h \ - ../../../../include/SDL_keysym.h \ - ../../../../include/SDL_loadso.h \ - ../../../../include/SDL_mouse.h \ - ../../../../include/SDL_mutex.h \ - ../../../../include/SDL_quit.h \ - ../../../../include/SDL_rwops.h \ - ../../../../include/SDL_syswm.h \ - ../../../../include/SDL_thread.h \ - ../../../../include/SDL_timer.h \ - ../../../../include/SDL_version.h \ - ../../../../include/SDL_video.h - - -all: $(EXPORTS) - -$(EXPORTS): Makefile gendef.pl $(HEADERS) - perl gendef.pl $(HEADERS) >$@ || rm $@ - -clean: - rm -f $(EXPORTS) diff --git a/src/main/macos/exports/SDL.x b/src/main/macos/exports/SDL.x deleted file mode 100644 index 388bf1dc8..000000000 --- a/src/main/macos/exports/SDL.x +++ /dev/null @@ -1,206 +0,0 @@ - SDL_Init - SDL_InitSubSystem - SDL_QuitSubSystem - SDL_WasInit - SDL_Quit - SDL_GetAppState - SDL_AudioInit - SDL_AudioQuit - SDL_AudioDriverName - SDL_OpenAudio - SDL_GetAudioStatus - SDL_PauseAudio - SDL_LoadWAV_RW - SDL_FreeWAV - SDL_BuildAudioCVT - SDL_ConvertAudio - SDL_MixAudio - SDL_LockAudio - SDL_UnlockAudio - SDL_CloseAudio - SDL_CDNumDrives - SDL_CDName - SDL_CDOpen - SDL_CDStatus - SDL_CDPlayTracks - SDL_CDPlay - SDL_CDPause - SDL_CDResume - SDL_CDStop - SDL_CDEject - SDL_CDClose - SDL_HasRDTSC - SDL_HasMMX - SDL_HasMMXExt - SDL_Has3DNow - SDL_Has3DNowExt - SDL_HasSSE - SDL_HasSSE2 - SDL_HasAltiVec - SDL_SetError - SDL_GetError - SDL_ClearError - SDL_Error - SDL_PumpEvents - SDL_PeepEvents - SDL_PollEvent - SDL_WaitEvent - SDL_PushEvent - SDL_SetEventFilter - SDL_GetEventFilter - SDL_EventState - SDL_NumJoysticks - SDL_JoystickName - SDL_JoystickOpen - SDL_JoystickOpened - SDL_JoystickIndex - SDL_JoystickNumAxes - SDL_JoystickNumBalls - SDL_JoystickNumHats - SDL_JoystickNumButtons - SDL_JoystickUpdate - SDL_JoystickEventState - SDL_JoystickGetAxis - SDL_JoystickGetHat - SDL_JoystickGetBall - SDL_JoystickGetButton - SDL_JoystickClose - SDL_EnableUNICODE - SDL_EnableKeyRepeat - SDL_GetKeyRepeat - SDL_GetKeyState - SDL_GetModState - SDL_SetModState - SDL_GetKeyName - SDL_LoadObject - SDL_LoadFunction - SDL_UnloadObject - SDL_GetMouseState - SDL_GetRelativeMouseState - SDL_WarpMouse - SDL_CreateCursor - SDL_SetCursor - SDL_GetCursor - SDL_FreeCursor - SDL_ShowCursor - SDL_CreateMutex - SDL_mutexP - SDL_mutexV - SDL_DestroyMutex - SDL_CreateSemaphore - SDL_DestroySemaphore - SDL_SemWait - SDL_SemTryWait - SDL_SemWaitTimeout - SDL_SemPost - SDL_SemValue - SDL_CreateCond - SDL_DestroyCond - SDL_CondSignal - SDL_CondBroadcast - SDL_CondWait - SDL_CondWaitTimeout - SDL_RWFromFile - SDL_RWFromFP - SDL_RWFromMem - SDL_RWFromConstMem - SDL_AllocRW - SDL_FreeRW - SDL_ReadLE16 - SDL_ReadBE16 - SDL_ReadLE32 - SDL_ReadBE32 - SDL_ReadLE64 - SDL_ReadBE64 - SDL_WriteLE16 - SDL_WriteBE16 - SDL_WriteLE32 - SDL_WriteBE32 - SDL_WriteLE64 - SDL_WriteBE64 - SDL_GetWMInfo - SDL_CreateThread - SDL_CreateThread - SDL_ThreadID - SDL_GetThreadID - SDL_WaitThread - SDL_KillThread - SDL_GetTicks - SDL_Delay - SDL_SetTimer - SDL_AddTimer - SDL_RemoveTimer - SDL_Linked_Version - SDL_VideoInit - SDL_VideoQuit - SDL_VideoDriverName - SDL_GetVideoSurface - SDL_GetVideoInfo - SDL_VideoModeOK - SDL_ListModes - SDL_SetVideoMode - SDL_UpdateRects - SDL_UpdateRect - SDL_Flip - SDL_SetGamma - SDL_SetGammaRamp - SDL_GetGammaRamp - SDL_SetColors - SDL_SetPalette - SDL_MapRGB - SDL_MapRGBA - SDL_GetRGB - SDL_GetRGBA - SDL_CreateRGBSurface - SDL_CreateRGBSurfaceFrom - SDL_FreeSurface - SDL_LockSurface - SDL_UnlockSurface - SDL_LoadBMP_RW - SDL_SaveBMP_RW - SDL_SetColorKey - SDL_SetAlpha - SDL_SetClipRect - SDL_GetClipRect - SDL_ConvertSurface - SDL_UpperBlit - SDL_LowerBlit - SDL_FillRect - SDL_DisplayFormat - SDL_DisplayFormatAlpha - SDL_CreateYUVOverlay - SDL_LockYUVOverlay - SDL_UnlockYUVOverlay - SDL_DisplayYUVOverlay - SDL_FreeYUVOverlay - SDL_GL_LoadLibrary - SDL_GL_GetProcAddress - SDL_GL_SetAttribute - SDL_GL_GetAttribute - SDL_GL_SwapBuffers - SDL_WM_SetCaption - SDL_WM_GetCaption - SDL_WM_SetIcon - SDL_WM_IconifyWindow - SDL_WM_ToggleFullScreen - SDL_WM_GrabInput - SDL_SoftStretch - SDL_putenv - SDL_getenv - SDL_qsort - SDL_revcpy - SDL_strlcpy - SDL_strlcat - SDL_strdup - SDL_strrev - SDL_strupr - SDL_strlwr - SDL_ltoa - SDL_ultoa - SDL_strcasecmp - SDL_strncasecmp - SDL_snprintf - SDL_vsnprintf - SDL_iconv - SDL_iconv_string - SDL_InitQuickDraw diff --git a/src/main/macos/exports/gendef.pl b/src/main/macos/exports/gendef.pl deleted file mode 100644 index c27394b38..000000000 --- a/src/main/macos/exports/gendef.pl +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/perl -# -# Program to take a set of header files and generate DLL export definitions - -# Special exports to ignore for this platform - -while ( ($file = shift(@ARGV)) ) { - if ( ! defined(open(FILE, $file)) ) { - warn "Couldn't open $file: $!\n"; - next; - } - $printed_header = 0; - $file =~ s,.*/,,; - while () { - if ( / DECLSPEC.* SDLCALL ([^\s\(]+)/ ) { - if ( not $exclude{$1} ) { - print "\t$1\n"; - } - } - } - close(FILE); -} - -# Special exports to include for this platform -print "\tSDL_putenv\n"; -print "\tSDL_getenv\n"; -print "\tSDL_qsort\n"; -print "\tSDL_revcpy\n"; -print "\tSDL_strlcpy\n"; -print "\tSDL_strlcat\n"; -print "\tSDL_strdup\n"; -print "\tSDL_strrev\n"; -print "\tSDL_strupr\n"; -print "\tSDL_strlwr\n"; -print "\tSDL_ltoa\n"; -print "\tSDL_ultoa\n"; -print "\tSDL_strcasecmp\n"; -print "\tSDL_strncasecmp\n"; -print "\tSDL_snprintf\n"; -print "\tSDL_vsnprintf\n"; -print "\tSDL_iconv\n"; -print "\tSDL_iconv_string\n"; -print "\tSDL_InitQuickDraw\n"; diff --git a/src/timer/macos/FastTimes.c b/src/timer/macos/FastTimes.c deleted file mode 100644 index 536c862ff..000000000 --- a/src/timer/macos/FastTimes.c +++ /dev/null @@ -1,348 +0,0 @@ -/* File "FastTimes.c" - Original code by Matt Slot */ -/* Created 4/24/99 - This file is hereby placed in the public domain */ -/* Updated 5/21/99 - Calibrate to VIA, add TBR support, renamed functions */ -/* Updated 10/4/99 - Use AbsoluteToNanoseconds() in case Absolute = double */ -/* Updated 2/15/00 - Check for native Time Manager, no need to calibrate */ -/* Updated 2/19/00 - Fixed default value for gScale under native Time Mgr */ -/* Updated 3/21/00 - Fixed ns conversion, create 2 different scale factors */ -/* Updated 5/03/00 - Added copyright and placed into PD. No code changes */ -/* Updated 8/01/00 - Made "Carbon-compatible" by replacing LMGetTicks() */ - -/* This file is Copyright (C) Matt Slot, 1999-2000. It is hereby placed into - the public domain. The author makes no warranty as to fitness or stability */ - -#include -#include -#include -#include -#include - -#include "FastTimes.h" - -#ifdef TARGET_CPU_PPC -#undef GENERATINGPOWERPC /* stop whining */ -#define GENERATINGPOWERPC TARGET_CPU_PPC -#endif - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* - On 680x0 machines, we just use Microseconds(). - - On PowerPC machines, we try several methods: - * DriverServicesLib is available on all PCI PowerMacs, and perhaps - some NuBus PowerMacs. If it is, we use UpTime() : Overhead = 2.1 µsec. - * The PowerPC 601 has a built-in "real time clock" RTC, and we fall - back to that, accessing it directly from asm. Overhead = 1.3 µsec. - * Later PowerPCs have an accurate "time base register" TBR, and we - fall back to that, access it from PowerPC asm. Overhead = 1.3 µsec. - * We can also try Microseconds() which is emulated : Overhead = 36 µsec. - - On PowerPC machines, we avoid the following: - * OpenTransport is available on all PCI and some NuBus PowerMacs, but it - uses UpTime() if available and falls back to Microseconds() otherwise. - * InputSprocket is available on many PowerMacs, but again it uses - UpTime() if available and falls back to Microseconds() otherwise. - - Another PowerPC note: certain configurations, especially 3rd party upgrade - cards, may return inaccurate timings for the CPU or memory bus -- causing - skew in various system routines (up to 20% drift!). The VIA chip is very - accurate, and it's the basis for the Time Manager and Microseconds(). - Unfortunately, it's also very slow because the MacOS has to (a) switch to - 68K and (b) poll for a VIA event. - - We compensate for the drift by calibrating a floating point scale factor - between our fast method and the accurate timer at startup, then convert - each sample quickly on the fly. I'd rather not have the initialization - overhead -- but it's simply necessary for accurate timing. You can drop - it down to 30 ticks if you prefer, but that's as low as I'd recommend. - - Under MacOS 9, "new world" Macs (iMacs, B+W G3s and G+W G4s) have a native - Time Manager implementation: UpTime(), Microseconds(), and TickCount() are - all based on the same underlying counter. This makes it silly to calibrate - UpTime() against TickCount(). We now check for this feature using Gestalt(), - and skip the whole calibration step if possible. - -*/ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -#define RTCToNano(w) ((double) (w).hi * 1000000000.0 + (double) (w).lo) -#define WideTo64bit(w) (*(UInt64 *) &(w)) - -/* LMGetTicks() is not in Carbon and TickCount() has a fair bit of overhead, - so for speed we always read lowmem directly. This is a Mac OS X no-no, but - it always work on those systems that don't have a native Time Manager (ie, - anything before MacOS 9) -- regardless whether we are in Carbon or not! */ -#define MyLMGetTicks() (*(volatile UInt32 *) 0x16A) - -#if GENERATINGPOWERPC - -static asm UnsignedWide PollRTC(void); -static asm UnsignedWide PollTBR(void); -static Ptr FindFunctionInSharedLib(StringPtr libName, StringPtr funcName); - -static Boolean gInited = false; -static Boolean gNative = false; -static Boolean gUseRTC = false; -static Boolean gUseTBR = false; -static double gScaleUSec = 1.0 / 1000.0; /* 1 / ( nsec / usec) */ -static double gScaleMSec = 1.0 / 1000000.0; /* 1 / ( nsec / msec) */ - -/* Functions loaded from DriverServicesLib */ -typedef AbsoluteTime(*UpTimeProcPtr) (void); -typedef Nanoseconds(*A2NSProcPtr) (AbsoluteTime); -static UpTimeProcPtr gUpTime = NULL; -static A2NSProcPtr gA2NS = NULL; - -#endif /* GENERATINGPOWERPC */ - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -void -FastInitialize() -{ - SInt32 result; - - if (!gInited) { - -#if GENERATINGPOWERPC - - /* Initialize the feature flags */ - gNative = gUseRTC = gUseTBR = false; - - /* We use CFM to find and load needed symbols from shared libraries, so - the application doesn't have to weak-link them, for convenience. */ - gUpTime = - (UpTimeProcPtr) FindFunctionInSharedLib("\pDriverServicesLib", - "\pUpTime"); - if (gUpTime) - gA2NS = (A2NSProcPtr) - FindFunctionInSharedLib("\pDriverServicesLib", - "\pAbsoluteToNanoseconds"); - if (!gA2NS) - gUpTime = nil; /* Pedantic but necessary */ - - if (gUpTime) { - /* If we loaded UpTime(), then we need to know if the system has - a native implementation of the Time Manager. If so, then it's - pointless to calculate a scale factor against the missing VIA */ - - /* gestaltNativeTimeMgr = 4 in some future version of the headers */ - if (!Gestalt(gestaltTimeMgrVersion, &result) && - (result > gestaltExtendedTimeMgr)) - gNative = true; - } else { - /* If no DriverServicesLib, use Gestalt() to get the processor type. - Only NuBus PowerMacs with old System Software won't have DSL, so - we know it should either be a 601 or 603. */ - - /* Use the processor gestalt to determine which register to use */ - if (!Gestalt(gestaltNativeCPUtype, &result)) { - if (result == gestaltCPU601) - gUseRTC = true; - else if (result > gestaltCPU601) - gUseTBR = true; - } - } - - /* Now calculate a scale factor to keep us accurate. */ - if ((gUpTime && !gNative) || gUseRTC || gUseTBR) { - UInt64 tick, usec1, usec2; - UnsignedWide wide; - - /* Wait for the beginning of the very next tick */ - for (tick = MyLMGetTicks() + 1; tick > MyLMGetTicks();); - - /* Poll the selected timer and prepare it (since we have time) */ - wide = (gUpTime) ? (*gA2NS) ((*gUpTime) ()) : - ((gUseRTC) ? PollRTC() : PollTBR()); - usec1 = (gUseRTC) ? RTCToNano(wide) : WideTo64bit(wide); - - /* Wait for the exact 60th tick to roll over */ - while (tick + 60 > MyLMGetTicks()); - - /* Poll the selected timer again and prepare it */ - wide = (gUpTime) ? (*gA2NS) ((*gUpTime) ()) : - ((gUseRTC) ? PollRTC() : PollTBR()); - usec2 = (gUseRTC) ? RTCToNano(wide) : WideTo64bit(wide); - - /* Calculate a scale value that will give microseconds per second. - Remember, there are actually 60.15 ticks in a second, not 60. */ - gScaleUSec = (60.0 * 1000000.0) / ((usec2 - usec1) * 60.15); - gScaleMSec = gScaleUSec / 1000.0; - } -#endif /* GENERATINGPOWERPC */ - - /* We've initialized our globals */ - gInited = true; - } -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -UInt64 -FastMicroseconds() -{ - UnsignedWide wide; - UInt64 usec; - -#if GENERATINGPOWERPC - /* Initialize globals the first time we are called */ - if (!gInited) - FastInitialize(); - - if (gNative) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - usec = (double) WideTo64bit(wide) * gScaleUSec + 0.5; - } else if (gUpTime) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - usec = (double) WideTo64bit(wide) * gScaleUSec + 0.5; - } else if (gUseTBR) { - /* On a recent PowerPC, we poll the TBR directly */ - wide = PollTBR(); - usec = (double) WideTo64bit(wide) * gScaleUSec + 0.5; - } else if (gUseRTC) { - /* On a 601, we can poll the RTC instead */ - wide = PollRTC(); - usec = (double) RTCToNano(wide) * gScaleUSec + 0.5; - } else -#endif /* GENERATINGPOWERPC */ - { - /* If all else fails, suffer the mixed mode overhead */ - Microseconds(&wide); - usec = WideTo64bit(wide); - } - - return (usec); -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -UInt64 -FastMilliseconds() -{ - UnsignedWide wide; - UInt64 msec; - -#if GENERATINGPOWERPC - /* Initialize globals the first time we are called */ - if (!gInited) - FastInitialize(); - - if (gNative) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - msec = (double) WideTo64bit(wide) * gScaleMSec + 0.5; - } else if (gUpTime) { - /* Use DriverServices if it's available -- it's fast and compatible */ - wide = (*gA2NS) ((*gUpTime) ()); - msec = (double) WideTo64bit(wide) * gScaleMSec + 0.5; - } else if (gUseTBR) { - /* On a recent PowerPC, we poll the TBR directly */ - wide = PollTBR(); - msec = (double) WideTo64bit(wide) * gScaleMSec + 0.5; - } else if (gUseRTC) { - /* On a 601, we can poll the RTC instead */ - wide = PollRTC(); - msec = (double) RTCToNano(wide) * gScaleMSec + 0.5; - } else -#endif /* GENERATINGPOWERPC */ - { - /* If all else fails, suffer the mixed mode overhead */ - Microseconds(&wide); - msec = ((double) WideTo64bit(wide) + 500.0) / 1000.0; - } - - return (msec); -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -StringPtr -FastMethod() -{ - StringPtr method = "\p"; - -#if GENERATINGPOWERPC - /* Initialize globals the first time we are called */ - if (!gInited) - FastInitialize(); - - if (gNative) { - /* The Time Manager and UpTime() are entirely native on this machine */ - method = "\pNative UpTime()"; - } else if (gUpTime) { - /* Use DriverServices if it's available -- it's fast and compatible */ - method = "\pUpTime()"; - } else if (gUseTBR) { - /* On a recent PowerPC, we poll the TBR directly */ - method = "\pPowerPC TBR"; - } else if (gUseRTC) { - /* On a 601, we can poll the RTC instead */ - method = "\pPowerPC RTC"; - } else -#endif /* GENERATINGPOWERPC */ - { - /* If all else fails, suffer the mixed mode overhead */ - method = "\pMicroseconds()"; - } - - return (method); -} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -#pragma mark - - -#if GENERATINGPOWERPC -asm static UnsignedWide -PollRTC_() -{ - entry PollRTC /* Avoid CodeWarrior glue */ - machine 601 @ AGAIN:mfrtcu r4 /* RTCU = SPR 4 */ - mfrtcl r5 /* RTCL = SPR 5 */ - mfrtcu r6 cmpw r4, r6 bne @ AGAIN stw r4, 0(r3) stw r5, 4(r3) blr} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -asm static UnsignedWide -PollTBR_() -{ - entry PollTBR /* Avoid CodeWarrior glue */ - machine 604 @ AGAIN:mftbu r4 /* TBRU = SPR 268 */ - mftb r5 /* TBRL = SPR 269 */ - mftbu r6 cmpw r4, r6 bne @ AGAIN stw r4, 0(r3) stw r5, 4(r3) blr} - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -static Ptr -FindFunctionInSharedLib(StringPtr libName, StringPtr funcName) -{ - OSErr error = noErr; - Str255 errorStr; - Ptr func = NULL; - Ptr entry = NULL; - CFragSymbolClass symClass; - CFragConnectionID connID; - - /* Find CFM containers for the current archecture -- CFM-PPC or CFM-68K */ - if ( /* error = */ GetSharedLibrary(libName, kCompiledCFragArch, - kLoadCFrag, &connID, &entry, - errorStr)) - return (NULL); - if ( /* error = */ FindSymbol(connID, funcName, &func, &symClass)) - return (NULL); - - return (func); -} -#endif /* GENERATINGPOWERPC */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/macos/FastTimes.h b/src/timer/macos/FastTimes.h deleted file mode 100644 index 556eb1307..000000000 --- a/src/timer/macos/FastTimes.h +++ /dev/null @@ -1,28 +0,0 @@ -/* File "FastTimes.h" - Original code by Matt Slot */ -#include "SDL_config.h" -/* Created 4/24/99 - This file is hereby placed in the public domain */ -/* Updated 5/21/99 - Calibrate to VIA, add TBR support, renamed functions */ -/* Updated 10/4/99 - Use AbsoluteToNanoseconds() in case Absolute = double */ -/* Updated 2/15/00 - Check for native Time Manager, no need to calibrate */ -/* Updated 3/21/00 - Fixed ns conversion, create 2 different scale factors */ -/* Updated 5/03/00 - Added copyright and placed into PD. No code changes */ - -/* This file is Copyright (C) Matt Slot, 1999-2000. It is hereby placed into - the public domain. The author makes no warranty as to fitness or stability */ - -#ifndef __FAST_TIMES_HEADER__ -#define __FAST_TIMES_HEADER__ - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -extern void FastInitialize(void); -extern UInt64 FastMicroseconds(void); -extern UInt64 FastMilliseconds(void); -extern StringPtr FastMethod(void); - -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ -/* **** **** **** **** **** **** **** **** **** **** **** **** **** **** **** */ - -#endif /* __FAST_TIMES_HEADER__ */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/macos/SDL_MPWtimer.c b/src/timer/macos/SDL_MPWtimer.c deleted file mode 100644 index 707edc77a..000000000 --- a/src/timer/macos/SDL_MPWtimer.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_TIMER_MACOS - -#include -#include -#include -#include -#include - -#include - -#include "SDL_timer.h" -#include "../SDL_timer_c.h" - -#define MS_PER_TICK (1000/60) /* MacOS tick = 1/60 second */ - -/* Note: This is only a step above the original 1/60s implementation. - * For a good implementation, see FastTimes.[ch], by Matt Slot. - */ -#define USE_MICROSECONDS -#define WideTo64bit(w) (*(UInt64 *) &(w)) - -UInt64 start; - -void -SDL_StartTicks(void) -{ -#ifdef USE_MICROSECONDS - UnsignedWide now; - - Microseconds(&now); - start = WideTo64bit(now); -#else - /* FIXME: Should we implement a wrapping algorithm, like Win32? */ -#endif -} - -Uint32 -SDL_GetTicks(void) -{ -#ifdef USE_MICROSECONDS - UnsignedWide now; - - Microseconds(&now); - return (Uint32) ((WideTo64bit(now) - start) / 1000); -#else - return (LMGetTicks() * MS_PER_TICK); -#endif -} - -void -SDL_Delay(Uint32 ms) -{ -#ifdef USE_MICROSECONDS - Uint32 end_ms; - - end_ms = SDL_GetTicks() + ms; - do { - /* FIXME: Yield CPU? */ ; - } - while (SDL_GetTicks() < end_ms); -#else - UInt32 unused; /* MJS */ - Delay(ms / MS_PER_TICK, &unused); -#endif -} - - -/* Data to handle a single periodic alarm */ -typedef struct _ExtendedTimerRec -{ - TMTask tmTask; - ProcessSerialNumber taskPSN; -} ExtendedTimerRec, *ExtendedTimerPtr; - -static ExtendedTimerRec gExtendedTimerRec; - - -int -SDL_SYS_TimerInit(void) -{ - /* We don't need a setup? */ - return (0); -} - -void -SDL_SYS_TimerQuit(void) -{ - /* We don't need a cleanup? */ - return; -} - -/* Our Stub routine to set up and then call the real routine. */ -pascal void -TimerCallbackProc(TMTaskPtr tmTaskPtr) -{ - Uint32 ms; - - WakeUpProcess(&((ExtendedTimerPtr) tmTaskPtr)->taskPSN); - - ms = SDL_alarm_callback(SDL_alarm_interval); - if (ms) { - SDL_alarm_interval = ROUND_RESOLUTION(ms); - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - } else { - SDL_alarm_interval = 0; - } -} - -int -SDL_SYS_StartTimer(void) -{ - /* - * Configure the global structure that stores the timing information. - */ - gExtendedTimerRec.tmTask.qLink = NULL; - gExtendedTimerRec.tmTask.qType = 0; - gExtendedTimerRec.tmTask.tmAddr = NewTimerUPP(TimerCallbackProc); - gExtendedTimerRec.tmTask.tmCount = 0; - gExtendedTimerRec.tmTask.tmWakeUp = 0; - gExtendedTimerRec.tmTask.tmReserved = 0; - GetCurrentProcess(&gExtendedTimerRec.taskPSN); - - /* Install the task record */ - InsXTime((QElemPtr) & gExtendedTimerRec.tmTask); - - /* Go! */ - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - return (0); -} - -void -SDL_SYS_StopTimer(void) -{ - RmvTime((QElemPtr) & gExtendedTimerRec.tmTask); -} - -#endif /* SDL_TIMER_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/macos/SDL_systimer.c b/src/timer/macos/SDL_systimer.c deleted file mode 100644 index 54bb2a0ce..000000000 --- a/src/timer/macos/SDL_systimer.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifdef SDL_TIMER_MACOS - -#include -#include -#include -#include -#include - -#include - -#include "SDL_timer.h" -#include "../SDL_timer_c.h" - -#include "FastTimes.h" - -#if TARGET_API_MAC_CARBON -#define NewTimerProc NewTimerUPP -#endif - -#define MS_PER_TICK (1000.0/60.0) /* MacOS tick = 1/60 second */ - - -#define kTwoPower32 (4294967296.0) /* 2^32 */ - -static double start_tick; -static int is_fast_inited = 0; - -void -SDL_StartTicks(void) -{ - if (!is_fast_inited) // important to check or FastTime may hang machine! - SDL_SYS_TimerInit(); - - start_tick = FastMicroseconds(); -} - -Uint32 -SDL_GetTicks(void) -{ - - if (!is_fast_inited) - SDL_SYS_TimerInit(); - - return FastMilliseconds(); -} - -void -SDL_Delay(Uint32 ms) -{ - Uint32 stop, now; - - stop = SDL_GetTicks() + ms; - do { -#if TARGET_API_MAC_CARBON - MPYield(); -#else - SystemTask(); -#endif - - now = SDL_GetTicks(); - - } - while (stop > now); -} - -/* -void SDL_StartTicks(void) -{ - // FIXME: Should we implement a wrapping algorithm, like Win32? -} - -Uint32 SDL_GetTicks(void) -{ - UnsignedWide ms; - - Microseconds (&ms); - - return ( ms.lo / 1000 ); -} - -void SDL_Delay(Uint32 ms) -{ - - UnsignedWide microsecs; - UInt32 stop; - - Microseconds (µsecs); - - stop = microsecs.lo + (ms * 1000); - - while ( stop > microsecs.lo ) { - - SystemTask (); - - Microseconds (µsecs); - } - -}*/ - -/* Data to handle a single periodic alarm */ -typedef struct _ExtendedTimerRec -{ - TMTask tmTask; - ProcessSerialNumber taskPSN; -} ExtendedTimerRec, *ExtendedTimerPtr; - -static ExtendedTimerRec gExtendedTimerRec; - - -int -SDL_SYS_TimerInit(void) -{ - FastInitialize(); - is_fast_inited = 1; - - return (0); -} - -void -SDL_SYS_TimerQuit(void) -{ - /* We don't need a cleanup? */ - return; -} - -/* Our Stub routine to set up and then call the real routine. */ -pascal void -TimerCallbackProc(TMTaskPtr tmTaskPtr) -{ - Uint32 ms; - - WakeUpProcess(&((ExtendedTimerPtr) tmTaskPtr)->taskPSN); - - ms = SDL_alarm_callback(SDL_alarm_interval); - if (ms) { - SDL_alarm_interval = ROUND_RESOLUTION(ms); - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - } else { - SDL_alarm_interval = 0; - } -} - -int -SDL_SYS_StartTimer(void) -{ - /* - * Configure the global structure that stores the timing information. - */ - gExtendedTimerRec.tmTask.qLink = NULL; - gExtendedTimerRec.tmTask.qType = 0; - gExtendedTimerRec.tmTask.tmAddr = NewTimerProc(TimerCallbackProc); - gExtendedTimerRec.tmTask.tmCount = 0; - gExtendedTimerRec.tmTask.tmWakeUp = 0; - gExtendedTimerRec.tmTask.tmReserved = 0; - GetCurrentProcess(&gExtendedTimerRec.taskPSN); - - /* Install the task record */ - InsXTime((QElemPtr) & gExtendedTimerRec.tmTask); - - /* Go! */ - PrimeTime((QElemPtr) & gExtendedTimerRec.tmTask, SDL_alarm_interval); - return (0); -} - -void -SDL_SYS_StopTimer(void) -{ - RmvTime((QElemPtr) & gExtendedTimerRec.tmTask); -} - -#endif /* SDL_TIMER_MACOS */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index d56d20ec9..93a8963a7 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -336,12 +336,6 @@ extern VideoBootStrap WIN32_bootstrap; #if SDL_VIDEO_DRIVER_BWINDOW extern VideoBootStrap BWINDOW_bootstrap; #endif -#if SDL_VIDEO_DRIVER_TOOLBOX -extern VideoBootStrap TOOLBOX_bootstrap; -#endif -#if SDL_VIDEO_DRIVER_DRAWSPROCKET -extern VideoBootStrap DSp_bootstrap; -#endif #if SDL_VIDEO_DRIVER_CYBERGRAPHICS extern VideoBootStrap CGX_bootstrap; #endif diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index e959fbaf2..dfeebc91e 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -85,12 +85,6 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_BWINDOW &BWINDOW_bootstrap, #endif -#if SDL_VIDEO_DRIVER_TOOLBOX - &TOOLBOX_bootstrap, -#endif -#if SDL_VIDEO_DRIVER_DRAWSPROCKET - &DSp_bootstrap, -#endif #if SDL_VIDEO_DRIVER_CYBERGRAPHICS &CGX_bootstrap, #endif diff --git a/src/video/maccommon/SDL_lowvideo.h b/src/video/maccommon/SDL_lowvideo.h deleted file mode 100644 index cf5bd50c1..000000000 --- a/src/video/maccommon/SDL_lowvideo.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_lowvideo_h -#define _SDL_lowvideo_h - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#include -#include -#endif - -#if SDL_VIDEO_OPENGL -typedef struct __AGLContextRec *AGLContext; -#endif - -#include "SDL_video.h" -#include "../SDL_sysvideo.h" - -/* Hidden "this" pointer for the video functions */ -#define _THIS SDL_VideoDevice *this - -#if !TARGET_API_MAC_CARBON /* not available in OS X (or more accurately, Carbon) */ -/* Global QuickDraw data */ -extern QDGlobals *theQD; -#endif - -/* Private display data */ -struct SDL_PrivateVideoData -{ - GDevice **SDL_Display; - WindowRef SDL_Window; - SDL_Rect **SDL_modelist; - CTabHandle SDL_CTab; - PaletteHandle SDL_CPal; - -#if TARGET_API_MAC_CARBON - /* For entering and leaving fullscreen mode */ - Ptr fullscreen_ctx; -#endif - - /* The current window document style */ - int current_style; - - /* Information about the last cursor position */ - Point last_where; - - /* Information about the last keys down */ - EventModifiers last_mods; - KeyMap last_keys; - - /* A handle to the Apple Menu */ - MenuRef apple_menu; - - /* Information used by DrawSprocket driver */ - struct DSpInfo *dspinfo; - -#if SDL_VIDEO_OPENGL - AGLContext appleGLContext; - - void *libraryHandle; -#endif -}; -/* Old variable names */ -#define SDL_Display (this->hidden->SDL_Display) -#define SDL_Window (this->hidden->SDL_Window) -#define SDL_modelist (this->hidden->SDL_modelist) -#define SDL_CTab (this->hidden->SDL_CTab) -#define SDL_CPal (this->hidden->SDL_CPal) -#define fullscreen_ctx (this->hidden->fullscreen_ctx) -#define current_style (this->hidden->current_style) -#define last_where (this->hidden->last_where) -#define last_mods (this->hidden->last_mods) -#define last_keys (this->hidden->last_keys) -#define apple_menu (this->hidden->apple_menu) -#define glContext (this->hidden->appleGLContext) - -#endif /* _SDL_lowvideo_h */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macevents.c b/src/video/maccommon/SDL_macevents.c deleted file mode 100644 index 144f64bba..000000000 --- a/src/video/maccommon/SDL_macevents.c +++ /dev/null @@ -1,778 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#include -#include -#include -#endif - -#include "SDL_events.h" -#include "SDL_video.h" -#include "SDL_syswm.h" -#include "../../events/SDL_events_c.h" -#include "../../events/SDL_sysevents.h" -#include "../SDL_cursor_c.h" -#include "SDL_macevents_c.h" -#include "SDL_mackeys.h" -#include "SDL_macmouse_c.h" - -/* Define this to be able to collapse SDL windows. -#define USE_APPEARANCE_MANAGER - */ - -/* Macintosh resource constants */ -#define mApple 128 /* Apple menu resource */ -#define iAbout 1 /* About menu item */ - -/* Functions to handle the About menu */ -static void Mac_DoAppleMenu(_THIS, long item); - -/* The translation table from a macintosh key scancode to a SDL keysym */ -static SDLKey MAC_keymap[256]; -static SDL_keysym *TranslateKey(int scancode, int modifiers, - SDL_keysym * keysym, int pressed); - -/* Handle activation and deactivation -- returns whether an event was posted */ -static int -Mac_HandleActivate(int activate) -{ - if (activate) { - /* Show the current SDL application cursor */ - SDL_SetCursor(NULL); - - /* put our mask back case it changed during context switch */ - SetEventMask(everyEvent & ~autoKeyMask); - } else { -#if TARGET_API_MAC_CARBON - { - Cursor cursor; - SetCursor(GetQDGlobalsArrow(&cursor)); - } -#else - SetCursor(&theQD->arrow); -#endif - if (!Mac_cursor_showing) { - ShowCursor(); - Mac_cursor_showing = 1; - } - } - return (SDL_PrivateAppActive(activate, SDL_APPINPUTFOCUS)); -} - -static void -myGlobalToLocal(_THIS, Point * pt) -{ - if (SDL_VideoSurface && !(SDL_VideoSurface->flags & SDL_FULLSCREEN)) { - GrafPtr saveport; - GetPort(&saveport); -#if TARGET_API_MAC_CARBON - SetPort(GetWindowPort(SDL_Window)); -#else - SetPort(SDL_Window); -#endif - GlobalToLocal(pt); - SetPort(saveport); - } -} - -/* The main MacOS event handler */ -static int -Mac_HandleEvents(_THIS, int wait4it) -{ - static int mouse_button = 1; - int i; - EventRecord event; - -#if TARGET_API_MAC_CARBON - /* There's no GetOSEvent() in the Carbon API. *sigh* */ -#define cooperative_multitasking 1 -#else - int cooperative_multitasking; - /* If we're running fullscreen, we can hog the MacOS events, - otherwise we had better play nicely with the other apps. - */ - if (this->screen && (this->screen->flags & SDL_FULLSCREEN)) { - cooperative_multitasking = 0; - } else { - cooperative_multitasking = 1; - } -#endif - - /* If we call WaitNextEvent(), MacOS will check other processes - * and allow them to run, and perform other high-level processing. - */ - if (cooperative_multitasking || wait4it) { - UInt32 wait_time; - - /* Are we polling or not? */ - if (wait4it) { - wait_time = 2147483647; - } else { - wait_time = 0; - } - WaitNextEvent(everyEvent, &event, wait_time, nil); - } else { -#if ! TARGET_API_MAC_CARBON - GetOSEvent(everyEvent, &event); -#endif - } - -#if TARGET_API_MAC_CARBON - /* for some reason, event.where isn't set ? */ - GetGlobalMouse(&event.where); -#endif - - /* Check for mouse motion */ - if ((event.where.h != last_where.h) || (event.where.v != last_where.v)) { - Point pt; - pt = last_where = event.where; - myGlobalToLocal(this, &pt); - SDL_PrivateMouseMotion(0, 0, pt.h, pt.v); - } - - /* Check the current state of the keyboard */ - if (SDL_GetAppState() & SDL_APPINPUTFOCUS) { - KeyMap keys; - - /* Check for special non-event keys */ - if (event.modifiers != last_mods) { - static struct - { - EventModifiers mask; - SDLKey key; - } mods[] = { - { - alphaLock, SDLK_CAPSLOCK}, -#if 0 /* These are handled below in the GetKeys() code */ - { - cmdKey, SDLK_LMETA}, { - shiftKey, SDLK_LSHIFT}, { - rightShiftKey, SDLK_RSHIFT}, { - optionKey, SDLK_LALT}, { - rightOptionKey, SDLK_RALT}, { - controlKey, SDLK_LCTRL}, { - rightControlKey, SDLK_RCTRL}, -#endif /* 0 */ - { - 0, 0} - }; - SDL_keysym keysym; - Uint8 mode; - EventModifiers mod, mask; - - - /* Set up the keyboard event */ - keysym.scancode = 0; - keysym.sym = SDLK_UNKNOWN; - keysym.mod = KMOD_NONE; - keysym.unicode = 0; - - /* See what has changed, and generate events */ - mod = event.modifiers; - for (i = 0; mods[i].mask; ++i) { - mask = mods[i].mask; - if ((mod & mask) != (last_mods & mask)) { - keysym.sym = mods[i].key; - if ((mod & mask) || (mods[i].key == SDLK_CAPSLOCK)) { - mode = SDL_PRESSED; - } else { - mode = SDL_RELEASED; - } - SDL_PrivateKeyboard(mode, &keysym); - } - } - - /* Save state for next time */ - last_mods = mod; - } - - /* Check for normal event keys, but we have to scan the - actual keyboard state because on Mac OS X a keydown event - is immediately followed by a keyup event. - */ - GetKeys(keys); - if ((keys[0] != last_keys[0]) || (keys[1] != last_keys[1]) || - (keys[2] != last_keys[2]) || (keys[3] != last_keys[3])) { - SDL_keysym keysym; - int old_bit, new_bit; - -#ifdef DEBUG_KEYBOARD - fprintf(sterr, "New keys: 0x%x 0x%x 0x%x 0x%x\n", - new_keys[0], new_keys[1], new_keys[2], new_keys[3]); -#endif - for (i = 0; i < 128; ++i) { - old_bit = (((Uint8 *) last_keys)[i / 8] >> (i % 8)) & 0x01; - new_bit = (((Uint8 *) keys)[i / 8] >> (i % 8)) & 0x01; - if (old_bit != new_bit) { - /* Post the keyboard event */ -#ifdef DEBUG_KEYBOARD - fprintf(stderr, "Scancode: 0x%2.2X\n", i); -#endif - SDL_PrivateKeyboard(new_bit, - TranslateKey(i, - event. - modifiers, - &keysym, new_bit)); - } - } - - /* Save state for next time */ - last_keys[0] = keys[0]; - last_keys[1] = keys[1]; - last_keys[2] = keys[2]; - last_keys[3] = keys[3]; - } - } - - /* Handle normal events */ - switch (event.what) { - case mouseDown: - { - WindowRef win; - short area; - - area = FindWindow(event.where, &win); - /* Support switching between the SIOUX console - and SDL_Window by clicking in the window. - */ - if (win && (win != FrontWindow())) { - SelectWindow(win); - } - switch (area) { - case inMenuBar: /* Only the apple menu exists */ - Mac_DoAppleMenu(this, MenuSelect(event.where)); - HiliteMenu(0); - break; - case inDrag: -#if TARGET_API_MAC_CARBON - DragWindow(win, event.where, NULL); -#else - DragWindow(win, event.where, &theQD->screenBits.bounds); -#endif - break; - case inGoAway: - if (TrackGoAway(win, event.where)) { - SDL_PrivateQuit(); - } - break; - case inContent: - myGlobalToLocal(this, &event.where); - /* Treat command-click as right mouse button */ - if (event.modifiers & optionKey) { - mouse_button = 2; - } else if (event.modifiers & cmdKey) { - mouse_button = 3; - } else { - mouse_button = 1; - } - SDL_PrivateMouseButton(SDL_PRESSED, - mouse_button, event.where.h, - event.where.v); - break; - case inGrow: - { - int newSize; - - /* Don't allow resize if video mode isn't resizable */ - if (!SDL_PublicSurface || - !(SDL_PublicSurface->flags & SDL_RESIZABLE)) { - break; - } -#if TARGET_API_MAC_CARBON - newSize = GrowWindow(win, event.where, NULL); -#else - newSize = - GrowWindow(win, event.where, - &theQD->screenBits.bounds); -#endif - if (newSize) { -#if !TARGET_API_MAC_CARBON - EraseRect(&theQD->screenBits.bounds); -#endif - SizeWindow(win, LoWord(newSize), HiWord(newSize), 1); - SDL_PrivateResize(LoWord(newSize), HiWord(newSize)); - } - } - break; - case inZoomIn: - case inZoomOut: - if (TrackBox(win, event.where, area)) { - Rect rect; -#if !TARGET_API_MAC_CARBON - EraseRect(&theQD->screenBits.bounds); -#endif - ZoomWindow(win, area, 0); - if (area == inZoomIn) { - GetWindowUserState(SDL_Window, &rect); - } else { - GetWindowStandardState(SDL_Window, &rect); - } - SDL_PrivateResize(rect.right - rect.left, - rect.bottom - rect.top); - } - break; -#if TARGET_API_MAC_CARBON - case inCollapseBox: - if (TrackBox(win, event.where, area)) { - if (IsWindowCollapsable(win)) { - CollapseWindow(win, !IsWindowCollapsed(win)); - /* There should be something done like in inGrow case, but... */ - } - } - break; -#endif /* TARGET_API_MAC_CARBON */ - case inSysWindow: -#if TARGET_API_MAC_CARBON - /* Never happens in Carbon? */ -#else - SystemClick(&event, win); -#endif - break; - default: - break; - } - } - break; - case mouseUp: - { - myGlobalToLocal(this, &event.where); - /* Release the mouse button we simulated in the last press. - The drawback of this methos is we cannot press more than - one button. However, this doesn't matter, since there is - only a single logical mouse button, even if you have a - multi-button mouse, this doesn't matter at all. - */ - SDL_PrivateMouseButton(SDL_RELEASED, - mouse_button, event.where.h, - event.where.v); - } - break; -#if 0 /* Handled above the switch statement */ - case keyDown: - { - SDL_keysym keysym; - - SDL_PrivateKeyboard(SDL_PRESSED, - TranslateKey((event. - message & keyCodeMask) >> 8 - event.modifiers, &keysym, 1)); - } - break; - case keyUp: - { - SDL_keysym keysym; - - SDL_PrivateKeyboard(SDL_RELEASED, - TranslateKey((event. - message & keyCodeMask) >> 8 - event.modifiers, &keysym, 0)); - } - break; -#endif - case updateEvt: - { - BeginUpdate(SDL_Window); -#if SDL_VIDEO_OPENGL - if (SDL_VideoSurface->flags & SDL_INTERNALOPENGL) - SDL_GL_SwapBuffers(); - else -#endif - if ((SDL_VideoSurface->flags & SDL_HWSURFACE) == SDL_SWSURFACE) { - SDL_UpdateRect(SDL_VideoSurface, 0, 0, 0, 0); - } - EndUpdate(SDL_Window); - } - /* If this was an update event for the SIOUX console, we return 0 - in order to stop an endless series of updates being triggered. - */ - if ((WindowRef) event.message != SDL_Window) { - return 0; - } - break; - case activateEvt: - { - Mac_HandleActivate(!!(event.modifiers & activeFlag)); - } - break; - case diskEvt: - { -#if TARGET_API_MAC_CARBON - /* What are we supposed to do? */ ; -#else - if (((event.message >> 16) & 0xFFFF) != noErr) { - Point spot; - SetPt(&spot, 0x0070, 0x0050); - DIBadMount(spot, event.message); - } -#endif - } - break; - case osEvt: - { - switch ((event.message >> 24) & 0xFF) { -#if 0 /* Handled above the switch statement */ - case mouseMovedMessage: - { - myGlobalToLocal(this, &event.where); - SDL_PrivateMouseMotion(0, 0, - event.where.h, event.where.v); - } - break; -#endif /* 0 */ - case suspendResumeMessage: - { - Mac_HandleActivate(!!(event.message & resumeFlag)); - } - break; - } - } - break; - default: - { - ; - } - break; - } - return (event.what != nullEvent); -} - - -void -Mac_PumpEvents(_THIS) -{ - /* Process pending MacOS events */ - while (Mac_HandleEvents(this, 0)) { - /* Loop and check again */ ; - } -} - -void -Mac_InitOSKeymap(_THIS) -{ - const void *KCHRPtr; - UInt32 state; - UInt32 value; - int i; - int world = SDLK_WORLD_0; - - /* Map the MAC keysyms */ - for (i = 0; i < SDL_arraysize(MAC_keymap); ++i) - MAC_keymap[i] = SDLK_UNKNOWN; - - /* Defined MAC_* constants */ - MAC_keymap[MK_ESCAPE] = SDLK_ESCAPE; - MAC_keymap[MK_F1] = SDLK_F1; - MAC_keymap[MK_F2] = SDLK_F2; - MAC_keymap[MK_F3] = SDLK_F3; - MAC_keymap[MK_F4] = SDLK_F4; - MAC_keymap[MK_F5] = SDLK_F5; - MAC_keymap[MK_F6] = SDLK_F6; - MAC_keymap[MK_F7] = SDLK_F7; - MAC_keymap[MK_F8] = SDLK_F8; - MAC_keymap[MK_F9] = SDLK_F9; - MAC_keymap[MK_F10] = SDLK_F10; - MAC_keymap[MK_F11] = SDLK_F11; - MAC_keymap[MK_F12] = SDLK_F12; - MAC_keymap[MK_PRINT] = SDLK_PRINT; - MAC_keymap[MK_SCROLLOCK] = SDLK_SCROLLOCK; - MAC_keymap[MK_PAUSE] = SDLK_PAUSE; - MAC_keymap[MK_POWER] = SDLK_POWER; - MAC_keymap[MK_BACKQUOTE] = SDLK_BACKQUOTE; - MAC_keymap[MK_1] = SDLK_1; - MAC_keymap[MK_2] = SDLK_2; - MAC_keymap[MK_3] = SDLK_3; - MAC_keymap[MK_4] = SDLK_4; - MAC_keymap[MK_5] = SDLK_5; - MAC_keymap[MK_6] = SDLK_6; - MAC_keymap[MK_7] = SDLK_7; - MAC_keymap[MK_8] = SDLK_8; - MAC_keymap[MK_9] = SDLK_9; - MAC_keymap[MK_0] = SDLK_0; - MAC_keymap[MK_MINUS] = SDLK_MINUS; - MAC_keymap[MK_EQUALS] = SDLK_EQUALS; - MAC_keymap[MK_BACKSPACE] = SDLK_BACKSPACE; - MAC_keymap[MK_INSERT] = SDLK_INSERT; - MAC_keymap[MK_HOME] = SDLK_HOME; - MAC_keymap[MK_PAGEUP] = SDLK_PAGEUP; - MAC_keymap[MK_NUMLOCK] = SDLK_NUMLOCK; - MAC_keymap[MK_KP_EQUALS] = SDLK_KP_EQUALS; - MAC_keymap[MK_KP_DIVIDE] = SDLK_KP_DIVIDE; - MAC_keymap[MK_KP_MULTIPLY] = SDLK_KP_MULTIPLY; - MAC_keymap[MK_TAB] = SDLK_TAB; - MAC_keymap[MK_q] = SDLK_q; - MAC_keymap[MK_w] = SDLK_w; - MAC_keymap[MK_e] = SDLK_e; - MAC_keymap[MK_r] = SDLK_r; - MAC_keymap[MK_t] = SDLK_t; - MAC_keymap[MK_y] = SDLK_y; - MAC_keymap[MK_u] = SDLK_u; - MAC_keymap[MK_i] = SDLK_i; - MAC_keymap[MK_o] = SDLK_o; - MAC_keymap[MK_p] = SDLK_p; - MAC_keymap[MK_LEFTBRACKET] = SDLK_LEFTBRACKET; - MAC_keymap[MK_RIGHTBRACKET] = SDLK_RIGHTBRACKET; - MAC_keymap[MK_BACKSLASH] = SDLK_BACKSLASH; - MAC_keymap[MK_DELETE] = SDLK_DELETE; - MAC_keymap[MK_END] = SDLK_END; - MAC_keymap[MK_PAGEDOWN] = SDLK_PAGEDOWN; - MAC_keymap[MK_KP7] = SDLK_KP7; - MAC_keymap[MK_KP8] = SDLK_KP8; - MAC_keymap[MK_KP9] = SDLK_KP9; - MAC_keymap[MK_KP_MINUS] = SDLK_KP_MINUS; - MAC_keymap[MK_CAPSLOCK] = SDLK_CAPSLOCK; - MAC_keymap[MK_a] = SDLK_a; - MAC_keymap[MK_s] = SDLK_s; - MAC_keymap[MK_d] = SDLK_d; - MAC_keymap[MK_f] = SDLK_f; - MAC_keymap[MK_g] = SDLK_g; - MAC_keymap[MK_h] = SDLK_h; - MAC_keymap[MK_j] = SDLK_j; - MAC_keymap[MK_k] = SDLK_k; - MAC_keymap[MK_l] = SDLK_l; - MAC_keymap[MK_SEMICOLON] = SDLK_SEMICOLON; - MAC_keymap[MK_QUOTE] = SDLK_QUOTE; - MAC_keymap[MK_RETURN] = SDLK_RETURN; - MAC_keymap[MK_KP4] = SDLK_KP4; - MAC_keymap[MK_KP5] = SDLK_KP5; - MAC_keymap[MK_KP6] = SDLK_KP6; - MAC_keymap[MK_KP_PLUS] = SDLK_KP_PLUS; - MAC_keymap[MK_LSHIFT] = SDLK_LSHIFT; - MAC_keymap[MK_z] = SDLK_z; - MAC_keymap[MK_x] = SDLK_x; - MAC_keymap[MK_c] = SDLK_c; - MAC_keymap[MK_v] = SDLK_v; - MAC_keymap[MK_b] = SDLK_b; - MAC_keymap[MK_n] = SDLK_n; - MAC_keymap[MK_m] = SDLK_m; - MAC_keymap[MK_COMMA] = SDLK_COMMA; - MAC_keymap[MK_PERIOD] = SDLK_PERIOD; - MAC_keymap[MK_SLASH] = SDLK_SLASH; -#if 0 /* These are the same as the left versions - use left by default */ - MAC_keymap[MK_RSHIFT] = SDLK_RSHIFT; -#endif - MAC_keymap[MK_UP] = SDLK_UP; - MAC_keymap[MK_KP1] = SDLK_KP1; - MAC_keymap[MK_KP2] = SDLK_KP2; - MAC_keymap[MK_KP3] = SDLK_KP3; - MAC_keymap[MK_KP_ENTER] = SDLK_KP_ENTER; - MAC_keymap[MK_LCTRL] = SDLK_LCTRL; - MAC_keymap[MK_LALT] = SDLK_LALT; - MAC_keymap[MK_LMETA] = SDLK_LMETA; - MAC_keymap[MK_SPACE] = SDLK_SPACE; -#if 0 /* These are the same as the left versions - use left by default */ - MAC_keymap[MK_RMETA] = SDLK_RMETA; - MAC_keymap[MK_RALT] = SDLK_RALT; - MAC_keymap[MK_RCTRL] = SDLK_RCTRL; -#endif - MAC_keymap[MK_LEFT] = SDLK_LEFT; - MAC_keymap[MK_DOWN] = SDLK_DOWN; - MAC_keymap[MK_RIGHT] = SDLK_RIGHT; - MAC_keymap[MK_KP0] = SDLK_KP0; - MAC_keymap[MK_KP_PERIOD] = SDLK_KP_PERIOD; - -#if defined(__APPLE__) && defined(__MACH__) - /* Wierd, these keys are on my iBook under Mac OS X - Note that the left arrow keysym is the same as left ctrl!? - */ - MAC_keymap[MK_IBOOK_ENTER] = SDLK_KP_ENTER; - MAC_keymap[MK_IBOOK_RIGHT] = SDLK_RIGHT; - MAC_keymap[MK_IBOOK_DOWN] = SDLK_DOWN; - MAC_keymap[MK_IBOOK_UP] = SDLK_UP; - MAC_keymap[MK_IBOOK_LEFT] = SDLK_LEFT; -#endif /* Mac OS X */ - - /* Up there we setup a static scancode->keysym map. However, it will not - * work very well on international keyboard. Hence we now query MacOS - * for its own keymap to adjust our own mapping table. However, this is - * bascially only useful for ascii char keys. This is also the reason - * why we keep the static table, too. - */ - - /* Get a pointer to the systems cached KCHR */ - KCHRPtr = (void *) GetScriptManagerVariable(smKCHRCache); - if (KCHRPtr) { - /* Loop over all 127 possible scan codes */ - for (i = 0; i < 0x7F; i++) { - /* We pretend a clean start to begin with (i.e. no dead keys active */ - state = 0; - - /* Now translate the key code to a key value */ - value = KeyTranslate(KCHRPtr, i, &state) & 0xff; - - /* If the state become 0, it was a dead key. We need to translate again, - passing in the new state, to get the actual key value */ - if (state != 0) - value = KeyTranslate(KCHRPtr, i, &state) & 0xff; - - /* Now we should have an ascii value, or 0. Try to figure out to which SDL symbol it maps */ - if (value >= 128) /* Some non-ASCII char, map it to SDLK_WORLD_* */ - MAC_keymap[i] = world++; - else if (value >= 32) /* non-control ASCII char */ - MAC_keymap[i] = value; - } - } - - /* The keypad codes are re-setup here, because the loop above cannot - * distinguish between a key on the keypad and a regular key. We maybe - * could get around this problem in another fashion: NSEvent's flags - * include a "NSNumericPadKeyMask" bit; we could check that and modify - * the symbol we return on the fly. However, this flag seems to exhibit - * some weird behaviour related to the num lock key - */ - MAC_keymap[MK_KP0] = SDLK_KP0; - MAC_keymap[MK_KP1] = SDLK_KP1; - MAC_keymap[MK_KP2] = SDLK_KP2; - MAC_keymap[MK_KP3] = SDLK_KP3; - MAC_keymap[MK_KP4] = SDLK_KP4; - MAC_keymap[MK_KP5] = SDLK_KP5; - MAC_keymap[MK_KP6] = SDLK_KP6; - MAC_keymap[MK_KP7] = SDLK_KP7; - MAC_keymap[MK_KP8] = SDLK_KP8; - MAC_keymap[MK_KP9] = SDLK_KP9; - MAC_keymap[MK_KP_MINUS] = SDLK_KP_MINUS; - MAC_keymap[MK_KP_PLUS] = SDLK_KP_PLUS; - MAC_keymap[MK_KP_PERIOD] = SDLK_KP_PERIOD; - MAC_keymap[MK_KP_EQUALS] = SDLK_KP_EQUALS; - MAC_keymap[MK_KP_DIVIDE] = SDLK_KP_DIVIDE; - MAC_keymap[MK_KP_MULTIPLY] = SDLK_KP_MULTIPLY; - MAC_keymap[MK_KP_ENTER] = SDLK_KP_ENTER; -} - -static SDL_keysym * -TranslateKey(int scancode, int modifiers, SDL_keysym * keysym, int pressed) -{ - /* Set the keysym information */ - keysym->scancode = scancode; - keysym->sym = MAC_keymap[keysym->scancode]; - keysym->mod = KMOD_NONE; - keysym->unicode = 0; - if (pressed && SDL_TranslateUNICODE) { - static unsigned long state = 0; - static Ptr keymap = nil; - Ptr new_keymap; - - /* Get the current keyboard map resource */ - new_keymap = (Ptr) GetScriptManagerVariable(smKCHRCache); - if (new_keymap != keymap) { - keymap = new_keymap; - state = 0; - } - keysym->unicode = KeyTranslate(keymap, - keysym->scancode | modifiers, - &state) & 0xFFFF; - } - return (keysym); -} - -void -Mac_InitEvents(_THIS) -{ - /* Create apple menu bar */ - apple_menu = GetMenu(mApple); - if (apple_menu != nil) { - AppendResMenu(apple_menu, 'DRVR'); - InsertMenu(apple_menu, 0); - } - DrawMenuBar(); - - /* Get rid of spurious events at startup */ - FlushEvents(everyEvent, 0); - - /* Allow every event but keyrepeat */ - SetEventMask(everyEvent & ~autoKeyMask); -} - -void -Mac_QuitEvents(_THIS) -{ - ClearMenuBar(); - if (apple_menu != nil) { - ReleaseResource((char **) apple_menu); - } - - /* Clean up pending events */ - FlushEvents(everyEvent, 0); -} - -static void -Mac_DoAppleMenu(_THIS, long choice) -{ -#if !TARGET_API_MAC_CARBON /* No Apple menu in OS X */ - short menu, item; - - item = (choice & 0xFFFF); - choice >>= 16; - menu = (choice & 0xFFFF); - - switch (menu) { - case mApple: - { - switch (item) { - case iAbout: - { - /* Run the about box */ ; - } - break; - default: - { - Str255 name; - - GetMenuItemText(apple_menu, item, name); - OpenDeskAcc(name); - } - break; - } - } - break; - default: - { - /* Ignore other menus */ ; - } - } -#endif /* !TARGET_API_MAC_CARBON */ -} - -#if !TARGET_API_MAC_CARBON -/* Since we don't initialize QuickDraw, we need to get a pointer to qd */ -QDGlobals *theQD = NULL; -#endif - -/* Exported to the macmain code */ -void -SDL_InitQuickDraw(struct QDGlobals *the_qd) -{ -#if !TARGET_API_MAC_CARBON - theQD = the_qd; -#endif -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macevents_c.h b/src/video/maccommon/SDL_macevents_c.h deleted file mode 100644 index 8f7835e92..000000000 --- a/src/video/maccommon/SDL_macevents_c.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include "../macrom/SDL_romvideo.h" - -/* Functions exported by SDL_macevents.c for the video subsystem -*/ -extern void Mac_InitEvents(_THIS); -extern void Mac_QuitEvents(_THIS); - -extern void Mac_InitOSKeymap(_THIS); -extern void Mac_PumpEvents(_THIS); -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macgl.c b/src/video/maccommon/SDL_macgl.c deleted file mode 100644 index 8153bbbe8..000000000 --- a/src/video/maccommon/SDL_macgl.c +++ /dev/null @@ -1,203 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* AGL implementation of SDL OpenGL support */ - -#include "SDL_lowvideo.h" -#include "SDL_macgl_c.h" -#include "SDL_loadso.h" - - -/* krat: adding OpenGL support */ -int -Mac_GL_Init(_THIS) -{ -#if SDL_VIDEO_OPENGL - AGLPixelFormat format; - int i = 0; - GLint attributes[26]; /* 26 is max possible in this setup */ - GLboolean noerr; - - /* load the gl driver from a default path */ - if (!this->gl_config.driver_loaded) { - /* no driver has been loaded, use default (ourselves) */ - if (Mac_GL_LoadLibrary(this, NULL) < 0) { - return (-1); - } - } - - attributes[i++] = AGL_RGBA; - if (this->gl_config.red_size != 0 && - this->gl_config.blue_size != 0 && this->gl_config.green_size != 0) { - attributes[i++] = AGL_RED_SIZE; - attributes[i++] = this->gl_config.red_size; - attributes[i++] = AGL_GREEN_SIZE; - attributes[i++] = this->gl_config.green_size; - attributes[i++] = AGL_BLUE_SIZE; - attributes[i++] = this->gl_config.blue_size; - attributes[i++] = AGL_ALPHA_SIZE; - attributes[i++] = this->gl_config.alpha_size; - } - if (this->gl_config.double_buffer) { - attributes[i++] = AGL_DOUBLEBUFFER; - } - if (this->gl_config.depth_size != 0) { - attributes[i++] = AGL_DEPTH_SIZE; - attributes[i++] = this->gl_config.depth_size; - } - if (this->gl_config.stencil_size != 0) { - attributes[i++] = AGL_STENCIL_SIZE; - attributes[i++] = this->gl_config.stencil_size; - } - if (this->gl_config.accum_red_size != 0 && - this->gl_config.accum_blue_size != 0 && - this->gl_config.accum_green_size != 0) { - - attributes[i++] = AGL_ACCUM_RED_SIZE; - attributes[i++] = this->gl_config.accum_red_size; - attributes[i++] = AGL_ACCUM_GREEN_SIZE; - attributes[i++] = this->gl_config.accum_green_size; - attributes[i++] = AGL_ACCUM_BLUE_SIZE; - attributes[i++] = this->gl_config.accum_blue_size; - attributes[i++] = AGL_ACCUM_ALPHA_SIZE; - attributes[i++] = this->gl_config.accum_alpha_size; - } - if (this->gl_config.stereo) { - attributes[i++] = AGL_STEREO; - } -#if defined(AGL_SAMPLE_BUFFERS_ARB) && defined(AGL_SAMPLES_ARB) - if (this->gl_config.multisamplebuffers != 0) { - attributes[i++] = AGL_SAMPLE_BUFFERS_ARB; - attributes[i++] = this->gl_config.multisamplebuffers; - } - if (this->gl_config.multisamplesamples != 0) { - attributes[i++] = AGL_SAMPLES_ARB; - attributes[i++] = this->gl_config.multisamplesamples; - } -#endif - if (this->gl_config.accelerated > 0) { - attributes[i++] = AGL_ACCELERATED; - attributes[i++] = AGL_NO_RECOVERY; - } - - attributes[i++] = AGL_ALL_RENDERERS; - attributes[i] = AGL_NONE; - - format = aglChoosePixelFormat(NULL, 0, attributes); - if (format == NULL) { - SDL_SetError("Couldn't match OpenGL desired format"); - return (-1); - } - - glContext = aglCreateContext(format, NULL); - if (glContext == NULL) { - SDL_SetError("Couldn't create OpenGL context"); - return (-1); - } - aglDestroyPixelFormat(format); - -#if TARGET_API_MAC_CARBON - noerr = aglSetDrawable(glContext, GetWindowPort(SDL_Window)); -#else - noerr = aglSetDrawable(glContext, (AGLDrawable) SDL_Window); -#endif - - if (!noerr) { - SDL_SetError("Unable to bind GL context to window"); - return (-1); - } - return (0); -#else - SDL_SetError("OpenGL support not configured"); - return (-1); -#endif -} - -void -Mac_GL_Quit(_THIS) -{ -#if SDL_VIDEO_OPENGL - if (glContext != NULL) { - aglSetCurrentContext(NULL); - aglSetDrawable(glContext, NULL); - aglDestroyContext(glContext); - glContext = NULL; - } -#endif -} - -#if SDL_VIDEO_OPENGL - -/* Make the current context active */ -int -Mac_GL_MakeCurrent(_THIS) -{ - int retval; - - retval = 0; - if (!aglSetCurrentContext(glContext)) { - SDL_SetError("Unable to make GL context current"); - retval = -1; - } - return (retval); -} - -void -Mac_GL_SwapBuffers(_THIS) -{ - aglSwapBuffers(glContext); -} - -int -Mac_GL_LoadLibrary(_THIS, const char *location) -{ - if (location == NULL) -#if __MACH__ - location = "/System/Library/Frameworks/OpenGL.framework/OpenGL"; -#else - location = "OpenGLLibrary"; -#endif - - this->hidden->libraryHandle = SDL_LoadObject(location); - - this->gl_config.driver_loaded = 1; - return (this->hidden->libraryHandle != NULL) ? 0 : -1; -} - -void -Mac_GL_UnloadLibrary(_THIS) -{ - SDL_UnloadObject(this->hidden->libraryHandle); - - this->hidden->libraryHandle = NULL; - this->gl_config.driver_loaded = 0; -} - -void * -Mac_GL_GetProcAddress(_THIS, const char *proc) -{ - return SDL_LoadFunction(this->hidden->libraryHandle, proc); -} - -#endif /* SDL_VIDEO_OPENGL */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macgl_c.h b/src/video/maccommon/SDL_macgl_c.h deleted file mode 100644 index c8d115c4a..000000000 --- a/src/video/maccommon/SDL_macgl_c.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* AGL implementation of SDL OpenGL support */ - -#include "SDL_config.h" - -#if SDL_VIDEO_OPENGL -#include "SDL_opengl.h" -#if __MACOSX__ -#include /* AGL.framework */ -#else -#include -#endif -#endif /* SDL_VIDEO_OPENGL */ - -/* OpenGL functions */ -extern int Mac_GL_Init(_THIS); -extern void Mac_GL_Quit(_THIS); -#if SDL_VIDEO_OPENGL -extern int Mac_GL_MakeCurrent(_THIS); -extern int Mac_GL_GetAttribute(_THIS, SDL_GLattr attrib, int *value); -extern void Mac_GL_SwapBuffers(_THIS); -extern int Mac_GL_LoadLibrary(_THIS, const char *location); -extern void Mac_GL_UnloadLibrary(_THIS); -extern void *Mac_GL_GetProcAddress(_THIS, const char *proc); -#endif -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_mackeys.h b/src/video/maccommon/SDL_mackeys.h deleted file mode 100644 index 6c00d974a..000000000 --- a/src/video/maccommon/SDL_mackeys.h +++ /dev/null @@ -1,141 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* These are the Macintosh key scancode constants -- from Inside Macintosh */ - -#define MK_ESCAPE 0x35 -#define MK_F1 0x7A -#define MK_F2 0x78 -#define MK_F3 0x63 -#define MK_F4 0x76 -#define MK_F5 0x60 -#define MK_F6 0x61 -#define MK_F7 0x62 -#define MK_F8 0x64 -#define MK_F9 0x65 -#define MK_F10 0x6D -#define MK_F11 0x67 -#define MK_F12 0x6F -#define MK_PRINT 0x69 -#define MK_SCROLLOCK 0x6B -#define MK_PAUSE 0x71 -#define MK_POWER 0x7F -#define MK_BACKQUOTE 0x32 -#define MK_1 0x12 -#define MK_2 0x13 -#define MK_3 0x14 -#define MK_4 0x15 -#define MK_5 0x17 -#define MK_6 0x16 -#define MK_7 0x1A -#define MK_8 0x1C -#define MK_9 0x19 -#define MK_0 0x1D -#define MK_MINUS 0x1B -#define MK_EQUALS 0x18 -#define MK_BACKSPACE 0x33 -#define MK_INSERT 0x72 -#define MK_HOME 0x73 -#define MK_PAGEUP 0x74 -#define MK_NUMLOCK 0x47 -#define MK_KP_EQUALS 0x51 -#define MK_KP_DIVIDE 0x4B -#define MK_KP_MULTIPLY 0x43 -#define MK_TAB 0x30 -#define MK_q 0x0C -#define MK_w 0x0D -#define MK_e 0x0E -#define MK_r 0x0F -#define MK_t 0x11 -#define MK_y 0x10 -#define MK_u 0x20 -#define MK_i 0x22 -#define MK_o 0x1F -#define MK_p 0x23 -#define MK_LEFTBRACKET 0x21 -#define MK_RIGHTBRACKET 0x1E -#define MK_BACKSLASH 0x2A -#define MK_DELETE 0x75 -#define MK_END 0x77 -#define MK_PAGEDOWN 0x79 -#define MK_KP7 0x59 -#define MK_KP8 0x5B -#define MK_KP9 0x5C -#define MK_KP_MINUS 0x4E -#define MK_CAPSLOCK 0x39 -#define MK_a 0x00 -#define MK_s 0x01 -#define MK_d 0x02 -#define MK_f 0x03 -#define MK_g 0x05 -#define MK_h 0x04 -#define MK_j 0x26 -#define MK_k 0x28 -#define MK_l 0x25 -#define MK_SEMICOLON 0x29 -#define MK_QUOTE 0x27 -#define MK_RETURN 0x24 -#define MK_KP4 0x56 -#define MK_KP5 0x57 -#define MK_KP6 0x58 -#define MK_KP_PLUS 0x45 -#define MK_LSHIFT 0x38 -#define MK_z 0x06 -#define MK_x 0x07 -#define MK_c 0x08 -#define MK_v 0x09 -#define MK_b 0x0B -#define MK_n 0x2D -#define MK_m 0x2E -#define MK_COMMA 0x2B -#define MK_PERIOD 0x2F -#define MK_SLASH 0x2C -#if 0 /* These are the same as the left versions - use left by default */ -#define MK_RSHIFT 0x38 -#endif -#define MK_UP 0x7E -#define MK_KP1 0x53 -#define MK_KP2 0x54 -#define MK_KP3 0x55 -#define MK_KP_ENTER 0x4C -#define MK_LCTRL 0x3B -#define MK_LALT 0x3A -#define MK_LMETA 0x37 -#define MK_SPACE 0x31 -#if 0 /* These are the same as the left versions - use left by default */ -#define MK_RMETA 0x37 -#define MK_RALT 0x3A -#define MK_RCTRL 0x3B -#endif -#define MK_LEFT 0x7B -#define MK_DOWN 0x7D -#define MK_RIGHT 0x7C -#define MK_KP0 0x52 -#define MK_KP_PERIOD 0x41 - -/* Wierd, these keys are on my iBook under Mac OS X */ -#define MK_IBOOK_ENTER 0x34 -#define MK_IBOOK_LEFT 0x3B -#define MK_IBOOK_RIGHT 0x3C -#define MK_IBOOK_DOWN 0x3D -#define MK_IBOOK_UP 0x3E -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macmouse.c b/src/video/maccommon/SDL_macmouse.c deleted file mode 100644 index 6d9a8b758..000000000 --- a/src/video/maccommon/SDL_macmouse.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#endif - -/* Routines that are not supported by the Carbon API... */ -#if !TARGET_API_MAC_CARBON -#include -#endif - -#include "SDL_mouse.h" -#include "SDL_macmouse_c.h" - - -/* The implementation dependent data for the window manager cursor */ -struct WMcursor -{ - Cursor curs; -}; - - -void -Mac_FreeWMCursor(_THIS, WMcursor * cursor) -{ - SDL_free(cursor); -} - -WMcursor * -Mac_CreateWMCursor(_THIS, - Uint8 * data, Uint8 * mask, int w, int h, int hot_x, - int hot_y) -{ - WMcursor *cursor; - int row, bytes; - - /* Allocate the cursor memory */ - cursor = (WMcursor *) SDL_malloc(sizeof(WMcursor)); - if (cursor == NULL) { - SDL_OutOfMemory(); - return (NULL); - } - SDL_memset(cursor, 0, sizeof(*cursor)); - - if (w > 16) - w = 16; - - if (h > 16) - h = 16; - - bytes = (w + 7) / 8; - - for (row = 0; row < h; ++row) { - SDL_memcpy(&cursor->curs.data[row], data, bytes); - data += bytes; - } - for (row = 0; row < h; ++row) { - SDL_memcpy(&cursor->curs.mask[row], mask, bytes); - mask += bytes; - } - cursor->curs.hotSpot.h = hot_x; - cursor->curs.hotSpot.v = hot_y; - - /* That was easy. :) */ - return (cursor); -} - -int Mac_cursor_showing = 1; - -int -Mac_ShowWMCursor(_THIS, WMcursor * cursor) -{ - if (cursor == NULL) { - if (Mac_cursor_showing) { - HideCursor(); - Mac_cursor_showing = 0; - } - } else { - SetCursor(&cursor->curs); - if (!Mac_cursor_showing) { - ShowCursor(); - Mac_cursor_showing = 1; - } - } - return (1); -} - -void -Mac_WarpWMCursor(_THIS, Uint16 x, Uint16 y) -{ -#if !TARGET_API_MAC_CARBON - CursorDevice *cursordevice; - - cursordevice = nil; - CursorDeviceNextDevice(&cursordevice); - if (cursordevice != nil) { - WindowPtr saveport; - Point where; - - GetPort(&saveport); - SetPort(SDL_Window); - where.h = x; - where.v = y; - LocalToGlobal(&where); - SetPort(saveport); - CursorDeviceMoveTo(cursordevice, where.h, where.v); - } -#endif /* !TARGET_API_MAC_CARBON */ -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macmouse_c.h b/src/video/maccommon/SDL_macmouse_c.h deleted file mode 100644 index b1f57da22..000000000 --- a/src/video/maccommon/SDL_macmouse_c.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include "../macrom/SDL_romvideo.h" - -/* Functions to be exported */ -extern void Mac_FreeWMCursor(_THIS, WMcursor * cursor); -extern WMcursor *Mac_CreateWMCursor(_THIS, - Uint8 * data, Uint8 * mask, int w, int h, - int hot_x, int hot_y); -extern int Mac_ShowWMCursor(_THIS, WMcursor * cursor); -extern void Mac_WarpWMCursor(_THIS, Uint16 x, Uint16 y); - -/* Data to be exported */ -extern int Mac_cursor_showing; -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macwm.c b/src/video/maccommon/SDL_macwm.c deleted file mode 100644 index 7d0b33342..000000000 --- a/src/video/maccommon/SDL_macwm.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#if defined(__APPLE__) && defined(__MACH__) -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#else -#include -#include -#endif - -#include "SDL_stdinc.h" -#include "SDL_macwm_c.h" - -void -Mac_SetCaption(_THIS, const char *title, const char *icon) -{ - /* Don't convert C to P string in place, because it may be read-only */ - Str255 ptitle; /* MJS */ - ptitle[0] = strlen(title); - SDL_memcpy(ptitle + 1, title, ptitle[0]); /* MJS */ - if (SDL_Window) - SetWTitle(SDL_Window, ptitle); /* MJS */ -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/maccommon/SDL_macwm_c.h b/src/video/maccommon/SDL_macwm_c.h deleted file mode 100644 index acb37535e..000000000 --- a/src/video/maccommon/SDL_macwm_c.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#include "../macrom/SDL_romvideo.h" - -/* Functions to be exported */ -extern void Mac_SetCaption(_THIS, const char *title, const char *icon); -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macdsp/SDL_dspvideo.c b/src/video/macdsp/SDL_dspvideo.c deleted file mode 100644 index 395fef41c..000000000 --- a/src/video/macdsp/SDL_dspvideo.c +++ /dev/null @@ -1,1480 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* - Written by Darrell Walisser - - Implementation notes ---------------------------------------------------------------------- - - A bit on GWorlds in VRAM from technote 1182: - - There are two important things to note about GWorld's allocated in - VRAM. First, the base address retrieved through GetPixBaseAddr or - read directly from the PixMap structure can become invalid anytime - memory is allocated in VRAM. This can occur either by explicit - allocations, such as calls to NewGWorld, or by implicit ones, such as - those associated with the internal texture allocation of OpenGL. The - stored pixel images themselves will still be valid but may have been - moved in VRAM, thus rendering any stored base addresses invalid. - You should never store an image's base address for longer than is - necessary and especially never across calls to NewGWorld or - texture-creation routines. - - Secondly, an offscreen pixel image allocated in VRAM can be - purged at system task time by the display driver. This means any - time your application yields time such by calling WaitNextEvent or - SystemTask you can lose your VRAM GWorld contents. While this - happens infrequently, usually associated with display resolution or - pixel depth changes you must code for this eventuality. This purge - can occur whether or not the GWorld is locked or not. A return value - of false from LockPixels, a NULL return value from GetPixBaseAddr - or NULL in the baseAddr field of the PixMap mean that the pixel - image has been purged. To reallocate it you can either call - UpdateGWorld or Dispose your current GWorld through - DisposeGWorld and reallocate it via NewGWorld. Either way you must - then rebuild the pixel image. - ------------------------------------------------------------------------------------- - - Currently, I don't account for (1). In my testing, NewGWorld never invalidated - other existing GWorlds in VRAM. However, I do have protection for (2). - Namely, I am using GetOSEvent() instead of WaitNextEvent() so that there are no - context switches (the app hogs the CPU). Eventually a book-keeping system should - be coded to take care of (1) and (2). - ------------------------------------------------------------------------------------- - - System requirements (* denotes optional): - - 1. DrawSprocket 1.7.3 - 2. *MacOS 9 or later (but *not* Mac OS X) for hardware accelerated blit / fill - 3. *May also require certain graphics hardware for (2). I trust that all Apple OEM - hardware will work. Third party accelerators may work if they have QuickDraw - acceleration in the drivers and the drivers have been updated for OS 9. The current - Voodoo 3 drivers (1.0b12) do not work. - - Coding suggestions: - - 1. Use SDL_UpdateRects ! - - If no QuickDraw acceleration is present, double-buffered surfaces will use a back buffer - in System memory. I recommend you use SDL_UpdateRects with double-buffered surfaces - for best performance on these cards, since the overhead is nearly zero for VRAM back buffer. - - 2. Load most-resident surfaces first. - - If you fill up VRAM or AGP memory, there is no contingency for purging to make room for the next one. - Therefore, you should load the surfaces you plan to use the most frequently first. - Sooner or later, I will code LRU replacement to help this. - - TODO: - Some kind of posterized mode for resolutions < 640x480. - Window support / fullscreen toggle. - Figure out how much VRAM is available. Put in video->info->video_mem. - Track VRAM usage. - - BUGS: - I can't create a hardware surface the same size as the screen?! How to fix? - - - - COMPILE OPTIONS: - - DSP_TRY_CC_AND_AA - Define if you want to try HWA color-key and alpha blitters - HW color-key blitting gives substantial improvements, - but hw alpha is neck-and-neck with SDL's soft bitter. - - DSP_NO_SYNC_VBL - Define for HWA double-buffered surfaces: don't sync - pseudo-flip to monitor redraw. - - DSP_NO_SYNC_OPENGL - Define for OpenGL surfaces: don't sync buffer swap. Synching buffer - swap may result in reduced performance, but can eliminate some - tearing artifacts. - CHANGELOG: - 09/17/00 Lots of little tweaks. Build modelist in reverse order so largest contexts - list first. Compared various methods with ROM methods and fixed rez switch - crashing bug in GL Tron. (Woohoo!) -*/ - -#define DSP_TRY_CC_AND_AA - -/* #define DSP_NO_SYNC_VBL */ - -#define DSP_NO_SYNC_OPENGL - - -#if defined(__APPLE__) && defined(__MACH__) -#include -#include -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -#include -#else -#include -#include -#include -#include -#include -#include -#endif - -#include "SDL_video.h" -#include "SDL_syswm.h" -#include "../SDL_sysvideo.h" -#include "../SDL_blit.h" -#include "../SDL_pixels_c.h" -#include "SDL_dspvideo.h" -#include "../maccommon/SDL_macgl_c.h" -#include "../maccommon/SDL_macwm_c.h" -#include "../maccommon/SDL_macmouse_c.h" -#include "../maccommon/SDL_macevents_c.h" - -/* Initialization/Query functions */ -static int DSp_VideoInit(_THIS, SDL_PixelFormat * vformat); -static SDL_Rect **DSp_ListModes(_THIS, SDL_PixelFormat * format, - Uint32 flags); -static SDL_Surface *DSp_SetVideoMode(_THIS, SDL_Surface * current, int width, - int height, int bpp, Uint32 flags); -static int DSp_SetColors(_THIS, int firstcolor, int ncolors, - SDL_Color * colors); -static int DSp_CreatePalette(_THIS); -static int DSp_DestroyPalette(_THIS); -static void DSp_VideoQuit(_THIS); - -static int DSp_GetMainDevice(_THIS, GDHandle * device); -static void DSp_IsHWAvailable(_THIS, SDL_PixelFormat * vformat); -static void DSp_DSpUpdate(_THIS, int numrects, SDL_Rect * sdl_rects); -static void DSp_DirectUpdate(_THIS, int numrects, SDL_Rect * sdl_rects); - -/* Hardware surface functions */ -static int DSp_SetHWAlpha(_THIS, SDL_Surface * surface, UInt8 alpha); -static int DSp_SetHWColorKey(_THIS, SDL_Surface * surface, Uint32 key); -static int DSp_NewHWSurface(_THIS, CGrafPtr * port, int depth, int width, - int height); -static int DSp_AllocHWSurface(_THIS, SDL_Surface * surface); -static int DSp_LockHWSurface(_THIS, SDL_Surface * surface); -static void DSp_UnlockHWSurface(_THIS, SDL_Surface * surface); -static void DSp_FreeHWSurface(_THIS, SDL_Surface * surface); -static int DSp_FlipHWSurface(_THIS, SDL_Surface * surface); -static int DSp_CheckHWBlit(_THIS, SDL_Surface * src, SDL_Surface * dest); -static int DSp_HWAccelBlit(SDL_Surface * src, SDL_Rect * srcrect, - SDL_Surface * dst, SDL_Rect * dstrect); -static int DSp_FillHWRect(_THIS, SDL_Surface * dst, SDL_Rect * rect, - Uint32 color); - -#if SDL_VIDEO_OPENGL -static void DSp_GL_SwapBuffers(_THIS); -#endif - -#if ! TARGET_API_MAC_CARBON - -#define GetPortPixRowBytes(x) ( (*(x->portPixMap))->rowBytes ) -#define GetGDevPixMap(x) ((**(x)).gdPMap) -#define GetPortPixMap(x) ((*(x)).portPixMap) - -#define GetPixDepth(y) ((**(y)).pixelSize) - //#define GetPixRowBytes(y) ((**(y)).rowBytes) - //#define GetPixBaseAddr(y) ((**(y)).baseAddr) -#define GetPixCTab(y) ((**(y)).pmTable) -#define GetPortBitMapForCopyBits(x) (&(((GrafPtr)(x))->portBits)) - -#else -#define GetPortPixRowBytes(x) (GetPixRowBytes(GetPortPixMap(x)) ) -#define GetGDevPixMap(x) ((**(x)).gdPMap) - -#endif - -typedef struct private_hwdata -{ - - GWorldPtr offscreen; // offscreen gworld in VRAM or AGP - -#ifdef DSP_TRY_CC_AND_AA - GWorldPtr mask; // transparent mask - RGBColor alpha; // alpha color - RGBColor trans; // transparent color -#endif - -} private_hwdata; - -typedef private_hwdata private_swdata; /* have same fields */ - -/* Macintosh toolbox driver bootstrap functions */ - -static int -DSp_Available(void) -{ - /* Check for DrawSprocket */ -#if ! TARGET_API_MAC_OSX - /* This check is only meaningful if you weak-link DrawSprocketLib */ - return ((Ptr) DSpStartup != (Ptr) kUnresolvedCFragSymbolAddress); -#else - return 1; // DrawSprocket.framework doesn't have it all, but it's there -#endif -} - -static void -DSp_DeleteDevice(SDL_VideoDevice * device) -{ - /* -dw- taking no chances with null pointers */ - if (device) { - - if (device->hidden) { - - if (device->hidden->dspinfo) - SDL_free(device->hidden->dspinfo); - - SDL_free(device->hidden); - } - SDL_free(device); - } -} - -static SDL_VideoDevice * -DSp_CreateDevice(int devindex) -{ - SDL_VideoDevice *device; - - /* Initialize all variables that we clean on shutdown */ - device = (SDL_VideoDevice *) SDL_malloc(sizeof(SDL_VideoDevice)); - if (device) { - SDL_memset(device, 0, sizeof(*device)); - device->hidden = (struct SDL_PrivateVideoData *) - SDL_malloc((sizeof *device->hidden)); - if (device->hidden) - SDL_memset(device->hidden, 0, sizeof(*(device->hidden))); - } - if ((device == NULL) || (device->hidden == NULL)) { - SDL_OutOfMemory(); - - if (device) { - - if (device->hidden) - SDL_free(device->hidden); - - SDL_free(device); - } - - return (NULL); - } - - /* Allocate DrawSprocket information */ - device->hidden->dspinfo = (struct DSpInfo *) SDL_malloc((sizeof *device-> - hidden-> - dspinfo)); - if (device->hidden->dspinfo == NULL) { - SDL_OutOfMemory(); - SDL_free(device->hidden); - SDL_free(device); - return (0); - } - SDL_memset(device->hidden->dspinfo, 0, (sizeof *device->hidden->dspinfo)); - - /* Set the function pointers */ - device->VideoInit = DSp_VideoInit; - device->ListModes = DSp_ListModes; - device->SetVideoMode = DSp_SetVideoMode; - device->SetColors = DSp_SetColors; - device->UpdateRects = NULL; - device->VideoQuit = DSp_VideoQuit; - device->AllocHWSurface = DSp_AllocHWSurface; - device->CheckHWBlit = NULL; - device->FillHWRect = NULL; - device->SetHWColorKey = NULL; - device->SetHWAlpha = NULL; - device->LockHWSurface = DSp_LockHWSurface; - device->UnlockHWSurface = DSp_UnlockHWSurface; - device->FlipHWSurface = DSp_FlipHWSurface; - device->FreeHWSurface = DSp_FreeHWSurface; -#if SDL_VIDEO_OPENGL - device->GL_MakeCurrent = Mac_GL_MakeCurrent; - device->GL_SwapBuffers = DSp_GL_SwapBuffers; - device->GL_LoadLibrary = Mac_GL_LoadLibrary; - device->GL_GetProcAddress = Mac_GL_GetProcAddress; -#endif - device->SetCaption = NULL; - device->SetIcon = NULL; - device->IconifyWindow = NULL; - device->GrabInput = NULL; - device->GetWMInfo = NULL; - device->FreeWMCursor = Mac_FreeWMCursor; - device->CreateWMCursor = Mac_CreateWMCursor; - device->ShowWMCursor = Mac_ShowWMCursor; - device->WarpWMCursor = Mac_WarpWMCursor; - device->InitOSKeymap = Mac_InitOSKeymap; - device->PumpEvents = Mac_PumpEvents; - - device->GrabInput = NULL; - device->CheckMouseMode = NULL; - - device->free = DSp_DeleteDevice; - - return device; -} - -VideoBootStrap DSp_bootstrap = { - "DSp", "MacOS DrawSprocket", - DSp_Available, DSp_CreateDevice -}; - -/* Use DSp/Display Manager to build mode list for given screen */ -static SDL_Rect ** -DSp_BuildModeList(const GDHandle gDevice, int *displayWidth, - int *displayHeight) -{ - DSpContextAttributes attributes; - DSpContextReference context; - DisplayIDType displayID; - SDL_Rect temp_list[16]; - SDL_Rect **mode_list; - int width, height, i, j; - -#if TARGET_API_MAC_OSX - - displayID = 0; - -#else - /* Ask Display Manager for integer id of screen device */ - if (DMGetDisplayIDByGDevice(gDevice, &displayID, SDL_TRUE) != noErr) { - return NULL; - } -#endif - /* Get the first possible DSp context on this device */ - if (DSpGetFirstContext(displayID, &context) != noErr) { - return NULL; - } - - if (DSpContext_GetAttributes(context, &attributes) != noErr) - return NULL; - - *displayWidth = attributes.displayWidth; - *displayHeight = attributes.displayHeight; - - for (i = 0; i < SDL_arraysize(temp_list); i++) { - width = attributes.displayWidth; - height = attributes.displayHeight; - - temp_list[i].x = 0 | attributes.displayBestDepth; - temp_list[i].y = 0; - temp_list[i].w = width; - temp_list[i].h = height; - - /* DSp will report many different contexts with the same width and height. */ - /* They will differ in bit depth and refresh rate. */ - /* We will ignore them until we reach one with a different width/height */ - /* When there are no more contexts to look at, we will quit building the list */ - while (width == attributes.displayWidth - && height == attributes.displayHeight) { - - OSStatus err = DSpGetNextContext(context, &context); - if (err != noErr) - if (err == kDSpContextNotFoundErr) - goto done; - else - return NULL; - - if (DSpContext_GetAttributes(context, &attributes) != noErr) - return NULL; - - temp_list[i].x |= attributes.displayBestDepth; - } - } - done: - i++; /* i was not incremented before kicking out of the loop */ - - mode_list = (SDL_Rect **) SDL_malloc(sizeof(SDL_Rect *) * (i + 1)); - if (mode_list) { - - /* -dw- new stuff: build in reverse order so largest sizes list first */ - for (j = i - 1; j >= 0; j--) { - mode_list[j] = (SDL_Rect *) SDL_malloc(sizeof(SDL_Rect)); - if (mode_list[j]) - SDL_memcpy(mode_list[j], &(temp_list[j]), sizeof(SDL_Rect)); - else { - SDL_OutOfMemory(); - return NULL; - } - } - mode_list[i] = NULL; /* append null to the end */ - } else { - SDL_OutOfMemory(); - return NULL; - } - - return mode_list; -} - -static void -DSp_IsHWAvailable(_THIS, SDL_PixelFormat * vformat) -{ - /* - VRAM GWorlds are only available on OS 9 or later. - Even with OS 9, some display drivers won't support it, - so we create a test GWorld and check for errors. - */ - - long versionSystem; - - dsp_vram_available = SDL_FALSE; - dsp_agp_available = SDL_FALSE; - - Gestalt('sysv', &versionSystem); - if (0x00000860 < (versionSystem & 0x0000FFFF)) { - - GWorldPtr offscreen; - OSStatus err; - Rect bounds; - - SetRect(&bounds, 0, 0, 320, 240); - -#if useDistantHdwrMem && useLocalHdwrMem - err = - NewGWorld(&offscreen, vformat->BitsPerPixel, &bounds, NULL, - SDL_Display, useDistantHdwrMem | noNewDevice); - if (err == noErr) { - dsp_vram_available = SDL_TRUE; - DisposeGWorld(offscreen); - } - - err = - NewGWorld(&offscreen, vformat->BitsPerPixel, &bounds, NULL, - SDL_Display, useLocalHdwrMem | noNewDevice); - if (err == noErr) { - DisposeGWorld(offscreen); - dsp_agp_available = SDL_TRUE; - } -#endif - } -} - -static int -DSp_GetMainDevice(_THIS, GDHandle * device) -{ - -#if TARGET_API_MAC_OSX - /* DSpUserSelectContext not available on OS X */ - *device = GetMainDevice(); - return 0; -#else - - DSpContextAttributes attrib; - DSpContextReference context; - DisplayIDType display_id; - GDHandle main_device; - GDHandle device_list; - - device_list = GetDeviceList(); - main_device = GetMainDevice(); - - /* Quick check to avoid slower method when only one display exists */ - if ((**device_list).gdNextGD == NULL) { - *device = main_device; - return 0; - } - - SDL_memset(&attrib, 0, sizeof(DSpContextAttributes)); - - /* These attributes are hopefully supported on all devices... */ - attrib.displayWidth = 640; - attrib.displayHeight = 480; - attrib.displayBestDepth = 8; - attrib.backBufferBestDepth = 8; - attrib.displayDepthMask = kDSpDepthMask_All; - attrib.backBufferDepthMask = kDSpDepthMask_All; - attrib.colorNeeds = kDSpColorNeeds_Require; - attrib.pageCount = 1; - - if (noErr != DMGetDisplayIDByGDevice(main_device, &display_id, SDL_FALSE)) { - SDL_SetError - ("Display Manager couldn't associate GDevice with a Display ID"); - return (-1); - } - - /* Put up dialog on main display to select which display to use */ - if (noErr != DSpUserSelectContext(&attrib, display_id, NULL, &context)) { - SDL_SetError("DrawSprocket couldn't create a context"); - return (-1); - } - - if (noErr != DSpContext_GetDisplayID(context, &display_id)) { - SDL_SetError("DrawSprocket couldn't get display ID"); - return (-1); - } - - if (noErr != DMGetGDeviceByDisplayID(display_id, &main_device, SDL_FALSE)) { - SDL_SetError - ("Display Manager couldn't associate Display ID with GDevice"); - return (-1); - } - - *device = main_device; - return (0); -#endif -} - -static int -DSp_VideoInit(_THIS, SDL_PixelFormat * vformat) -{ - NumVersion dsp_version = { 0x01, 0x00, 0x00, 0x00 }; - -#if UNIVERSAL_INTERFACES_VERSION > 0x0320 - dsp_version = DSpGetVersion(); -#endif - - if ((dsp_version.majorRev == 1 && dsp_version.minorAndBugRev < 0x73) || - (dsp_version.majorRev < 1)) { - - /* StandardAlert (kAlertStopAlert, "\pError!", - "\pI need DrawSprocket 1.7.3 or later!\n" - "You can find a newer version at http://www.apple.com/swupdates.", - NULL, NULL); - */ - SDL_SetError("DrawSprocket version is too old. Need 1.7.3 or later."); - return (-1); - } - - if (DSpStartup() != noErr) { - SDL_SetError("DrawSprocket couldn't startup"); - return (-1); - } - - /* Start DSpintosh events */ - Mac_InitEvents(this); - - /* Get a handle to the main monitor, or choose one on multiple monitor setups */ - if (DSp_GetMainDevice(this, &SDL_Display) < 0) - return (-1); - - /* Determine pixel format */ - vformat->BitsPerPixel = GetPixDepth((**SDL_Display).gdPMap); - dsp_old_depth = vformat->BitsPerPixel; - - switch (vformat->BitsPerPixel) { - case 16: - vformat->Rmask = 0x00007c00; - vformat->Gmask = 0x000003e0; - vformat->Bmask = 0x0000001f; - break; - default: - break; - } - - if (DSp_CreatePalette(this) < 0) { - SDL_SetError("Could not create palette"); - return (-1); - } - - /* Get a list of available fullscreen modes */ - SDL_modelist = DSp_BuildModeList(SDL_Display, - &this->info.current_w, - &this->info.current_h); - if (SDL_modelist == NULL) { - SDL_SetError("DrawSprocket could not build a mode list"); - return (-1); - } - - /* Check for VRAM and AGP GWorlds for HW Blitting */ - DSp_IsHWAvailable(this, vformat); - - this->info.wm_available = 0; - - if (dsp_vram_available || dsp_agp_available) { - - this->info.hw_available = SDL_TRUE; - - this->CheckHWBlit = DSp_CheckHWBlit; - this->info.blit_hw = SDL_TRUE; - - this->FillHWRect = DSp_FillHWRect; - this->info.blit_fill = SDL_TRUE; - -#ifdef DSP_TRY_CC_AND_AA - this->SetHWColorKey = DSp_SetHWColorKey; - this->info.blit_hw_CC = SDL_TRUE; - - this->SetHWAlpha = DSp_SetHWAlpha; - this->info.blit_hw_A = SDL_TRUE; -#endif - - } - - return (0); -} - -static SDL_Rect ** -DSp_ListModes(_THIS, SDL_PixelFormat * format, Uint32 flags) -{ - static SDL_Rect *dsp_modes[16]; - int i = 0, j = 0; - - if (format->BitsPerPixel == 0) - return ((SDL_Rect **) NULL); - - while (SDL_modelist[i] != NULL) { - - if (SDL_modelist[i]->x & format->BitsPerPixel) { - dsp_modes[j] = SDL_modelist[i]; - j++; - } - i++; - } - - dsp_modes[j] = NULL; - - return dsp_modes; -} - -/* Various screen update functions available */ -static void DSp_DirectUpdate(_THIS, int numrects, SDL_Rect * rects); - -#if ! TARGET_API_MAC_OSX - -static volatile unsigned int retrace_count = 0; /* -dw- need volatile because it updates asychronously */ - -Boolean -DSp_VBLProc(DSpContextReference context, void *ref_con) -{ - retrace_count++; - - return 1; /* Darrell, is this right? */ -} - -static void -DSp_SetHWError(OSStatus err, int is_agp) -{ - char message[1024]; - const char *fmt, *mem; - - if (is_agp) { - mem = "AGP Memory"; - } else { - mem = "VRAM"; - } - switch (err) { - case memFullErr: - fmt = "Hardware surface possible but not enough %s available"; - break; - case cDepthErr: - fmt = "Hardware surface possible but invalid color depth"; - break; - default: - fmt = "Hardware surface could not be allocated in %s - unknown error"; - break; - } - SDL_snprintf(message, SDL_arraysize(message), fmt, mem); - SDL_SetError(message); -} -#endif // TARGET_API_MAC_OSX - -/* put up a dialog to verify display change */ -static int -DSp_ConfirmSwitch() -{ - - /* resource id's for dialog */ - const int rDialog = 1002; - const int bCancel = 1; - const int bOK = 2; - - DialogPtr dialog; - OSStatus err; - SInt32 response; - DialogItemIndex item = 0; - GrafPtr savePort; - - GetPort(&savePort); - - dialog = GetNewDialog(rDialog, NULL, (WindowPtr) - 1); - if (dialog == NULL) - return (0); - -#if TARGET_API_MAC_CARBON - SetPort(GetDialogPort(dialog)); -#else - SetPort((WindowPtr) dialog); -#endif - - SetDialogDefaultItem(dialog, bCancel); - SetDialogCancelItem(dialog, bCancel); - - SetEventMask(everyEvent); - FlushEvents(everyEvent, 0); - - /* On MacOS 8.5 or later, we can make the dialog go away after 15 seconds */ - /* This is good since it's possible user can't even see the dialog! */ - /* Requires linking to DialogsLib */ - err = Gestalt(gestaltSystemVersion, &response); - if (err == noErr && response >= 0x00000850) { - SetDialogTimeout(dialog, bCancel, 15); - } - - do { - - ModalDialog(NULL, &item); - - } - while (item != bCancel && item != bOK && err != noErr); - - - DisposeDialog(dialog); - SetPort(savePort); - - SetEventMask(everyEvent - autoKeyMask); - FlushEvents(everyEvent, 0); - - return (item - 1); -} - -static void -DSp_UnsetVideoMode(_THIS, SDL_Surface * current) -{ - - - if (current->flags & SDL_INTERNALOPENGL) { - Mac_GL_Quit(this); - } - - if (dsp_context != NULL) { - - GWorldPtr front; - DSpContext_GetFrontBuffer(dsp_context, &front); - - if (front != dsp_back_buffer) - DisposeGWorld(dsp_back_buffer); - - if (current->hwdata) - SDL_free(current->hwdata); - - DSpContext_SetState(dsp_context, kDSpContextState_Inactive); - DSpContext_Release(dsp_context); - - dsp_context = NULL; - } - - if (SDL_Window != NULL) { - DisposeWindow(SDL_Window); - SDL_Window = NULL; - } - - current->pixels = NULL; - current->flags = 0; -} - -static SDL_Surface * -DSp_SetVideoMode(_THIS, - SDL_Surface * current, int width, int height, int bpp, - Uint32 flags) -{ - -#if !TARGET_API_MAC_OSX - DisplayIDType display_id; - Fixed freq; -#endif - DSpContextAttributes attrib; - OSStatus err; - UInt32 rmask = 0, gmask = 0, bmask = 0; - - int page_count; - int double_buf; - int hw_surface; - int use_dsp_back_buffer; - - DSp_UnsetVideoMode(this, current); - - if (bpp != dsp_old_depth) - DSp_DestroyPalette(this); - - double_buf = (flags & SDL_DOUBLEBUF) != 0; - hw_surface = (flags & SDL_HWSURFACE) != 0; - use_dsp_back_buffer = !dsp_vram_available || !hw_surface; - - current->flags |= SDL_FULLSCREEN; - - rebuild: - - if (double_buf && use_dsp_back_buffer) { - page_count = 2; - } else { - page_count = 1; - } - - SDL_memset(&attrib, 0, sizeof(DSpContextAttributes)); - attrib.displayWidth = width; - attrib.displayHeight = height; - attrib.displayBestDepth = bpp; - attrib.backBufferBestDepth = bpp; - attrib.displayDepthMask = kDSpDepthMask_All; - attrib.backBufferDepthMask = kDSpDepthMask_All; - attrib.colorNeeds = kDSpColorNeeds_Require; - attrib.colorTable = 0; - attrib.pageCount = page_count; -#if TARGET_API_MAC_OSX || UNIVERSAL_INTERFACES_VERSION == 0x0320 - - if (DSpFindBestContext(&attrib, &dsp_context) != noErr) { - SDL_SetError("DrawSprocket couldn't find a context"); - return NULL; - } -#else - if (noErr != DMGetDisplayIDByGDevice(SDL_Display, &display_id, SDL_FALSE)) { - SDL_SetError - ("Display Manager couldn't associate GDevice with display_id"); - return NULL; - } - if (DSpFindBestContextOnDisplayID(&attrib, &dsp_context, display_id) != - noErr) { - SDL_SetError - ("DrawSprocket couldn't find a suitable context on given display"); - return NULL; - } -#endif - if (DSpContext_Reserve(dsp_context, &attrib) != noErr) { - SDL_SetError - ("DrawSprocket couldn't get the needed resources to build the display"); - return NULL; - } - - if ((err = - DSpContext_SetState(dsp_context, kDSpContextState_Active)) != noErr) - { - - if (err == kDSpConfirmSwitchWarning) { - - if (!DSp_ConfirmSwitch()) { - - DSpContext_Release(dsp_context); - dsp_context = NULL; - SDL_SetError("User cancelled display switch"); - return NULL; - } else - /* Have to reactivate context. Why? */ - DSpContext_SetState(dsp_context, kDSpContextState_Active); - - } else { - SDL_SetError("DrawSprocket couldn't activate the context"); - return NULL; - } - } - - - if (bpp != dsp_old_depth) { - - DSp_CreatePalette(this); - - /* update format if display depth changed */ - if (bpp == 16) { - - rmask = 0x00007c00; - gmask = 0x000003e0; - bmask = 0x0000001f; - } - if (!SDL_ReallocFormat(current, bpp, rmask, gmask, bmask, 0)) { - - SDL_SetError("Could not reallocate video format."); - return (NULL); - } - } - - if (!double_buf) { - - /* single-buffer context */ - DSpContext_GetFrontBuffer(dsp_context, &dsp_back_buffer); - - current->hwdata = - (private_hwdata *) SDL_malloc(sizeof(private_hwdata)); - if (current->hwdata == NULL) { - SDL_OutOfMemory(); - return NULL; - } - current->hwdata->offscreen = dsp_back_buffer; - current->flags |= SDL_HWSURFACE; - this->UpdateRects = DSp_DirectUpdate; - } else if (use_dsp_back_buffer) { - - DSpContext_GetBackBuffer(dsp_context, kDSpBufferKind_Normal, - &dsp_back_buffer); - - current->flags |= SDL_DOUBLEBUF | SDL_SWSURFACE; /* only front buffer is in VRAM */ - this->UpdateRects = DSp_DSpUpdate; - } else if (DSp_NewHWSurface - (this, &dsp_back_buffer, bpp, width - 1, height - 1) == 0) { - - current->hwdata = - (private_hwdata *) SDL_malloc(sizeof(private_hwdata)); - if (current->hwdata == NULL) { - SDL_OutOfMemory(); - return NULL; - } - - SDL_memset(current->hwdata, 0, sizeof(private_hwdata)); - current->hwdata->offscreen = dsp_back_buffer; - current->flags |= SDL_DOUBLEBUF | SDL_HWSURFACE; - this->UpdateRects = DSp_DirectUpdate; /* hardware doesn't do update rects, must be page-flipped */ - } else { - - DSpContext_Release(dsp_context); - use_dsp_back_buffer = SDL_TRUE; - goto rebuild; - } - - current->pitch = GetPortPixRowBytes(dsp_back_buffer) & 0x3FFF; - current->pixels = GetPixBaseAddr(GetPortPixMap(dsp_back_buffer)); - - current->w = width; - current->h = height; - -#if ! TARGET_API_MAC_OSX - - if (use_dsp_back_buffer) { - - DSpContext_GetMonitorFrequency(dsp_context, &freq); - DSpContext_SetMaxFrameRate(dsp_context, freq >> 16); - } - - - if ((current->flags & SDL_HWSURFACE) - || (current->flags & SDL_INTERNALOPENGL)) - DSpContext_SetVBLProc(dsp_context, DSp_VBLProc, NULL); -#endif - - if (bpp == 8) - current->flags |= SDL_HWPALETTE; - - if (flags & SDL_INTERNALOPENGL) { - - Rect rect; - RGBColor rgb = { 0.0, 0.0, 0.0 }; - GrafPtr save_port; - - SetRect(&rect, 0, 0, width, height); - SDL_Window = - NewCWindow(nil, &((**SDL_Display).gdRect), "\p", SDL_TRUE, - plainDBox, (WindowPtr) - 1, SDL_FALSE, 0); - - if (SDL_Window == NULL) { - - SDL_SetError - ("DSp_SetVideoMode : OpenGL window could not be created."); - return NULL; - } - - /* Set window color to black to avoid white flash */ - GetPort(&save_port); -#if TARGET_API_MAC_CARBON - SetPort(GetWindowPort(SDL_Window)); -#else - SetPort(SDL_Window); -#endif - RGBForeColor(&rgb); - PaintRect(&rect); - SetPort(save_port); - - SetPortWindowPort(SDL_Window); - SelectWindow(SDL_Window); - - if (Mac_GL_Init(this) < 0) { - - SDL_SetError - ("DSp_SetVideoMode : could not create OpenGL context."); - return NULL; - } - - current->flags |= SDL_INTERNALOPENGL; - } - - return current; -} - -#ifdef DSP_TRY_CC_AND_AA - -static int -DSp_MakeHWMask(_THIS, SDL_Surface * surface) -{ - GDHandle save_device; - CGrafPtr save_port; - GWorldPtr temp; - RGBColor black = { 0, 0, 0 }; - RGBColor white = { 0xFFFF, 0xFFFF, 0xFFFF }; - Rect rect; - - Uint32 depth = GetPixDepth(GetGDevPixMap(SDL_Display)); - - SetRect(&rect, 0, 0, surface->w, surface->h); - - if (noErr != - NewGWorld(&(surface->hwdata->mask), depth, &rect, 0, SDL_Display, - 0) < 0) { - - SDL_OutOfMemory(); - return (-1); - } - - if (noErr != NewGWorld(&temp, depth, &rect, 0, SDL_Display, 0)) { - - SDL_OutOfMemory(); - return (-1); - } - - - GetGWorld(&save_port, &save_device); - SetGWorld(surface->hwdata->mask, SDL_Display); - - RGBForeColor(&white); - PaintRect(&rect); - - RGBBackColor(&(surface->hwdata->trans)); - - CopyBits(GetPortBitMapForCopyBits(surface->hwdata->offscreen), - GetPortBitMapForCopyBits(surface->hwdata->mask), - &rect, &rect, transparent, NULL); - - SetGWorld(surface->hwdata->mask, SDL_Display); - SetGWorld(save_port, save_device); - return (0); -} - -static int -DSp_SetHWAlpha(_THIS, SDL_Surface * surface, UInt8 alpha) -{ - surface->hwdata->alpha.red = (alpha / 255.0) * 65535; - surface->hwdata->alpha.blue = (alpha / 255.0) * 65535; - surface->hwdata->alpha.green = (alpha / 255.0) * 65535; - - surface->flags |= SDL_SRCALPHA; - - if (surface->flags & SDL_SRCCOLORKEY) { - return (DSp_MakeHWMask(this, surface)); - } - return (0); -} - -static int -DSp_SetHWColorKey(_THIS, SDL_Surface * surface, Uint32 key) -{ - CGrafPtr save_port; - GDHandle save_device; - - GetGWorld(&save_port, &save_device); - SetGWorld(surface->hwdata->offscreen, NULL); - - Index2Color(key, &(surface->hwdata->trans)); - surface->flags |= SDL_SRCCOLORKEY; - - SetGWorld(save_port, save_device); - - if (surface->flags & SDL_SRCALPHA) { - return (DSp_MakeHWMask(this, surface)); - } - return (0); -} - -#endif /* DSP_TRY_CC_AND_AA */ - -static int -DSp_NewHWSurface(_THIS, CGrafPtr * port, int depth, int width, int height) -{ - - OSStatus err; - Rect bounds; - - SetRect(&bounds, 0, 0, width, height); - -#if useDistantHdwrMem && useLocalHdwrMem - if (dsp_vram_available) { - /* try VRAM */ - err = - NewGWorld(port, depth, &bounds, 0, SDL_Display, - useDistantHdwrMem | noNewDevice); - if (err != noErr) - DSp_SetHWError(err, SDL_FALSE); - else - return (0); - } - - if (dsp_agp_available) { - /* try AGP */ - err = - NewGWorld(port, depth, &bounds, 0, SDL_Display, - useLocalHdwrMem | noNewDevice); - - if (err != noErr) - DSp_SetHWError(err, SDL_TRUE); - else - return (0); - } -#endif - - return (-1); -} - -static int -DSp_AllocHWSurface(_THIS, SDL_Surface * surface) -{ - GWorldPtr temp; - - if (DSp_NewHWSurface - (this, &temp, surface->format->BitsPerPixel, surface->w, - surface->h) < 0) - return (-1); - - surface->hwdata = (private_hwdata *) SDL_malloc(sizeof(private_hwdata)); - if (surface->hwdata == NULL) { - SDL_OutOfMemory(); - return -1; - } - - SDL_memset(surface->hwdata, 0, sizeof(private_hwdata)); - surface->hwdata->offscreen = temp; - surface->pitch = GetPixRowBytes(GetPortPixMap(temp)) & 0x3FFF; - surface->pixels = GetPixBaseAddr(GetPortPixMap(temp)); - surface->flags |= SDL_HWSURFACE; -#ifdef DSP_TRY_CC_AND_AA - surface->flags |= SDL_HWACCEL; -#endif - return 0; -} - -static void -DSp_FreeHWSurface(_THIS, SDL_Surface * surface) -{ - if (surface->hwdata->offscreen != NULL) - DisposeGWorld(surface->hwdata->offscreen); - SDL_free(surface->hwdata); - - surface->pixels = NULL; -} - -static int -DSp_CheckHWBlit(_THIS, SDL_Surface * src, SDL_Surface * dest) -{ - int accelerated; - - /* Set initial acceleration on */ - src->flags |= SDL_HWACCEL; - - /* Set the surface attributes */ - if ((src->flags & SDL_SRCALPHA) == SDL_SRCALPHA) { - if (!this->info.blit_hw_A) { - src->flags &= ~SDL_HWACCEL; - } - } - if ((src->flags & SDL_SRCCOLORKEY) == SDL_SRCCOLORKEY) { - if (!this->info.blit_hw_CC) { - src->flags &= ~SDL_HWACCEL; - } - } - - /* Check to see if final surface blit is accelerated */ - accelerated = !!(src->flags & SDL_HWACCEL); - if (accelerated) { - src->map->hw_blit = DSp_HWAccelBlit; - } - return (accelerated); -} - -static int -DSp_HWAccelBlit(SDL_Surface * src, SDL_Rect * srcrect, - SDL_Surface * dst, SDL_Rect * dstrect) -{ - CGrafPtr save_port; - GDHandle save_device; - Rect src_rect, dst_rect; - RGBColor black = { 0, 0, 0 }; - RGBColor white = { 0xFFFF, 0xFFFF, 0xFFFF }; - -#ifdef DSP_TRY_CC_AND_AA - UInt32 mode; -#endif - - SetRect(&src_rect, srcrect->x, srcrect->y, srcrect->x + srcrect->w, - srcrect->y + srcrect->h); - SetRect(&dst_rect, dstrect->x, dstrect->y, dstrect->x + dstrect->w, - dstrect->y + dstrect->h); - - GetGWorld(&save_port, &save_device); - SetGWorld(dst->hwdata->offscreen, NULL); - - RGBForeColor(&black); - RGBBackColor(&white); - -#ifdef DSP_TRY_CC_AND_AA - - if ((src->flags & SDL_SRCCOLORKEY) && (src->flags & SDL_SRCALPHA)) { - - OpColor(&(src->hwdata->alpha)); - - CopyDeepMask(GetPortBitMapForCopyBits(src->hwdata->offscreen), - GetPortBitMapForCopyBits(src->hwdata->mask), - GetPortBitMapForCopyBits(dst->hwdata->offscreen), - &src_rect, &src_rect, &dst_rect, blend, NULL); - } else { - - if (src->flags & SDL_SRCCOLORKEY) { - RGBBackColor(&(src->hwdata->trans)); - mode = transparent; - } else if (src->flags & SDL_SRCALPHA) { - - OpColor(&(src->hwdata->alpha)); - mode = blend; - } else { - - mode = srcCopy; - } - - CopyBits(GetPortBitMapForCopyBits(src->hwdata->offscreen), - GetPortBitMapForCopyBits(dst->hwdata->offscreen), - &src_rect, &dst_rect, mode, NULL); - } -#else - - CopyBits(&(((GrafPtr) (src->hwdata->offscreen))->portBits), - &(((GrafPtr) (dst->hwdata->offscreen))->portBits), - &src_rect, &dst_rect, srcCopy, NULL); - -#endif /* DSP_TRY_CC_AND_AA */ - - SetGWorld(save_port, save_device); - - return (0); -} - -static int -DSp_FillHWRect(_THIS, SDL_Surface * dst, SDL_Rect * rect, Uint32 color) -{ - CGrafPtr save_port; - GDHandle save_device; - Rect fill_rect; - RGBColor rgb; - - SetRect(&fill_rect, rect->x, rect->y, rect->x + rect->w, - rect->y + rect->h); - - GetGWorld(&save_port, &save_device); - SetGWorld(dst->hwdata->offscreen, NULL); - - Index2Color(color, &rgb); - - RGBForeColor(&rgb); - PaintRect(&fill_rect); - - SetGWorld(save_port, save_device); - - return (0); -} - -static int -DSp_FlipHWSurface(_THIS, SDL_Surface * surface) -{ - if ((surface->flags & SDL_HWSURFACE)) { - CGrafPtr dsp_front_buffer, save_port; - Rect rect; - -#if ! TARGET_API_MAC_OSX - unsigned int old_count; -#endif - - /* pseudo page flipping for VRAM back buffer */ - DSpContext_GetFrontBuffer(dsp_context, &dsp_front_buffer); - SetRect(&rect, 0, 0, surface->w - 1, surface->h - 1); - - GetPort((GrafPtr *) & save_port); - SetPort((GrafPtr) dsp_front_buffer); - - /* wait for retrace */ - /* I have tried doing the swap in interrupt routine (VBL Proc) to do */ - /* it asynchronously, but apparently CopyBits isn't interrupt safe */ - -#if ! TARGET_API_MAC_OSX -#ifndef DSP_NO_SYNC_VBL - old_count = retrace_count; - while (old_count == retrace_count); -#endif -#endif - - CopyBits(GetPortBitMapForCopyBits(dsp_back_buffer), - GetPortBitMapForCopyBits(dsp_front_buffer), - &rect, &rect, srcCopy, NULL); - - SetPort((GrafPtr) save_port); - - } else { - /* not really page flipping at all: DSp just blits the dirty rectangles from DSp_UpdateRects */ - Boolean busy_flag; - DSpContext_SwapBuffers(dsp_context, NULL, &busy_flag); /* this waits for VBL */ - DSpContext_GetBackBuffer(dsp_context, kDSpBufferKind_Normal, - &dsp_back_buffer); - surface->pixels = GetPixBaseAddr(GetPortPixMap(dsp_back_buffer)); - } - return (0); -} - -static int -DSp_LockHWSurface(_THIS, SDL_Surface * surface) -{ - if (LockPixels(GetGWorldPixMap(surface->hwdata->offscreen))) - return 0; - else - return -1; -} - -static void -DSp_UnlockHWSurface(_THIS, SDL_Surface * surface) -{ - UnlockPixels(GetGWorldPixMap(surface->hwdata->offscreen)); -} - -static void -DSp_DirectUpdate(_THIS, int numrects, SDL_Rect * sdl_rects) -{ - return; -} - -static void -DSp_DSpUpdate(_THIS, int numrects, SDL_Rect * sdl_rects) -{ -#if ! TARGET_API_MAC_OSX /* Unsupported DSp in here */ - int i; - Rect rect; - - for (i = 0; i < numrects; i++) { - - rect.top = sdl_rects[i].y; - rect.left = sdl_rects[i].x; - rect.bottom = sdl_rects[i].h + sdl_rects[i].y; - rect.right = sdl_rects[i].w + sdl_rects[i].x; - - DSpContext_InvalBackBufferRect(dsp_context, &rect); - } -#endif -} - -static int -DSp_CreatePalette(_THIS) -{ - - - /* Create our palette */ - SDL_CTab = (CTabHandle) NewHandle(sizeof(ColorSpec) * 256 + 8); - if (SDL_CTab == nil) { - SDL_OutOfMemory(); - return (-1); - } - (**SDL_CTab).ctSeed = GetCTSeed(); - (**SDL_CTab).ctFlags = 0; - (**SDL_CTab).ctSize = 255; - CTabChanged(SDL_CTab); - SDL_CPal = NewPalette(256, SDL_CTab, pmExplicit + pmTolerant, 0); - - return 0; -} - -static int -DSp_DestroyPalette(_THIS) -{ - - /* Free palette and restore original one */ - if (SDL_CTab != nil) { - DisposeHandle((Handle) SDL_CTab); - SDL_CTab = nil; - } - if (SDL_CPal != nil) { - DisposePalette(SDL_CPal); - SDL_CPal = nil; - } - RestoreDeviceClut(SDL_Display); - - return (0); -} - -static int -DSp_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color * colors) -{ - CTabHandle cTab; - - int i; - - cTab = SDL_CTab; - - /* Verify the range of colors */ - if ((firstcolor + ncolors) > ((**cTab).ctSize + 1)) { - return (0); - } - - /* Set the screen palette and update the display */ - for (i = 0; i < ncolors; i++) { - int j = firstcolor + i; - (**cTab).ctTable[j].value = j; - (**cTab).ctTable[j].rgb.red = colors[i].r << 8 | colors[i].r; - (**cTab).ctTable[j].rgb.green = colors[i].g << 8 | colors[i].g; - (**cTab).ctTable[j].rgb.blue = colors[i].b << 8 | colors[i].b; - } - - SetGDevice(SDL_Display); - SetEntries(0, (**cTab).ctSize, (ColorSpec *) & (**cTab).ctTable); - - return (1); -} - -void -DSp_VideoQuit(_THIS) -{ - int i; - - /* Free current video mode */ - DSp_UnsetVideoMode(this, this->screen); - - /* Free Palette and restore original */ - DSp_DestroyPalette(this); - - /* Free list of video modes */ - if (SDL_modelist != NULL) { - for (i = 0; SDL_modelist[i]; i++) { - SDL_free(SDL_modelist[i]); - } - SDL_free(SDL_modelist); - SDL_modelist = NULL; - } - - /* Unload DrawSprocket */ - DSpShutdown(); -} - -#if SDL_VIDEO_OPENGL - -/* swap buffers with v-sync */ -static void -DSp_GL_SwapBuffers(_THIS) -{ - -#ifndef DSP_NO_SYNC_OPENGL - - unsigned int old_count; - - old_count = retrace_count; - while (old_count == retrace_count); -#endif - - aglSwapBuffers(glContext); -} - -#endif -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macdsp/SDL_dspvideo.h b/src/video/macdsp/SDL_dspvideo.h deleted file mode 100644 index e2ad17526..000000000 --- a/src/video/macdsp/SDL_dspvideo.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_dspvideo_h -#define _SDL_dspvideo_h - -#if TARGET_API_MAC_OSX -# include /* Drawsprocket.framework */ -#else -#include -#endif - -#include "../maccommon/SDL_lowvideo.h" - -/* DrawSprocket specific information */ -struct DSpInfo -{ - DSpContextReference dsp_context; - CGrafPtr dsp_back_buffer; - int dsp_old_depth; - - /* Flags for hw acceleration */ - int dsp_vram_available; - int dsp_agp_available; - - -}; -/* Old variable names */ -#define dsp_context (this->hidden->dspinfo->dsp_context) -#define dsp_back_buffer (this->hidden->dspinfo->dsp_back_buffer) -#define dsp_old_depth (this->hidden->dspinfo->dsp_old_depth) -#define dsp_vram_available (this->hidden->dspinfo->dsp_vram_available) -#define dsp_agp_available (this->hidden->dspinfo->dsp_agp_available) - -#endif /* _SDL_dspvideo_h */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macrom/SDL_romvideo.c b/src/video/macrom/SDL_romvideo.c deleted file mode 100644 index 70fb6870d..000000000 --- a/src/video/macrom/SDL_romvideo.c +++ /dev/null @@ -1,762 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#if defined(__APPLE__) && defined(__MACH__) -#include -#if USE_QUICKTIME -#include -#endif -#elif TARGET_API_MAC_CARBON && (UNIVERSAL_INTERFACES_VERSION > 0x0335) -#include -/* The fullscreen code requires the QuickTime framework, and the window - is still at the back on Mac OS X, which is where this code is needed. - */ -#if USE_QUICKTIME -#include -#endif -#else -#include -#include -#include -#include -#include -#include -#endif - -#include "SDL_video.h" -#include "SDL_syswm.h" -#include "../SDL_sysvideo.h" -#include "SDL_romvideo.h" -#include "../maccommon/SDL_macgl_c.h" -#include "../maccommon/SDL_macwm_c.h" -#include "../maccommon/SDL_macmouse_c.h" -#include "../maccommon/SDL_macevents_c.h" - -/* Initialization/Query functions */ -static int ROM_VideoInit(_THIS, SDL_PixelFormat * vformat); -static SDL_Rect **ROM_ListModes(_THIS, SDL_PixelFormat * format, - Uint32 flags); -static SDL_Surface *ROM_SetVideoMode(_THIS, SDL_Surface * current, int width, - int height, int bpp, Uint32 flags); -static int ROM_SetColors(_THIS, int firstcolor, int ncolors, - SDL_Color * colors); -static void ROM_VideoQuit(_THIS); - -/* Hardware surface functions */ -static int ROM_AllocHWSurface(_THIS, SDL_Surface * surface); -static int ROM_LockHWSurface(_THIS, SDL_Surface * surface); -static void ROM_UnlockHWSurface(_THIS, SDL_Surface * surface); -static void ROM_FreeHWSurface(_THIS, SDL_Surface * surface); - -#if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ -/* Saved state for the menu bar */ -static RgnHandle gSaveGrayRgn = nil; -static short gSaveMenuBar = 0; -static Boolean gSaveCSVis = true; - -#if powerc -/* Mixed mode glue to activate the 68K emulator and twiddle a register */ -#define ONEWORDSTUB(p1) \ - { 0x41FA, 0x0010, 0x209F, (p1), 0x41FA, \ - 0x0008, 0x2F10, 0x4E75, 0x0000, 0x0000, 0x0000 } - -#define TWOWORDSTUB(p1,p2) \ - { 0x41FA, 0x0012, 0x209F, (p1), (p2), 0x41FA, \ - 0x0008, 0x2F10, 0x4E75, 0x0000, 0x0000, 0x0000 } - -#define THREEWORDSTUB(p1,p2,p3) \ - { 0x41FA, 0x0014, 0x209F, (p1), (p2), (p3), 0x41FA, \ - 0x0008, 0x2F10, 0x4E75, 0x0000, 0x0000, 0x0000 } - -/* ControlStrip inline glue for PowerPC */ -static pascal Boolean -SBIsControlStripVisible(void) -{ - static short procData[] = TWOWORDSTUB(0x7000, 0xAAF2); - ProcInfoType procInfo = kD0DispatchedPascalStackBased - | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) - | DISPATCHED_STACK_ROUTINE_SELECTOR_SIZE(kFourByteCode); - - return ((Boolean) - CallUniversalProc((UniversalProcPtr) procData, procInfo, 0x00)); -} - -static pascal void -SBShowHideControlStrip(Boolean showIt) -{ - static short procData[] = THREEWORDSTUB(0x303C, 0x0101, 0xAAF2); - ProcInfoType procInfo = kD0DispatchedPascalStackBased - | DISPATCHED_STACK_ROUTINE_SELECTOR_SIZE(kFourByteCode) - | DISPATCHED_STACK_ROUTINE_PARAMETER(1, - SIZE_CODE(sizeof(Boolean))); - - CallUniversalProc((UniversalProcPtr) procData, procInfo, 0x01, showIt); -} -#endif /* powerc */ -#endif /* !TARGET_API_MAC_CARBON */ - -/* Macintosh toolbox driver bootstrap functions */ - -static int -ROM_Available(void) -{ - return (1); -} - -static void -ROM_DeleteDevice(SDL_VideoDevice * device) -{ - SDL_free(device->hidden); - SDL_free(device); -} - -static SDL_VideoDevice * -ROM_CreateDevice(int devindex) -{ - SDL_VideoDevice *device; - - /* Initialize all variables that we clean on shutdown */ - device = (SDL_VideoDevice *) SDL_malloc(sizeof(SDL_VideoDevice)); - if (device) { - SDL_memset(device, 0, (sizeof *device)); - device->hidden = (struct SDL_PrivateVideoData *) - SDL_malloc((sizeof *device->hidden)); - } - if ((device == NULL) || (device->hidden == NULL)) { - SDL_OutOfMemory(); - if (device) { - SDL_free(device); - } - return (0); - } - SDL_memset(device->hidden, 0, (sizeof *device->hidden)); - - /* Set the function pointers */ - device->VideoInit = ROM_VideoInit; - device->ListModes = ROM_ListModes; - device->SetVideoMode = ROM_SetVideoMode; - device->SetColors = ROM_SetColors; - device->UpdateRects = NULL; - device->VideoQuit = ROM_VideoQuit; - device->AllocHWSurface = ROM_AllocHWSurface; - device->CheckHWBlit = NULL; - device->FillHWRect = NULL; - device->SetHWColorKey = NULL; - device->SetHWAlpha = NULL; - device->LockHWSurface = ROM_LockHWSurface; - device->UnlockHWSurface = ROM_UnlockHWSurface; - device->FlipHWSurface = NULL; - device->FreeHWSurface = ROM_FreeHWSurface; -#if SDL_VIDEO_OPENGL - device->GL_MakeCurrent = Mac_GL_MakeCurrent; - device->GL_SwapBuffers = Mac_GL_SwapBuffers; - device->GL_LoadLibrary = Mac_GL_LoadLibrary; - device->GL_GetProcAddress = Mac_GL_GetProcAddress; -#endif // Have OpenGL - device->SetCaption = Mac_SetCaption; - device->SetIcon = NULL; - device->IconifyWindow = NULL; - device->GrabInput = NULL; - device->GetWMInfo = NULL; - device->FreeWMCursor = Mac_FreeWMCursor; - device->CreateWMCursor = Mac_CreateWMCursor; - device->ShowWMCursor = Mac_ShowWMCursor; - device->WarpWMCursor = Mac_WarpWMCursor; - device->InitOSKeymap = Mac_InitOSKeymap; - device->PumpEvents = Mac_PumpEvents; - - device->free = ROM_DeleteDevice; - - return device; -} - -VideoBootStrap TOOLBOX_bootstrap = { - "toolbox", "MacOS ROM Toolbox", - ROM_Available, ROM_CreateDevice -}; - - -static int -ROM_VideoInit(_THIS, SDL_PixelFormat * vformat) -{ - long info; - - /* Check out some things about the system */ - Gestalt(gestaltQuickdrawVersion, &info); - if (info == gestaltOriginalQD) { - SDL_SetError("Color Quickdraw not available"); - return (-1); - } - - /* Start ROMintosh events */ - Mac_InitEvents(this); - - /* Get a handle to the main monitor */ - SDL_Display = GetMainDevice(); - - /* Determine the current screen size */ - this->info.current_w = (**SDL_Display).gdRect.right; - this->info.current_h = (**SDL_Display).gdRect.bottom; - - /* Determine pixel format */ - vformat->BitsPerPixel = (**(**SDL_Display).gdPMap).pixelSize; - switch (vformat->BitsPerPixel) { - case 16: /* 5-5-5 RGB */ - vformat->Rmask = 0x00007c00; - vformat->Gmask = 0x000003e0; - vformat->Bmask = 0x0000001f; - break; - default: - break; - } - - /* Create our palette */ - SDL_CTab = (CTabHandle) NewHandle(sizeof(ColorSpec) * 256 + 8); - if (SDL_CTab == nil) { - SDL_OutOfMemory(); - return (-1); - } - (**SDL_CTab).ctSeed = GetCTSeed(); - (**SDL_CTab).ctFlags = 0; - (**SDL_CTab).ctSize = 255; - CTabChanged(SDL_CTab); - SDL_CPal = NewPalette(256, SDL_CTab, pmExplicit + pmTolerant, 0); - - /* Get a list of available fullscreen modes */ - SDL_modelist = (SDL_Rect **) SDL_malloc((1 + 1) * sizeof(SDL_Rect *)); - if (SDL_modelist) { - SDL_modelist[0] = (SDL_Rect *) SDL_malloc(sizeof(SDL_Rect)); - if (SDL_modelist[0]) { - SDL_modelist[0]->x = 0; - SDL_modelist[0]->y = 0; - SDL_modelist[0]->w = (**SDL_Display).gdRect.right; - SDL_modelist[0]->h = (**SDL_Display).gdRect.bottom; - } - SDL_modelist[1] = NULL; - } - - /* Fill in some window manager capabilities */ - this->info.wm_available = 1; - - /* We're done! */ - return (0); -} - -static SDL_Rect ** -ROM_ListModes(_THIS, SDL_PixelFormat * format, Uint32 flags) -{ - if (this->screen->format->BitsPerPixel == format->BitsPerPixel) { - if ((flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { - return (SDL_modelist); - } else { - return ((SDL_Rect **) - 1); - } - } else { - return ((SDL_Rect **) 0); - } -} - -static void -ROM_HideMenuBar(_THIS) -{ -#if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ - RgnHandle drawRgn = nil; - RgnHandle tempRgn = nil; - RgnHandle grayRgn = nil; - WindowPtr window = nil; - GDHandle gd = nil; - GrafPtr savePort; - long response; - short height; - EventRecord theEvent; - - height = GetMBarHeight(); - - if (height > 0) { - tempRgn = NewRgn(); - drawRgn = NewRgn(); - gSaveGrayRgn = NewRgn(); - if (!tempRgn || !drawRgn || !gSaveGrayRgn) { - goto CLEANUP; - } - grayRgn = GetGrayRgn(); /* No need to check for this */ - - GetPort(&savePort); - - /* Hide the control strip if it's present, and record its - previous position into the dirty region for redrawing. - This isn't necessary, but may help catch stray bits. */ - CopyRgn(grayRgn, tempRgn); - if (!Gestalt(gestaltControlStripAttr, &response) && - (response & (1L << gestaltControlStripExists))) { - gSaveCSVis = SBIsControlStripVisible(); - if (gSaveCSVis) - SBShowHideControlStrip(false); - } - DiffRgn(grayRgn, tempRgn, drawRgn); - - /* Save the gray region once the control strip is hidden */ - CopyRgn(grayRgn, gSaveGrayRgn); - - /* Change the menu height in lowmem */ - gSaveMenuBar = height; - LMSetMBarHeight(0); - - /* Walk the monitor rectangles, and combine any pieces that - aren't in GrayRgn: menubar, round corners, fake floaters. */ - for (gd = GetDeviceList(); gd; gd = GetNextDevice(gd)) { - if (!TestDeviceAttribute(gd, screenDevice)) - continue; - if (!TestDeviceAttribute(gd, screenActive)) - continue; - - RectRgn(tempRgn, &(*gd)->gdRect); /* Get the whole screen */ - DiffRgn(tempRgn, grayRgn, tempRgn); /* Subtract out GrayRgn */ - UnionRgn(tempRgn, drawRgn, drawRgn); /* Combine all the bits */ - } - - /* Add the bits into the GrayRgn */ - UnionRgn(drawRgn, grayRgn, grayRgn); - - /* Modify the vis regions of exposed windows */ - window = (FrontWindow())? FrontWindow() : (WindowPtr) - 1L; - PaintBehind(window, drawRgn); - CalcVisBehind(window, drawRgn); - - SetPort(savePort); - - /* Yield time so that floaters can catch up */ - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - } - - CLEANUP: - - if (tempRgn) - DisposeRgn(tempRgn); - if (drawRgn) - DisposeRgn(drawRgn); -#endif /* !TARGET_API_MAC_CARBON */ -} - -static void -ROM_ShowMenuBar(_THIS) -{ -#if !TARGET_API_MAC_CARBON /* This seems not to be available? -sts Aug 2000 */ - RgnHandle drawRgn = nil; - RgnHandle menuRgn = nil; - RgnHandle tempRgn = nil; - RgnHandle grayRgn = nil; - WindowPtr window = nil; - GrafPtr wMgrPort; - GrafPtr savePort; - Rect menuRect; - long response; - short height; - EventRecord theEvent; - RGBColor saveRGB; - RGBColor blackRGB = { 0, 0, 0 }; - - height = GetMBarHeight(); - - if ((height <= 0) && (gSaveMenuBar > 0)) { - drawRgn = NewRgn(); - menuRgn = NewRgn(); - tempRgn = NewRgn(); - if (!tempRgn || !drawRgn || !gSaveGrayRgn) { - goto CLEANUP; - } - grayRgn = GetGrayRgn(); /* No need to check for this */ - - GetPort(&savePort); - GetWMgrPort(&wMgrPort); - - /* Set the height properly */ - LMSetMBarHeight(gSaveMenuBar); - - /* Restore the old GrayRgn: rounded corners, etc, but not - the menubar -- subtract that out first! */ - if (gSaveGrayRgn) { - menuRect = (*GetMainDevice())->gdRect; - menuRect.bottom = menuRect.top + gSaveMenuBar; - RectRgn(menuRgn, &menuRect); - - DiffRgn(grayRgn, gSaveGrayRgn, drawRgn); /* What do we inval? */ - DiffRgn(drawRgn, menuRgn, drawRgn); /* Clip out the menu */ - - /* Now redraw the corners and other bits black */ - SetPort(wMgrPort); - GetClip(tempRgn); - SetClip(drawRgn); - GetForeColor(&saveRGB); - RGBForeColor(&blackRGB); - PaintRgn(drawRgn); - RGBForeColor(&saveRGB); - SetClip(tempRgn); - SetPort(savePort); - - UnionRgn(drawRgn, menuRgn, drawRgn); /* Put back the menu */ - - /* Now actually restore the GrayRgn */ - CopyRgn(gSaveGrayRgn, grayRgn); - DisposeRgn(gSaveGrayRgn); - gSaveGrayRgn = nil; - } - - /* Modify the vis regions of exposed windows and draw menubar */ - window = (FrontWindow())? FrontWindow() : (WindowPtr) - 1L; - PaintBehind(window, drawRgn); - CalcVisBehind(window, drawRgn); - DrawMenuBar(); - - SetPort(savePort); - gSaveMenuBar = 0; - - /* Now show the control strip if it's present */ - if (!Gestalt(gestaltControlStripAttr, &response) && - (response & (1L << gestaltControlStripExists))) { - if (gSaveCSVis && !SBIsControlStripVisible()) - SBShowHideControlStrip(true); - gSaveCSVis = true; - } - - /* Yield time so that floaters can catch up */ - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - EventAvail(0, &theEvent); - } - - CLEANUP: - - if (drawRgn) - DisposeRgn(drawRgn); - if (menuRgn) - DisposeRgn(menuRgn); - if (tempRgn) - DisposeRgn(tempRgn); -#endif /* !TARGET_API_MAC_CARBON */ -} - -/* Various screen update functions available */ -static void ROM_DirectUpdate(_THIS, int numrects, SDL_Rect * rects); -static void ROM_WindowUpdate(_THIS, int numrects, SDL_Rect * rects); - -static void -ROM_UnsetVideoMode(_THIS, SDL_Surface * current) -{ - /* Free the current window, if any */ - if (SDL_Window != nil) { - GWorldPtr memworld; - - /* Handle OpenGL support */ - Mac_GL_Quit(this); - - memworld = (GWorldPtr) GetWRefCon(SDL_Window); - if (memworld != nil) { - UnlockPixels(GetGWorldPixMap(memworld)); - DisposeGWorld(memworld); - } - if ((current->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { -#if USE_QUICKTIME - EndFullScreen(fullscreen_ctx, nil); - SDL_Window = nil; -#else - ROM_ShowMenuBar(this); -#endif - } - } - current->pixels = NULL; - current->flags &= ~(SDL_HWSURFACE | SDL_FULLSCREEN); -} - -static SDL_Surface * -ROM_SetVideoMode(_THIS, SDL_Surface * current, - int width, int height, int bpp, Uint32 flags) -{ - Rect wrect, orect; -#if TARGET_API_MAC_CARBON - Rect tmprect; -#endif - - /* Free any previous video mode */ - ROM_UnsetVideoMode(this, current); - - /* Create the ROM window and SDL video surface */ - current->flags = 0; /* Clear flags */ - current->w = width; - current->h = height; - SetRect(&wrect, 0, 0, width, height); - if (SDL_Window) { - /* If we recreate the window, don't move it around */ -#if TARGET_API_MAC_CARBON - orect = *GetWindowPortBounds(SDL_Window, &tmprect); -#else - orect = SDL_Window->portRect; -#endif - OffsetRect(&wrect, orect.left, orect.top); - } else { - /* Center the window the first time we show it */ - OffsetRect(&wrect, - (SDL_modelist[0]->w - width) / 2, - (SDL_modelist[0]->h - height) / 2); - } - -#if defined(__MACOSX__) && !USE_QUICKTIME - /* Hum.. fullscreen mode is broken */ - flags &= ~SDL_FULLSCREEN; -#endif - if ((flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { - /* Create the fullscreen window and use screen bits */ - current->flags |= SDL_HWSURFACE | SDL_FULLSCREEN; - if (SDL_Window) { - DisposeWindow(SDL_Window); - } -#if USE_QUICKTIME - BeginFullScreen(&fullscreen_ctx, nil, 0, 0, &SDL_Window, nil, 0); -#else - SDL_Window = NewCWindow(nil, &wrect, "\p", true, plainDBox, - (WindowPtr) - 1, false, 0); - ROM_HideMenuBar(this); -#endif - current->pitch = (**(**SDL_Display).gdPMap).rowBytes & 0x3FFF; - current->pixels = (**(**SDL_Display).gdPMap).baseAddr; - this->UpdateRects = ROM_DirectUpdate; - } else { - GWorldPtr memworld; - PixMapHandle pixmap; - int style; - - style = noGrowDocProc; - if (flags & SDL_NOFRAME) { - style = plainDBox; - current->flags |= SDL_NOFRAME; - } else if (flags & SDL_RESIZABLE) { - style = zoomDocProc; - current->flags |= SDL_RESIZABLE; - } - if (SDL_Window && (style == current_style)) { - /* Resize existing window, if necessary */ - if (((orect.right - orect.left) != width) || - ((orect.bottom - orect.top) != height)) { - SizeWindow(SDL_Window, width, height, false); - } - } else { - /* Recreate the window in the new style */ - if (SDL_Window) { - DisposeWindow(SDL_Window); - } - SDL_Window = NewCWindow(nil, &wrect, "\p", true, - style, (WindowPtr) - 1, true, 0); - - /* Set the window title, if any */ - { - char *title; - SDL_WM_GetCaption(&title, NULL); - if (title) { - Mac_SetCaption(this, title, NULL); - } - } - } - current_style = style; - SetPalette(SDL_Window, SDL_CPal, false); - ActivatePalette(SDL_Window); - if (NewGWorld(&memworld, 0, -#if TARGET_API_MAC_CARBON - GetWindowPortBounds(SDL_Window, &tmprect), -#else - &SDL_Window->portRect, -#endif - SDL_CTab, nil, 0) != noErr) { - SDL_SetError("NewGWorld() failed"); - return (NULL); - } - SetWRefCon(SDL_Window, (long) memworld); - pixmap = GetGWorldPixMap(memworld); - LockPixels(pixmap); - current->pitch = (**pixmap).rowBytes & 0x3FFF; - current->pixels = GetPixBaseAddr(pixmap); - this->UpdateRects = ROM_WindowUpdate; - } - SetPortWindowPort(SDL_Window); - SelectWindow(SDL_Window); - - /* Handle OpenGL support */ - if (flags & SDL_INTERNALOPENGL) { - if (Mac_GL_Init(this) == 0) { - current->flags |= SDL_INTERNALOPENGL; - } else { - current = NULL; - } - } - - if ((flags & SDL_HWPALETTE) && (flags & SDL_FULLSCREEN)) - current->flags |= SDL_HWPALETTE; - - /* We're live! */ - return (current); -} - -/* We don't actually allow hardware surfaces other than the main one */ -static int -ROM_AllocHWSurface(_THIS, SDL_Surface * surface) -{ - return (-1); -} -static void -ROM_FreeHWSurface(_THIS, SDL_Surface * surface) -{ - return; -} -static int -ROM_LockHWSurface(_THIS, SDL_Surface * surface) -{ - return (0); -} -static void -ROM_UnlockHWSurface(_THIS, SDL_Surface * surface) -{ - return; -} - -static void -ROM_DirectUpdate(_THIS, int numrects, SDL_Rect * rects) -{ - /* The application is already updating the visible video memory */ - return; -} - -static void -ROM_WindowUpdate(_THIS, int numrects, SDL_Rect * rects) -{ - GWorldPtr memworld; - GrafPtr saveport; - CGrafPtr thePort; - const BitMap *memBits; - const BitMap *winBits; - int i; - Rect update; - - /* Copy from the offscreen GWorld to the window port */ - GetPort(&saveport); - SetPortWindowPort(SDL_Window); - thePort = GetWindowPort(SDL_Window); - memworld = (GWorldPtr) GetWRefCon(SDL_Window); -#if TARGET_API_MAC_CARBON && ACCESSOR_CALLS_ARE_FUNCTIONS - memBits = GetPortBitMapForCopyBits((CGrafPtr) memworld); -#else - memBits = &((GrafPtr) memworld)->portBits; -#endif -#if TARGET_API_MAC_CARBON && ACCESSOR_CALLS_ARE_FUNCTIONS - winBits = GetPortBitMapForCopyBits(thePort); -#else - winBits = &SDL_Window->portBits; -#endif - for (i = 0; i < numrects; ++i) { - update.left = rects[i].x; - update.right = rects[i].x + rects[i].w; - update.top = rects[i].y; - update.bottom = rects[i].y + rects[i].h; - CopyBits(memBits, winBits, &update, &update, srcCopy, nil); - } -#if TARGET_API_MAC_CARBON - if (QDIsPortBuffered(thePort)) { - QDFlushPortBuffer(thePort, NULL); - } -#endif - SetPort(saveport); -} - -static int -ROM_SetColors(_THIS, int firstcolor, int ncolors, SDL_Color * colors) -{ - CTabHandle cTab; - int i; - - /* Get the colortable from the either the display or window */ - if ((this->screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN) { - cTab = (**(**SDL_Display).gdPMap).pmTable; - } else { - cTab = SDL_CTab; - } - - /* Verify the range of colors */ - if ((firstcolor + ncolors) > ((**cTab).ctSize + 1)) { - return (0); - } - - /* Set the screen palette and update the display */ - for (i = 0; i < ncolors; ++i) { - int j = firstcolor + i; - (**cTab).ctTable[j].value = j; - (**cTab).ctTable[j].rgb.red = colors[i].r << 8 | colors[i].r; - (**cTab).ctTable[j].rgb.green = colors[i].g << 8 | colors[i].g; - (**cTab).ctTable[j].rgb.blue = colors[i].b << 8 | colors[i].b; - } -// if ( (this->screen->flags & SDL_FULLSCREEN) == SDL_FULLSCREEN ) - { - GDevice **odisplay; - odisplay = GetGDevice(); - SetGDevice(SDL_Display); - SetEntries(0, (**cTab).ctSize, (ColorSpec *) & (**cTab).ctTable); - SetGDevice(odisplay); - } - return (1); -} - -void -ROM_VideoQuit(_THIS) -{ - int i; - - /* Free current video mode */ - ROM_UnsetVideoMode(this, this->screen); - if (SDL_Window) { - DisposeWindow(SDL_Window); - SDL_Window = nil; - } - - /* Free palette and restore original one */ - if (SDL_CTab != nil) { - DisposeHandle((Handle) SDL_CTab); - SDL_CTab = nil; - } - if (SDL_CPal != nil) { - DisposePalette(SDL_CPal); - SDL_CPal = nil; - } - RestoreDeviceClut(GetMainDevice()); - - /* Free list of video modes */ - if (SDL_modelist != NULL) { - for (i = 0; SDL_modelist[i]; ++i) { - SDL_free(SDL_modelist[i]); - } - SDL_free(SDL_modelist); - SDL_modelist = NULL; - } -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/macrom/SDL_romvideo.h b/src/video/macrom/SDL_romvideo.h deleted file mode 100644 index 76b663c5a..000000000 --- a/src/video/macrom/SDL_romvideo.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2006 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_romvideo_h -#define _SDL_romvideo_h - -#include "../maccommon/SDL_lowvideo.h" - -#endif /* _SDL_romvideo_h */ -/* vi: set ts=4 sw=4 expandtab: */