Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2008-09-21 09:38:28 +0400
committerCampbell Barton <ideasman42@gmail.com>2008-09-21 09:38:28 +0400
commite11cd5a962803747ce3c0bddaef73a47d8938b63 (patch)
treefc0f4390ca230f0a567e0ce3429026a99632a08f
parent2064f5542ae8edf0c52bcc104f10696f5b6e3659 (diff)
game engine now compiles with SDL disabled. CDROM and Joystick wont function in this case
-rw-r--r--intern/SoundSystem/SConscript3
-rw-r--r--intern/SoundSystem/sdl/SND_SDLCDDevice.cpp17
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp54
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_Joystick.h10
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp3
-rw-r--r--source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h3
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickManager.cpp4
-rw-r--r--source/gameengine/GameLogic/SConscript7
8 files changed, 84 insertions, 17 deletions
diff --git a/intern/SoundSystem/SConscript b/intern/SoundSystem/SConscript
index baf680f03f0..be19c4b7915 100644
--- a/intern/SoundSystem/SConscript
+++ b/intern/SoundSystem/SConscript
@@ -14,4 +14,7 @@ if env['WITH_BF_OPENAL']:
else:
defs = 'NO_SOUND'
+if not env['WITH_BF_SDL']:
+ defs += ' DISABLE_SDL'
+
env.BlenderLib ('bf_soundsystem', sources, Split(incs), Split(defs), libtype=['core','player'], priority = [20,140] )
diff --git a/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp b/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp
index 8bb6c642b11..0ab0fa94c7b 100644
--- a/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp
+++ b/intern/SoundSystem/sdl/SND_SDLCDDevice.cpp
@@ -55,6 +55,10 @@ SND_SDLCDDevice::SND_SDLCDDevice() :
void SND_SDLCDDevice::init()
{
+#ifdef DISABLE_SDL
+ fprintf(stderr, "Blender compiled without SDL, no CDROM support\n");
+ return;
+#else
if (SDL_InitSubSystem(SDL_INIT_CDROM))
{
fprintf(stderr, "Error initializing CDROM\n");
@@ -75,19 +79,23 @@ void SND_SDLCDDevice::init()
/* Did if open? Check if cdrom is NULL */
if(!m_cdrom)
{
- fprintf(stderr, "Couldn't open drive: %s", SDL_GetError());
+ fprintf(stderr, "Couldn't open drive: %s\n", SDL_GetError());
return;
}
+#endif
}
SND_SDLCDDevice::~SND_SDLCDDevice()
{
+#ifndef DISABLE_SDL
StopCD();
SDL_CDClose(m_cdrom);
+#endif
}
void SND_SDLCDDevice::NextFrame()
{
+#ifndef DISABLE_SDL
m_frame++;
m_frame &= 127;
@@ -111,20 +119,24 @@ void SND_SDLCDDevice::NextFrame()
}
}
+#endif
}
void SND_SDLCDDevice::PlayCD(int track)
{
+#ifndef DISABLE_SDL
if ( m_cdrom && CD_INDRIVE(SDL_CDStatus(m_cdrom)) ) {
SDL_CDPlayTracks(m_cdrom, track-1, 0, track, 0);
m_cdplaying = true;
m_cdtrack = track;
}
+#endif
}
void SND_SDLCDDevice::PauseCD(bool pause)
{
+#ifndef DISABLE_SDL
if (!m_cdrom)
return;
@@ -132,13 +144,16 @@ void SND_SDLCDDevice::PauseCD(bool pause)
SDL_CDPause(m_cdrom);
else
SDL_CDResume(m_cdrom);
+#endif
}
void SND_SDLCDDevice::StopCD()
{
+#ifndef DISABLE_SDL
if (m_cdrom)
SDL_CDStop(m_cdrom);
m_cdplaying = false;
+#endif
}
void SND_SDLCDDevice::SetCDPlaymode(int playmode)
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
index 06002060bf1..092956e6489 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.cpp
@@ -42,14 +42,18 @@ SCA_Joystick::SCA_Joystick(short int index)
m_isinit(0),
m_istrig(0)
{
+#ifndef DISABLE_SDL
m_private = new PrivateData();
+#endif
}
SCA_Joystick::~SCA_Joystick()
{
+#ifndef DISABLE_SDL
delete m_private;
+#endif
}
SCA_Joystick *SCA_Joystick::m_instance[JOYINDEX_MAX];
@@ -57,6 +61,9 @@ int SCA_Joystick::m_refCount = 0;
SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
{
+#ifdef DISABLE_SDL
+ return NULL;
+#else
if (joyindex < 0 || joyindex >= JOYINDEX_MAX) {
echo("Error-invalid joystick index: " << joyindex);
return NULL;
@@ -81,12 +88,14 @@ SCA_Joystick *SCA_Joystick::GetInstance( short int joyindex )
m_refCount++;
}
return m_instance[joyindex];
+#endif
}
void SCA_Joystick::ReleaseInstance()
{
if (--m_refCount == 0)
{
+#ifndef DISABLE_SDL
int i;
for (i=0; i<JOYINDEX_MAX; i++) {
if (m_instance[i]) {
@@ -95,7 +104,9 @@ void SCA_Joystick::ReleaseInstance()
}
m_instance[i]= NULL;
}
+
SDL_QuitSubSystem(SDL_INIT_JOYSTICK | SDL_INIT_VIDEO );
+#endif
}
}
@@ -147,19 +158,27 @@ bool SCA_Joystick::aDownAxisIsPositive(int axis)
bool SCA_Joystick::aButtonPressIsPositive(int button)
{
+#ifdef DISABLE_SDL
+ return false;
+#else
bool result;
SDL_JoystickGetButton(m_private->m_joystick, button)? result = true:result = false;
m_istrig = result;
return result;
+#endif
}
bool SCA_Joystick::aButtonReleaseIsPositive(int button)
{
+#ifdef DISABLE_SDL
+ return false;
+#else
bool result;
SDL_JoystickGetButton(m_private->m_joystick, button)? result = false : result = true;
m_istrig = result;
return result;
+#endif
}
@@ -199,6 +218,9 @@ int SCA_Joystick::pGetHat(int direction)
int SCA_Joystick::GetNumberOfAxes()
{
+#ifdef DISABLE_SDL
+ return -1;
+#else
int number;
if(m_isinit){
if(m_private->m_joystick){
@@ -207,11 +229,15 @@ int SCA_Joystick::GetNumberOfAxes()
}
}
return -1;
+#endif
}
int SCA_Joystick::GetNumberOfButtons()
{
+#ifdef DISABLE_SDL
+ return -1;
+#else
int number;
if(m_isinit){
if(m_private->m_joystick){
@@ -220,11 +246,15 @@ int SCA_Joystick::GetNumberOfButtons()
}
}
return -1;
+#endif
}
int SCA_Joystick::GetNumberOfHats()
{
+#ifdef DISABLE_SDL
+ return -1;
+#else
int number;
if(m_isinit){
if(m_private->m_joystick){
@@ -233,10 +263,14 @@ int SCA_Joystick::GetNumberOfHats()
}
}
return -1;
+#endif
}
bool SCA_Joystick::CreateJoystickDevice(void)
{
+#ifdef DISABLE_SDL
+ return false;
+#else
if(m_isinit == false){
if (m_joyindex>=SDL_NumJoysticks()) {
// don't print a message, because this is done anyway
@@ -251,11 +285,13 @@ bool SCA_Joystick::CreateJoystickDevice(void)
m_isinit = true;
}
return true;
+#endif
}
void SCA_Joystick::DestroyJoystickDevice(void)
{
+#ifndef DISABLE_SDL
if (m_isinit){
if(SDL_JoystickOpened(m_joyindex)){
echo("Closing-joystick " << m_joyindex);
@@ -263,21 +299,21 @@ void SCA_Joystick::DestroyJoystickDevice(void)
}
m_isinit = false;
}
+#endif
}
int SCA_Joystick::Connected(void)
{
- if (m_isinit){
- if(SDL_JoystickOpened(m_joyindex)){
- return 1;
- }
- }
-
+#ifndef DISABLE_SDL
+ if (m_isinit && SDL_JoystickOpened(m_joyindex))
+ return 1;
+#endif
return 0;
}
void SCA_Joystick::pFillAxes()
{
+#ifndef DISABLE_SDL
if(GetNumberOfAxes() == 1){
m_axis10 = SDL_JoystickGetAxis(m_private->m_joystick, 0);
m_axis11 = SDL_JoystickGetAxis(m_private->m_joystick, 1);
@@ -287,18 +323,20 @@ void SCA_Joystick::pFillAxes()
m_axis20 = SDL_JoystickGetAxis(m_private->m_joystick, 2);
m_axis21 = SDL_JoystickGetAxis(m_private->m_joystick, 3);
}else{
- m_axis10 = 0;m_axis11 = 0;
- m_axis20 = 0;m_axis21 = 0;
+ m_axis10 = m_axis11 = m_axis20 = m_axis21 = 0;
}
+#endif
}
int SCA_Joystick::pGetAxis(int axisnum, int udlr)
{
+#ifndef DISABLE_SDL
if(axisnum == 1 && udlr == 1)return m_axis10; //u/d
if(axisnum == 1 && udlr == 0)return m_axis11; //l/r
if(axisnum == 2 && udlr == 0)return m_axis20; //...
if(axisnum == 2 && udlr == 1)return m_axis21;
+#endif
return 0;
}
diff --git a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
index bcbb43241c2..ea7ecf7cefe 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_Joystick.h
@@ -45,9 +45,9 @@ class SCA_Joystick
static int m_refCount;
class PrivateData;
-
+#ifndef DISABLE_SDL
PrivateData *m_private;
-
+#endif
int m_joyindex;
/*
@@ -104,6 +104,7 @@ class SCA_Joystick
/* is triggered */
bool m_istrig;
+#ifndef DISABLE_SDL
/*
* event callbacks
*/
@@ -113,7 +114,7 @@ class SCA_Joystick
void OnButtonDown(SDL_Event *sdl_event);
void OnNothing(SDL_Event *sdl_event);
void OnBallMotion(SDL_Event *sdl_event){}
-
+#endif
/*
* Open the joystick
*/
@@ -226,8 +227,9 @@ public:
*/
int Connected(void);
};
-
+#ifndef DISABLE_SDL
void Joystick_HandleEvents( void );
+#endif
#endif
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
index 1e064f55397..0e2078265c9 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickEvents.cpp
@@ -29,7 +29,7 @@
#include "SCA_JoystickPrivate.h"
-
+#ifndef DISABLE_SDL
void SCA_Joystick::OnAxisMotion(SDL_Event* sdl_event)
{
pFillAxes();
@@ -102,3 +102,4 @@ void SCA_Joystick::HandleEvents(void)
}
}
}
+#endif
diff --git a/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h b/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h
index bb6bfe2d4cc..acbbcae9cd7 100644
--- a/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h
+++ b/source/gameengine/GameLogic/Joystick/SCA_JoystickPrivate.h
@@ -29,6 +29,7 @@
#define __SCA_JOYSTICKPRIVATE_H__
#include "SCA_Joystick.h"
+#ifndef DISABLE_SDL
class SCA_Joystick::PrivateData
{
public:
@@ -43,3 +44,5 @@ public:
}
};
#endif
+
+#endif
diff --git a/source/gameengine/GameLogic/SCA_JoystickManager.cpp b/source/gameengine/GameLogic/SCA_JoystickManager.cpp
index a86770a6e0a..d874b5b013a 100644
--- a/source/gameengine/GameLogic/SCA_JoystickManager.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickManager.cpp
@@ -63,9 +63,9 @@ void SCA_JoystickManager::NextFrame(double curtime,double deltatime)
}
else {
set<SCA_ISensor*>::iterator it;
-
+#ifndef DISABLE_SDL
SCA_Joystick::HandleEvents(); /* Handle all SDL Joystick events */
-
+#endif
for (it = m_sensors.begin(); it != m_sensors.end(); it++)
{
SCA_JoystickSensor* joysensor = (SCA_JoystickSensor*)(*it);
diff --git a/source/gameengine/GameLogic/SConscript b/source/gameengine/GameLogic/SConscript
index 1ca884f6dec..fa5a3123215 100644
--- a/source/gameengine/GameLogic/SConscript
+++ b/source/gameengine/GameLogic/SConscript
@@ -10,4 +10,9 @@ incs += ' #/source/gameengine/Rasterizer'
incs += ' ' + env['BF_PYTHON_INC']
incs += ' ' + env['BF_SDL_INC']
-env.BlenderLib ( 'bf_logic', sources, Split(incs), [], libtype=['game','player'], priority=[30, 110] )
+defs = ''
+
+if not env['WITH_BF_SDL']:
+ defs += ' DISABLE_SDL'
+
+env.BlenderLib ( 'bf_logic', sources, Split(incs), Split(defs), libtype=['game','player'], priority=[30, 110] )