Skip to content
Permalink
Browse files

Added S60 port.

  • Loading branch information
icculus committed Jun 24, 2007
1 parent 181a148 commit c285c99b53bd2a98694598b5baac722de6593250
Showing with 11,434 additions and 15 deletions.
  1. +32 −0 README.Symbian
  2. +3 −0 docs.html
  3. +2 −0 include/SDL_config.h.default
  4. +0 −3 include/SDL_config.h.in
  5. +146 −0 include/SDL_config_symbian.h
  6. +2 −0 include/SDL_stdinc.h
  7. +1 −1 include/SDL_thread.h
  8. +7 −3 include/begin_code.h
  9. +1 −1 src/SDL.c
  10. +4 −1 src/audio/SDL_audio.c
  11. +3 −0 src/audio/SDL_sysaudio.h
  12. +614 −0 src/audio/symbian/SDL_epocaudio.cpp
  13. +37 −0 src/audio/symbian/SDL_epocaudio.h
  14. +279 −0 src/audio/symbian/streamplayer.cpp
  15. +89 −0 src/audio/symbian/streamplayer.h
  16. +1 −1 src/events/SDL_events.c
  17. +2 −2 src/file/SDL_rwops.c
  18. +152 −0 src/main/symbian/EKA1/SDL_main.cpp
  19. +1,035 −0 src/main/symbian/EKA2/SDL_main.cpp
  20. +809 −0 src/main/symbian/EKA2/sdlexe.cpp
  21. +12 −0 src/main/symbian/EKA2/sdllib.cpp
  22. +62 −0 src/main/symbian/EKA2/vectorbuffer.cpp
  23. +240 −0 src/main/symbian/EKA2/vectorbuffer.h
  24. +1 −1 src/stdlib/SDL_getenv.c
  25. +2 −2 src/thread/SDL_thread_c.h
  26. +130 −0 src/thread/symbian/SDL_sysmutex.cpp
  27. +214 −0 src/thread/symbian/SDL_syssem.cpp
  28. +146 −0 src/thread/symbian/SDL_systhread.cpp
  29. +30 −0 src/thread/symbian/SDL_systhread_c.h
  30. +114 −0 src/timer/symbian/SDL_systimer.cpp
  31. +626 −0 src/video/symbian/EKA1/SDL_epocevents.cpp
  32. +1,356 −0 src/video/symbian/EKA1/SDL_epocvideo.cpp
  33. +34 −0 src/video/symbian/EKA1/SDL_epocvideo.h
  34. +521 −0 src/video/symbian/EKA2/SDL_epocevents.cpp
  35. +594 −0 src/video/symbian/EKA2/SDL_epocvideo.cpp
  36. +51 −0 src/video/symbian/EKA2/SDL_epocvideo.h
  37. +1,504 −0 src/video/symbian/EKA2/dsa.cpp
  38. +1,443 −0 src/video/symbian/EKA2/dsa_new.cpp
  39. +1,075 −0 src/video/symbian/EKA2/dsa_old.cpp
  40. +60 −0 src/video/symbian/SDL_epocevents_c.h
@@ -0,0 +1,32 @@
==============================================================================
Using the Simple DirectMedia Layer with S60 3.x / Symbian 9.x
==============================================================================

These instuctions are for people developing for S60 3.x. S60 3.x
uses Symbian OS so you need S60 SDK.

extract "symbian.zip" into this folder.

go to symbian folder

bldmake bldfiles
abld build

That produces WINSCW and ARMV5 versions of sdl.dll runtime library
and sdl.lib for development.

Eaudiolib.lib and dll are generated as well, and must be delivered
along SDL as it uses it for audio.

There are certain problems with GCC compiler when building for
target, it may compile or binaries are buggy - please use RVCT
compiler as it works and produces far more effient code.

Its likely that SDL application should be integrated into S60
work and behave well there. So there is CSDL class (sdlepocapi.h)
to make this easy. If you do porting from other system, then
implement a S60 application and use CSDL class, they you may
not need to modify original SDL code at all!



@@ -46,6 +46,9 @@ <H3> General Notes </H3>
<P>
Support for Nokia 9210 "EPOC" driver has been removed from the main SDL code.
</P>
<P>
Unofficial support for the S60/SymbianOS platform has been added.
</P>
</BLOCKQUOTE>

<H3> Unix Notes </H3>
@@ -32,6 +32,8 @@
#include "SDL_config_macos.h"
#elif defined(__MACOSX__)
#include "SDL_config_macosx.h"
#elif defined(__SYMBIAN32__)
#include "SDL_config_symbian.h" /* must be before win32! */
#elif defined(__WIN32__)
#include "SDL_config_win32.h"
#elif defined(__OS2__)
@@ -224,7 +224,6 @@
/* Enable various threading systems */
#undef SDL_THREAD_BEOS
#undef SDL_THREAD_DC
#undef SDL_THREAD_EPOC
#undef SDL_THREAD_OS2
#undef SDL_THREAD_PTH
#undef SDL_THREAD_PTHREAD
@@ -237,7 +236,6 @@
#undef SDL_TIMER_BEOS
#undef SDL_TIMER_DC
#undef SDL_TIMER_DUMMY
#undef SDL_TIMER_EPOC
#undef SDL_TIMER_MACOS
#undef SDL_TIMER_MINT
#undef SDL_TIMER_OS2
@@ -255,7 +253,6 @@
#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
#undef SDL_VIDEO_DRIVER_GAPI
#undef SDL_VIDEO_DRIVER_GEM
@@ -0,0 +1,146 @@
/*
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
*/

/*
Symbian version Markus Mertama
*/


#ifndef _SDL_CONFIG_SYMBIAN_H
#define _SDL_CONFIG_SYMBIAN_H

#include "SDL_platform.h"

/* This is the minimal configuration that can be used to build SDL */


#include <stdarg.h>
#include <stddef.h>


#ifdef __GCCE__
#define SYMBIAN32_GCCE
#endif

#ifndef _SIZE_T_DEFINED
typedef unsigned int size_t;
#endif

#ifndef _INTPTR_T_DECLARED
typedef unsigned int uintptr_t;
#endif

#ifndef _INT8_T_DECLARED
typedef signed char int8_t;
#endif

#ifndef _UINT8_T_DECLARED
typedef unsigned char uint8_t;
#endif

#ifndef _INT16_T_DECLARED
typedef signed short int16_t;
#endif

#ifndef _UINT16_T_DECLARED
typedef unsigned short uint16_t;
#endif

#ifndef _INT32_T_DECLARED
typedef signed int int32_t;
#endif

#ifndef _UINT32_T_DECLARED
typedef unsigned int uint32_t;
#endif

#ifndef _INT64_T_DECLARED
typedef signed long long int64_t;
#endif

#ifndef _UINT64_T_DECLARED
typedef unsigned long long uint64_t;
#endif

#define SDL_AUDIO_DRIVER_EPOCAUDIO 1


/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */
#define SDL_CDROM_DISABLED 1

/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */
#define SDL_JOYSTICK_DISABLED 1

/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */
#define SDL_LOADSO_DISABLED 1

#define SDL_THREAD_SYMBIAN 1

#define SDL_VIDEO_DRIVER_EPOC 1

#define SDL_VIDEO_OPENGL 0

#define SDL_HAS_64BIT_TYPE 1

#define HAVE_LIBC 1
#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_MALLOC 1
#define HAVE_CALLOC 1
#define HAVE_REALLOC 1
#define HAVE_FREE 1
//#define HAVE_ALLOCA 1
#define HAVE_QSORT 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__STRUPR 1
#define HAVE_STRCHR 1
#define HAVE_STRRCHR 1
#define HAVE_STRSTR 1
#define HAVE_ITOA 1
#define HAVE_STRTOL 1
#define HAVE_STRTOUL 1
#define HAVE_STRTOLL 1
#define HAVE_STRTOD 1
#define HAVE_ATOI 1
#define HAVE_ATOF 1
#define HAVE_STRCMP 1
#define HAVE_STRNCMP 1
#define HAVE__STRICMP 1
#define HAVE__STRNICMP 1
#define HAVE_SSCANF 1
#define HAVE_STDARG_H 1
#define HAVE_STDDEF_H 1



#endif /* _SDL_CONFIG_SYMBIAN_H */
@@ -91,7 +91,9 @@ typedef uint32_t Uint32;

#ifdef SDL_HAS_64BIT_TYPE
typedef int64_t Sint64;
#ifndef SYMBIAN32_GCCE
typedef uint64_t Uint64;
#endif
#else
/* This is really just a hack to prevent the compiler from complaining */
typedef struct {
@@ -45,7 +45,7 @@ struct SDL_Thread;
typedef struct SDL_Thread SDL_Thread;

/* Create a thread */
#if (defined(__WIN32__) && !defined(HAVE_LIBC)) || defined(__OS2__)
#if ((defined(__WIN32__) && !defined(HAVE_LIBC)) || defined(__OS2__)) && !defined(__SYMBIAN32__)
/*
We compile SDL into a DLL on OS/2. This means, that it's the DLL which
creates a new thread for the calling process with the SDL_CreateThread()
@@ -83,11 +83,15 @@
#endif
#endif /* SDLCALL */

/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */
#ifdef __SYMBIAN32__
#ifndef EKA2
#undef DECLSPEC
#define DECLSPEC
#endif /* __SYMBIAN32__ */
#elif !defined(__WINS__)
#undef DECLSPEC
#define DECLSPEC __declspec(dllexport)
#endif //EKA2
#endif //__SYMBIAN32__

/* Force structure packing at 4 byte alignment.
This is necessary if the header is included in code which has structure
@@ -116,7 +120,7 @@
#if defined(_MSC_VER) || defined(__BORLANDC__) || \
defined(__DMC__) || defined(__SC__) || \
defined(__WATCOMC__) || defined(__LCC__) || \
defined(__DECC)
defined(__DECC) || defined(__EABI__)
#ifndef __inline__
#define __inline__ __inline
#endif
@@ -323,7 +323,7 @@ unsigned _System LibMain(unsigned hmod, unsigned termination)
}
#endif /* __WATCOMC__ */

#elif defined(__WIN32__)
#elif defined(__WIN32__) && !defined(__SYMBIAN32__)

#if !defined(HAVE_LIBC) || (defined(__WATCOMC__) && defined(BUILD_DLL))
/* Need to include DllMain() on Watcom C for some reason.. */
@@ -106,6 +106,9 @@ static AudioBootStrap *bootstrap[] = {
#endif
#if SDL_AUDIO_DRIVER_DART
&DART_bootstrap,
#endif
#if SDL_AUDIO_DRIVER_EPOCAUDIO
&EPOCAudio_bootstrap,
#endif
NULL
};
@@ -545,7 +548,7 @@ int SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained)
switch (audio->opened) {
case 1:
/* Start the audio thread */
#if (defined(__WIN32__) && !defined(_WIN32_WCE)) && !defined(HAVE_LIBC)
#if (defined(__WIN32__) && !defined(_WIN32_WCE)) && !defined(HAVE_LIBC) && !defined(__SYMBIAN32__)
#undef SDL_CreateThread
audio->thread = SDL_CreateThread(SDL_RunAudio, audio, NULL, NULL);
#else
@@ -171,6 +171,9 @@ extern AudioBootStrap MMEAUDIO_bootstrap;
#if SDL_AUDIO_DRIVER_DART
extern AudioBootStrap DART_bootstrap;
#endif
#if SDL_AUDIO_DRIVER_EPOCAUDIO
extern AudioBootStrap EPOCAudio_bootstrap;
#endif

/* This is the current audio device */
extern SDL_AudioDevice *current_audio;

0 comments on commit c285c99

Please sign in to comment.